@tdesign-react/chat 1.0.2-alpha.11 → 1.0.2-alpha.13

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 (209) hide show
  1. package/es/_util/reactify.js +4 -4
  2. package/es/_util/reactify.js.map +1 -1
  3. package/es/_util/useDynamicStyle.js +1 -1
  4. package/es/attachments/index.js +1 -1
  5. package/es/chat-actionbar/index.js +1 -1
  6. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +91 -0
  7. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +236 -0
  8. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
  9. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
  10. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
  11. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
  12. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
  13. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
  14. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
  15. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
  16. package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
  17. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
  18. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
  19. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
  20. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
  21. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
  22. package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
  23. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
  24. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
  25. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
  26. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
  27. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
  28. package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
  29. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
  30. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
  31. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
  32. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
  33. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
  34. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
  35. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
  36. package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
  37. package/es/chat-engine/components/a2ui/containers/index.js +30 -0
  38. package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
  39. package/es/chat-engine/components/a2ui/index.d.ts +11 -0
  40. package/es/chat-engine/components/a2ui/index.js +60 -0
  41. package/es/chat-engine/components/a2ui/index.js.map +1 -0
  42. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +31 -0
  43. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +76 -0
  44. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
  45. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
  46. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
  47. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
  48. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
  49. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
  50. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
  51. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
  52. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
  53. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
  54. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
  55. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
  56. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
  57. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
  58. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
  59. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
  60. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
  61. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
  62. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
  63. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
  64. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
  65. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
  66. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
  67. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
  68. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
  69. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
  70. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
  71. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
  72. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
  73. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
  74. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
  75. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
  76. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
  77. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
  78. package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
  79. package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
  80. package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
  81. package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
  82. package/es/chat-engine/components/a2ui/registry.js +74 -0
  83. package/es/chat-engine/components/a2ui/registry.js.map +1 -0
  84. package/es/chat-engine/components/activity/index.js +1 -1
  85. package/es/chat-engine/components/activity/registry.js +4 -4
  86. package/es/chat-engine/components/activity/registry.js.map +1 -1
  87. package/es/chat-engine/components/activity/render.js +6 -6
  88. package/es/chat-engine/components/activity/render.js.map +1 -1
  89. package/es/chat-engine/components/activity/types.js +1 -1
  90. package/es/chat-engine/components/index.js +4 -1
  91. package/es/chat-engine/components/index.js.map +1 -1
  92. package/es/chat-engine/components/provider/agent-state.js +6 -3
  93. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  94. package/es/chat-engine/components/toolcall/index.js +4 -1
  95. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  96. package/es/chat-engine/components/toolcall/registry.js +4 -4
  97. package/es/chat-engine/components/toolcall/registry.js.map +1 -1
  98. package/es/chat-engine/components/toolcall/render.js +14 -11
  99. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  100. package/es/chat-engine/components/toolcall/types.js +1 -1
  101. package/es/chat-engine/core/a2ui/index.d.ts +10 -0
  102. package/es/chat-engine/core/a2ui/index.js +24 -0
  103. package/es/chat-engine/core/a2ui/index.js.map +1 -0
  104. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  105. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
  106. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  107. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
  108. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
  109. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
  110. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
  111. package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
  112. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
  113. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
  114. package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
  115. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
  116. package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
  117. package/es/chat-engine/core/a2ui/types/index.js +9 -0
  118. package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
  119. package/es/chat-engine/core/a2ui/types/types.d.ts +769 -0
  120. package/es/chat-engine/core/a2ui/types/types.js +104 -0
  121. package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
  122. package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
  123. package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
  124. package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
  125. package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
  126. package/es/chat-engine/core/a2ui/utils/index.js +13 -0
  127. package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
  128. package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
  129. package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
  130. package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
  131. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +16 -0
  132. package/es/chat-engine/core/adapters/agui/event-mapper.js +60 -6
  133. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  134. package/es/chat-engine/core/adapters/agui/events.js +1 -1
  135. package/es/chat-engine/core/adapters/agui/index.d.ts +1 -1
  136. package/es/chat-engine/core/adapters/agui/index.js +1 -1
  137. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  138. package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
  139. package/es/chat-engine/core/adapters/agui/types.js +1 -1
  140. package/es/chat-engine/core/adapters/agui/utils.d.ts +5 -1
  141. package/es/chat-engine/core/adapters/agui/utils.js +6 -2
  142. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  143. package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
  144. package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
  145. package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
  146. package/es/chat-engine/core/event-bus/index.d.ts +5 -0
  147. package/es/chat-engine/core/event-bus/index.js +13 -0
  148. package/es/chat-engine/core/event-bus/index.js.map +1 -0
  149. package/es/chat-engine/core/event-bus/types.d.ts +230 -0
  150. package/es/chat-engine/core/event-bus/types.js +32 -0
  151. package/es/chat-engine/core/event-bus/types.js.map +1 -0
  152. package/es/chat-engine/core/index.d.ts +8 -1
  153. package/es/chat-engine/core/index.js +128 -10
  154. package/es/chat-engine/core/index.js.map +1 -1
  155. package/es/chat-engine/core/processor/index.js +1 -1
  156. package/es/chat-engine/core/server/batch-client.js +1 -1
  157. package/es/chat-engine/core/server/connection-manager.js +1 -1
  158. package/es/chat-engine/core/server/errors.js +1 -1
  159. package/es/chat-engine/core/server/index.js +1 -1
  160. package/es/chat-engine/core/server/llm-service.js +17 -15
  161. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  162. package/es/chat-engine/core/server/sse-client.js +1 -1
  163. package/es/chat-engine/core/server/sse-parser.js +1 -1
  164. package/es/chat-engine/core/server/types.js +1 -1
  165. package/es/chat-engine/core/store/message.js +1 -1
  166. package/es/chat-engine/core/store/model.js +1 -1
  167. package/es/chat-engine/core/store/reactiveState.js +1 -1
  168. package/es/chat-engine/core/type.d.ts +18 -2
  169. package/es/chat-engine/core/type.js +1 -1
  170. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  171. package/es/chat-engine/core/utils/index.js +1 -1
  172. package/es/chat-engine/core/utils/logger.js +1 -1
  173. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
  174. package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
  175. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
  176. package/es/chat-engine/hooks/a2ui/index.d.ts +7 -0
  177. package/es/chat-engine/hooks/a2ui/index.js +19 -0
  178. package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
  179. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
  180. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
  181. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
  182. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
  183. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
  184. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
  185. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
  186. package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
  187. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
  188. package/es/chat-engine/hooks/index.js +4 -1
  189. package/es/chat-engine/hooks/index.js.map +1 -1
  190. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  191. package/es/chat-engine/hooks/useAgentState.js +4 -1
  192. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  193. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  194. package/es/chat-engine/hooks/useChat.js +4 -1
  195. package/es/chat-engine/hooks/useChat.js.map +1 -1
  196. package/es/chat-engine/index.js +4 -1
  197. package/es/chat-engine/index.js.map +1 -1
  198. package/es/chat-filecard/index.js +1 -1
  199. package/es/chat-loading/index.js +1 -1
  200. package/es/chat-markdown/index.js +1 -1
  201. package/es/chat-message/index.js +1 -1
  202. package/es/chat-sender/index.js +1 -1
  203. package/es/chat-thinking/index.js +1 -1
  204. package/es/chatbot/docs/react-best-practice.d.ts +13 -0
  205. package/es/chatbot/index.js +1 -1
  206. package/es/index.js +4 -1
  207. package/es/index.js.map +1 -1
  208. package/es/style/index.js +1 -1
  209. package/package.json +2 -2
