@tdesign-react/chat 1.1.0-alpha.10 → 1.1.0-alpha.12

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 (205) hide show
  1. package/es/_chunks/dep-076af7c3.js +438 -0
  2. package/es/_chunks/dep-076af7c3.js.map +1 -0
  3. package/es/_chunks/dep-1ca64fef.js +1247 -0
  4. package/es/_chunks/dep-1ca64fef.js.map +1 -0
  5. package/es/_chunks/dep-58d90dfe.js +438 -0
  6. package/es/_chunks/dep-58d90dfe.js.map +1 -0
  7. package/es/_chunks/dep-5b6b17d0.js +169 -0
  8. package/es/_chunks/dep-5b6b17d0.js.map +1 -0
  9. package/es/_chunks/dep-93283bbd.js +1247 -0
  10. package/es/_chunks/dep-93283bbd.js.map +1 -0
  11. package/es/_chunks/dep-dbdfe7d6.js +169 -0
  12. package/es/_chunks/dep-dbdfe7d6.js.map +1 -0
  13. package/es/_util/reactify.js +1 -1
  14. package/es/_util/useDynamicStyle.js +1 -1
  15. package/es/attachments/index.js +1 -1
  16. package/es/chat-actionbar/index.js +1 -1
  17. package/es/chat-engine/components/activity/index.d.ts +1 -2
  18. package/es/chat-engine/components/activity/index.js +11 -7
  19. package/es/chat-engine/components/activity/index.js.map +1 -1
  20. package/es/chat-engine/components/activity/registry.d.ts +6 -40
  21. package/es/chat-engine/components/activity/registry.js +23 -77
  22. package/es/chat-engine/components/activity/registry.js.map +1 -1
  23. package/es/chat-engine/components/activity/render.js +23 -71
  24. package/es/chat-engine/components/activity/render.js.map +1 -1
  25. package/es/chat-engine/components/activity/types.js +1 -1
  26. package/es/chat-engine/components/index.js +23 -6
  27. package/es/chat-engine/components/index.js.map +1 -1
  28. package/es/chat-engine/components/json-render/catalog/atomic/button.js +1 -1
  29. package/es/chat-engine/components/json-render/catalog/atomic/card.js +1 -1
  30. package/es/chat-engine/components/json-render/catalog/atomic/input.js +17 -4
  31. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
  32. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +1 -1
  33. package/es/chat-engine/components/json-render/catalog/atomic/text.js +1 -1
  34. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +1 -1
  35. package/es/chat-engine/components/json-render/contexts/actions.js +2 -2
  36. package/es/chat-engine/components/json-render/contexts/data.js +2 -2
  37. package/es/chat-engine/components/json-render/contexts/index.js +2 -2
  38. package/es/chat-engine/components/json-render/contexts/store.js +1 -1
  39. package/es/chat-engine/components/json-render/contexts/tree.js +1 -1
  40. package/es/chat-engine/components/json-render/contexts/validation.js +2 -2
  41. package/es/chat-engine/components/json-render/contexts/visibility.js +2 -2
  42. package/es/chat-engine/components/json-render/index.js +17 -4
  43. package/es/chat-engine/components/json-render/index.js.map +1 -1
  44. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +17 -4
  45. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
  46. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +17 -4
  47. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
  48. package/es/chat-engine/components/json-render/registry/config.js +17 -4
  49. package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
  50. package/es/chat-engine/components/json-render/registry/index.js +17 -4
  51. package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
  52. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +16 -3
  53. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
  54. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +3 -3
  55. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +2 -2
  56. package/es/chat-engine/components/json-render/renderer/_index.js +2 -2
  57. package/es/chat-engine/components/json-render/types.js +1 -1
  58. package/es/chat-engine/components/provider/agent-state.js +15 -2
  59. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  60. package/es/chat-engine/components/shared/ComponentErrorBoundary.d.ts +25 -0
  61. package/es/chat-engine/components/shared/ComponentErrorBoundary.js +58 -0
  62. package/es/chat-engine/components/shared/ComponentErrorBoundary.js.map +1 -0
  63. package/es/chat-engine/components/shared/createRegistry.d.ts +36 -0
  64. package/es/chat-engine/components/shared/createRegistry.js +72 -0
  65. package/es/chat-engine/components/shared/createRegistry.js.map +1 -0
  66. package/es/chat-engine/components/shared/index.d.ts +4 -0
  67. package/es/chat-engine/components/shared/index.js +18 -0
  68. package/es/chat-engine/components/shared/index.js.map +1 -0
  69. package/es/chat-engine/components/shared/useRegistrationListener.d.ts +22 -0
  70. package/es/chat-engine/components/shared/useRegistrationListener.js +45 -0
  71. package/es/chat-engine/components/shared/useRegistrationListener.js.map +1 -0
  72. package/es/chat-engine/components/toolcall/index.d.ts +1 -1
  73. package/es/chat-engine/components/toolcall/index.js +25 -8
  74. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  75. package/es/chat-engine/components/toolcall/registry.d.ts +6 -32
  76. package/es/chat-engine/components/toolcall/registry.js +23 -67
  77. package/es/chat-engine/components/toolcall/registry.js.map +1 -1
  78. package/es/chat-engine/components/toolcall/render.js +42 -77
  79. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  80. package/es/chat-engine/components/toolcall/types.js +1 -1
  81. package/es/chat-engine/core/adapters/a2ui/index.js +2 -1
  82. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -1
  83. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +1 -1
  84. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +1 -1
  85. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +1 -1
  86. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +1 -1
  87. package/es/chat-engine/core/adapters/a2ui/types/index.js +1 -1
  88. package/es/chat-engine/core/adapters/a2ui/types/types.js +1 -1
  89. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +2 -1631
  90. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -1
  91. package/es/chat-engine/core/adapters/a2ui/utils/index.js +2 -1
  92. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -1
  93. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +1 -1
  94. package/es/chat-engine/core/adapters/agui/ActivityManager.js +1 -1
  95. package/es/chat-engine/core/adapters/agui/StateManager.js +1 -1
  96. package/es/chat-engine/core/adapters/agui/event-mapper.js +1 -1
  97. package/es/chat-engine/core/adapters/agui/index.js +1 -1
  98. package/es/chat-engine/core/adapters/agui/types/events.js +1 -1
  99. package/es/chat-engine/core/adapters/agui/types/index.js +1 -1
  100. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  101. package/es/chat-engine/core/adapters/index.d.ts +2 -0
  102. package/es/chat-engine/core/adapters/index.js +27 -9
  103. package/es/chat-engine/core/adapters/index.js.map +1 -1
  104. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +1 -1
  105. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +1 -1
  106. package/es/chat-engine/core/adapters/json-render/engine.js +1 -1
  107. package/es/chat-engine/core/adapters/json-render/index.js +1 -1
  108. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +1 -1
  109. package/es/chat-engine/core/adapters/json-render/types/core.js +1 -1
  110. package/es/chat-engine/core/adapters/json-render/types/index.js +1 -1
  111. package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +212 -0
  112. package/es/chat-engine/core/adapters/openclaw/event-mapper.js +606 -0
  113. package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -0
  114. package/es/chat-engine/core/adapters/openclaw/index.d.ts +158 -0
  115. package/es/chat-engine/core/adapters/openclaw/index.js +456 -0
  116. package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -0
  117. package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +114 -0
  118. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +263 -0
  119. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -0
  120. package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +59 -0
  121. package/es/chat-engine/core/adapters/openclaw/types/config.js +33 -0
  122. package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -0
  123. package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +121 -0
  124. package/es/chat-engine/core/adapters/openclaw/types/events.js +71 -0
  125. package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -0
  126. package/es/chat-engine/core/adapters/openclaw/types/index.d.ts +6 -0
  127. package/es/chat-engine/core/adapters/openclaw/types/index.js +11 -0
  128. package/es/chat-engine/core/adapters/openclaw/types/index.js.map +1 -0
  129. package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +215 -0
  130. package/es/chat-engine/core/adapters/openclaw/types/messages.js +18 -0
  131. package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -0
  132. package/es/chat-engine/core/adapters/openclaw/utils.d.ts +49 -0
  133. package/es/chat-engine/core/adapters/openclaw/utils.js +109 -0
  134. package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -0
  135. package/es/chat-engine/core/adapters/shared/activity-manager.d.ts +11 -0
  136. package/es/chat-engine/core/adapters/shared/activity-manager.js +17 -0
  137. package/es/chat-engine/core/adapters/shared/activity-manager.js.map +1 -0
  138. package/es/chat-engine/core/adapters/shared/content-factory.d.ts +7 -0
  139. package/es/chat-engine/core/adapters/shared/content-factory.js +11 -0
  140. package/es/chat-engine/core/adapters/shared/content-factory.js.map +1 -0
  141. package/es/chat-engine/core/adapters/shared/index.d.ts +11 -0
  142. package/es/chat-engine/core/adapters/shared/index.js +21 -0
  143. package/es/chat-engine/core/adapters/shared/index.js.map +1 -0
  144. package/es/chat-engine/core/adapters/shared/merge-utils.d.ts +7 -0
  145. package/es/chat-engine/core/adapters/shared/merge-utils.js +11 -0
  146. package/es/chat-engine/core/adapters/shared/merge-utils.js.map +1 -0
  147. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  148. package/es/chat-engine/core/event-bus/index.js +1 -1
  149. package/es/chat-engine/core/event-bus/types.js +1 -1
  150. package/es/chat-engine/core/index.d.ts +7 -0
  151. package/es/chat-engine/core/index.js +84 -8
  152. package/es/chat-engine/core/index.js.map +1 -1
  153. package/es/chat-engine/core/processor/index.js +1 -1
  154. package/es/chat-engine/core/server/batch-client.js +1 -1
  155. package/es/chat-engine/core/server/connection-manager.js +1 -1
  156. package/es/chat-engine/core/server/errors.js +1 -1
  157. package/es/chat-engine/core/server/index.d.ts +1 -0
  158. package/es/chat-engine/core/server/index.js +22 -1
  159. package/es/chat-engine/core/server/index.js.map +1 -1
  160. package/es/chat-engine/core/server/llm-service.d.ts +5 -0
  161. package/es/chat-engine/core/server/llm-service.js +140 -13
  162. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  163. package/es/chat-engine/core/server/sse-client.js +1 -1
  164. package/es/chat-engine/core/server/sse-parser.js +1 -1
  165. package/es/chat-engine/core/server/types.js +1 -1
  166. package/es/chat-engine/core/server/websocket-client.d.ts +139 -0
  167. package/es/chat-engine/core/server/websocket-client.js +386 -0
  168. package/es/chat-engine/core/server/websocket-client.js.map +1 -0
  169. package/es/chat-engine/core/store/message.js +2 -2
  170. package/es/chat-engine/core/store/model.js +2 -2
  171. package/es/chat-engine/core/store/reactiveState.js +2 -2
  172. package/es/chat-engine/core/type.d.ts +7 -1
  173. package/es/chat-engine/core/type.js +1 -1
  174. package/es/chat-engine/core/utils/eventEmitter.d.ts +1 -0
  175. package/es/chat-engine/core/utils/eventEmitter.js +11 -1
  176. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -1
  177. package/es/chat-engine/core/utils/immutable-patch.js +1 -1
  178. package/es/chat-engine/core/utils/index.js +1 -1
  179. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  180. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  181. package/es/chat-engine/core/utils/logger.js +1 -1
  182. package/es/chat-engine/core/utils/performance.js +1 -1
  183. package/es/chat-engine/hooks/index.js +19 -2
  184. package/es/chat-engine/hooks/index.js.map +1 -1
  185. package/es/chat-engine/hooks/useAgentActivity.js +10 -2
  186. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
  187. package/es/chat-engine/hooks/useAgentState.js +15 -2
  188. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  189. package/es/chat-engine/hooks/useAgentToolcall.js +10 -2
  190. package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -1
  191. package/es/chat-engine/hooks/useChat.js +15 -2
  192. package/es/chat-engine/hooks/useChat.js.map +1 -1
  193. package/es/chat-engine/index.js +25 -8
  194. package/es/chat-engine/index.js.map +1 -1
  195. package/es/chat-filecard/index.js +1 -1
  196. package/es/chat-loading/index.js +1 -1
  197. package/es/chat-markdown/index.js +1 -1
  198. package/es/chat-message/index.js +1 -1
  199. package/es/chat-sender/index.js +1 -1
  200. package/es/chat-thinking/index.js +1 -1
  201. package/es/chatbot/index.js +1 -1
  202. package/es/index.js +25 -8
  203. package/es/index.js.map +1 -1
  204. package/es/style/index.js +1 -1
  205. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -8,8 +8,8 @@ import '@babel/runtime/helpers/defineProperty';
