@tdesign-react/chat 1.1.0-alpha.5 → 1.1.0-alpha.7

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 (242) hide show
  1. package/es/_chunks/dep-1007ac80.js +205 -0
  2. package/es/_chunks/dep-1007ac80.js.map +1 -0
  3. package/es/_chunks/dep-16520c2b.js +1247 -0
  4. package/es/_chunks/dep-16520c2b.js.map +1 -0
  5. package/es/_chunks/dep-1743bd61.js +438 -0
  6. package/es/_chunks/dep-1743bd61.js.map +1 -0
  7. package/es/_chunks/dep-3e40d789.js +169 -0
  8. package/es/_chunks/dep-3e40d789.js.map +1 -0
  9. package/es/_chunks/dep-4dedfbef.js +438 -0
  10. package/es/_chunks/dep-4dedfbef.js.map +1 -0
  11. package/es/_chunks/dep-56f5e08e.js +448 -0
  12. package/es/_chunks/dep-56f5e08e.js.map +1 -0
  13. package/es/_chunks/dep-96eca06f.js +169 -0
  14. package/es/_chunks/dep-96eca06f.js.map +1 -0
  15. package/es/_chunks/dep-ebc4cf30.js +1247 -0
  16. package/es/_chunks/dep-ebc4cf30.js.map +1 -0
  17. package/es/_util/reactify.js +33 -13
  18. package/es/_util/reactify.js.map +1 -1
  19. package/es/_util/useDynamicStyle.js +1 -1
  20. package/es/attachments/index.js +1 -1
  21. package/es/chat-actionbar/index.d.ts +13 -4
  22. package/es/chat-actionbar/index.js +35 -5
  23. package/es/chat-actionbar/index.js.map +1 -1
  24. package/es/chat-engine/components/activity/index.js +3 -1
  25. package/es/chat-engine/components/activity/index.js.map +1 -1
  26. package/es/chat-engine/components/activity/registry.js +1 -1
  27. package/es/chat-engine/components/activity/render.d.ts +4 -0
  28. package/es/chat-engine/components/activity/render.js +14 -2
  29. package/es/chat-engine/components/activity/render.js.map +1 -1
  30. package/es/chat-engine/components/activity/types.js +1 -1
  31. package/es/chat-engine/components/index.js +28 -20
  32. package/es/chat-engine/components/index.js.map +1 -1
  33. package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
  34. package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
  35. package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
  36. package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
  37. package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
  38. package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
  39. package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
  40. package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
  41. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
  42. package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
  43. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
  44. package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
  45. package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
  46. package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
  47. package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
  48. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
  49. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
  50. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
  51. package/es/chat-engine/components/json-render/contexts/actions.d.ts +5 -0
  52. package/es/chat-engine/components/json-render/contexts/actions.js +39 -16
  53. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -1
  54. package/es/chat-engine/components/json-render/contexts/data.d.ts +99 -7
  55. package/es/chat-engine/components/json-render/contexts/data.js +155 -76
  56. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -1
  57. package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
  58. package/es/chat-engine/components/json-render/contexts/index.js +27 -0
  59. package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
  60. package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
  61. package/es/chat-engine/components/json-render/contexts/store.js +104 -0
  62. package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
  63. package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
  64. package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
  65. package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
  66. package/es/chat-engine/components/json-render/contexts/validation.js +13 -5
  67. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -1
  68. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +12 -2
  69. package/es/chat-engine/components/json-render/contexts/visibility.js +32 -22
  70. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -1
  71. package/es/chat-engine/components/json-render/index.d.ts +9 -32
  72. package/es/chat-engine/components/json-render/index.js +59 -19
  73. package/es/chat-engine/components/json-render/index.js.map +1 -1
  74. package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
  75. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
  76. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
  77. package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
  78. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
  79. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
  80. package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
  81. package/es/chat-engine/components/json-render/registry/config.js +76 -0
  82. package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
  83. package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
  84. package/es/chat-engine/components/json-render/registry/index.js +76 -0
  85. package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
  86. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
  87. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
  88. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
  89. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
  90. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
  91. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
  92. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
  93. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
  94. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
  95. package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
  96. package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
  97. package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
  98. package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
  99. package/es/chat-engine/components/json-render/renderer/index.js +125 -0
  100. package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
  101. package/es/chat-engine/components/json-render/types.d.ts +37 -19
  102. package/es/chat-engine/components/json-render/types.js +1 -1
  103. package/es/chat-engine/components/provider/agent-state.js +14 -7
  104. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  105. package/es/chat-engine/components/toolcall/index.js +14 -7
  106. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  107. package/es/chat-engine/components/toolcall/registry.js +1 -1
  108. package/es/chat-engine/components/toolcall/render.js +16 -9
  109. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  110. package/es/chat-engine/components/toolcall/types.js +1 -1
  111. package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
  112. package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
  113. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
  114. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  115. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
  116. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  117. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
  118. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
  119. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
  120. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
  121. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
  122. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
  123. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
  124. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
  125. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
  126. package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
  127. package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
  128. package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
  129. package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
  130. package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
  131. package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
  132. package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
  133. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
  134. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
  135. package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
  136. package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
  137. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
  138. package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
  139. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
  140. package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
  141. package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
  142. package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
  143. package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
  144. package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
  145. package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
  146. package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
  147. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +1 -1
  148. package/es/chat-engine/core/adapters/agui/event-mapper.js +7 -7
  149. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  150. package/es/chat-engine/core/adapters/agui/index.d.ts +4 -7
  151. package/es/chat-engine/core/adapters/agui/index.js +11 -16
  152. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  153. package/es/chat-engine/core/adapters/agui/types/events.d.ts +1550 -0
  154. package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
  155. package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
  156. package/es/chat-engine/core/adapters/agui/types/index.d.ts +818 -0
  157. package/es/chat-engine/core/adapters/agui/types/index.js +277 -0
  158. package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
  159. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  160. package/es/chat-engine/core/adapters/index.d.ts +5 -0
  161. package/es/chat-engine/core/adapters/index.js +34 -0
  162. package/es/chat-engine/core/adapters/index.js.map +1 -0
  163. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
  164. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
  165. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
  166. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
  167. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
  168. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
  169. package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
  170. package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
  171. package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
  172. package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
  173. package/es/chat-engine/core/adapters/json-render/index.js +18 -0
  174. package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
  175. package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
  176. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
  177. package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
  178. package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
  179. package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
  180. package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
  181. package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
  182. package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
  183. package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
  184. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  185. package/es/chat-engine/core/event-bus/index.js +1 -1
  186. package/es/chat-engine/core/event-bus/types.js +1 -1
  187. package/es/chat-engine/core/index.d.ts +2 -3
  188. package/es/chat-engine/core/index.js +16 -8
  189. package/es/chat-engine/core/index.js.map +1 -1
  190. package/es/chat-engine/core/processor/index.js +1 -1
  191. package/es/chat-engine/core/server/batch-client.js +1 -1
  192. package/es/chat-engine/core/server/connection-manager.js +1 -1
  193. package/es/chat-engine/core/server/errors.js +1 -1
  194. package/es/chat-engine/core/server/index.js +1 -1
  195. package/es/chat-engine/core/server/llm-service.js +15 -17
  196. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  197. package/es/chat-engine/core/server/sse-client.js +1 -1
  198. package/es/chat-engine/core/server/sse-parser.js +1 -1
  199. package/es/chat-engine/core/server/types.js +1 -1
  200. package/es/chat-engine/core/store/message.js +6 -4
  201. package/es/chat-engine/core/store/message.js.map +1 -1
  202. package/es/chat-engine/core/store/model.js +2 -1
  203. package/es/chat-engine/core/store/model.js.map +1 -1
  204. package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
  205. package/es/chat-engine/core/store/reactiveState.js +15 -1235
  206. package/es/chat-engine/core/store/reactiveState.js.map +1 -1
  207. package/es/chat-engine/core/type.d.ts +8 -19
  208. package/es/chat-engine/core/type.js +1 -1
  209. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  210. package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
  211. package/es/chat-engine/core/utils/immutable-patch.js +147 -0
  212. package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
  213. package/es/chat-engine/core/utils/index.d.ts +7 -2
  214. package/es/chat-engine/core/utils/index.js +8 -12
  215. package/es/chat-engine/core/utils/index.js.map +1 -1
  216. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  217. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  218. package/es/chat-engine/core/utils/logger.js +1 -1
  219. package/es/chat-engine/core/utils/performance.d.ts +94 -0
  220. package/es/chat-engine/core/utils/performance.js +205 -0
  221. package/es/chat-engine/core/utils/performance.js.map +1 -0
  222. package/es/chat-engine/hooks/index.js +14 -7
  223. package/es/chat-engine/hooks/index.js.map +1 -1
  224. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  225. package/es/chat-engine/hooks/useAgentState.js +14 -7
  226. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  227. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  228. package/es/chat-engine/hooks/useChat.js +14 -7
  229. package/es/chat-engine/hooks/useChat.js.map +1 -1
  230. package/es/chat-engine/index.js +28 -20
  231. package/es/chat-engine/index.js.map +1 -1
  232. package/es/chat-filecard/index.js +1 -1
  233. package/es/chat-loading/index.js +1 -1
  234. package/es/chat-markdown/index.js +1 -1
  235. package/es/chat-message/index.js +1 -1
  236. package/es/chat-sender/index.js +1 -1
  237. package/es/chat-thinking/index.js +1 -1
  238. package/es/chatbot/index.js +1 -1
  239. package/es/index.js +28 -20
  240. package/es/index.js.map +1 -1
  241. package/es/style/index.js +1 -1
  242. package/package.json +2 -4