@@ -0,0 +1,36 @@
1
+ /**
2
+ * A2UI Surface 相关 Hooks
3
+ */
4
+ import type { A2uiMessageProcessor } from '../../core/a2ui';
5
+ import type { A2UISurface, ResolvedComponent } from '../../core/a2ui';
6
+ /**
7
+ * 订阅单个 Surface
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const surface = useA2UISurface(processor, 'surface-1');
12
+ * if (!surface) return <Loading />;
13
+ * return <A2UIRenderer root={surface.root} />;
14
+ * ```
15
+ */
16
+ export declare function useA2UISurface(processor: A2uiMessageProcessor, surfaceId: string): A2UISurface | undefined;
17
+ /**
18
+ * 订阅所有 Surface
19
+ */
20
+ export declare function useA2UISurfaces(processor: A2uiMessageProcessor): A2UISurface[];
21
+ /**
22
+ * 订阅 Surface 的组件树根节点
23
+ */
24
+ export declare function useA2UIRoot(processor: A2uiMessageProcessor, surfaceId: string): ResolvedComponent | null;
25
+ /**
26
+ * 订阅 Surface 的数据模型
27
+ */
28
+ export declare function useA2UIData<T = Record<string, unknown>>(processor: A2uiMessageProcessor, surfaceId: string): T | undefined;
29
+ /**
30
+ * 订阅 Surface 状态
31
+ */
32
+ export declare function useA2UISurfaceState(processor: A2uiMessageProcessor, surfaceId: string): 'active' | 'closed' | 'pending' | undefined;
33
+ /**
34
+ * 获取 Surface IDs 列表
35
+ */
36
+ export declare function useA2UISurfaceIds(processor: A2uiMessageProcessor): string[];
@@ -0,0 +1,39 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.12
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import { useSyncExternalStore, useMemo } from 'react';
8
+
9
+ function useA2UISurface(processor, surfaceId) {
10
+ var snapshot = useSyncExternalStore(processor.subscribe, processor.getSnapshot, processor.getServerSnapshot);
11
+ return snapshot.get(surfaceId);
12
+ }
13
+ function useA2UISurfaces(processor) {
14
+ var snapshot = useSyncExternalStore(processor.subscribe, processor.getSnapshot, processor.getServerSnapshot);
15
+ return useMemo(function () {
16
+ return Array.from(snapshot.values());
17
+ }, [snapshot]);
18
+ }
19
+ function useA2UIRoot(processor, surfaceId) {
20
+ var surface = useA2UISurface(processor, surfaceId);
21
+ return (surface === null || surface === void 0 ? void 0 : surface.root) || null;
22
+ }
23
+ function useA2UIData(processor, surfaceId) {
24
+ var surface = useA2UISurface(processor, surfaceId);
25
+ return surface === null || surface === void 0 ? void 0 : surface.data;
26
+ }
27
+ function useA2UISurfaceState(processor, surfaceId) {
28
+ var surface = useA2UISurface(processor, surfaceId);
29
+ return surface === null || surface === void 0 ? void 0 : surface.state;
30
+ }
31
+ function useA2UISurfaceIds(processor) {
32
+ var snapshot = useSyncExternalStore(processor.subscribe, processor.getSnapshot, processor.getServerSnapshot);
33
+ return useMemo(function () {
34
+ return Array.from(snapshot.keys());
35
+ }, [snapshot]);
36
+ }
37
+
38
+ export { useA2UIData, useA2UIRoot, useA2UISurface, useA2UISurfaceIds, useA2UISurfaceState, useA2UISurfaces };
39
+ //# sourceMappingURL=useA2UISurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useA2UISurface.js","sources":["../../../../../pro-components/chat/chat-engine/hooks/a2ui/useA2UISurface.ts"],"sourcesContent":["/**\n * A2UI Surface 相关 Hooks\n */\n\nimport { useSyncExternalStore, useMemo } from 'react';\nimport type { A2uiMessageProcessor } from '../../core/a2ui';\nimport type { A2UISurface, ResolvedComponent } from '../../core/a2ui';\n\n/**\n * 订阅单个 Surface\n * \n * @example\n * ```tsx\n * const surface = useA2UISurface(processor, 'surface-1');\n * if (!surface) return <Loading />;\n * return <A2UIRenderer root={surface.root} />;\n * ```\n */\nexport function useA2UISurface(\n processor: A2uiMessageProcessor,\n surfaceId: string\n): A2UISurface | undefined {\n const snapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n return snapshot.get(surfaceId);\n}\n\n/**\n * 订阅所有 Surface\n */\nexport function useA2UISurfaces(processor: A2uiMessageProcessor): A2UISurface[] {\n const snapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n return useMemo(() => Array.from(snapshot.values()), [snapshot]);\n}\n\n/**\n * 订阅 Surface 的组件树根节点\n */\nexport function useA2UIRoot(\n processor: A2uiMessageProcessor,\n surfaceId: string\n): ResolvedComponent | null {\n const surface = useA2UISurface(processor, surfaceId);\n return surface?.root || null;\n}\n\n/**\n * 订阅 Surface 的数据模型\n */\nexport function useA2UIData<T = Record<string, unknown>>(\n processor: A2uiMessageProcessor,\n surfaceId: string\n): T | undefined {\n const surface = useA2UISurface(processor, surfaceId);\n return surface?.data as T | undefined;\n}\n\n/**\n * 订阅 Surface 状态\n */\nexport function useA2UISurfaceState(\n processor: A2uiMessageProcessor,\n surfaceId: string\n): 'active' | 'closed' | 'pending' | undefined {\n const surface = useA2UISurface(processor, surfaceId);\n return surface?.state;\n}\n\n/**\n * 获取 Surface IDs 列表\n */\nexport function useA2UISurfaceIds(processor: A2uiMessageProcessor): string[] {\n const snapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n return useMemo(() => Array.from(snapshot.keys()), [snapshot]);\n}\n"],"names":["useA2UISurface","processor","surfaceId","snapshot","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","get","useA2UISurfaces","useMemo","Array","from","values","useA2UIRoot","surface","root","useA2UIData","data","useA2UISurfaceState","state","useA2UISurfaceIds","keys"],"mappings":";;;;;;;;AAkBgB,SAAAA,cAAAA,CACdC,WACAC,SACyB,EAAA;AACzB,EAAA,IAAMC,QAAW,GAAAC,oBAAA,CACfH,SAAU,CAAAI,SAAA,EACVJ,SAAU,CAAAK,WAAA,EACVL,SAAU,CAAAM,iBACZ,CAAA,CAAA;AAEO,EAAA,OAAAJ,QAAA,CAASK,IAAIN,SAAS,CAAA,CAAA;AAC/B,CAAA;AAKO,SAASO,gBAAgBR,SAAgD,EAAA;AAC9E,EAAA,IAAME,QAAW,GAAAC,oBAAA,CACfH,SAAU,CAAAI,SAAA,EACVJ,SAAU,CAAAK,WAAA,EACVL,SAAU,CAAAM,iBACZ,CAAA,CAAA;AAEO,EAAA,OAAAG,OAAA,CAAQ,YAAA;IAAA,OAAMC,KAAA,CAAMC,IAAK,CAAAT,QAAA,CAASU,QAAQ,CAAA,CAAA;GAAG,EAAA,CAACV,QAAQ,CAAC,CAAA,CAAA;AAChE,CAAA;AAKgB,SAAAW,WAAAA,CACdb,WACAC,SAC0B,EAAA;AACpB,EAAA,IAAAa,OAAA,GAAUf,cAAe,CAAAC,SAAA,EAAWC,SAAS,CAAA,CAAA;EACnD,OAAO,CAAAa,YAAAA,IAAAA,IAAAA,8BAAAA,QAASC,IAAQ,KAAA,IAAA,CAAA;AAC1B,CAAA;AAKgB,SAAAC,WAAAA,CACdhB,WACAC,SACe,EAAA;AACT,EAAA,IAAAa,OAAA,GAAUf,cAAe,CAAAC,SAAA,EAAWC,SAAS,CAAA,CAAA;AACnD,EAAA,OAAOa,OAAS,KAATA,IAAAA,IAAAA,OAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAS,CAAAG,IAAA,CAAA;AAClB,CAAA;AAKgB,SAAAC,mBAAAA,CACdlB,WACAC,SAC6C,EAAA;AACvC,EAAA,IAAAa,OAAA,GAAUf,cAAe,CAAAC,SAAA,EAAWC,SAAS,CAAA,CAAA;AACnD,EAAA,OAAOa,OAAS,KAATA,IAAAA,IAAAA,OAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAS,CAAAK,KAAA,CAAA;AAClB,CAAA;AAKO,SAASC,kBAAkBpB,SAA2C,EAAA;AAC3E,EAAA,IAAME,QAAW,GAAAC,oBAAA,CACfH,SAAU,CAAAI,SAAA,EACVJ,SAAU,CAAAK,WAAA,EACVL,SAAU,CAAAM,iBACZ,CAAA,CAAA;AAEO,EAAA,OAAAG,OAAA,CAAQ,YAAA;IAAA,OAAMC,KAAA,CAAMC,IAAK,CAAAT,QAAA,CAASmB,MAAM,CAAA,CAAA;GAAG,EAAA,CAACnB,QAAQ,CAAC,CAAA,CAAA;AAC9D;;;;"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * A2UI 数据绑定 Hooks
3
+ * 实现单向/双向数据绑定
4
+ */
5
+ import type { Bindable } from '../../core/a2ui/types';
6
+ /**
7
+ * 单向数据绑定 Hook
8
+ *
9
+ * 用于读取绑定值:
10
+ * - 如果是字面值,直接返回
11
+ * - 如果是路径绑定,从数据模型读取
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * function Text({ text }: { text: Bindable<string> }) {
16
+ * const resolvedText = useDataBinding(text);
17
+ * return <span>{resolvedText}</span>;
18
+ * }
19
+ * ```
20
+ */
21
+ export declare function useDataBinding<T>(value: Bindable<T>): T;
22
+ export declare function useDataBinding<T>(value: Bindable<T> | undefined): T | undefined;
23
+ /**
24
+ * 双向数据绑定 Hook
25
+ *
26
+ * 用于表单控件的双向绑定:
27
+ * - 读取:从数据模型获取当前值
28
+ * - 写入:更新数据模型
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * function TextField({ text }: { text: Bindable<string> }) {
33
+ * const [inputValue, setInputValue] = useTwoWayBinding(text, '');
34
+ * return <Input value={inputValue} onChange={setInputValue} />;
35
+ * }
36
+ * ```
37
+ */
38
+ export declare function useTwoWayBinding<T>(value: Bindable<T> | undefined, defaultValue: T): [T, (newValue: T) => void];
39
+ /**
40
+ * 获取路径绑定的完整路径
41
+ */
42
+ export declare function useBindingPath(value: Bindable<unknown> | undefined): string | null;
43
+ /**
44
+ * 批量解析绑定值
45
+ */
46
+ export declare function useDataBindings<T extends Record<string, Bindable<unknown>>>(bindings: T): {
47
+ [K in keyof T]: T[K] extends Bindable<infer V> ? V : never;
48
+ };
49
+ /**
50
+ * 解析字符串中的绑定占位符
51
+ * 支持模板字符串格式: "Hello, {{/user/name}}!"
52
+ */
53
+ export declare function useResolvedString(template: string | undefined): string;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.12
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import { useSyncExternalStore, useMemo, useCallback } from 'react';
9
+ import { useA2UIContext } from './A2UIContext.js';
10
+ import '../../core/a2ui/utils/index.js';
11
+ import { resolveBinding, isPathBinding } from '../../core/a2ui/utils/binding.js';
12
+ import '@babel/runtime/helpers/defineProperty';
13
+ import '../../core/a2ui/utils/validation.js';
14
+ import '@babel/runtime/helpers/toConsumableArray';
15
+ import '@babel/runtime/helpers/typeof';
16
+
17
+ function useDataBinding(value) {
18
+ var _useA2UIContext = useA2UIContext(),
19
+ processor = _useA2UIContext.processor,
20
+ surfaceId = _useA2UIContext.surfaceId,
21
+ dataContextPath = _useA2UIContext.dataContextPath;
22
+ var snapshot = useSyncExternalStore(processor.subscribe, processor.getSnapshot, processor.getServerSnapshot);
23
+ var surface = snapshot.get(surfaceId);
24
+ var data = (surface === null || surface === void 0 ? void 0 : surface.data) || {};
25
+ return useMemo(function () {
26
+ if (value === void 0) return void 0;
27
+ return resolveBinding(value, data, dataContextPath);
28
+ }, [value, data, dataContextPath]);
29
+ }
30
+ function useTwoWayBinding(value, defaultValue) {
31
+ var _useA2UIContext2 = useA2UIContext(),
32
+ processor = _useA2UIContext2.processor,
33
+ surfaceId = _useA2UIContext2.surfaceId,
34
+ dataContextPath = _useA2UIContext2.dataContextPath;
35
+ var snapshot = useSyncExternalStore(processor.subscribe, processor.getSnapshot, processor.getServerSnapshot);
36
+ var surface = snapshot.get(surfaceId);
37
+ var data = (surface === null || surface === void 0 ? void 0 : surface.data) || {};
38
+ var currentValue = useMemo(function () {
39
+ if (value === void 0) return defaultValue;
40
+ var resolved = resolveBinding(value, data, dataContextPath);
41
+ return resolved !== void 0 ? resolved : defaultValue;
42
+ }, [value, data, dataContextPath, defaultValue]);
43
+ var fullPath = useMemo(function () {
44
+ if (!isPathBinding(value)) return null;
45
+ var path = value.path;
46
+ if (path.startsWith("/")) return path;
47
+ if (!dataContextPath || dataContextPath === "/") {
48
+ return "/".concat(path);
49
+ }
50
+ return "".concat(dataContextPath, "/").concat(path).replace(/\/+/g, "/");
51
+ }, [value, dataContextPath]);
52
+ var setValue = useCallback(function (newValue) {
53
+ if (fullPath) {
54
+ processor.setData(surfaceId, fullPath, "", newValue);
55
+ }
56
+ }, [processor, surfaceId, fullPath]);
57
+ return [currentValue, setValue];
58
+ }
59
+ function useBindingPath(value) {
60
+ var _useA2UIContext3 = useA2UIContext(),
61
+ dataContextPath = _useA2UIContext3.dataContextPath;
62
+ return useMemo(function () {
63
+ if (!isPathBinding(value)) return null;
64
+ var path = value.path;
65
+ if (path.startsWith("/")) return path;
66
+ if (!dataContextPath || dataContextPath === "/") {
67
+ return "/".concat(path);
68
+ }
69
+ return "".concat(dataContextPath, "/").concat(path).replace(/\/+/g, "/");
70
+ }, [value, dataContextPath]);
71
+ }
72
+ function useDataBindings(bindings) {
73
+ var _useA2UIContext4 = useA2UIContext(),
74
+ processor = _useA2UIContext4.processor,
75
+ surfaceId = _useA2UIContext4.surfaceId,
76
+ dataContextPath = _useA2UIContext4.dataContextPath;
77
+ var snapshot = useSyncExternalStore(processor.subscribe, processor.getSnapshot, processor.getServerSnapshot);
78
+ var surface = snapshot.get(surfaceId);
79
+ var data = (surface === null || surface === void 0 ? void 0 : surface.data) || {};
80
+ return useMemo(function () {
81
+ var result = {};
82
+ for (var _i = 0, _Object$entries = Object.entries(bindings); _i < _Object$entries.length; _i++) {
83
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
84
+ key = _Object$entries$_i[0],
85
+ value = _Object$entries$_i[1];
86
+ result[key] = resolveBinding(value, data, dataContextPath);
87
+ }
88
+ return result;
89
+ }, [bindings, data, dataContextPath]);
90
+ }
91
+ function useResolvedString(template) {
92
+ var _useA2UIContext5 = useA2UIContext(),
93
+ processor = _useA2UIContext5.processor,
94
+ surfaceId = _useA2UIContext5.surfaceId,
95
+ dataContextPath = _useA2UIContext5.dataContextPath;
96
+ var snapshot = useSyncExternalStore(processor.subscribe, processor.getSnapshot, processor.getServerSnapshot);
97
+ var surface = snapshot.get(surfaceId);
98
+ var data = (surface === null || surface === void 0 ? void 0 : surface.data) || {};
99
+ return useMemo(function () {
100
+ if (!template) return "";
101
+ return template.replace(/\{\{([^}]+)\}\}/g, function (_, path) {
102
+ var value = resolveBinding({
103
+ path: path.trim()
104
+ }, data, dataContextPath);
105
+ return value !== void 0 ? String(value) : "";
106
+ });
107
+ }, [template, data, dataContextPath]);
108
+ }
109
+
110
+ export { useBindingPath, useDataBinding, useDataBindings, useResolvedString, useTwoWayBinding };
111
+ //# sourceMappingURL=useDataBinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataBinding.js","sources":["../../../../../pro-components/chat/chat-engine/hooks/a2ui/useDataBinding.ts"],"sourcesContent":["/**\n * A2UI 数据绑定 Hooks\n * 实现单向/双向数据绑定\n */\n\nimport { useSyncExternalStore, useCallback, useMemo } from 'react';\nimport { useA2UIContext } from './A2UIContext';\nimport type { Bindable, PathBinding } from '../../core/a2ui/types';\nimport type { SurfaceSnapshot } from '../../core/a2ui/processor/A2uiMessageProcessor';\nimport { isPathBinding, resolveBinding } from '../../core/a2ui/utils';\n\n/**\n * 单向数据绑定 Hook\n * \n * 用于读取绑定值:\n * - 如果是字面值,直接返回\n * - 如果是路径绑定,从数据模型读取\n * \n * @example\n * ```tsx\n * function Text({ text }: { text: Bindable<string> }) {\n * const resolvedText = useDataBinding(text);\n * return <span>{resolvedText}</span>;\n * }\n * ```\n */\nexport function useDataBinding<T>(value: Bindable<T>): T;\nexport function useDataBinding<T>(value: Bindable<T> | undefined): T | undefined;\nexport function useDataBinding<T>(value: Bindable<T> | undefined): T | undefined {\n const { processor, surfaceId, dataContextPath } = useA2UIContext();\n\n // 订阅 processor 变化\n const snapshot: SurfaceSnapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n // 从快照中获取 surface 数据\n const surface = snapshot.get(surfaceId);\n const data = surface?.data || {};\n\n // 解析绑定值\n return useMemo(() => {\n if (value === undefined) return undefined;\n return resolveBinding(value, data, dataContextPath);\n }, [value, data, dataContextPath]);\n}\n\n/**\n * 双向数据绑定 Hook\n * \n * 用于表单控件的双向绑定:\n * - 读取:从数据模型获取当前值\n * - 写入:更新数据模型\n * \n * @example\n * ```tsx\n * function TextField({ text }: { text: Bindable<string> }) {\n * const [inputValue, setInputValue] = useTwoWayBinding(text, '');\n * return <Input value={inputValue} onChange={setInputValue} />;\n * }\n * ```\n */\nexport function useTwoWayBinding<T>(\n value: Bindable<T> | undefined,\n defaultValue: T\n): [T, (newValue: T) => void] {\n const { processor, surfaceId, dataContextPath } = useA2UIContext();\n\n // 订阅 processor 变化\n const snapshot: SurfaceSnapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n // 从快照中获取 surface 数据\n const surface = snapshot.get(surfaceId);\n const data = surface?.data || {};\n\n // 解析当前值\n const currentValue = useMemo(() => {\n if (value === undefined) return defaultValue;\n const resolved = resolveBinding(value, data, dataContextPath);\n return resolved !== undefined ? resolved : defaultValue;\n }, [value, data, dataContextPath, defaultValue]);\n\n // 获取完整路径\n const fullPath = useMemo(() => {\n if (!isPathBinding(value)) return null;\n const path = (value as PathBinding).path;\n // 使用 processor 内部的 pathResolver 来解析路径\n if (path.startsWith('/')) return path;\n // 相对路径处理\n if (!dataContextPath || dataContextPath === '/') {\n return `/${path}`;\n }\n return `${dataContextPath}/${path}`.replace(/\\/+/g, '/');\n }, [value, dataContextPath]);\n\n // 更新函数\n const setValue = useCallback(\n (newValue: T) => {\n if (fullPath) {\n processor.setData(surfaceId, fullPath, '', newValue);\n }\n },\n [processor, surfaceId, fullPath]\n );\n\n return [currentValue, setValue];\n}\n\n/**\n * 获取路径绑定的完整路径\n */\nexport function useBindingPath(value: Bindable<unknown> | undefined): string | null {\n const { dataContextPath } = useA2UIContext();\n\n return useMemo(() => {\n if (!isPathBinding(value)) return null;\n const path = (value as PathBinding).path;\n if (path.startsWith('/')) return path;\n if (!dataContextPath || dataContextPath === '/') {\n return `/${path}`;\n }\n return `${dataContextPath}/${path}`.replace(/\\/+/g, '/');\n }, [value, dataContextPath]);\n}\n\n/**\n * 批量解析绑定值\n */\nexport function useDataBindings<T extends Record<string, Bindable<unknown>>>(\n bindings: T\n): { [K in keyof T]: T[K] extends Bindable<infer V> ? V : never } {\n const { processor, surfaceId, dataContextPath } = useA2UIContext();\n\n const snapshot: SurfaceSnapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n const surface = snapshot.get(surfaceId);\n const data = surface?.data || {};\n\n return useMemo(() => {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(bindings)) {\n result[key] = resolveBinding(value, data, dataContextPath);\n }\n return result as { [K in keyof T]: T[K] extends Bindable<infer V> ? V : never };\n }, [bindings, data, dataContextPath]);\n}\n\n/**\n * 解析字符串中的绑定占位符\n * 支持模板字符串格式: \"Hello, {{/user/name}}!\"\n */\nexport function useResolvedString(template: string | undefined): string {\n const { processor, surfaceId, dataContextPath } = useA2UIContext();\n\n const snapshot: SurfaceSnapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n const surface = snapshot.get(surfaceId);\n const data = surface?.data || {};\n\n return useMemo(() => {\n if (!template) return '';\n \n // 匹配 {{path}} 格式\n return template.replace(/\\{\\{([^}]+)\\}\\}/g, (_, path) => {\n const value = resolveBinding({ path: path.trim() }, data, dataContextPath);\n return value !== undefined ? String(value) : '';\n });\n }, [template, data, dataContextPath]);\n}\n"],"names":["useDataBinding","value","_useA2UIContext","useA2UIContext","processor","surfaceId","dataContextPath","snapshot","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","surface","get","data","useMemo","resolveBinding","useTwoWayBinding","defaultValue","_useA2UIContext2","currentValue","resolved","fullPath","isPathBinding","path","startsWith","concat","replace","setValue","useCallback","newValue","setData","useBindingPath","_useA2UIContext3","useDataBindings","bindings","_useA2UIContext4","result","_i","_Object$entries","Object","entries","length","_Object$entries$_i","_slicedToArray","key","useResolvedString","template","_useA2UIContext5","_","trim","String"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -31,6 +31,9 @@ import '../core/adapters/agui/state-manager.js';
31
31
  import '@babel/runtime/helpers/typeof';