8
8
  import 'react';
9
9
  import '../renderer/JsonRenderActivityRenderer.js';
10
10
  import '../renderer/A2UIJsonRenderActivityRenderer.js';
11
- export { g as createA2UIJsonRenderActivityConfig, f as createJsonRenderActivityConfig } from '../../../../_chunks/dep-688e4aaa.js';
12
- import '../../../../_chunks/dep-ba3bd553.js';
11
+ export { g as createA2UIJsonRenderActivityConfig, f as createJsonRenderActivityConfig } from '../../../../_chunks/dep-58d90dfe.js';
12
+ import '../../../../_chunks/dep-dbdfe7d6.js';
13
13
  import '@babel/runtime/helpers/typeof';
14
14
  import '../renderer/JsonUIRenderer.js';
15
15
  import '../contexts/index.js';
@@ -20,7 +20,7 @@ import '@babel/runtime/helpers/createClass';
20
20
  import '@babel/runtime/helpers/possibleConstructorReturn';
21
21
  import '@babel/runtime/helpers/getPrototypeOf';
22
22
  import '@babel/runtime/helpers/inherits';
23
- import '../../../../_chunks/dep-de8ac730.js';
23
+ import '../../../../_chunks/dep-93283bbd.js';
24
24
  import '@babel/runtime/helpers/wrapNativeSuper';
25
25
  import '@json-render/core';
26
26
  import '../contexts/store.js';
@@ -60,6 +60,19 @@ import '../../../core/server/sse-client.js';
60
60
  import '../../../core/server/connection-manager.js';
61
61
  import '../../../core/server/sse-parser.js';
62
62
  import '../../../core/server/types.js';
63
+ import '../../../core/adapters/openclaw/index.js';
64
+ import '../../../core/server/websocket-client.js';
65
+ import '../../../core/adapters/openclaw/event-mapper.js';
66
+ import '../../../core/adapters/openclaw/types/events.js';
67
+ import '../../../core/adapters/shared/index.js';
68
+ import '../../../core/adapters/shared/content-factory.js';
69
+ import '../../../core/adapters/shared/merge-utils.js';
70
+ import '../../../core/adapters/shared/activity-manager.js';
71
+ import '../../../core/adapters/openclaw/rpc-handler.js';
72
+ import '../../../core/adapters/openclaw/types/config.js';
73
+ import '../../../core/adapters/openclaw/utils.js';
74
+ import '../../../core/adapters/openclaw/types/index.js';
75
+ import '../../../core/adapters/openclaw/types/messages.js';
63
76
  import '../../../core/adapters/index.js';
64
77
  import '../../../core/adapters/json-render/index.js';
65
78
  import '../../../core/adapters/json-render/a2ui-to-jsonrender.js';
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"config.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -7,9 +7,9 @@
7
7
  import '@babel/runtime/helpers/defineProperty';
8
8
  import '@babel/runtime/helpers/slicedToArray';
9
9
  import 'react';
10
- import '../../../../_chunks/dep-ba3bd553.js';
10
+ import '../../../../_chunks/dep-dbdfe7d6.js';
11
11
  import '../catalog/atomic/button.js';
12
- export { d as A2UIButton, A as A2UITextField, a as a2uiRegistry, g as createA2UIJsonRenderActivityConfig, b as createA2UIRegistry, c as createCustomRegistry, f as createJsonRenderActivityConfig, t as tdesignRegistry, e as withA2UIBinding, w as withStableProps } from '../../../../_chunks/dep-688e4aaa.js';
12
+ export { d as A2UIButton, A as A2UITextField, a as a2uiRegistry, g as createA2UIJsonRenderActivityConfig, b as createA2UIRegistry, c as createCustomRegistry, f as createJsonRenderActivityConfig, t as tdesignRegistry, e as withA2UIBinding, w as withStableProps } from '../../../../_chunks/dep-58d90dfe.js';
13
13
  import '../catalog/atomic/card.js';
14
14
  import '../catalog/atomic/text.js';
15
15
  import '../catalog/atomic/layout.js';
@@ -25,7 +25,7 @@ import '@babel/runtime/helpers/createClass';
25
25
  import '@babel/runtime/helpers/possibleConstructorReturn';
26
26
  import '@babel/runtime/helpers/getPrototypeOf';
27
27
  import '@babel/runtime/helpers/inherits';
28
- import '../../../../_chunks/dep-de8ac730.js';
28
+ import '../../../../_chunks/dep-93283bbd.js';
29
29
  import '@babel/runtime/helpers/wrapNativeSuper';
30
30
  import '@json-render/core';
31
31
  import '../contexts/store.js';
@@ -65,6 +65,19 @@ import '../../../core/server/sse-client.js';
65
65
  import '../../../core/server/connection-manager.js';
66
66
  import '../../../core/server/sse-parser.js';
67
67
  import '../../../core/server/types.js';
68
+ import '../../../core/adapters/openclaw/index.js';
69
+ import '../../../core/server/websocket-client.js';
70
+ import '../../../core/adapters/openclaw/event-mapper.js';
71
+ import '../../../core/adapters/openclaw/types/events.js';
72
+ import '../../../core/adapters/shared/index.js';
73
+ import '../../../core/adapters/shared/content-factory.js';
74
+ import '../../../core/adapters/shared/merge-utils.js';
75
+ import '../../../core/adapters/shared/activity-manager.js';
76
+ import '../../../core/adapters/openclaw/rpc-handler.js';
77
+ import '../../../core/adapters/openclaw/types/config.js';
78
+ import '../../../core/adapters/openclaw/utils.js';
79
+ import '../../../core/adapters/openclaw/types/index.js';
80
+ import '../../../core/adapters/openclaw/types/messages.js';
68
81
  import '../../../core/adapters/index.js';
69
82
  import '../../../core/adapters/json-render/index.js';
70
83
  import '../../../core/adapters/json-render/a2ui-to-jsonrender.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.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -35,7 +35,7 @@ import '../../../core/adapters/agui/utils.js';
35
35
  import '../../../core/store/message.js';
36
36
  import '@babel/runtime/helpers/get';
37
37
  import '../../../core/store/reactiveState.js';
38
- import '../../../../_chunks/dep-de8ac730.js';
38
+ import '../../../../_chunks/dep-93283bbd.js';
39
39
  import '../../../core/event-bus/index.js';
40
40
  import '../../../core/event-bus/ChatEventBus.js';
41
41
  import '../../../core/event-bus/types.js';
@@ -50,12 +50,25 @@ import '../../../core/server/sse-client.js';
50
50
  import '../../../core/server/connection-manager.js';
51
51
  import '../../../core/server/sse-parser.js';
52
52
  import '../../../core/server/types.js';
53
+ import '../../../core/adapters/openclaw/index.js';
54
+ import '../../../core/server/websocket-client.js';
55
+ import '../../../core/adapters/openclaw/event-mapper.js';
56
+ import '../../../core/adapters/openclaw/types/events.js';
57
+ import '../../../core/adapters/shared/index.js';
58
+ import '../../../core/adapters/shared/content-factory.js';
59
+ import '../../../core/adapters/shared/merge-utils.js';
60
+ import '../../../core/adapters/shared/activity-manager.js';
61
+ import '../../../core/adapters/openclaw/rpc-handler.js';
62
+ import '../../../core/adapters/openclaw/types/config.js';
63
+ import '../../../core/adapters/openclaw/utils.js';
64
+ import '../../../core/adapters/openclaw/types/index.js';
65
+ import '../../../core/adapters/openclaw/types/messages.js';
53
66
  import '../../../core/adapters/index.js';
54
67
  import '../../../core/adapters/json-render/index.js';
55
68
  import '../../../core/adapters/json-render/types/a2ui.js';
56
69
  import '../../../core/adapters/json-render/types/index.js';
57
70
  import '../../../core/adapters/json-render/types/core.js';
58
- import '../../../../_chunks/dep-ba3bd553.js';
71
+ import '../../../../_chunks/dep-dbdfe7d6.js';
59
72
  import './JsonUIRenderer.js';