@@ -0,0 +1,194 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.7
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
9
+ import _createClass from '@babel/runtime/helpers/createClass';
10
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
11
+ import { applyA2UIDataUpdate } from './a2ui-to-jsonrender.js';
12
+ import '@babel/runtime/helpers/typeof';
13
+ import '@babel/runtime/helpers/objectWithoutProperties';
14
+
15
+ var SurfaceStateManager = /*#__PURE__*/function () {
16
+ function SurfaceStateManager() {
17
+ _classCallCheck(this, SurfaceStateManager);
18
+ _defineProperty(this, "surfaces", /* @__PURE__ */new Map());
19
+ _defineProperty(this, "subscribers", /* @__PURE__ */new Map());
20
+ _defineProperty(this, "debug", false);
21
+ }
22
+ return _createClass(SurfaceStateManager, [{
23
+ key: "setDebug",
24
+ value: function setDebug(enabled) {
25
+ this.debug = enabled;
26
+ }
27
+ }, {
28
+ key: "registerSurface",
29
+ value: function registerSurface(surfaceId, schema, catalogId) {
30
+ var cache = {
31
+ surfaceId: surfaceId,
32
+ catalogId: catalogId,
33
+ schema: schema,
34
+ createdAt: Date.now(),
35
+ updatedAt: Date.now()
36
+ };
37
+ this.surfaces.set(surfaceId, cache);
38
+ if (this.debug) {
39
+ console.log("[SurfaceStateManager] \u6CE8\u518C Surface:", {
40
+ surfaceId: surfaceId,
41
+ elementsCount: Object.keys(schema.elements).length
42
+ });
43
+ }
44
+ }
45
+ }, {
46
+ key: "updateData",
47
+ value: function updateData(surfaceId, path) {
48
+ var op = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "replace";
49
+ var value = arguments.length > 3 ? arguments[3] : undefined;
50
+ var cache = this.surfaces.get(surfaceId);
51
+ if (!cache) {
52
+ if (this.debug) {
53
+ console.warn("[SurfaceStateManager] updateData: Surface \u4E0D\u5B58\u5728", surfaceId);
54
+ }
55
+ return false;
56
+ }
57
+ cache.schema = applyA2UIDataUpdate(cache.schema, path, op, value);
58
+ cache.updatedAt = Date.now();
59
+ if (this.debug) {
60
+ console.log("[SurfaceStateManager] \u66F4\u65B0\u6570\u636E:", {
61
+ surfaceId: surfaceId,
62
+ path: path,
63
+ op: op,
64
+ value: value,
65
+ newData: cache.schema.data
66
+ });
67
+ }
68
+ this.notifySubscribersAsync(surfaceId, cache.schema);
69
+ return true;
70
+ }
71
+ }, {
72
+ key: "subscribe",
73
+ value: function subscribe(surfaceId, subscriber) {
74
+ var _this = this;
75
+ if (!this.subscribers.has(surfaceId)) {
76
+ this.subscribers.set(surfaceId, /* @__PURE__ */new Set());
77
+ }
78
+ this.subscribers.get(surfaceId).add(subscriber);
79
+ if (this.debug) {
80
+ console.log("[SurfaceStateManager] \u8BA2\u9605 Surface:", surfaceId);
81
+ }
82
+ return function () {
83
+ var subs = _this.subscribers.get(surfaceId);
84
+ if (subs) {
85
+ subs["delete"](subscriber);
86
+ if (subs.size === 0) {
87
+ _this.subscribers["delete"](surfaceId);
88
+ }
89
+ }
90
+ if (_this.debug) {
91
+ console.log("[SurfaceStateManager] \u53D6\u6D88\u8BA2\u9605 Surface:", surfaceId);
92
+ }
93
+ };
94
+ }
95
+ }, {
96
+ key: "notifySubscribersAsync",
97
+ value: function notifySubscribersAsync(surfaceId, schema) {
98
+ var _this2 = this;
99
+ var subs = this.subscribers.get(surfaceId);
100
+ if (!subs || subs.size === 0) {
101
+ return;
102
+ }
103
+ if (this.debug) {
104
+ console.log("[SurfaceStateManager] \u51C6\u5907\u901A\u77E5\u8BA2\u9605\u8005:", {
105
+ surfaceId: surfaceId,
106
+ subscriberCount: subs.size
107
+ });
108
+ }
109
+ queueMicrotask(function () {
110
+ var currentSubs = _this2.subscribers.get(surfaceId);
111
+ if (!currentSubs || currentSubs.size === 0) {
112
+ return;
113
+ }
114
+ if (_this2.debug) {
115
+ console.log("[SurfaceStateManager] \u6267\u884C\u901A\u77E5\u8BA2\u9605\u8005:", {
116
+ surfaceId: surfaceId
117
+ });
118
+ }
119
+ currentSubs.forEach(function (subscriber) {
120
+ try {
121
+ subscriber(schema);
122
+ } catch (e) {
123
+ console.error("[SurfaceStateManager] \u8BA2\u9605\u8005\u56DE\u8C03\u51FA\u9519:", e);
124
+ }
125
+ });
126
+ });
127
+ }
128
+ }, {
129
+ key: "getSurface",
130
+ value: function getSurface(surfaceId) {
131
+ return this.surfaces.get(surfaceId);
132
+ }
133
+ }, {
134
+ key: "getSchema",
135
+ value: function getSchema(surfaceId) {
136
+ var _this$surfaces$get;
137
+ return ((_this$surfaces$get = this.surfaces.get(surfaceId)) === null || _this$surfaces$get === void 0 ? void 0 : _this$surfaces$get.schema) || null;
138
+ }
139
+ }, {
140
+ key: "hasSurface",
141
+ value: function hasSurface(surfaceId) {
142
+ return this.surfaces.has(surfaceId);
143
+ }
144
+ }, {
145
+ key: "getAllSurfaceIds",
146
+ value: function getAllSurfaceIds() {
147
+ return Array.from(this.surfaces.keys());
148
+ }
149
+ }, {
150
+ key: "deleteSurface",
151
+ value: function deleteSurface(surfaceId) {
152
+ this.subscribers["delete"](surfaceId);
153
+ var deleted = this.surfaces["delete"](surfaceId);
154
+ if (this.debug && deleted) {
155
+ console.log("[SurfaceStateManager] \u5220\u9664 Surface:", surfaceId);
156
+ }
157
+ return deleted;
158
+ }
159
+ }, {
160
+ key: "clearAll",
161
+ value: function clearAll() {
162
+ this.surfaces.clear();
163
+ this.subscribers.clear();
164
+ if (this.debug) {
165
+ console.log("[SurfaceStateManager] \u6E05\u9664\u6240\u6709\u7F13\u5B58");
166
+ }
167
+ }
168
+ }, {
169
+ key: "getStats",
170
+ value: function getStats() {
171
+ var _this3 = this;
172
+ var surfaces = Array.from(this.surfaces.entries()).map(function (_ref) {
173
+ var _this3$subscribers$ge;
174
+ var _ref2 = _slicedToArray(_ref, 2),
175
+ id = _ref2[0],
176
+ cache = _ref2[1];
177
+ return {
178
+ id: id,
179
+ elementsCount: Object.keys(cache.schema.elements).length,
180
+ updatedAt: cache.updatedAt,
181
+ subscriberCount: ((_this3$subscribers$ge = _this3.subscribers.get(id)) === null || _this3$subscribers$ge === void 0 ? void 0 : _this3$subscribers$ge.size) || 0
182
+ };
183
+ });
184
+ return {
185
+ count: this.surfaces.size,
186
+ surfaces: surfaces
187
+ };
188
+ }
189
+ }]);
190
+ }();
191
+ var surfaceStateManager = new SurfaceStateManager();
192
+
193
+ export { SurfaceStateManager, surfaceStateManager };
194
+ //# sourceMappingURL=SurfaceStateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SurfaceStateManager.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/json-render/SurfaceStateManager.ts"],"sourcesContent":["/**\n * Surface 状态管理器(框架无关)\n * \n * 职责:\n * 1. 缓存已创建的 Surface Schema(跨消息/跨轮次)\n * 2. 提供订阅机制,当 Surface 数据更新时通知已渲染的组件\n * \n * 使用场景:\n * - 第一轮对话:createSurface + updateComponents → 创建完整 UI,注册到缓存\n * - 后续轮次:仅 updateDataModel → 更新缓存中的数据,通知订阅者重渲染\n * \n * 设计原则:\n * 1. 服务端是状态的单一数据源(updateDataModel 来自服务端)\n * 2. 本模块只负责存储和订阅,不负责 A2UI → JsonRender 的转换\n * 3. 转换逻辑由 a2ui-to-jsonrender.ts 中的函数完成\n */\n\nimport type { JsonRenderSchema } from './types/core';\nimport { applyA2UIDataUpdate } from './a2ui-to-jsonrender';\n\nexport interface SurfaceCache {\n /** Surface ID */\n surfaceId: string;\n /** Catalog ID */\n catalogId?: string;\n /** 当前的 json-render Schema */\n schema: JsonRenderSchema;\n /** 创建时间 */\n createdAt: number;\n /** 最后更新时间 */\n updatedAt: number;\n}\n\n/** 订阅者回调函数类型 */\nexport type SurfaceSubscriber = (schema: JsonRenderSchema) => void;\n\n/**\n * Surface 状态管理器\n * 单例模式,全局共享 Surface 缓存\n * 框架无关,不依赖 React 或其他 UI 框架\n */\nclass SurfaceStateManager {\n private surfaces: Map<string, SurfaceCache> = new Map();\n /** 订阅者映射:surfaceId → Set<subscriber> */\n private subscribers: Map<string, Set<SurfaceSubscriber>> = new Map();\n private debug: boolean = false;\n\n /**\n * 设置调试模式\n */\n setDebug(enabled: boolean): void {\n this.debug = enabled;\n }\n\n /**\n * 注册 Surface(由创建型消息调用)\n * \n * @param surfaceId Surface ID\n * @param schema 转换后的 json-render Schema\n * @param catalogId 可选的 Catalog ID\n */\n registerSurface(surfaceId: string, schema: JsonRenderSchema, catalogId?: string): void {\n const cache: SurfaceCache = {\n surfaceId,\n catalogId,\n schema,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n };\n \n this.surfaces.set(surfaceId, cache);\n \n if (this.debug) {\n console.log('[SurfaceStateManager] 注册 Surface:', {\n surfaceId,\n elementsCount: Object.keys(schema.elements).length,\n });\n }\n }\n\n /**\n * 更新 Surface 数据(由更新型消息调用)\n * \n * @param surfaceId Surface ID\n * @param path JSON Pointer 路径\n * @param op 操作类型\n * @param value 值\n * @returns 是否成功(Surface 存在)\n */\n updateData(\n surfaceId: string,\n path: string | undefined,\n op: 'add' | 'replace' | 'remove' = 'replace',\n value?: unknown,\n ): boolean {\n const cache = this.surfaces.get(surfaceId);\n if (!cache) {\n if (this.debug) {\n console.warn('[SurfaceStateManager] updateData: Surface 不存在', surfaceId);\n }\n return false;\n }\n\n // 使用已有的增量更新函数\n cache.schema = applyA2UIDataUpdate(cache.schema, path, op, value);\n cache.updatedAt = Date.now();\n\n if (this.debug) {\n console.log('[SurfaceStateManager] 更新数据:', {\n surfaceId,\n path,\n op,\n value,\n newData: cache.schema.data,\n });\n }\n\n // 异步通知订阅者\n this.notifySubscribersAsync(surfaceId, cache.schema);\n \n return true;\n }\n\n /**\n * 订阅 Surface 状态变化\n * \n * @param surfaceId Surface ID\n * @param subscriber 订阅者回调\n * @returns 取消订阅函数\n */\n subscribe(surfaceId: string, subscriber: SurfaceSubscriber): () => void {\n if (!this.subscribers.has(surfaceId)) {\n this.subscribers.set(surfaceId, new Set());\n }\n this.subscribers.get(surfaceId)!.add(subscriber);\n\n if (this.debug) {\n console.log('[SurfaceStateManager] 订阅 Surface:', surfaceId);\n }\n\n // 返回取消订阅函数\n return () => {\n const subs = this.subscribers.get(surfaceId);\n if (subs) {\n subs.delete(subscriber);\n if (subs.size === 0) {\n this.subscribers.delete(surfaceId);\n }\n }\n if (this.debug) {\n console.log('[SurfaceStateManager] 取消订阅 Surface:', surfaceId);\n }\n };\n }\n\n /**\n * 异步通知订阅者(避免在渲染期间调用回调)\n */\n private notifySubscribersAsync(surfaceId: string, schema: JsonRenderSchema): void {\n const subs = this.subscribers.get(surfaceId);\n if (!subs || subs.size === 0) {\n return;\n }\n\n if (this.debug) {\n console.log('[SurfaceStateManager] 准备通知订阅者:', { surfaceId, subscriberCount: subs.size });\n }\n\n // 使用 queueMicrotask 延迟到当前执行栈完成后执行\n queueMicrotask(() => {\n // 重新获取订阅者(可能在这期间已被取消)\n const currentSubs = this.subscribers.get(surfaceId);\n if (!currentSubs || currentSubs.size === 0) {\n return;\n }\n\n if (this.debug) {\n console.log('[SurfaceStateManager] 执行通知订阅者:', { surfaceId });\n }\n\n currentSubs.forEach(subscriber => {\n try {\n subscriber(schema);\n } catch (e) {\n console.error('[SurfaceStateManager] 订阅者回调出错:', e);\n }\n });\n });\n }\n\n /**\n * 获取指定 Surface 的缓存\n */\n getSurface(surfaceId: string): SurfaceCache | undefined {\n return this.surfaces.get(surfaceId);\n }\n\n /**\n * 获取指定 Surface 的 Schema\n */\n getSchema(surfaceId: string): JsonRenderSchema | null {\n return this.surfaces.get(surfaceId)?.schema || null;\n }\n\n /**\n * 检查 Surface 是否存在\n */\n hasSurface(surfaceId: string): boolean {\n return this.surfaces.has(surfaceId);\n }\n\n /**\n * 获取所有 Surface ID\n */\n getAllSurfaceIds(): string[] {\n return Array.from(this.surfaces.keys());\n }\n\n /**\n * 删除 Surface(由 deleteSurface 消息调用)\n */\n deleteSurface(surfaceId: string): boolean {\n this.subscribers.delete(surfaceId);\n const deleted = this.surfaces.delete(surfaceId);\n \n if (this.debug && deleted) {\n console.log('[SurfaceStateManager] 删除 Surface:', surfaceId);\n }\n \n return deleted;\n }\n\n /**\n * 清除所有 Surface 缓存\n */\n clearAll(): void {\n this.surfaces.clear();\n this.subscribers.clear();\n if (this.debug) {\n console.log('[SurfaceStateManager] 清除所有缓存');\n }\n }\n\n /**\n * 获取缓存统计信息\n */\n getStats(): { \n count: number; \n surfaces: Array<{ id: string; elementsCount: number; updatedAt: number; subscriberCount: number }>;\n } {\n const surfaces = Array.from(this.surfaces.entries()).map(([id, cache]) => ({\n id,\n elementsCount: Object.keys(cache.schema.elements).length,\n updatedAt: cache.updatedAt,\n subscriberCount: this.subscribers.get(id)?.size || 0,\n }));\n\n return {\n count: this.surfaces.size,\n surfaces,\n };\n }\n}\n\n// 导出单例实例\nexport const surfaceStateManager = new SurfaceStateManager();\n\n// 导出类供测试或创建独立实例\nexport { SurfaceStateManager };"],"names":["SurfaceStateManager","_classCallCheck","_defineProperty","Map","_createClass","key","value","setDebug","enabled","debug","registerSurface","surfaceId","schema","catalogId","cache","createdAt","Date","now","updatedAt","surfaces","set","console","log","elementsCount","Object","keys","elements","length","updateData","path","op","arguments","undefined","get","warn","applyA2UIDataUpdate","newData","data","notifySubscribersAsync","subscribe","subscriber","_this","subscribers","has","Set","add","subs","size","_this2","subscriberCount","queueMicrotask","currentSubs","forEach","e","error","getSurface","getSchema","_this$surfaces$get","hasSurface","getAllSurfaceIds","Array","from","deleteSurface","deleted","clearAll","clear","getStats","_this3","entries","map","_ref","_this3$subscribers$ge","_ref2","_slicedToArray","id","count","surfaceStateManager"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * A2UI v0.9 → json-render 适配器
3
+ * 将 A2UI v0.9 协议转换为 json-render Schema
4
+ *
5
+ * 核心设计:
6
+ * 1. A2UI v0.9 的 createSurface 只是初始化信号,不包含组件数据
7
+ * 2. 组件数据通过 updateComponents 消息逐步发送(数组形式)
8
+ * 3. 数据模型通过 updateDataModel 消息填充
9
+ * 4. 组件字段名是 'component',不是 'type'
10
+ */
11
+ import type { JsonRenderSchema } from './types/core';
12
+ import type { A2UIComponent, A2UIMessage } from './types/a2ui';
13
+ /**
14
+ * 转换 A2UI v0.9 消息数组为 json-render Schema
15
+ *
16
+ * 处理流程:
17
+ * 1. 查找 createSurface 消息初始化 Surface
18
+ * 2. 累积所有 updateComponents 消息构建组件树
19
+ * 3. 累积所有 updateDataModel 消息填充数据
20
+ * 4. 转换为 json-render Schema
21
+ *
22
+ * @param messages A2UI 消息数组
23
+ * @returns json-render Schema 或 null
24
+ */
25
+ export declare function convertA2UIMessagesToJsonRender(messages: A2UIMessage[]): JsonRenderSchema | null;
26
+ /**
27
+ * 应用增量更新到现有 Schema
28
+ *
29
+ * @param schema 当前 json-render Schema
30
+ * @param components A2UI updateComponents 的组件数组
31
+ * @returns 更新后的 Schema
32
+ */
33
+ export declare function applyA2UIUpdates(schema: JsonRenderSchema, components: A2UIComponent[]): JsonRenderSchema;
34
+ /**
35
+ * 应用数据模型更新到现有 Schema
36
+ *
37
+ * @param schema 当前 json-render Schema
38
+ * @param path JSON Pointer 路径
39
+ * @param op 操作类型
40
+ * @param value 值
41
+ * @returns 更新后的 Schema
42
+ */
43
+ export declare function applyA2UIDataUpdate(schema: JsonRenderSchema, path: string | undefined, op?: 'add' | 'replace' | 'remove', value?: unknown): JsonRenderSchema;
44
+ declare const _default: {
45
+ convertA2UIMessagesToJsonRender: typeof convertA2UIMessagesToJsonRender;
46
+ applyA2UIUpdates: typeof applyA2UIUpdates;
47
+ applyA2UIDataUpdate: typeof applyA2UIDataUpdate;
48
+ };
49
+ export default _default;
@@ -0,0 +1,307 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.7
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _typeof from '@babel/runtime/helpers/typeof';
8
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
9
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
10
+
11
+ var _excluded = ["id", "component", "weight", "child", "children"];
12
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
14
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
15
+ 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; }
16
+ 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; }
17
+ var TYPE_MAPPING = {
18
+ Text: "Text",
19
+ Image: "Image",
20
+ Icon: "Icon",
21
+ Video: "Video",
22
+ AudioPlayer: "AudioPlayer",
23
+ Button: "Button",
24
+ TextField: "TextField",
25
+ CheckBox: "Checkbox",
26
+ ChoicePicker: "Select",
27
+ Slider: "Slider",
28
+ DateTimeInput: "DatePicker",
29
+ Card: "Card",
30
+ Row: "Row",
31
+ Column: "Column",
32
+ Col: "Col",
33
+ List: "List",
34
+ Tabs: "Tabs",
35
+ Divider: "Divider",
36
+ Modal: "Dialog"
37
+ };
38
+ function mapProps(component) {
39
+ var id = component.id,
40
+ componentType = component.component,
41
+ weight = component.weight,
42
+ child = component.child,
43
+ children = component.children,
44
+ restProps = _objectWithoutProperties(component, _excluded);
45
+ var mappedProps = _objectSpread({}, restProps);
46
+ if (weight !== void 0) {
47
+ mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
48
+ flexGrow: weight
49
+ });
50
+ }
51
+ switch (componentType) {
52
+ case "Button":
53
+ if (mappedProps.text && typeof mappedProps.text === "string") {
54
+ mappedProps.label = mappedProps.text;
55
+ delete mappedProps.text;
56
+ }
57
+ if (mappedProps.action && _typeof(mappedProps.action) === "object") {
58
+ var a2uiAction = mappedProps.action;
59
+ mappedProps.action = {
60
+ name: a2uiAction.name,
61
+ params: a2uiAction.context || {}
62
+ };
63
+ }
64
+ break;
65
+ case "TextField":
66
+ if (mappedProps.text && _typeof(mappedProps.text) === "object" && mappedProps.text.path) {
67
+ mappedProps.valuePath = mappedProps.text.path;
68
+ delete mappedProps.text;
69
+ }
70
+ break;
71
+ case "CheckBox":
72
+ if (mappedProps.checked && _typeof(mappedProps.checked) === "object" && mappedProps.checked.path) {
73
+ mappedProps.valuePath = mappedProps.checked.path;
74
+ delete mappedProps.checked;
75
+ }
76
+ break;
77
+ case "Column":
78
+ if (mappedProps.gap !== void 0) {
79
+ mappedProps.size = mappedProps.gap;
80
+ mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
81
+ display: "flex",
82
+ flexDirection: "column",
83
+ gap: "".concat(mappedProps.gap, "px")
84
+ });
85
+ delete mappedProps.gap;
86
+ }
87
+ break;
88
+ case "Row":
89
+ if (mappedProps.gap !== void 0) {
90
+ mappedProps.gutter = mappedProps.gap;
91
+ mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
92
+ display: "flex",
93
+ flexDirection: "row",
94
+ gap: "".concat(mappedProps.gap, "px")
95
+ });
96
+ delete mappedProps.gap;
97
+ }
98
+ if (mappedProps.distribution) {
99
+ var distributionMap = {
100
+ start: "start",
101
+ end: "end",
102
+ center: "center",
103
+ "space-between": "space-between",
104
+ "space-around": "space-around"
105
+ };
106
+ mappedProps.justify = distributionMap[mappedProps.distribution] || mappedProps.distribution;
107
+ mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
108
+ justifyContent: mappedProps.distribution === "end" ? "flex-end" : mappedProps.distribution
109
+ });
110
+ delete mappedProps.distribution;
111
+ }
112
+ break;
113
+ default:
114
+ break;
115
+ }
116
+ if (mappedProps.disabled && _typeof(mappedProps.disabled) === "object" && mappedProps.disabled.path) {
117
+ mappedProps.disabledPath = mappedProps.disabled.path;
118
+ delete mappedProps.disabled;
119
+ }
120
+ return mappedProps;
121
+ }
122
+ function convertComponent(component) {
123
+ var a2uiType = component.component;
124
+ var mappedType = TYPE_MAPPING[a2uiType] || a2uiType;
125
+ var props = mapProps(component);
126
+ var element = {
127
+ key: component.id,
128
+ type: mappedType,
129
+ props: props
130
+ };
131
+ if (component.children) {
132
+ if (Array.isArray(component.children)) {
133
+ element.children = component.children;
134
+ } else if (_typeof(component.children) === "object" && component.children.path) {
135
+ element.props.childrenPath = component.children.path;
136
+ element.props.childTemplate = component.children.componentId;
137
+ }
138
+ } else if (component.child) {
139
+ element.children = [component.child];
140
+ }
141
+ return element;
142
+ }
143
+ function buildSurfaceState(messages) {
144
+ var surfaceState = null;
145
+ var _iterator = _createForOfIteratorHelper(messages),
146
+ _step;
147
+ try {
148
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
149
+ var _surfaceState;
150
+ var msg = _step.value;
151
+ if (msg.createSurface) {
152
+ surfaceState = {
153
+ surfaceId: msg.createSurface.surfaceId,
154
+ catalogId: msg.createSurface.catalogId,
155
+ components: /* @__PURE__ */new Map(),
156
+ dataModel: {}
157
+ };
158
+ }
159
+ if (msg.updateComponents && surfaceState) {
160
+ var components = msg.updateComponents.components;
161
+ if (Array.isArray(components)) {
162
+ var _iterator2 = _createForOfIteratorHelper(components),
163
+ _step2;
164
+ try {
165
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
166
+ var comp = _step2.value;
167
+ surfaceState.components.set(comp.id, comp);
168
+ }
169
+ } catch (err) {
170
+ _iterator2.e(err);
171
+ } finally {
172
+ _iterator2.f();
173
+ }
174
+ }
175
+ }
176
+ if (msg.updateDataModel && surfaceState) {
177
+ var _msg$updateDataModel = msg.updateDataModel,
178
+ path = _msg$updateDataModel.path,
179
+ op = _msg$updateDataModel.op,
180
+ value = _msg$updateDataModel.value;
181
+ var operation = op || "replace";
182
+ if (operation === "replace" && (path === "/" || !path)) {
183
+ surfaceState.dataModel = value;
184
+ } else if (operation === "replace" && path) {
185
+ setValueByPath(surfaceState.dataModel, path, value);
186
+ } else if (operation === "add" && path) {
187
+ setValueByPath(surfaceState.dataModel, path, value);
188
+ } else if (operation === "remove" && path) {
189
+ deleteValueByPath(surfaceState.dataModel, path);
190
+ }
191
+ }
192
+ if (msg.deleteSurface && ((_surfaceState = surfaceState) === null || _surfaceState === void 0 ? void 0 : _surfaceState.surfaceId) === msg.deleteSurface.surfaceId) {
193
+ surfaceState = null;
194
+ }
195
+ }
196
+ } catch (err) {
197
+ _iterator.e(err);
198
+ } finally {
199
+ _iterator.f();
200
+ }
201
+ return surfaceState;
202
+ }
203
+ function setValueByPath(obj, path, value) {
204
+ var parts = path.split("/").filter(Boolean);
205
+ var current = obj;
206
+ for (var i = 0; i < parts.length - 1; i++) {
207
+ var key = parts[i];
208
+ var nextKey = parts[i + 1];
209
+ if (!(key in current)) {
210
+ current[key] = /^\d+$/.test(nextKey) ? [] : {};
211
+ }
212
+ current = current[key];
213
+ }
214
+ if (parts.length > 0) {
215
+ current[parts[parts.length - 1]] = value;
216
+ }
217
+ }
218
+ function deleteValueByPath(obj, path) {
219
+ var parts = path.split("/").filter(Boolean);
220
+ var current = obj;
221
+ for (var i = 0; i < parts.length - 1; i++) {
222
+ var key = parts[i];
223
+ if (!(key in current)) return;
224
+ current = current[key];
225
+ }
226
+ if (parts.length > 0) {
227
+ var lastKey = parts[parts.length - 1];
228
+ if (Array.isArray(current) && /^\d+$/.test(lastKey)) {
229
+ current.splice(parseInt(lastKey, 10), 1);
230
+ } else {
231
+ delete current[lastKey];
232
+ }
233
+ }
234
+ }
235
+ function surfaceStateToSchema(state) {
236
+ var elements = {};
237
+ state.components.forEach(function (component, id) {
238
+ elements[id] = convertComponent(component);
239
+ });
240
+ return {
241
+ root: "root",
242
+ elements: elements,
243
+ data: state.dataModel
244
+ };
245
+ }
246
+ function convertA2UIMessagesToJsonRender(messages) {
247
+ if (!messages || messages.length === 0) {
248
+ return null;
249
+ }
250
+ var surfaceState = buildSurfaceState(messages);
251
+ if (!surfaceState) {
252
+ return null;
253
+ }
254
+ if (!surfaceState.components.has("root")) {
255
+ return null;
256
+ }
257
+ return surfaceStateToSchema(surfaceState);
258
+ }
259
+ function applyA2UIUpdates(schema, components) {
260
+ if (!Array.isArray(components)) {
261
+ return schema;
262
+ }
263
+ var newElements = _objectSpread({}, schema.elements);
264
+ var _iterator3 = _createForOfIteratorHelper(components),
265
+ _step3;
266
+ try {
267
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
268
+ var component = _step3.value;
269
+ newElements[component.id] = convertComponent(component);
270
+ }
271
+ } catch (err) {
272
+ _iterator3.e(err);
273
+ } finally {
274
+ _iterator3.f();
275
+ }
276
+ return _objectSpread(_objectSpread({}, schema), {}, {
277
+ elements: newElements
278
+ });
279
+ }
280
+ function applyA2UIDataUpdate(schema, path) {
281
+ var op = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "replace";
282
+ var value = arguments.length > 3 ? arguments[3] : undefined;
283
+ var newData = _objectSpread({}, schema.data);
284
+ if (op === "replace" && (path === "/" || !path)) {
285
+ return _objectSpread(_objectSpread({}, schema), {}, {
286
+ data: value
287
+ });
288
+ }
289
+ if (path) {
290
+ if (op === "remove") {
291
+ deleteValueByPath(newData, path);
292
+ } else {
293
+ setValueByPath(newData, path, value);
294
+ }
295
+ }
296
+ return _objectSpread(_objectSpread({}, schema), {}, {
297
+ data: newData
298
+ });
299
+ }
300
+ var a2uiToJsonrender = {
301
+ convertA2UIMessagesToJsonRender: convertA2UIMessagesToJsonRender,
302
+ applyA2UIUpdates: applyA2UIUpdates,
303
+ applyA2UIDataUpdate: applyA2UIDataUpdate
304
+ };
305
+
306
+ export { applyA2UIDataUpdate, applyA2UIUpdates, convertA2UIMessagesToJsonRender, a2uiToJsonrender as default };
307
+ //# sourceMappingURL=a2ui-to-jsonrender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2ui-to-jsonrender.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.ts"],"sourcesContent":["/**\n * A2UI v0.9 → json-render 适配器\n * 将 A2UI v0.9 协议转换为 json-render Schema\n * \n * 核心设计:\n * 1. A2UI v0.9 的 createSurface 只是初始化信号,不包含组件数据\n * 2. 组件数据通过 updateComponents 消息逐步发送(数组形式)\n * 3. 数据模型通过 updateDataModel 消息填充\n * 4. 组件字段名是 'component',不是 'type'\n */\n\nimport type { UIElement } from '@json-render/core';\nimport type { JsonRenderSchema } from './types/core';\nimport type { A2UIComponent, A2UIMessage, A2UISurfaceState } from './types/a2ui';\n\n/**\n * 组件类型映射表\n * A2UI 类型 → json-render 类型\n */\nconst TYPE_MAPPING: Record<string, string> = {\n // 基础组件\n Text: 'Text',\n Image: 'Image',\n Icon: 'Icon',\n Video: 'Video',\n AudioPlayer: 'AudioPlayer',\n Button: 'Button',\n TextField: 'TextField', // 映射到 TextField 以支持数据绑定\n CheckBox: 'Checkbox',\n ChoicePicker: 'Select',\n Slider: 'Slider',\n DateTimeInput: 'DatePicker',\n \n // 布局组件\n Card: 'Card',\n Row: 'Row',\n Column: 'Column', // A2UI Column → json-render Column(垂直布局),不是 Col(栅格列)\n Col: 'Col', // 保留 Col 映射给显式使用栅格的场景\n List: 'List',\n Tabs: 'Tabs',\n Divider: 'Divider',\n Modal: 'Dialog',\n};\n\n/**\n * 属性映射函数\n * 将 A2UI v0.9 组件属性转换为 json-render 组件属性\n */\nfunction mapProps(component: A2UIComponent): Record<string, any> {\n // 排除 A2UI 特有字段,保留其他属性\n const { id, component: componentType, weight, child, children, ...restProps } = component;\n \n const mappedProps: Record<string, any> = { ...restProps };\n\n // 处理 weight(flex-grow)\n if (weight !== undefined) {\n mappedProps.style = {\n ...mappedProps.style,\n flexGrow: weight,\n };\n }\n\n // 特定类型的属性转换\n switch (componentType) {\n case 'Button':\n // A2UI Button 的 text 属性 → json-render 的 label(或 children)\n if (mappedProps.text && typeof mappedProps.text === 'string') {\n mappedProps.label = mappedProps.text;\n delete mappedProps.text;\n }\n // A2UI action 格式转换:{ name, context } → { name, params }\n // context 中的 { path: \"/xxx\" } 会在运行时被 Button 组件解析\n if (mappedProps.action && typeof mappedProps.action === 'object') {\n const a2uiAction = mappedProps.action as { name: string; context?: Record<string, unknown> };\n mappedProps.action = {\n name: a2uiAction.name,\n // 将 context 转为 params,保留动态绑定引用供运行时解析\n params: a2uiAction.context || {},\n };\n }\n // 处理 theme 映射(A2UI 的 theme: 'primary' → TDesign 的 theme: 'primary')\n // 保持不变,TDesign Button 支持 theme 属性\n break;\n\n case 'TextField':\n // A2UI TextField 的 text 属性(数据绑定)→ json-render 的 value\n if (mappedProps.text && typeof mappedProps.text === 'object' && mappedProps.text.path) {\n mappedProps.valuePath = mappedProps.text.path;\n delete mappedProps.text;\n }\n break;\n\n case 'CheckBox':\n // A2UI CheckBox 的 checked 属性(数据绑定)\n if (mappedProps.checked && typeof mappedProps.checked === 'object' && mappedProps.checked.path) {\n mappedProps.valuePath = mappedProps.checked.path;\n delete mappedProps.checked;\n }\n break;\n\n case 'Column':\n // A2UI Column 的 gap 属性 → json-render Column 的 size 属性 + CSS gap 后备\n if (mappedProps.gap !== undefined) {\n mappedProps.size = mappedProps.gap;\n // 同时设置 CSS gap 作为后备方案\n mappedProps.style = {\n ...mappedProps.style,\n display: 'flex',\n flexDirection: 'column',\n gap: `${mappedProps.gap}px`,\n };\n delete mappedProps.gap;\n }\n break;\n\n case 'Row':\n // A2UI Row 的 gap 属性 → json-render Row 的 gutter 属性 + CSS gap 后备\n if (mappedProps.gap !== undefined) {\n mappedProps.gutter = mappedProps.gap;\n // 同时设置 CSS gap 作为后备方案\n mappedProps.style = {\n ...mappedProps.style,\n display: 'flex',\n flexDirection: 'row',\n gap: `${mappedProps.gap}px`,\n };\n delete mappedProps.gap;\n }\n // A2UI Row 的 distribution 属性 → json-render Row 的 justify 属性\n if (mappedProps.distribution) {\n const distributionMap: Record<string, string> = {\n start: 'start',\n end: 'end',\n center: 'center',\n 'space-between': 'space-between',\n 'space-around': 'space-around',\n };\n mappedProps.justify = distributionMap[mappedProps.distribution] || mappedProps.distribution;\n // 同时设置 CSS justifyContent\n mappedProps.style = {\n ...mappedProps.style,\n justifyContent: mappedProps.distribution === 'end' ? 'flex-end' : mappedProps.distribution,\n };\n delete mappedProps.distribution;\n }\n break;\n\n default:\n break;\n }\n\n // 处理通用的 disabled 数据绑定\n if (mappedProps.disabled && typeof mappedProps.disabled === 'object' && mappedProps.disabled.path) {\n mappedProps.disabledPath = mappedProps.disabled.path;\n delete mappedProps.disabled;\n }\n\n return mappedProps;\n}\n\n/**\n * 转换单个 A2UI 组件为 json-render UIElement\n */\nfunction convertComponent(component: A2UIComponent): UIElement {\n // A2UI v0.9 使用 'component' 字段,不是 'type'\n const a2uiType = component.component;\n const mappedType = TYPE_MAPPING[a2uiType] || a2uiType;\n const props = mapProps(component);\n\n const element: UIElement = {\n key: component.id, // UIElement 需要 key 属性\n type: mappedType,\n props,\n };\n\n // 处理子组件\n if (component.children) {\n if (Array.isArray(component.children)) {\n // 静态子组件数组\n element.children = component.children;\n } else if (typeof component.children === 'object' && component.children.path) {\n // 模板子组件(数据绑定列表)\n element.props.childrenPath = component.children.path;\n element.props.childTemplate = component.children.componentId;\n }\n } else if (component.child) {\n // 单子组件\n element.children = [component.child];\n }\n\n return element;\n}\n\n/**\n * 从 A2UI 消息数组构建 Surface 状态\n * 累积处理所有消息类型\n */\nfunction buildSurfaceState(messages: A2UIMessage[]): A2UISurfaceState | null {\n let surfaceState: A2UISurfaceState | null = null;\n\n for (const msg of messages) {\n // 1. createSurface - 初始化 Surface\n if (msg.createSurface) {\n surfaceState = {\n surfaceId: msg.createSurface.surfaceId,\n catalogId: msg.createSurface.catalogId,\n components: new Map(),\n dataModel: {},\n };\n }\n\n // 2. updateComponents - 累积组件\n if (msg.updateComponents && surfaceState) {\n const { components } = msg.updateComponents;\n // A2UI v0.9 的 components 是数组\n if (Array.isArray(components)) {\n for (const comp of components) {\n surfaceState.components.set(comp.id, comp);\n }\n }\n }\n\n // 3. updateDataModel - 累积数据\n if (msg.updateDataModel && surfaceState) {\n const { path, op, value } = msg.updateDataModel;\n const operation = op || 'replace';\n \n if (operation === 'replace' && (path === '/' || !path)) {\n // 替换整个数据模型\n surfaceState.dataModel = value as Record<string, unknown>;\n } else if (operation === 'replace' && path) {\n // 替换指定路径\n setValueByPath(surfaceState.dataModel, path, value);\n } else if (operation === 'add' && path) {\n // 添加到指定路径\n setValueByPath(surfaceState.dataModel, path, value);\n } else if (operation === 'remove' && path) {\n // 删除指定路径\n deleteValueByPath(surfaceState.dataModel, path);\n }\n }\n\n // 4. deleteSurface - 删除 Surface(返回 null)\n if (msg.deleteSurface && surfaceState?.surfaceId === msg.deleteSurface.surfaceId) {\n surfaceState = null;\n }\n }\n\n return surfaceState;\n}\n\n/**\n * 根据 JSON Pointer 路径设置值\n * 支持数组索引路径(如 /list/0/name)\n */\nfunction setValueByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n const parts = path.split('/').filter(Boolean);\n let current: any = obj;\n \n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i];\n const nextKey = parts[i + 1];\n if (!(key in current)) {\n // 如果下一个 key 是数字,创建数组;否则创建对象\n current[key] = /^\\d+$/.test(nextKey) ? [] : {};\n }\n current = current[key];\n }\n \n if (parts.length > 0) {\n current[parts[parts.length - 1]] = value;\n }\n}\n\n/**\n * 根据 JSON Pointer 路径删除值\n * 支持数组索引路径\n */\nfunction deleteValueByPath(obj: Record<string, unknown>, path: string): void {\n const parts = path.split('/').filter(Boolean);\n let current: any = obj;\n \n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i];\n if (!(key in current)) return;\n current = current[key];\n }\n \n if (parts.length > 0) {\n const lastKey = parts[parts.length - 1];\n if (Array.isArray(current) && /^\\d+$/.test(lastKey)) {\n // 数组元素删除\n current.splice(parseInt(lastKey, 10), 1);\n } else {\n delete current[lastKey];\n }\n }\n}\n\n/**\n * 将 Surface 状态转换为 json-render Schema\n */\nfunction surfaceStateToSchema(state: A2UISurfaceState): JsonRenderSchema {\n const elements: Record<string, UIElement> = {};\n\n // 遍历所有组件,转换为 json-render elements\n state.components.forEach((component, id) => {\n elements[id] = convertComponent(component);\n });\n\n return {\n root: 'root', // A2UI v0.9 规定必须有 id 为 'root' 的组件\n elements,\n data: state.dataModel,\n };\n}\n\n/**\n * 转换 A2UI v0.9 消息数组为 json-render Schema\n * \n * 处理流程:\n * 1. 查找 createSurface 消息初始化 Surface\n * 2. 累积所有 updateComponents 消息构建组件树\n * 3. 累积所有 updateDataModel 消息填充数据\n * 4. 转换为 json-render Schema\n * \n * @param messages A2UI 消息数组\n * @returns json-render Schema 或 null\n */\nexport function convertA2UIMessagesToJsonRender(\n messages: A2UIMessage[],\n): JsonRenderSchema | null {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n // 构建 Surface 状态\n const surfaceState = buildSurfaceState(messages);\n \n if (!surfaceState) {\n return null;\n }\n\n // 检查是否有 root 组件\n if (!surfaceState.components.has('root')) {\n return null;\n }\n\n // 转换为 json-render Schema\n return surfaceStateToSchema(surfaceState);\n}\n\n/**\n * 应用增量更新到现有 Schema\n * \n * @param schema 当前 json-render Schema\n * @param components A2UI updateComponents 的组件数组\n * @returns 更新后的 Schema\n */\nexport function applyA2UIUpdates(\n schema: JsonRenderSchema,\n components: A2UIComponent[],\n): JsonRenderSchema {\n if (!Array.isArray(components)) {\n return schema;\n }\n\n const newElements = { ...schema.elements };\n\n for (const component of components) {\n // 转换组件并添加/更新\n newElements[component.id] = convertComponent(component);\n }\n\n return {\n ...schema,\n elements: newElements,\n };\n}\n\n/**\n * 应用数据模型更新到现有 Schema\n * \n * @param schema 当前 json-render Schema\n * @param path JSON Pointer 路径\n * @param op 操作类型\n * @param value 值\n * @returns 更新后的 Schema\n */\nexport function applyA2UIDataUpdate(\n schema: JsonRenderSchema,\n path: string | undefined,\n op: 'add' | 'replace' | 'remove' = 'replace',\n value?: unknown,\n): JsonRenderSchema {\n const newData = { ...schema.data };\n\n if (op === 'replace' && (path === '/' || !path)) {\n return {\n ...schema,\n data: value as Record<string, unknown>,\n };\n }\n\n if (path) {\n if (op === 'remove') {\n deleteValueByPath(newData, path);\n } else {\n setValueByPath(newData, path, value);\n }\n }\n\n return {\n ...schema,\n data: newData,\n };\n}\n\nexport default {\n convertA2UIMessagesToJsonRender,\n applyA2UIUpdates,\n applyA2UIDataUpdate,\n};"],"names":["TYPE_MAPPING","Text","Image","Icon","Video","AudioPlayer","Button","TextField","CheckBox","ChoicePicker","Slider","DateTimeInput","Card","Row","Column","Col","List","Tabs","Divider","Modal","mapProps","component","id","componentType","weight","child","children","restProps","_excluded","mappedProps","_objectSpread","style","flexGrow","text","label","action","_typeof","a2uiAction","name","params","context","path","valuePath","checked","gap","size","display","flexDirection","concat","gutter","distribution","distributionMap","start","end","center","justify","justifyContent","disabled","disabledPath","convertComponent","a2uiType","mappedType","props","element","key","type","Array","isArray","childrenPath","childTemplate","componentId","buildSurfaceState","messages","surfaceState","_iterator","_createForOfIteratorHelper","_step","s","n","done","_surfaceState","msg","createSurface","surfaceId","catalogId","components","Map","dataModel","updateComponents","_iterator2","_step2","comp","set","err","e","f","updateDataModel","_msg$updateDataModel","op","value","operation","setValueByPath","deleteValueByPath","deleteSurface","obj","parts","split","filter","Boolean","current","i","length","nextKey","test","lastKey","splice","parseInt","surfaceStateToSchema","state","elements","forEach","root","data","convertA2UIMessagesToJsonRender","has","applyA2UIUpdates","schema","newElements","_iterator3","_step3","applyA2UIDataUpdate","arguments","undefined","newData"],"mappings":"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"}