32
32
  import '../core/utils/index.js';
33
33
  import '../core/adapters/agui/utils.js';
34
+ import '../core/event-bus/index.js';
35
+ import '../core/event-bus/ChatEventBus.js';
36
+ import '../core/event-bus/types.js';
34
37
  import '../core/store/message.js';
35
38
  import '@babel/runtime/helpers/get';
36
39
  import '../core/store/reactiveState.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -27,6 +27,9 @@ import '@babel/runtime/helpers/wrapNativeSuper';
27
27
  import '../core/utils/index.js';
28
28
  import '@babel/runtime/helpers/typeof';
29
29
  import '../core/adapters/agui/utils.js';
30
+ import '../core/event-bus/index.js';
31
+ import '../core/event-bus/ChatEventBus.js';
32
+ import '../core/event-bus/types.js';
30
33
  import '../core/store/message.js';
31
34
  import '@babel/runtime/helpers/get';
32
35
  import '../core/store/reactiveState.js';
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"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"}
1
+ {"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -27,6 +27,9 @@ import '../core/adapters/agui/state-manager.js';
27
27
  import '@babel/runtime/helpers/typeof';
28
28
  import '../core/utils/index.js';
29
29
  import '../core/adapters/agui/utils.js';
30
+ import '../core/event-bus/index.js';
31
+ import '../core/event-bus/ChatEventBus.js';
32
+ import '../core/event-bus/types.js';
30
33
  import '../core/store/message.js';
31
34
  import '@babel/runtime/helpers/get';
32
35
  import '../core/store/reactiveState.js';
@@ -1 +1 @@
1
- {"version":3,"file":"useChat.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useChat.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ChatEngine from '../core';\nimport type { ChatMessagesData, ChatServiceConfig, ChatStatus } from '../core';\n// import ChatEngine from 'tdesign-web-components/lib/chat-engine';\n// import type { ChatMessagesData, ChatServiceConfig, ChatStatus } from 'tdesign-web-components/lib/chat-engine';\n\n\nexport type IUseChat = {\n defaultMessages?: ChatMessagesData[];\n chatServiceConfig: ChatServiceConfig;\n};\n\nexport const useChat = ({ defaultMessages: initialMessages, chatServiceConfig }: IUseChat) => {\n const [messages, setMessage] = useState<ChatMessagesData[]>([]);\n const [status, setStatus] = useState<ChatStatus>('idle');\n const chatEngineRef = useRef<ChatEngine>(new ChatEngine());\n const msgSubscribeRef = useRef<null | (() => void)>(null);\n const prevInitialMessagesRef = useRef<ChatMessagesData[]>([]);\n\n const chatEngine = chatEngineRef.current;\n\n const syncState = (state: ChatMessagesData[]) => {\n setMessage(state);\n setStatus(state.at(-1)?.status || 'idle');\n };\n\n const subscribeToChat = () => {\n // 清理之前的订阅\n msgSubscribeRef.current?.();\n\n msgSubscribeRef.current = chatEngine.messageStore.subscribe((state) => {\n syncState(state.messages);\n });\n };\n\n const initChat = () => {\n // @ts-ignore\n chatEngine.init(chatServiceConfig, initialMessages);\n // @ts-ignore\n syncState(initialMessages);\n subscribeToChat();\n };\n\n // 初始化聊天引擎\n useEffect(() => {\n initChat();\n return () => msgSubscribeRef.current?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // 监听 defaultMessages 变化\n useEffect(() => {\n // 检查 initialMessages 是否真的发生了变化\n const hasChanged = JSON.stringify(prevInitialMessagesRef.current) !== JSON.stringify(initialMessages);\n\n if (hasChanged && initialMessages && initialMessages.length > 0) {\n // 更新引用\n prevInitialMessagesRef.current = initialMessages;\n\n // 重新初始化聊天引擎或更新消息\n chatEngine.setMessages(initialMessages, 'replace');\n\n // 同步状态\n syncState(initialMessages);\n }\n }, [initialMessages, chatEngine]);\n\n return {\n chatEngine,\n messages,\n status,\n };\n};\n"],"names":["useChat","initialMessages","_ref","defaultMessages","chatServiceConfig","_useState","useState","_useState2","_slicedToArray","messages","setMessage","_useState3","_useState4","status","setStatus","chatEngineRef","useRef","ChatEngine","msgSubscribeRef","prevInitialMessagesRef","chatEngine","current","syncState","state","_state$at","at","subscribeToChat","_msgSubscribeRef$curr","call","messageStore","subscribe","initChat","init","useEffect","_msgSubscribeRef$curr2","hasChanged","JSON","stringify","length","setMessages"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAYaA,UAAU,SAAVA,cAAiF;AAAA,EAAA,IAAnDC,eAAA,GAAAC,IAAA,CAAjBC,eAAiB;IAAiBC,yBAAAA;AAC1D,EAAA,IAAAC,SAAA,GAA+BC,QAAA,CAA6B,EAAE,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAvDI,IAAAA,QAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,UAAU,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,EAAA,IAAAI,UAAA,GAA4BL,SAAqB,MAAM,CAAA;IAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAhDE,IAAAA,MAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAQE,IAAAA,SAAS,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;EACxB,IAAMG,aAAgB,GAAAC,MAAA,CAAmB,IAAIC,UAAA,EAAY,CAAA,CAAA;AACnD,EAAA,IAAAC,eAAA,GAAkBF,OAA4B,IAAI,CAAA,CAAA;AAClD,EAAA,IAAAG,sBAAA,GAAyBH,MAA2B,CAAA,EAAE,CAAA,CAAA;AAE5D,EAAA,IAAMI,aAAaL,aAAc,CAAAM,OAAA,CAAA;AAE3B,EAAA,IAAAC,SAAA,GAAY,SAAZA,SAAAA,CAAaC,KAA8B,EAAA;AAAA,IAAA,IAAAC,SAAA,CAAA;IAC/Cd,UAAA,CAAWa,KAAK,CAAA,CAAA;AAChBT,IAAAA,SAAA,CAAU,CAAAU,CAAAA,SAAA,GAAAD,KAAM,CAAAE,EAAA,CAAG,CAAE,CAAA,CAAA,MAAA,IAAA,IAAAD,SAAA,KAAXA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAA,CAAcX,WAAU,MAAM,CAAA,CAAA;GAC1C,CAAA;AAEA,EAAA,IAAMa,kBAAkB,SAAlBA,kBAAwB;AAAA,IAAA,IAAAC,qBAAA,CAAA;AAE5B,IAAA,CAAAA,qBAAA,GAAAT,eAAA,CAAgBG,OAAU,MAAA,IAAA,IAAAM,qBAAA,KAAA,KAAA,CAAA,IAA1BA,qBAAA,CAAAC,IAAA,CAAAV,eAA0B,CAAA,CAAA;IAE1BA,eAAA,CAAgBG,OAAU,GAAAD,UAAA,CAAWS,YAAa,CAAAC,SAAA,CAAU,UAACP,KAAU,EAAA;AACrED,MAAAA,SAAA,CAAUC,MAAMd,QAAQ,CAAA,CAAA;AAC1B,KAAC,CAAA,CAAA;GACH,CAAA;AAEA,EAAA,IAAMsB,WAAW,SAAXA,WAAiB;AAEVX,IAAAA,UAAA,CAAAY,IAAA,CAAK5B,mBAAmBH,eAAe,CAAA,CAAA;IAElDqB,SAAA,CAAUrB,eAAe,CAAA,CAAA;AACTyB,IAAAA,eAAA,EAAA,CAAA;GAClB,CAAA;AAGAO,EAAAA,SAAA,CAAU,YAAM;AACLF,IAAAA,QAAA,EAAA,CAAA;IACF,OAAA,YAAA;AAAA,MAAA,IAAAG,sBAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,sBAAA,GAAMhB,gBAAgBG,OAAU,MAAA,IAAA,IAAAa,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA1BA,sBAAA,CAAAN,IAAA,CAAAV,eAA0B,CAAA,CAAA;AAAA,KAAA,CAAA;GAEzC,EAAG,EAAE,CAAA,CAAA;AAGLe,EAAAA,SAAA,CAAU,YAAM;AAER,IAAA,IAAAE,UAAA,GAAaC,KAAKC,SAAU,CAAAlB,sBAAA,CAAuBE,OAAO,CAAM,KAAAe,IAAA,CAAKC,UAAUpC,eAAe,CAAA,CAAA;IAEpG,IAAIkC,UAAc,IAAAlC,eAAA,IAAmBA,eAAgB,CAAAqC,MAAA,GAAS,CAAG,EAAA;MAE/DnB,sBAAA,CAAuBE,OAAU,GAAApB,eAAA,CAAA;AAGtBmB,MAAAA,UAAA,CAAAmB,WAAA,CAAYtC,iBAAiB,SAAS,CAAA,CAAA;MAGjDqB,SAAA,CAAUrB,eAAe,CAAA,CAAA;AAC3B,KAAA;AACF,GAAG,EAAA,CAACA,eAAiB,EAAAmB,UAAU,CAAC,CAAA,CAAA;EAEzB,OAAA;AACLA,IAAAA,UAAA,EAAAA,UAAA;AACAX,IAAAA,QAAA,EAAAA,QAAA;AACAI,IAAAA,MAAA,EAAAA,MAAAA;GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"useChat.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useChat.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ChatEngine from '../core';\nimport type { ChatMessagesData, ChatServiceConfig, ChatStatus } from '../core';\n// import ChatEngine from 'tdesign-web-components/lib/chat-engine';\n// import type { ChatMessagesData, ChatServiceConfig, ChatStatus } from 'tdesign-web-components/lib/chat-engine';\n\n\nexport type IUseChat = {\n defaultMessages?: ChatMessagesData[];\n chatServiceConfig: ChatServiceConfig;\n};\n\nexport const useChat = ({ defaultMessages: initialMessages, chatServiceConfig }: IUseChat) => {\n const [messages, setMessage] = useState<ChatMessagesData[]>([]);\n const [status, setStatus] = useState<ChatStatus>('idle');\n const chatEngineRef = useRef<ChatEngine>(new ChatEngine());\n const msgSubscribeRef = useRef<null | (() => void)>(null);\n const prevInitialMessagesRef = useRef<ChatMessagesData[]>([]);\n\n const chatEngine = chatEngineRef.current;\n\n const syncState = (state: ChatMessagesData[]) => {\n setMessage(state);\n setStatus(state.at(-1)?.status || 'idle');\n };\n\n const subscribeToChat = () => {\n // 清理之前的订阅\n msgSubscribeRef.current?.();\n\n msgSubscribeRef.current = chatEngine.messageStore.subscribe((state) => {\n syncState(state.messages);\n });\n };\n\n const initChat = () => {\n // @ts-ignore\n chatEngine.init(chatServiceConfig, initialMessages);\n // @ts-ignore\n syncState(initialMessages);\n subscribeToChat();\n };\n\n // 初始化聊天引擎\n useEffect(() => {\n initChat();\n return () => msgSubscribeRef.current?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // 监听 defaultMessages 变化\n useEffect(() => {\n // 检查 initialMessages 是否真的发生了变化\n const hasChanged = JSON.stringify(prevInitialMessagesRef.current) !== JSON.stringify(initialMessages);\n\n if (hasChanged && initialMessages && initialMessages.length > 0) {\n // 更新引用\n prevInitialMessagesRef.current = initialMessages;\n\n // 重新初始化聊天引擎或更新消息\n chatEngine.setMessages(initialMessages, 'replace');\n\n // 同步状态\n syncState(initialMessages);\n }\n }, [initialMessages, chatEngine]);\n\n return {\n chatEngine,\n messages,\n status,\n };\n};\n"],"names":["useChat","initialMessages","_ref","defaultMessages","chatServiceConfig","_useState","useState","_useState2","_slicedToArray","messages","setMessage","_useState3","_useState4","status","setStatus","chatEngineRef","useRef","ChatEngine","msgSubscribeRef","prevInitialMessagesRef","chatEngine","current","syncState","state","_state$at","at","subscribeToChat","_msgSubscribeRef$curr","call","messageStore","subscribe","initChat","init","useEffect","_msgSubscribeRef$curr2","hasChanged","JSON","stringify","length","setMessages"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAYaA,UAAU,SAAVA,cAAiF;AAAA,EAAA,IAAnDC,eAAA,GAAAC,IAAA,CAAjBC,eAAiB;IAAiBC,yBAAAA;AAC1D,EAAA,IAAAC,SAAA,GAA+BC,QAAA,CAA6B,EAAE,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAvDI,IAAAA,QAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,UAAU,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,EAAA,IAAAI,UAAA,GAA4BL,SAAqB,MAAM,CAAA;IAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAhDE,IAAAA,MAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAQE,IAAAA,SAAS,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;EACxB,IAAMG,aAAgB,GAAAC,MAAA,CAAmB,IAAIC,UAAA,EAAY,CAAA,CAAA;AACnD,EAAA,IAAAC,eAAA,GAAkBF,OAA4B,IAAI,CAAA,CAAA;AAClD,EAAA,IAAAG,sBAAA,GAAyBH,MAA2B,CAAA,EAAE,CAAA,CAAA;AAE5D,EAAA,IAAMI,aAAaL,aAAc,CAAAM,OAAA,CAAA;AAE3B,EAAA,IAAAC,SAAA,GAAY,SAAZA,SAAAA,CAAaC,KAA8B,EAAA;AAAA,IAAA,IAAAC,SAAA,CAAA;IAC/Cd,UAAA,CAAWa,KAAK,CAAA,CAAA;AAChBT,IAAAA,SAAA,CAAU,CAAAU,CAAAA,SAAA,GAAAD,KAAM,CAAAE,EAAA,CAAG,CAAE,CAAA,CAAA,MAAA,IAAA,IAAAD,SAAA,KAAXA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAA,CAAcX,WAAU,MAAM,CAAA,CAAA;GAC1C,CAAA;AAEA,EAAA,IAAMa,kBAAkB,SAAlBA,kBAAwB;AAAA,IAAA,IAAAC,qBAAA,CAAA;AAE5B,IAAA,CAAAA,qBAAA,GAAAT,eAAA,CAAgBG,OAAU,MAAA,IAAA,IAAAM,qBAAA,KAAA,KAAA,CAAA,IAA1BA,qBAAA,CAAAC,IAAA,CAAAV,eAA0B,CAAA,CAAA;IAE1BA,eAAA,CAAgBG,OAAU,GAAAD,UAAA,CAAWS,YAAa,CAAAC,SAAA,CAAU,UAACP,KAAU,EAAA;AACrED,MAAAA,SAAA,CAAUC,MAAMd,QAAQ,CAAA,CAAA;AAC1B,KAAC,CAAA,CAAA;GACH,CAAA;AAEA,EAAA,IAAMsB,WAAW,SAAXA,WAAiB;AAEVX,IAAAA,UAAA,CAAAY,IAAA,CAAK5B,mBAAmBH,eAAe,CAAA,CAAA;IAElDqB,SAAA,CAAUrB,eAAe,CAAA,CAAA;AACTyB,IAAAA,eAAA,EAAA,CAAA;GAClB,CAAA;AAGAO,EAAAA,SAAA,CAAU,YAAM;AACLF,IAAAA,QAAA,EAAA,CAAA;IACF,OAAA,YAAA;AAAA,MAAA,IAAAG,sBAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,sBAAA,GAAMhB,gBAAgBG,OAAU,MAAA,IAAA,IAAAa,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA1BA,sBAAA,CAAAN,IAAA,CAAAV,eAA0B,CAAA,CAAA;AAAA,KAAA,CAAA;GAEzC,EAAG,EAAE,CAAA,CAAA;AAGLe,EAAAA,SAAA,CAAU,YAAM;AAER,IAAA,IAAAE,UAAA,GAAaC,KAAKC,SAAU,CAAAlB,sBAAA,CAAuBE,OAAO,CAAM,KAAAe,IAAA,CAAKC,UAAUpC,eAAe,CAAA,CAAA;IAEpG,IAAIkC,UAAc,IAAAlC,eAAA,IAAmBA,eAAgB,CAAAqC,MAAA,GAAS,CAAG,EAAA;MAE/DnB,sBAAA,CAAuBE,OAAU,GAAApB,eAAA,CAAA;AAGtBmB,MAAAA,UAAA,CAAAmB,WAAA,CAAYtC,iBAAiB,SAAS,CAAA,CAAA;MAGjDqB,SAAA,CAAUrB,eAAe,CAAA,CAAA;AAC3B,KAAA;AACF,GAAG,EAAA,CAACA,eAAiB,EAAAmB,UAAU,CAAC,CAAA,CAAA;EAEzB,OAAA;AACLA,IAAAA,UAAA,EAAAA,UAAA;AACAX,IAAAA,QAAA,EAAAA,QAAA;AACAI,IAAAA,MAAA,EAAAA,MAAAA;GACF,CAAA;AACF;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -20,6 +20,8 @@ export { applyJsonPatch, findTargetElement, getMessageContentForCopy, isAIMessag
20
20
  export { StateManagerImpl, stateManager } from './core/adapters/agui/state-manager.js';
21
21
  export { AGUIEventType, ActivityDeltaEventSchema, ActivitySnapshotEventSchema, CustomEventSchema, EventSchemas, MessagesSnapshotEventSchema, RawEventSchema, RunErrorEventSchema, RunFinishedEventSchema, RunStartedEventSchema, StateDeltaEventSchema, StateSnapshotEventSchema, StepFinishedEventSchema, StepStartedEventSchema, TextMessageChunkEventSchema, TextMessageContentEventSchema, TextMessageEndEventSchema, TextMessageStartEventSchema, ThinkingEndEventSchema, ThinkingStartEventSchema, ThinkingTextMessageContentEventSchema, ThinkingTextMessageEndEventSchema, ThinkingTextMessageStartEventSchema, ToolCallArgsEventSchema, ToolCallChunkEventSchema, ToolCallEndEventSchema, ToolCallResultEventSchema, ToolCallStartEventSchema, isActivityEvent, isStateEvent, isTextMessageEvent, isThinkingEvent, isToolCallEvent } from './core/adapters/agui/events.js';
22
22
  export { AGUIAdapter } from './core/adapters/agui/index.js';
23
+ export { ChatEventBus, createEventBus } from './core/event-bus/ChatEventBus.js';
24
+ export { ChatEngineEventType } from './core/event-bus/types.js';
23
25
  import '@babel/runtime/helpers/slicedToArray';
24
26
  import 'react';
25
27
  import '@babel/runtime/helpers/toConsumableArray';
@@ -32,6 +34,7 @@ import '@babel/runtime/helpers/asyncToGenerator';
32
34
  import '@babel/runtime/helpers/classCallCheck';
33
35
  import '@babel/runtime/helpers/createClass';
34
36
  import '@babel/runtime/regenerator';
37
+ import './core/event-bus/index.js';
35
38
  import './core/store/message.js';
36
39
  import '@babel/runtime/helpers/possibleConstructorReturn';
37
40
  import '@babel/runtime/helpers/getPrototypeOf';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -0,0 +1,13 @@
1
+ export function SimpleCallbackExample(): import("react/jsx-runtime").JSX.Element;
2
+ export function HybridExample(): import("react/jsx-runtime").JSX.Element;
3
+ export function CrossComponentExample(): import("react/jsx-runtime").JSX.Element;
4
+ export function AsyncWaitExample(): import("react/jsx-runtime").JSX.Element;
5
+ export function CustomEventExample(): import("react/jsx-runtime").JSX.Element;
6
+ declare namespace _default {
7
+ export { SimpleCallbackExample };
8
+ export { HybridExample };
9
+ export { CrossComponentExample };
10
+ export { AsyncWaitExample };
11
+ export { CustomEventExample };
12
+ }
13
+ export default _default;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
package/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -28,6 +28,8 @@ export { applyJsonPatch, findTargetElement, getMessageContentForCopy, isAIMessag
28
28
  export { StateManagerImpl, stateManager } from './chat-engine/core/adapters/agui/state-manager.js';
29
29
  export { AGUIEventType, ActivityDeltaEventSchema, ActivitySnapshotEventSchema, CustomEventSchema, EventSchemas, MessagesSnapshotEventSchema, RawEventSchema, RunErrorEventSchema, RunFinishedEventSchema, RunStartedEventSchema, StateDeltaEventSchema, StateSnapshotEventSchema, StepFinishedEventSchema, StepStartedEventSchema, TextMessageChunkEventSchema, TextMessageContentEventSchema, TextMessageEndEventSchema, TextMessageStartEventSchema, ThinkingEndEventSchema, ThinkingStartEventSchema, ThinkingTextMessageContentEventSchema, ThinkingTextMessageEndEventSchema, ThinkingTextMessageStartEventSchema, ToolCallArgsEventSchema, ToolCallChunkEventSchema, ToolCallEndEventSchema, ToolCallResultEventSchema, ToolCallStartEventSchema, isActivityEvent, isStateEvent, isTextMessageEvent, isThinkingEvent, isToolCallEvent } from './chat-engine/core/adapters/agui/events.js';
30
30
  export { AGUIAdapter } from './chat-engine/core/adapters/agui/index.js';
31
+ export { ChatEventBus, createEventBus } from './chat-engine/core/event-bus/ChatEventBus.js';
32
+ export { ChatEngineEventType } from './chat-engine/core/event-bus/types.js';
31
33
  import 'tdesign-web-components/lib/chatbot';
32
34
  import 'tdesign-web-components/lib/chat-message/content/reasoning-content';
33
35
  import 'tdesign-web-components/lib/chat-message/content/search-content';
@@ -51,6 +53,7 @@ import './chat-engine/components/activity/types.js';
51
53
  import './chat-engine/core/index.js';
52
54
  import '@babel/runtime/helpers/asyncToGenerator';
53
55
  import '@babel/runtime/regenerator';
56
+ import './chat-engine/core/event-bus/index.js';
54
57
  import './chat-engine/core/store/message.js';
55
58
  import '@babel/runtime/helpers/toConsumableArray';
56
59
  import '@babel/runtime/helpers/get';
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/es/style/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.10
2
+ * tdesign v1.0.2-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdesign-react/chat",
3
- "version": "1.0.2-alpha.11",
3
+ "version": "1.0.2-alpha.13",
4
4
  "title": "@tdesign-react/chat",
5
5
  "description": "TDesign Pro Component for AIGC",
6
6
  "module": "es/index.js",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@babel/runtime": "~7.26.7",
53
- "tdesign-web-components": "1.2.11-alpha.9",
53
+ "tdesign-web-components": "1.2.11-alpha.11",
54
54
  "classnames": "~2.5.1",
55
55
  "lodash-es": "^4.17.21",
56
56
  "zod": "^3.24.2",