60
73
  import '../contexts/index.js';
61
74
  import '../contexts/data.js';
@@ -1 +1 @@
1
- {"version":3,"file":"A2UIJsonRenderActivityRenderer.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.tsx"],"sourcesContent":["/**\n * A2UI v0.9 + json-render Activity 渲染器\n * 将 A2UI v0.9 协议转换为 json-render Schema 进行渲染\n * \n * 工作流程:\n * 1. 接收 ACTIVITY_SNAPSHOT/DELTA 中的 A2UI content\n * 2. 区分消息类型:UI型 vs 纯数据型\n * 3. UI型:转换为 Schema 并注册到 SurfaceStateManager,渲染 UI\n * 4. 纯数据型:通过 SurfaceStateManager 更新数据,触发订阅者重渲染,本组件不渲染\n * \n * 消息分类:\n * - UI型消息:包含 createSurface / updateComponents / deleteSurface → 需要渲染/更新 UI\n * - 纯数据型消息:仅包含 updateDataModel → 只更新状态,不渲染新 UI\n */\n\nimport React, { useMemo, useEffect, useState, useCallback } from 'react';\nimport { convertA2UIMessagesToJsonRender, surfaceStateManager } from '../../../core';\nimport type { A2UIMessage, JsonRenderSchema } from '../../../core';\nimport type { JsonRenderActivityProps, ComponentRegistry } from '../types';\nimport { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer';\n\n\nexport interface A2UIJsonRenderActivityRendererProps extends Omit<JsonRenderActivityProps, 'content'> {\n /** A2UI content(包含 messages 数组) */\n content: {\n messages?: A2UIMessage[];\n [key: string]: any;\n };\n /** 组件注册表(必须) */\n registry: ComponentRegistry;\n /** Action 处理器(可选) */\n actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;\n /** 显示调试信息 */\n debug?: boolean;\n}\n\n/**\n * 从消息中提取 surfaceId\n */\nfunction extractSurfaceId(messages: A2UIMessage[]): string | null {\n for (const msg of messages) {\n if (msg.createSurface) return msg.createSurface.surfaceId;\n if (msg.updateComponents) return msg.updateComponents.surfaceId;\n if (msg.updateDataModel) return msg.updateDataModel.surfaceId;\n if (msg.deleteSurface) return msg.deleteSurface.surfaceId;\n }\n return null;\n}\n\n/**\n * 判断消息是否为\"UI型\"(需要渲染/更新 UI)\n * 包括 createSurface / updateComponents / deleteSurface\n * 只有纯 updateDataModel 消息不需要渲染\n */\nfunction isUIMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents || msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含删除操作\n */\nfunction hasDeletionMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含创建/更新操作(需要渲染 UI 的)\n */\nfunction hasCreationMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents);\n}\n\n/**\n * A2UI v0.9 + json-render Activity 渲染器组件\n */\nexport const A2UIJsonRenderActivityRenderer: React.FC<A2UIJsonRenderActivityRendererProps> = ({\n activityType,\n content,\n messageId,\n ext,\n registry,\n actionHandlers,\n debug = false,\n}) => {\n // 设置调试模式\n useEffect(() => {\n surfaceStateManager.setDebug(debug);\n }, [debug]);\n\n // 用于触发重渲染的版本号\n const [schemaVersion, setSchemaVersion] = useState(0);\n\n // 分析消息类型\n const { surfaceId, isUI, isDeletion, isCreation, messages } = useMemo(() => {\n const msgs = content.messages;\n if (!Array.isArray(msgs) || msgs.length === 0) {\n return { surfaceId: null, isUI: false, isDeletion: false, isCreation: false, messages: [] };\n }\n return {\n surfaceId: extractSurfaceId(msgs),\n isUI: isUIMessages(msgs),\n isDeletion: hasDeletionMessages(msgs),\n isCreation: hasCreationMessages(msgs),\n messages: msgs,\n };\n }, [content.messages]);\n\n // 处理消息并获取 Schema\n const initialSchema = useMemo<JsonRenderSchema | null>(() => {\n if (!surfaceId || messages.length === 0) {\n return null;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 处理消息:', {\n messageId,\n surfaceId,\n messagesCount: messages.length,\n messageTypes: messages.map(m => \n Object.keys(m).filter(k => ['createSurface', 'updateComponents', 'updateDataModel', 'deleteSurface'].includes(k))[0]\n ),\n isUI,\n isCreation,\n isDeletion,\n cachedSurfaces: surfaceStateManager.getAllSurfaceIds(),\n });\n }\n\n // 删除型消息:清理缓存\n if (isDeletion) {\n surfaceStateManager.deleteSurface(surfaceId);\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除 Surface:', surfaceId);\n }\n return null;\n }\n\n // 创建型消息:转换并注册\n if (isCreation) {\n const schema = convertA2UIMessagesToJsonRender(messages);\n if (schema) {\n // 提取 catalogId\n const catalogId = messages.find(m => m.createSurface)?.createSurface?.catalogId;\n surfaceStateManager.registerSurface(surfaceId, schema, catalogId);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 创建型消息,注册 Surface:', {\n surfaceId,\n elementsCount: Object.keys(schema.elements).length,\n data: schema.data,\n });\n }\n }\n return schema;\n }\n\n // 更新型消息:通过 SurfaceStateManager 更新数据\n for (const msg of messages) {\n if (msg.updateDataModel) {\n const { path, op, value } = msg.updateDataModel;\n const success = surfaceStateManager.updateData(surfaceId, path, op || 'replace', value);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 更新型消息,更新数据:', {\n surfaceId,\n path,\n op: op || 'replace',\n value,\n success,\n });\n }\n }\n }\n\n // 更新型消息不需要渲染,返回 null\n return null;\n }, [messages, surfaceId, isCreation, isDeletion, isUI, debug, messageId]);\n\n // 订阅状态变化的回调\n const handleSchemaUpdate = useCallback(() => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 收到状态更新通知,触发重渲染');\n }\n setSchemaVersion(v => v + 1);\n }, [debug]);\n\n // 订阅 Surface 状态变化(仅当是创建型消息时)\n useEffect(() => {\n if (!isCreation || !surfaceId) {\n return;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 订阅 Surface 状态:', surfaceId);\n }\n\n const unsubscribe = surfaceStateManager.subscribe(surfaceId, handleSchemaUpdate);\n\n return () => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 取消订阅 Surface 状态:', surfaceId);\n }\n unsubscribe();\n };\n }, [isCreation, surfaceId, handleSchemaUpdate, debug]);\n\n // 获取当前 Schema(考虑版本变化)\n const currentSchema = useMemo(() => {\n if (!isCreation || !surfaceId) {\n return null;\n }\n // schemaVersion 变化时从缓存获取最新 Schema\n return surfaceStateManager.getSchema(surfaceId) || initialSchema;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isCreation, surfaceId, initialSchema, schemaVersion]);\n\n // 非 UI 型消息不渲染(仅 updateDataModel 的消息)\n if (!isUI) {\n if (debug && messages.length > 0) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 纯数据更新消息,跳过渲染');\n }\n return null;\n }\n\n // 删除型消息:返回 null(UI 已被删除)\n if (isDeletion && !isCreation) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除型消息,跳过渲染');\n }\n return null;\n }\n\n // 渲染 UI\n return (\n <JsonRenderActivityRenderer\n activityType={activityType}\n content={currentSchema}\n messageId={messageId}\n ext={ext}\n registry={registry}\n actionHandlers={actionHandlers}\n />\n );\n};\n\nexport default A2UIJsonRenderActivityRenderer;\n"],"names":["extractSurfaceId","messages","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","createSurface","surfaceId","updateComponents","updateDataModel","deleteSurface","err","e","f","isUIMessages","some","hasDeletionMessages","hasCreationMessages","A2UIJsonRenderActivityRenderer","activityType","_ref","content","messageId","ext","registry","actionHandlers","_ref$debug","debug","useEffect","surfaceStateManager","setDebug","_useState","useState","_useState2","_slicedToArray","schemaVersion","setSchemaVersion","_useMemo","useMemo","msgs","Array","isArray","length","isUI","isDeletion","isCreation","initialSchema","console","log","messagesCount","messageTypes","map","Object","keys","m","filter","k","includes","cachedSurfaces","getAllSurfaceIds","schema","convertA2UIMessagesToJsonRender","_messages$find","catalogId","find","registerSurface","elementsCount","elements","data","_iterator2","_step2","_msg$updateDataModel","path","op","value","success","updateData","handleSchemaUpdate","useCallback","v","unsubscribe","subscribe","currentSchema","getSchema","React","createElement","JsonRenderActivityRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,SAASA,iBAAiBC,QAAwC,EAAA;AAAA,EAAA,IAAAC,SAAA,GAAAC,0BAAA,CAC9CF,QAAU,CAAA;IAAAG,KAAA,CAAA;AAAA,EAAA,IAAA;IAA5B,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAA4B;AAAA,MAAA,IAAjBC;MACT,IAAIA,GAAI,CAAAC,aAAA,EAAe,OAAOD,IAAIC,aAAc,CAAAC,SAAA,CAAA;MAChD,IAAIF,GAAI,CAAAG,gBAAA,EAAkB,OAAOH,IAAIG,gBAAiB,CAAAD,SAAA,CAAA;MACtD,IAAIF,GAAI,CAAAI,eAAA,EAAiB,OAAOJ,IAAII,eAAgB,CAAAF,SAAA,CAAA;MACpD,IAAIF,GAAI,CAAAK,aAAA,EAAe,OAAOL,IAAIK,aAAc,CAAAH,SAAA,CAAA;AAClD,KAAA;AAAA,GAAA,CAAA,OAAAI,GAAA,EAAA;IAAAZ,SAAA,CAAAa,CAAA,CAAAD,GAAA,CAAA,CAAA;AAAA,GAAA,SAAA;AAAAZ,IAAAA,SAAA,CAAAc,CAAA,EAAA,CAAA;AAAA,GAAA;AACO,EAAA,OAAA,IAAA,CAAA;AACT,CAAA;AAOA,SAASC,aAAahB,QAAkC,EAAA;AAC/C,EAAA,OAAAA,QAAA,CAASiB,KAAK,UAAOV,GAAA,EAAA;IAAA,OAAAA,GAAA,CAAIC,iBAAiBD,GAAI,CAAAG,gBAAA,IAAoBH,IAAIK,aAAa,CAAA;GAAA,CAAA,CAAA;AAC5F,CAAA;AAKA,SAASM,oBAAoBlB,QAAkC,EAAA;AAC7D,EAAA,OAAOA,QAAS,CAAAiB,IAAA,CAAK,UAAOV,GAAA,EAAA;IAAA,OAAAA,GAAA,CAAIK,aAAa,CAAA;GAAA,CAAA,CAAA;AAC/C,CAAA;AAKA,SAASO,oBAAoBnB,QAAkC,EAAA;AAC7D,EAAA,OAAOA,SAASiB,IAAK,CAAA,UAAAV,GAAA,EAAA;AAAA,IAAA,OAAOA,GAAI,CAAAC,aAAA,IAAiBD,IAAIG,gBAAgB,CAAA;GAAA,CAAA,CAAA;AACvE,CAAA;IAKaU,iCAAgF,SAAhFA,qCAQP;AAAA,EAAA,IAPJC,YAAA,GAAAC,IAAA,CAAAD,YAAA;IACAE,OAAA,GAAAD,IAAA,CAAAC,OAAA;IACAC,SAAA,GAAAF,IAAA,CAAAE,SAAA;IACAC,GAAA,GAAAH,IAAA,CAAAG,GAAA;IACAC,QAAA,GAAAJ,IAAA,CAAAI,QAAA;IACAC,cAAA,GAAAL,IAAA,CAAAK,cAAA;IAAAC,UAAA,GAAAN,IAAA,CACAO,KAAQ;AAARA,IAAAA,KAAQ,GAAAD,UAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,UAAA,CAAA;AAGRE,EAAAA,SAAA,CAAU,YAAM;AACdC,IAAAA,mBAAA,CAAoBC,SAASH,KAAK,CAAA,CAAA;AACpC,GAAA,EAAG,CAACA,KAAK,CAAC,CAAA,CAAA;AAGV,EAAA,IAAAI,SAAA,GAA0CC,SAAS,CAAC,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA7CI,IAAAA,aAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAeG,IAAAA,gBAAgB,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAGhC,EAAA,IAAAI,QAAA,GAAwDC,QAAQ,YAAM;AAC1E,MAAA,IAAMC,OAAOlB,OAAQ,CAAAvB,QAAA,CAAA;AACrB,MAAA,IAAI,CAAC0C,KAAM,CAAAC,OAAA,CAAQF,IAAI,CAAK,IAAAA,IAAA,CAAKG,WAAW,CAAG,EAAA;QACtC,OAAA;AAAEnC,UAAAA,SAAW,EAAA,IAAA;AAAMoC,UAAAA,IAAM,EAAA,KAAA;AAAOC,UAAAA,UAAY,EAAA,KAAA;AAAOC,UAAAA,UAAY,EAAA,KAAA;AAAO/C,UAAAA,QAAU,EAAA,EAAA;SAAG,CAAA;AAC5F,OAAA;MACO,OAAA;AACLS,QAAAA,SAAA,EAAWV,iBAAiB0C,IAAI,CAAA;AAChCI,QAAAA,IAAA,EAAM7B,aAAayB,IAAI,CAAA;AACvBK,QAAAA,UAAA,EAAY5B,oBAAoBuB,IAAI,CAAA;AACpCM,QAAAA,UAAA,EAAY5B,oBAAoBsB,IAAI,CAAA;AACpCzC,QAAAA,QAAU,EAAAyC,IAAAA;OACZ,CAAA;AACF,KAAG,EAAA,CAAClB,OAAQ,CAAAvB,QAAQ,CAAC,CAAA;IAZbS,qBAAAA;IAAWoC,IAAM,GAAAN,QAAA,CAANM,IAAM;IAAAC,UAAA,GAAAP,QAAA,CAAAO,UAAA;IAAYC,sBAAAA;IAAY/C,QAAS,GAAAuC,QAAA,CAATvC,QAAS,CAAA;AAepD,EAAA,IAAAgD,aAAA,GAAgBR,QAAiC,YAAM;IAC3D,IAAI,CAAC/B,SAAA,IAAaT,QAAS,CAAA4C,MAAA,KAAW,CAAG,EAAA;AAChC,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AAEA,IAAA,IAAIf,KAAO,EAAA;AAEToB,MAAAA,OAAA,CAAQC,IAAI,0CAAwB,EAAA;AAClC1B,QAAAA,SAAA,EAAAA,SAAA;AACAf,QAAAA,SAAA,EAAAA,SAAA;QACA0C,eAAenD,QAAS,CAAA4C,MAAA;AACxBQ,QAAAA,cAAcpD,QAAS,CAAAqD,GAAA,CAAI;iBACzBC,MAAO,CAAAC,IAAA,CAAKC,CAAC,CAAA,CAAEC,OAAO,UAAKC,CAAA,EAAA;AAAA,YAAA,OAAA,CAAC,eAAiB,EAAA,kBAAA,EAAoB,mBAAmB,eAAe,CAAA,CAAEC,QAAS,CAAAD,CAAC,CAAC,CAAA;WAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,SACpH,CAAA;AACAb,QAAAA,IAAA,EAAAA,IAAA;AACAE,QAAAA,UAAA,EAAAA,UAAA;AACAD,QAAAA,UAAA,EAAAA,UAAA;AACAc,QAAAA,cAAA,EAAgB7B,oBAAoB8B,gBAAiB,EAAA;AACvD,OAAC,CAAA,CAAA;AACH,KAAA;AAGA,IAAA,IAAIf,UAAY,EAAA;AACdf,MAAAA,mBAAA,CAAoBnB,cAAcH,SAAS,CAAA,CAAA;AAC3C,MAAA,IAAIoB,KAAO,EAAA;AAEDoB,QAAAA,OAAA,CAAAC,GAAA,CAAI,wCAA8BzC,SAAS,CAAA,CAAA;AACrD,OAAA;AACO,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AAGA,IAAA,IAAIsC,UAAY,EAAA;AACR,MAAA,IAAAe,MAAA,GAASC,gCAAgC/D,QAAQ,CAAA,CAAA;AACvD,MAAA,IAAI8D,MAAQ,EAAA;AAAA,QAAA,IAAAE,cAAA,CAAA;QAEV,IAAMC,8BAAYjE,QAAS,CAAAkE,IAAA,CAAK;iBAAKV,CAAE,CAAAhD,aAAa,CAAA;AAAA,SAAA,8DAAlCwD,cAAA,CAAqCxD,aAAe,MAAAwD,IAAAA,IAAAA,cAAA,KAApDA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAA,CAAoDC,SAAA,CAAA;QAClDlC,mBAAA,CAAAoC,eAAA,CAAgB1D,SAAW,EAAAqD,MAAA,EAAQG,SAAS,CAAA,CAAA;AAEhE,QAAA,IAAIpC,KAAO,EAAA;AAEToB,UAAAA,OAAA,CAAQC,IAAI,0EAAoC,EAAA;AAC9CzC,YAAAA,SAAA,EAAAA,SAAA;YACA2D,aAAe,EAAAd,MAAA,CAAOC,IAAK,CAAAO,MAAA,CAAOO,QAAQ,CAAE,CAAAzB,MAAA;YAC5C0B,MAAMR,MAAO,CAAAQ,IAAAA;AACf,WAAC,CAAA,CAAA;AACH,SAAA;AACF,OAAA;AACO,MAAA,OAAAR,MAAA,CAAA;AACT,KAAA;AAAA,IAAA,IAAAS,UAAA,GAAArE,0BAAA,CAGkBF,QAAU,CAAA;MAAAwE,MAAA,CAAA;AAAA,IAAA,IAAA;MAA5B,KAAAD,UAAA,CAAAnE,CAAA,EAAAoE,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAlE,CAAA,EAAAC,EAAAA,IAAA,GAA4B;AAAA,QAAA,IAAjBC;QACT,IAAIA,IAAII,eAAiB,EAAA;AACvB,UAAA,IAAA8D,oBAAA,GAA4BlE,GAAI,CAAAI,eAAA;YAAxB+D,IAAA,GAAAD,oBAAA,CAAAC,IAAA;YAAMC,EAAI,GAAAF,oBAAA,CAAJE,EAAI;YAAAC,KAAA,GAAAH,oBAAA,CAAAG,KAAA,CAAA;AAClB,UAAA,IAAMC,UAAU9C,mBAAoB,CAAA+C,UAAA,CAAWrE,WAAWiE,IAAM,EAAAC,EAAA,IAAM,WAAWC,KAAK,CAAA,CAAA;AAEtF,UAAA,IAAI/C,KAAO,EAAA;AAEToB,YAAAA,OAAA,CAAQC,IAAI,8EAA8B,EAAA;AACxCzC,cAAAA,SAAA,EAAAA,SAAA;AACAiE,cAAAA,IAAA,EAAAA,IAAA;cACAC,IAAIA,EAAM,IAAA,SAAA;AACVC,cAAAA,KAAA,EAAAA,KAAA;AACAC,cAAAA,OAAA,EAAAA,OAAAA;AACF,aAAC,CAAA,CAAA;AACH,WAAA;AACF,SAAA;AACF,OAAA;AAAA,KAAA,CAAA,OAAAhE,GAAA,EAAA;MAAA0D,UAAA,CAAAzD,CAAA,CAAAD,GAAA,CAAA,CAAA;AAAA,KAAA,SAAA;AAAA0D,MAAAA,UAAA,CAAAxD,CAAA,EAAA,CAAA;AAAA,KAAA;AAGO,IAAA,OAAA,IAAA,CAAA;AACT,GAAA,EAAG,CAACf,QAAU,EAAAS,SAAA,EAAWsC,YAAYD,UAAY,EAAAD,IAAA,EAAMhB,KAAO,EAAAL,SAAS,CAAC,CAAA,CAAA;AAGlE,EAAA,IAAAuD,kBAAA,GAAqBC,YAAY,YAAM;AAC3C,IAAA,IAAInD,KAAO,EAAA;AAEToB,MAAAA,OAAA,CAAQC,IAAI,qGAA+B,CAAA,CAAA;AAC7C,KAAA;IACiBZ,gBAAA,CAAA,UAAA2C,CAAA,EAAA;MAAA,OAAKA,IAAI,CAAC,CAAA;KAAA,CAAA,CAAA;AAC7B,GAAA,EAAG,CAACpD,KAAK,CAAC,CAAA,CAAA;AAGVC,EAAAA,SAAA,CAAU,YAAM;AACV,IAAA,IAAA,CAACiB,UAAc,IAAA,CAACtC,SAAW,EAAA;AAC7B,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIoB,KAAO,EAAA;AAEDoB,MAAAA,OAAA,CAAAC,GAAA,CAAI,qDAAiCzC,SAAS,CAAA,CAAA;AACxD,KAAA;IAEA,IAAMyE,WAAc,GAAAnD,mBAAA,CAAoBoD,SAAU,CAAA1E,SAAA,EAAWsE,kBAAkB,CAAA,CAAA;AAE/E,IAAA,OAAO,YAAM;AACX,MAAA,IAAIlD,KAAO,EAAA;AAEDoB,QAAAA,OAAA,CAAAC,GAAA,CAAI,iEAAmCzC,SAAS,CAAA,CAAA;AAC1D,OAAA;AACYyE,MAAAA,WAAA,EAAA,CAAA;KACd,CAAA;KACC,CAACnC,UAAA,EAAYtC,SAAW,EAAAsE,kBAAA,EAAoBlD,KAAK,CAAC,CAAA,CAAA;AAG/C,EAAA,IAAAuD,aAAA,GAAgB5C,QAAQ,YAAM;AAC9B,IAAA,IAAA,CAACO,UAAc,IAAA,CAACtC,SAAW,EAAA;AACtB,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AAEO,IAAA,OAAAsB,mBAAA,CAAoBsD,SAAU,CAAA5E,SAAS,CAAK,IAAAuC,aAAA,CAAA;KAElD,CAACD,UAAA,EAAYtC,SAAW,EAAAuC,aAAA,EAAeX,aAAa,CAAC,CAAA,CAAA;EAGxD,IAAI,CAACQ,IAAM,EAAA;AACL,IAAA,IAAAhB,KAAA,IAAS7B,QAAS,CAAA4C,MAAA,GAAS,CAAG,EAAA;AAEhCK,MAAAA,OAAA,CAAQC,IAAI,yFAA6B,CAAA,CAAA;AAC3C,KAAA;AACO,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AAGI,EAAA,IAAAJ,UAAA,IAAc,CAACC,UAAY,EAAA;AAC7B,IAAA,IAAIlB,KAAO,EAAA;AAEToB,MAAAA,OAAA,CAAQC,IAAI,6EAA2B,CAAA,CAAA;AACzC,KAAA;AACO,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AAGA,EAAA,sBACGoC,KAAA,CAAAC,aAAA,CAAAC,0BAAA,EAAA;AACCnE,IAAAA,YAAA,EAAAA,YAAA;AACAE,IAAAA,OAAS,EAAA6D,aAAA;AACT5D,IAAAA,SAAA,EAAAA,SAAA;AACAC,IAAAA,GAAA,EAAAA,GAAA;AACAC,IAAAA,QAAA,EAAAA,QAAA;AACAC,IAAAA,cAAA,EAAAA,cAAAA;AACF,GAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"A2UIJsonRenderActivityRenderer.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.tsx"],"sourcesContent":["/**\n * A2UI v0.9 + json-render Activity 渲染器\n * 将 A2UI v0.9 协议转换为 json-render Schema 进行渲染\n * \n * 工作流程:\n * 1. 接收 ACTIVITY_SNAPSHOT/DELTA 中的 A2UI content\n * 2. 区分消息类型:UI型 vs 纯数据型\n * 3. UI型:转换为 Schema 并注册到 SurfaceStateManager,渲染 UI\n * 4. 纯数据型:通过 SurfaceStateManager 更新数据,触发订阅者重渲染,本组件不渲染\n * \n * 消息分类:\n * - UI型消息:包含 createSurface / updateComponents / deleteSurface → 需要渲染/更新 UI\n * - 纯数据型消息:仅包含 updateDataModel → 只更新状态,不渲染新 UI\n */\n\nimport React, { useMemo, useEffect, useState, useCallback } from 'react';\nimport { convertA2UIMessagesToJsonRender, surfaceStateManager } from '../../../core';\nimport type { A2UIMessage, JsonRenderSchema } from '../../../core';\nimport type { JsonRenderActivityProps, ComponentRegistry } from '../types';\nimport { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer';\n\n\nexport interface A2UIJsonRenderActivityRendererProps extends Omit<JsonRenderActivityProps, 'content'> {\n /** A2UI content(包含 messages 数组) */\n content: {\n messages?: A2UIMessage[];\n [key: string]: any;\n };\n /** 组件注册表(必须) */\n registry: ComponentRegistry;\n /** Action 处理器(可选) */\n actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;\n /** 显示调试信息 */\n debug?: boolean;\n}\n\n/**\n * 从消息中提取 surfaceId\n */\nfunction extractSurfaceId(messages: A2UIMessage[]): string | null {\n for (const msg of messages) {\n if (msg.createSurface) return msg.createSurface.surfaceId;\n if (msg.updateComponents) return msg.updateComponents.surfaceId;\n if (msg.updateDataModel) return msg.updateDataModel.surfaceId;\n if (msg.deleteSurface) return msg.deleteSurface.surfaceId;\n }\n return null;\n}\n\n/**\n * 判断消息是否为\"UI型\"(需要渲染/更新 UI)\n * 包括 createSurface / updateComponents / deleteSurface\n * 只有纯 updateDataModel 消息不需要渲染\n */\nfunction isUIMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents || msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含删除操作\n */\nfunction hasDeletionMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含创建/更新操作(需要渲染 UI 的)\n */\nfunction hasCreationMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents);\n}\n\n/**\n * A2UI v0.9 + json-render Activity 渲染器组件\n */\nexport const A2UIJsonRenderActivityRenderer: React.FC<A2UIJsonRenderActivityRendererProps> = ({\n activityType,\n content,\n messageId,\n ext,\n registry,\n actionHandlers,\n debug = false,\n}) => {\n // 设置调试模式\n useEffect(() => {\n surfaceStateManager.setDebug(debug);\n }, [debug]);\n\n // 用于触发重渲染的版本号\n const [schemaVersion, setSchemaVersion] = useState(0);\n\n // 分析消息类型\n const { surfaceId, isUI, isDeletion, isCreation, messages } = useMemo(() => {\n const msgs = content.messages;\n if (!Array.isArray(msgs) || msgs.length === 0) {\n return { surfaceId: null, isUI: false, isDeletion: false, isCreation: false, messages: [] };\n }\n return {\n surfaceId: extractSurfaceId(msgs),\n isUI: isUIMessages(msgs),\n isDeletion: hasDeletionMessages(msgs),\n isCreation: hasCreationMessages(msgs),\n messages: msgs,\n };\n }, [content.messages]);\n\n // 处理消息并获取 Schema\n const initialSchema = useMemo<JsonRenderSchema | null>(() => {\n if (!surfaceId || messages.length === 0) {\n return null;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 处理消息:', {\n messageId,\n surfaceId,\n messagesCount: messages.length,\n messageTypes: messages.map(m => \n Object.keys(m).filter(k => ['createSurface', 'updateComponents', 'updateDataModel', 'deleteSurface'].includes(k))[0]\n ),\n isUI,\n isCreation,\n isDeletion,\n cachedSurfaces: surfaceStateManager.getAllSurfaceIds(),\n });\n }\n\n // 删除型消息:清理缓存\n if (isDeletion) {\n surfaceStateManager.deleteSurface(surfaceId);\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除 Surface:', surfaceId);\n }\n return null;\n }\n\n // 创建型消息:转换并注册\n if (isCreation) {\n const schema = convertA2UIMessagesToJsonRender(messages);\n if (schema) {\n // 提取 catalogId\n const catalogId = messages.find(m => m.createSurface)?.createSurface?.catalogId;\n surfaceStateManager.registerSurface(surfaceId, schema, catalogId);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 创建型消息,注册 Surface:', {\n surfaceId,\n elementsCount: Object.keys(schema.elements).length,\n data: schema.data,\n });\n }\n }\n return schema;\n }\n\n // 更新型消息:通过 SurfaceStateManager 更新数据\n for (const msg of messages) {\n if (msg.updateDataModel) {\n const { path, op, value } = msg.updateDataModel;\n const success = surfaceStateManager.updateData(surfaceId, path, op || 'replace', value);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 更新型消息,更新数据:', {\n surfaceId,\n path,\n op: op || 'replace',\n value,\n success,\n });\n }\n }\n }\n\n // 更新型消息不需要渲染,返回 null\n return null;\n }, [messages, surfaceId, isCreation, isDeletion, isUI, debug, messageId]);\n\n // 订阅状态变化的回调\n const handleSchemaUpdate = useCallback(() => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 收到状态更新通知,触发重渲染');\n }\n setSchemaVersion(v => v + 1);\n }, [debug]);\n\n // 订阅 Surface 状态变化(仅当是创建型消息时)\n useEffect(() => {\n if (!isCreation || !surfaceId) {\n return;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 订阅 Surface 状态:', surfaceId);\n }\n\n const unsubscribe = surfaceStateManager.subscribe(surfaceId, handleSchemaUpdate);\n\n return () => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 取消订阅 Surface 状态:', surfaceId);\n }\n unsubscribe();\n };\n }, [isCreation, surfaceId, handleSchemaUpdate, debug]);\n\n // 获取当前 Schema(考虑版本变化)\n const currentSchema = useMemo(() => {\n if (!isCreation || !surfaceId) {\n return null;\n }\n // schemaVersion 变化时从缓存获取最新 Schema\n return surfaceStateManager.getSchema(surfaceId) || initialSchema;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isCreation, surfaceId, initialSchema, schemaVersion]);\n\n // 非 UI 型消息不渲染(仅 updateDataModel 的消息)\n if (!isUI) {\n if (debug && messages.length > 0) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 纯数据更新消息,跳过渲染');\n }\n return null;\n }\n\n // 删除型消息:返回 null(UI 已被删除)\n if (isDeletion && !isCreation) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除型消息,跳过渲染');\n }\n return null;\n }\n\n // 渲染 UI\n return (\n <JsonRenderActivityRenderer\n activityType={activityType}\n content={currentSchema}\n messageId={messageId}\n ext={ext}\n registry={registry}\n actionHandlers={actionHandlers}\n />\n );\n};\n\nexport default A2UIJsonRenderActivityRenderer;\n"],"names":["extractSurfaceId","messages","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","createSurface","surfaceId","updateComponents","updateDataModel","deleteSurface","err","e","f","isUIMessages","some","hasDeletionMessages","hasCreationMessages","A2UIJsonRenderActivityRenderer","activityType","_ref","content","messageId","ext","registry","actionHandlers","_ref$debug","debug","useEffect","surfaceStateManager","setDebug","_useState","useState","_useState2","_slicedToArray","schemaVersion","setSchemaVersion","_useMemo","useMemo","msgs","Array","isArray","length","isUI","isDeletion","isCreation","initialSchema","console","log","messagesCount","messageTypes","map","Object","keys","m","filter","k","includes","cachedSurfaces","getAllSurfaceIds","schema","convertA2UIMessagesToJsonRender","_messages$find","catalogId","find","registerSurface","elementsCount","elements","data","_iterator2","_step2","_msg$updateDataModel","path","op","value","success","updateData","handleSchemaUpdate","useCallback","v","unsubscribe","subscribe","currentSchema","getSchema","React","createElement","JsonRenderActivityRenderer"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
6
6
 
7
7
  import React, { useMemo } from 'react';
8
- import { r as reactFastCompare } from '../../../../_chunks/dep-ba3bd553.js';
8
+ import { r as reactFastCompare } from '../../../../_chunks/dep-dbdfe7d6.js';
9
9
  import { JsonRenderElement } from './JsonUIRenderer.js';
10
10
  import '../contexts/index.js';
11
11
  import { DataProvider } from '../contexts/data.js';
@@ -24,7 +24,7 @@ import '../contexts/validation.js';
24
24
  import '@babel/runtime/helpers/objectWithoutProperties';
25
25
  import '@babel/runtime/helpers/slicedToArray';
26
26
  import '@json-render/core';
27
- import '../../../../_chunks/dep-de8ac730.js';
27
+ import '../../../../_chunks/dep-93283bbd.js';
28
28
  import '@babel/runtime/helpers/wrapNativeSuper';
29
29
  import '@babel/runtime/helpers/asyncToGenerator';
30
30
  import '@babel/runtime/regenerator';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -21,7 +21,7 @@ import '../contexts/store.js';
21
21
  import '@json-render/core';
22
22
  import '@babel/runtime/helpers/typeof';
23
23
  import '@babel/runtime/helpers/slicedToArray';
24
- import '../../../../_chunks/dep-de8ac730.js';
24
+ import '../../../../_chunks/dep-93283bbd.js';
25
25
  import '@babel/runtime/helpers/wrapNativeSuper';
26
26
  import '@babel/runtime/helpers/asyncToGenerator';
27
27
  import '@babel/runtime/regenerator';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -18,7 +18,7 @@ import '@babel/runtime/helpers/createClass';
18
18
  import '@babel/runtime/helpers/possibleConstructorReturn';
19
19
  import '@babel/runtime/helpers/getPrototypeOf';
20
20
  import '@babel/runtime/helpers/inherits';
21
- import '../../../../_chunks/dep-de8ac730.js';
21
+ import '../../../../_chunks/dep-93283bbd.js';
22
22
  import '@babel/runtime/helpers/wrapNativeSuper';
23
23
  import '@json-render/core';
24
24
  import '../contexts/store.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.9
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -33,7 +33,7 @@ import '../../core/adapters/agui/utils.js';
33
33
  import '../../core/store/message.js';
34
34
  import '@babel/runtime/helpers/get';
35
35
  import '../../core/store/reactiveState.js';
36
- import '../../../_chunks/dep-de8ac730.js';
36
+ import '../../../_chunks/dep-93283bbd.js';
37
37
  import '../../core/event-bus/index.js';
38
38
  import '../../core/event-bus/ChatEventBus.js';
39
39
  import '../../core/event-bus/types.js';
@@ -48,6 +48,19 @@ import '../../core/server/sse-client.js';
48
48
  import '../../core/server/connection-manager.js';
49
49
  import '../../core/server/sse-parser.js';
50
50
  import '../../core/server/types.js';
51
+ import '../../core/adapters/openclaw/index.js';
52
+ import '../../core/server/websocket-client.js';
53
+ import '../../core/adapters/openclaw/event-mapper.js';
54
+ import '../../core/adapters/openclaw/types/events.js';
55
+ import '../../core/adapters/shared/index.js';
56
+ import '../../core/adapters/shared/content-factory.js';
57
+ import '../../core/adapters/shared/merge-utils.js';
58
+ import '../../core/adapters/shared/activity-manager.js';
59
+ import '../../core/adapters/openclaw/rpc-handler.js';
60
+ import '../../core/adapters/openclaw/types/config.js';
61
+ import '../../core/adapters/openclaw/utils.js';
62
+ import '../../core/adapters/openclaw/types/index.js';
63
+ import '../../core/adapters/openclaw/types/messages.js';
51
64
  import '../../core/adapters/index.js';
52
65
  import '../../core/adapters/json-render/index.js';
53
66
  import '../../core/adapters/json-render/a2ui-to-jsonrender.js';
@@ -1 +1 @@
1
- {"version":3,"file":"agent-state.js","sources":["../../../../../pro-components/chat/chat-engine/components/provider/agent-state.tsx"],"sourcesContent":["import React from 'react';\nimport { AgentStateContext, type StateActionOptions, useAgentState } from '../../hooks/useAgentState';\n\n// 导出 Provider 组件\nexport const AgentStateProvider = ({ children, initialState = {}, subscribeKey }: StateActionOptions & {\n children: React.ReactNode;\n}) => {\n const agentStateResult = useAgentState({\n initialState,\n subscribeKey,\n });\n\n return (\n <AgentStateContext.Provider value={agentStateResult}>\n {children}\n </AgentStateContext.Provider>\n );\n};\n"],"names":["AgentStateProvider","_ref","children","_ref$initialState","initialState","subscribeKey","agentStateResult","useAgentState","React","createElement","AgentStateContext","Provider","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIaA,kBAAA,GAAqB,SAArBA,kBAAAA,CAAAC,IAAA,EAEP;AAAA,EAAA,IAF+BC,QAAA,GAAAD,IAAA,CAAAC,QAAA;IAAAC,iBAAA,GAAAF,IAAA,CAAUG;AAAAA,IAAAA,8CAAe,EAAC,GAAAD,iBAAA;IAAGE,oBAAAA;EAGhE,IAAMC,mBAAmBC,aAAc,CAAA;AACrCH,IAAAA,YAAA,EAAAA,YAAA;AACAC,IAAAA,YAAA,EAAAA,YAAAA;AACF,GAAC,CAAA,CAAA;EAGC,sBAAAG,KAAA,CAAAC,aAAA,CAACC,kBAAkBC,QAAlB,EAAA;AAA2BC,IAAAA,KAAO,EAAAN,gBAAAA;GAAA,EAChCJ,QACH,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"agent-state.js","sources":["../../../../../pro-components/chat/chat-engine/components/provider/agent-state.tsx"],"sourcesContent":["import React from 'react';\nimport { AgentStateContext, type StateActionOptions, useAgentState } from '../../hooks/useAgentState';\n\n// 导出 Provider 组件\nexport const AgentStateProvider = ({ children, initialState = {}, subscribeKey }: StateActionOptions & {\n children: React.ReactNode;\n}) => {\n const agentStateResult = useAgentState({\n initialState,\n subscribeKey,\n });\n\n return (\n <AgentStateContext.Provider value={agentStateResult}>\n {children}\n </AgentStateContext.Provider>\n );\n};\n"],"names":["AgentStateProvider","_ref","children","_ref$initialState","initialState","subscribeKey","agentStateResult","useAgentState","React","createElement","AgentStateContext","Provider","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIaA,kBAAA,GAAqB,SAArBA,kBAAAA,CAAAC,IAAA,EAEP;AAAA,EAAA,IAF+BC,QAAA,GAAAD,IAAA,CAAAC,QAAA;IAAAC,iBAAA,GAAAF,IAAA,CAAUG;AAAAA,IAAAA,8CAAe,EAAC,GAAAD,iBAAA;IAAGE,oBAAAA;EAGhE,IAAMC,mBAAmBC,aAAc,CAAA;AACrCH,IAAAA,YAAA,EAAAA,YAAA;AACAC,IAAAA,YAAA,EAAAA,YAAAA;AACF,GAAC,CAAA,CAAA;EAGC,sBAAAG,KAAA,CAAAC,aAAA,CAACC,kBAAkBC,QAAlB,EAAA;AAA2BC,IAAAA,KAAO,EAAAN,gBAAAA;GAAA,EAChCJ,QACH,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,25 @@
1
+ import React, { Component, ErrorInfo } from 'react';
2
+ interface ErrorBoundaryProps {
3
+ children: React.ReactNode;
4
+ /** 组件标识,用于错误日志 */
5
+ componentName: string;
6
+ /** 日志前缀,如 'ActivityRenderer' 或 'ToolCallRenderer' */
7
+ logPrefix?: string;
8
+ /** 自定义错误渲染,默认返回 null */
9
+ fallback?: React.ReactNode;
10
+ }
11
+ interface ErrorBoundaryState {
12
+ hasError: boolean;
13
+ error: Error | null;
14
+ }
15
+ /**
16
+ * 通用错误边界组件
17
+ * 捕获子组件渲染错误,防止整个对话列表崩溃
18
+ */
19
+ export declare class ComponentErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
20
+ constructor(props: ErrorBoundaryProps);
21
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
22
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
23
+ render(): React.ReactNode;
24
+ }
25
+ export {};
@@ -0,0 +1,58 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.12
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
8
+ import _createClass from '@babel/runtime/helpers/createClass';
9
+ import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
10
+ import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
11
+ import _inherits from '@babel/runtime/helpers/inherits';
12
+ import { Component } from 'react';
13
+
14
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
15
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
16
+ var ComponentErrorBoundary = /*#__PURE__*/function (_Component) {
17
+ function ComponentErrorBoundary(props) {
18
+ var _this;
19
+ _classCallCheck(this, ComponentErrorBoundary);
20
+ _this = _callSuper(this, ComponentErrorBoundary, [props]);
21
+ _this.state = {
22
+ hasError: false,
23
+ error: null
24
+ };
25
+ return _this;
26
+ }
27
+ _inherits(ComponentErrorBoundary, _Component);
28
+ return _createClass(ComponentErrorBoundary, [{
29
+ key: "componentDidCatch",
30
+ value: function componentDidCatch(error, errorInfo) {
31
+ var _this$props = this.props,
32
+ componentName = _this$props.componentName,
33
+ _this$props$logPrefix = _this$props.logPrefix,
34
+ logPrefix = _this$props$logPrefix === void 0 ? "ComponentRenderer" : _this$props$logPrefix;
35
+ console.error("[".concat(logPrefix, "] Error in \"").concat(componentName, "\":"), error, errorInfo);
36
+ }
37
+ }, {
38
+ key: "render",
39
+ value: function render() {
40
+ if (this.state.hasError) {
41
+ var _this$props$fallback;
42
+ return (_this$props$fallback = this.props.fallback) !== null && _this$props$fallback !== void 0 ? _this$props$fallback : null;
43
+ }
44
+ return this.props.children;
45
+ }
46
+ }], [{
47
+ key: "getDerivedStateFromError",
48
+ value: function getDerivedStateFromError(error) {
49
+ return {
50
+ hasError: true,
51
+ error: error
52
+ };
53
+ }
54
+ }]);
55
+ }(Component);
56
+
57
+ export { ComponentErrorBoundary };
58
+ //# sourceMappingURL=ComponentErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentErrorBoundary.js","sources":["../../../../../pro-components/chat/chat-engine/components/shared/ComponentErrorBoundary.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n /** 组件标识,用于错误日志 */\n componentName: string;\n /** 日志前缀,如 'ActivityRenderer' 或 'ToolCallRenderer' */\n logPrefix?: string;\n /** 自定义错误渲染,默认返回 null */\n fallback?: React.ReactNode;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\n/**\n * 通用错误边界组件\n * 捕获子组件渲染错误,防止整个对话列表崩溃\n */\nexport class ComponentErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n const { componentName, logPrefix = 'ComponentRenderer' } = this.props;\n console.error(`[${logPrefix}] Error in \"${componentName}\":`, error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallback ?? null;\n }\n\n return this.props.children;\n }\n}\n"],"names":["ComponentErrorBoundary","props","_this","_classCallCheck","_callSuper","state","hasError","error","_inherits","_Component","_createClass","key","value","componentDidCatch","errorInfo","_this$props","componentName","_this$props$logPrefix","logPrefix","console","concat","render","_this$props$fallback","fallback","children","getDerivedStateFromError","Component"],"mappings":";;;;;;;;;;;;;;;AAqBaA,IAAAA;EACX,SAAAA,sBAAAA,CAAYC,KAA2B,EAAA;AAAA,IAAA,IAAAC,KAAA,CAAA;AAAAC,IAAAA,eAAA,OAAAH,sBAAA,CAAA,CAAA;AACrCE,IAAAA,KAAA,GAAAE,UAAA,CAAAJ,IAAAA,EAAAA,sBAAA,GAAMC,KAAK,CAAA,CAAA,CAAA;IACXC,KAAA,CAAKG,KAAQ,GAAA;AAAEC,MAAAA,QAAU,EAAA,KAAA;AAAOC,MAAAA,OAAO,IAAA;KAAK,CAAA;AAAA,IAAA,OAAAL,KAAA,CAAA;AAC9C,GAAA;EAAAM,SAAA,CAAAR,sBAAA,EAAAS,UAAA,CAAA,CAAA;EAAA,OAAAC,YAAA,CAAAV,sBAAA,EAAA,CAAA;IAAAW,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAMA,SAAAC,iBAAAA,CAAkBN,OAAcO,SAA4B,EAAA;AAC1D,MAAA,IAAAC,WAAA,GAA2D,IAAK,CAAAd,KAAA;QAAxDe,aAAA,GAAAD,WAAA,CAAAC,aAAA;QAAAC,qBAAA,GAAAF,WAAA,CAAeG,SAAY;AAAZA,QAAAA,SAAY,GAAAD,qBAAA,KAAA,KAAA,CAAA,GAAA,mBAAA,GAAAA,qBAAA,CAAA;AACnCE,MAAAA,OAAA,CAAQZ,KAAM,CAAAa,GAAAA,CAAAA,MAAA,CAAIF,SAAwB,EAAA,eAAA,CAAA,CAAAE,MAAA,CAAAJ,aAAA,EAAA,KAAA,CAAA,EAAmBT,OAAOO,SAAS,CAAA,CAAA;AAC/E,KAAA;AAAA,GAAA,EAAA;IAAAH,GAAA,EAAA,QAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAS,MAASA,GAAA;AACH,MAAA,IAAA,IAAA,CAAKhB,MAAMC,QAAU,EAAA;AAAA,QAAA,IAAAgB,oBAAA,CAAA;AAChB,QAAA,OAAA,CAAAA,oBAAA,GAAA,IAAA,CAAKrB,MAAMsB,QAAY,MAAA,IAAA,IAAAD,oBAAA,KAAA,KAAA,CAAA,GAAAA,oBAAA,GAAA,IAAA,CAAA;AAChC,OAAA;AAEA,MAAA,OAAO,KAAKrB,KAAM,CAAAuB,QAAA,CAAA;AACpB,KAAA;AAAA,GAAA,CAAA,EAAA,CAAA;IAAAb,GAAA,EAAA,0BAAA;AAAAC,IAAAA,KAAA,EAfA,SAAOa,yBAAyBlB,KAAkC,EAAA;MACzD,OAAA;AAAED,QAAAA,QAAU,EAAA,IAAA;AAAMC,QAAAA,KAAM,EAANA,KAAAA;OAAM,CAAA;AACjC,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAR0CmB,SAAkD;;;;"}
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ /**
3
+ * 基础配置接口 - 所有注册配置必须包含组件
4
+ */
5
+ export interface BaseConfig {
6
+ component: React.FC<any>;
7
+ }
8
+ /**
9
+ * Registry 配置选项
10
+ */
11
+ export interface RegistryOptions<TConfig extends BaseConfig> {
12
+ /** 从配置中获取唯一标识符的函数 */
13
+ getKey: (config: TConfig) => string;
14
+ /** 注册事件名称 */
15
+ eventName: string;
16
+ /** 事件 detail 中的键名 */
17
+ eventDetailKey: string;
18
+ }
19
+ /**
20
+ * 泛型 Registry 管理器接口
21
+ */
22
+ export interface IRegistryManager<TConfig extends BaseConfig, TProps> {
23
+ register(config: TConfig): boolean;
24
+ get(key: string): TConfig | undefined;
25
+ getRenderFunction(key: string): React.MemoExoticComponent<React.ComponentType<TProps>> | null;
26
+ getAll(): Record<string, TConfig>;
27
+ unregister(key: string): void;
28
+ clear(): void;
29
+ has(key: string): boolean;
30
+ getRegisteredKeys(): string[];
31
+ }
32
+ /**
33
+ * 创建泛型 Registry 管理器
34
+ * 用于统一管理 Activity 和 Toolcall 的注册逻辑
35
+ */
36
+ export declare function createRegistryManager<TConfig extends BaseConfig, TProps>(options: RegistryOptions<TConfig>): IRegistryManager<TConfig, TProps>;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.12
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import React from 'react';
9
+
10
+ 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; }
11
+ 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; }
12
+ function createRegistryManager(options) {
13
+ var getKey = options.getKey,
14
+ eventName = options.eventName,
15
+ eventDetailKey = options.eventDetailKey;
16
+ var registry = {};
17
+ var renderFunctionCache = /* @__PURE__ */new Map();
18
+ return {
19
+ register: function register(config) {
20
+ var key = getKey(config);
21
+ var existingConfig = registry[key];
22
+ if (existingConfig && existingConfig.component === config.component) {
23
+ return false;
24
+ }
25
+ if (existingConfig) {
26
+ renderFunctionCache["delete"](key);
27
+ }
28
+ registry[key] = config;
29
+ window.dispatchEvent(new CustomEvent(eventName, {
30
+ detail: _defineProperty({}, eventDetailKey, key)
31
+ }));
32
+ return true;
33
+ },
34
+ get: function get(key) {
35
+ return registry[key];
36
+ },
37
+ getRenderFunction: function getRenderFunction(key) {
38
+ var config = registry[key];
39
+ if (!config) return null;
40
+ var memoizedComponent = renderFunctionCache.get(key);
41
+ if (!memoizedComponent) {
42
+ memoizedComponent = /*#__PURE__*/React.memo(function (props) {
43
+ return /*#__PURE__*/React.createElement(config.component, props);
44
+ });
45
+ renderFunctionCache.set(key, memoizedComponent);
46
+ }
47
+ return memoizedComponent;
48
+ },
49
+ getAll: function getAll() {
50
+ return _objectSpread({}, registry);
51
+ },
52
+ unregister: function unregister(key) {
53
+ delete registry[key];
54
+ renderFunctionCache["delete"](key);
55
+ },
56
+ clear: function clear() {
57
+ Object.keys(registry).forEach(function (key) {
58
+ return delete registry[key];
59
+ });
60
+ renderFunctionCache.clear();
61
+ },
62
+ has: function has(key) {
63
+ return key in registry;
64
+ },
65
+ getRegisteredKeys: function getRegisteredKeys() {
66
+ return Object.keys(registry);
67
+ }
68
+ };
69
+ }
70
+
71
+ export { createRegistryManager };
72
+ //# sourceMappingURL=createRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRegistry.js","sources":["../../../../../pro-components/chat/chat-engine/components/shared/createRegistry.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * 基础配置接口 - 所有注册配置必须包含组件\n */\nexport interface BaseConfig {\n component: React.FC<any>;\n}\n\n/**\n * Registry 配置选项\n */\nexport interface RegistryOptions<TConfig extends BaseConfig> {\n /** 从配置中获取唯一标识符的函数 */\n getKey: (config: TConfig) => string;\n /** 注册事件名称 */\n eventName: string;\n /** 事件 detail 中的键名 */\n eventDetailKey: string;\n}\n\n/**\n * 泛型 Registry 管理器接口\n */\nexport interface IRegistryManager<TConfig extends BaseConfig, TProps> {\n register(config: TConfig): boolean;\n get(key: string): TConfig | undefined;\n getRenderFunction(key: string): React.MemoExoticComponent<React.ComponentType<TProps>> | null;\n getAll(): Record<string, TConfig>;\n unregister(key: string): void;\n clear(): void;\n has(key: string): boolean;\n getRegisteredKeys(): string[];\n}\n\n/**\n * 创建泛型 Registry 管理器\n * 用于统一管理 Activity 和 Toolcall 的注册逻辑\n */\nexport function createRegistryManager<TConfig extends BaseConfig, TProps>(\n options: RegistryOptions<TConfig>,\n): IRegistryManager<TConfig, TProps> {\n const { getKey, eventName, eventDetailKey } = options;\n\n // 内部状态\n const registry: Record<string, TConfig> = {};\n const renderFunctionCache = new Map<string, React.MemoExoticComponent<React.ComponentType<TProps>>>();\n\n return {\n /**\n * 注册配置\n * @returns 是否成功注册(如果已存在相同配置则返回 false)\n */\n register(config: TConfig): boolean {\n const key = getKey(config);\n const existingConfig = registry[key];\n\n // 如果已存在且组件相同,跳过注册(真正的防重复)\n if (existingConfig && existingConfig.component === config.component) {\n return false;\n }\n\n // 如果组件发生变化,清除旧的缓存\n if (existingConfig) {\n renderFunctionCache.delete(key);\n }\n\n registry[key] = config;\n\n // 只在真正有变化时触发注册事件\n window.dispatchEvent(\n new CustomEvent(eventName, {\n detail: { [eventDetailKey]: key },\n }),\n );\n\n return true;\n },\n\n /**\n * 获取指定 key 的配置\n */\n get(key: string): TConfig | undefined {\n return registry[key];\n },\n\n /**\n * 获取或创建缓存的组件渲染函数\n */\n getRenderFunction(key: string): React.MemoExoticComponent<React.ComponentType<TProps>> | null {\n const config = registry[key];\n if (!config) return null;\n\n let memoizedComponent = renderFunctionCache.get(key);\n\n if (!memoizedComponent) {\n // 创建 memo 化的组件\n memoizedComponent = React.memo((props: TProps) => React.createElement(config.component, props));\n\n // 缓存组件\n renderFunctionCache.set(key, memoizedComponent);\n }\n\n return memoizedComponent;\n },\n\n /**\n * 获取所有已注册的配置\n */\n getAll(): Record<string, TConfig> {\n return { ...registry };\n },\n\n /**\n * 取消注册\n */\n unregister(key: string): void {\n delete registry[key];\n renderFunctionCache.delete(key);\n },\n\n /**\n * 清空所有注册\n */\n clear(): void {\n Object.keys(registry).forEach((key) => delete registry[key]);\n renderFunctionCache.clear();\n },\n\n /**\n * 检查指定 key 是否已注册\n */\n has(key: string): boolean {\n return key in registry;\n },\n\n /**\n * 获取所有已注册的 key\n */\n getRegisteredKeys(): string[] {\n return Object.keys(registry);\n },\n };\n}\n"],"names":["createRegistryManager","options","getKey","eventName","eventDetailKey","registry","renderFunctionCache","Map","register","config","key","existingConfig","component","window","dispatchEvent","CustomEvent","detail","_defineProperty","get","getRenderFunction","memoizedComponent","React","memo","props","createElement","set","getAll","_objectSpread","unregister","clear","Object","keys","forEach","has","getRegisteredKeys"],"mappings":";;;;;;;;;;;AAuCO,SAASA,sBACdC,OACmC,EAAA;AACnC,EAAA,IAAQC,MAAA,GAAsCD,OAAA,CAAtCC,MAAA;IAAQC,SAAW,GAAmBF,OAAA,CAA9BE,SAAW;IAAAC,cAAA,GAAmBH,OAAA,CAAnBG,cAAA,CAAA;EAG3B,IAAMC,WAAoC,EAAC,CAAA;AACrC,EAAA,IAAAC,mBAAA,sBAA0BC,GAAoE,EAAA,CAAA;EAE7F,OAAA;AAKLC,IAAAA,UAAAA,SAAAA,SAASC,MAA0B,EAAA;AAC3B,MAAA,IAAAC,GAAA,GAAMR,OAAOO,MAAM,CAAA,CAAA;AACzB,MAAA,IAAME,iBAAiBN,QAAS,CAAAK,GAAA,CAAA,CAAA;MAGhC,IAAIC,cAAkB,IAAAA,cAAA,CAAeC,SAAc,KAAAH,MAAA,CAAOG,SAAW,EAAA;AAC5D,QAAA,OAAA,KAAA,CAAA;AACT,OAAA;AAGA,MAAA,IAAID,cAAgB,EAAA;QAClBL,mBAAA,CAAA,QAAA,EAA2BI,GAAG,CAAA,CAAA;AAChC,OAAA;AAEAL,MAAAA,QAAA,CAASK,GAAO,CAAA,GAAAD,MAAA,CAAA;AAGTI,MAAAA,MAAA,CAAAC,aAAA,CACL,IAAIC,YAAYZ,SAAW,EAAA;AACzBa,QAAAA,MAAQ,EAAAC,eAAA,CAAGb,EAAAA,EAAAA,cAAA,EAAiBM,GAAI,CAAA;AAClC,OAAC,CACH,CAAA,CAAA;AAEO,MAAA,OAAA,IAAA,CAAA;KACT;AAKAQ,IAAAA,KAAAA,SAAAA,IAAIR,GAAkC,EAAA;MACpC,OAAOL,QAAS,CAAAK,GAAA,CAAA,CAAA;KAClB;AAKAS,IAAAA,mBAAAA,SAAAA,kBAAkBT,GAA4E,EAAA;AAC5F,MAAA,IAAMD,SAASJ,QAAS,CAAAK,GAAA,CAAA,CAAA;AACxB,MAAA,IAAI,CAACD,MAAA,EAAe,OAAA,IAAA,CAAA;AAEhB,MAAA,IAAAW,iBAAA,GAAoBd,mBAAoB,CAAAY,GAAA,CAAIR,GAAG,CAAA,CAAA;MAEnD,IAAI,CAACU,iBAAmB,EAAA;AAEFA,QAAAA,iBAAA,gBAAAC,KAAA,CAAMC,KAAK,UAACC,KAAA,EAAA;UAAA,oBAAkBF,MAAMG,aAAc,CAAAf,MAAA,CAAOG,SAAW,EAAAW,KAAK,CAAC,CAAA;SAAA,CAAA,CAAA;AAG1EjB,QAAAA,mBAAA,CAAAmB,GAAA,CAAIf,KAAKU,iBAAiB,CAAA,CAAA;AAChD,OAAA;AAEO,MAAA,OAAAA,iBAAA,CAAA;KACT;IAKAM,MAAkC,EAAA,SAAlCA,MAAkCA,GAAA;MACzB,OAAAC,aAAA,KAAKtB,QAAS,CAAA,CAAA;KACvB;AAKAuB,IAAAA,YAAAA,SAAAA,WAAWlB,GAAmB,EAAA;MAC5B,OAAOL,QAAS,CAAAK,GAAA,CAAA,CAAA;MAChBJ,mBAAA,CAAA,QAAA,EAA2BI,GAAG,CAAA,CAAA;KAChC;IAKAmB,KAAc,EAAA,SAAdA,KAAcA,GAAA;MACLC,MAAA,CAAAC,IAAA,CAAK1B,QAAQ,CAAE,CAAA2B,OAAA,CAAQ,UAACtB,GAAQ,EAAA;AAAA,QAAA,OAAA,OAAOL,SAASK,GAAI,CAAA,CAAA;OAAA,CAAA,CAAA;MAC3DJ,mBAAA,CAAoBuB,KAAM,EAAA,CAAA;KAC5B;AAKAI,IAAAA,KAAAA,SAAAA,IAAIvB,GAAsB,EAAA;MACxB,OAAOA,GAAO,IAAAL,QAAA,CAAA;KAChB;IAKA6B,iBAA8B,EAAA,SAA9BA,iBAA8BA,GAAA;AACrB,MAAA,OAAAJ,MAAA,CAAOC,KAAK1B,QAAQ,CAAA,CAAA;AAC7B,KAAA;GACF,CAAA;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ export { createRegistryManager } from './createRegistry';
2
+ export type { BaseConfig, RegistryOptions, IRegistryManager } from './createRegistry';
3
+ export { ComponentErrorBoundary } from './ComponentErrorBoundary';
4
+ export { useRegistrationListener } from './useRegistrationListener';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.12
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ export { createRegistryManager } from './createRegistry.js';
8
+ export { ComponentErrorBoundary } from './ComponentErrorBoundary.js';
9
+ export { useRegistrationListener } from './useRegistrationListener.js';
10
+ import '@babel/runtime/helpers/defineProperty';
11
+ import 'react';
12
+ import '@babel/runtime/helpers/classCallCheck';
13
+ import '@babel/runtime/helpers/createClass';
14
+ import '@babel/runtime/helpers/possibleConstructorReturn';
15
+ import '@babel/runtime/helpers/getPrototypeOf';
16
+ import '@babel/runtime/helpers/inherits';
17
+ import '@babel/runtime/helpers/slicedToArray';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -0,0 +1,22 @@
1
+ interface UseRegistrationListenerOptions<TProps> {
2
+ /** 组件唯一标识 */
3
+ componentKey: string;
4
+ /** 监听的事件名称 */
5
+ eventName: string;
6
+ /** 事件 detail 中的键名 */
7
+ eventDetailKey: string;
8
+ /** 获取渲染函数的方法 */
9
+ getRenderFunction: (key: string) => React.MemoExoticComponent<React.ComponentType<TProps>> | null;
10
+ }
11
+ interface UseRegistrationListenerResult<TProps> {
12
+ /** 是否已注册 */
13
+ isRegistered: boolean;
14
+ /** 缓存的 Memo 组件 */
15
+ MemoizedComponent: React.MemoExoticComponent<React.ComponentType<TProps>> | null;
16
+ }
17
+ /**
18
+ * 动态注册监听 Hook
19
+ * 统一处理 Activity 和 Toolcall 的动态注册逻辑
20
+ */
21
+ export declare function useRegistrationListener<TProps>(options: UseRegistrationListenerOptions<TProps>): UseRegistrationListenerResult<TProps>;
22
+ export {};