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

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 (233) 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-56f5e08e.js +448 -0
  8. package/es/_chunks/dep-56f5e08e.js.map +1 -0
  9. package/es/_chunks/dep-96eca06f.js +169 -0
  10. package/es/_chunks/dep-96eca06f.js.map +1 -0
  11. package/es/_util/reactify.js +1 -1
  12. package/es/_util/useDynamicStyle.js +1 -1
  13. package/es/attachments/index.js +1 -1
  14. package/es/chat-actionbar/index.js +1 -1
  15. package/es/chat-engine/components/activity/index.js +3 -1
  16. package/es/chat-engine/components/activity/index.js.map +1 -1
  17. package/es/chat-engine/components/activity/registry.js +1 -1
  18. package/es/chat-engine/components/activity/render.d.ts +4 -0
  19. package/es/chat-engine/components/activity/render.js +14 -2
  20. package/es/chat-engine/components/activity/render.js.map +1 -1
  21. package/es/chat-engine/components/activity/types.js +1 -1
  22. package/es/chat-engine/components/index.js +28 -20
  23. package/es/chat-engine/components/index.js.map +1 -1
  24. package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
  25. package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
  26. package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
  27. package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
  28. package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
  29. package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
  30. package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
  31. package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
  32. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
  33. package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
  34. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
  35. package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
  36. package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
  37. package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
  38. package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
  39. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
  40. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
  41. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
  42. package/es/chat-engine/components/json-render/contexts/actions.d.ts +5 -0
  43. package/es/chat-engine/components/json-render/contexts/actions.js +39 -16
  44. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -1
  45. package/es/chat-engine/components/json-render/contexts/data.d.ts +99 -7
  46. package/es/chat-engine/components/json-render/contexts/data.js +155 -76
  47. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -1
  48. package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
  49. package/es/chat-engine/components/json-render/contexts/index.js +27 -0
  50. package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
  51. package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
  52. package/es/chat-engine/components/json-render/contexts/store.js +104 -0
  53. package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
  54. package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
  55. package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
  56. package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
  57. package/es/chat-engine/components/json-render/contexts/validation.js +13 -5
  58. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -1
  59. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +12 -2
  60. package/es/chat-engine/components/json-render/contexts/visibility.js +32 -22
  61. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -1
  62. package/es/chat-engine/components/json-render/index.d.ts +9 -32
  63. package/es/chat-engine/components/json-render/index.js +59 -19
  64. package/es/chat-engine/components/json-render/index.js.map +1 -1
  65. package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
  66. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
  67. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
  68. package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
  69. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
  70. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
  71. package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
  72. package/es/chat-engine/components/json-render/registry/config.js +76 -0
  73. package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
  74. package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
  75. package/es/chat-engine/components/json-render/registry/index.js +76 -0
  76. package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
  77. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
  78. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
  79. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
  80. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
  81. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
  82. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
  83. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
  84. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
  85. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
  86. package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
  87. package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
  88. package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
  89. package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
  90. package/es/chat-engine/components/json-render/renderer/index.js +125 -0
  91. package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
  92. package/es/chat-engine/components/json-render/types.d.ts +37 -19
  93. package/es/chat-engine/components/json-render/types.js +1 -1
  94. package/es/chat-engine/components/provider/agent-state.js +14 -7
  95. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  96. package/es/chat-engine/components/toolcall/index.js +14 -7
  97. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  98. package/es/chat-engine/components/toolcall/registry.js +1 -1
  99. package/es/chat-engine/components/toolcall/render.js +16 -9
  100. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  101. package/es/chat-engine/components/toolcall/types.js +1 -1
  102. package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
  103. package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
  104. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
  105. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  106. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
  107. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  108. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
  109. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
  110. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
  111. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
  112. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
  113. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
  114. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
  115. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
  116. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
  117. package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
  118. package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
  119. package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
  120. package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
  121. package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
  122. package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
  123. package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
  124. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
  125. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
  126. package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
  127. package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
  128. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
  129. package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
  130. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
  131. package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
  132. package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
  133. package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
  134. package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
  135. package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
  136. package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
  137. package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
  138. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +1 -1
  139. package/es/chat-engine/core/adapters/agui/event-mapper.js +7 -7
  140. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  141. package/es/chat-engine/core/adapters/agui/index.d.ts +4 -7
  142. package/es/chat-engine/core/adapters/agui/index.js +11 -16
  143. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  144. package/es/chat-engine/core/adapters/agui/types/events.d.ts +1550 -0
  145. package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
  146. package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
  147. package/es/chat-engine/core/adapters/agui/types/index.d.ts +818 -0
  148. package/es/chat-engine/core/adapters/agui/types/index.js +277 -0
  149. package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
  150. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  151. package/es/chat-engine/core/adapters/index.d.ts +5 -0
  152. package/es/chat-engine/core/adapters/index.js +34 -0
  153. package/es/chat-engine/core/adapters/index.js.map +1 -0
  154. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
  155. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
  156. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
  157. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
  158. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
  159. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
  160. package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
  161. package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
  162. package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
  163. package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
  164. package/es/chat-engine/core/adapters/json-render/index.js +18 -0
  165. package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
  166. package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
  167. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
  168. package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
  169. package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
  170. package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
  171. package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
  172. package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
  173. package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
  174. package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
  175. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  176. package/es/chat-engine/core/event-bus/index.js +1 -1
  177. package/es/chat-engine/core/event-bus/types.js +1 -1
  178. package/es/chat-engine/core/index.d.ts +2 -3
  179. package/es/chat-engine/core/index.js +16 -8
  180. package/es/chat-engine/core/index.js.map +1 -1
  181. package/es/chat-engine/core/processor/index.js +1 -1
  182. package/es/chat-engine/core/server/batch-client.js +1 -1
  183. package/es/chat-engine/core/server/connection-manager.js +1 -1
  184. package/es/chat-engine/core/server/errors.js +1 -1
  185. package/es/chat-engine/core/server/index.js +1 -1
  186. package/es/chat-engine/core/server/llm-service.js +15 -17
  187. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  188. package/es/chat-engine/core/server/sse-client.js +1 -1
  189. package/es/chat-engine/core/server/sse-parser.js +1 -1
  190. package/es/chat-engine/core/server/types.js +1 -1
  191. package/es/chat-engine/core/store/message.js +6 -4
  192. package/es/chat-engine/core/store/message.js.map +1 -1
  193. package/es/chat-engine/core/store/model.js +2 -1
  194. package/es/chat-engine/core/store/model.js.map +1 -1
  195. package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
  196. package/es/chat-engine/core/store/reactiveState.js +15 -1235
  197. package/es/chat-engine/core/store/reactiveState.js.map +1 -1
  198. package/es/chat-engine/core/type.d.ts +8 -19
  199. package/es/chat-engine/core/type.js +1 -1
  200. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  201. package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
  202. package/es/chat-engine/core/utils/immutable-patch.js +147 -0
  203. package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
  204. package/es/chat-engine/core/utils/index.d.ts +7 -2
  205. package/es/chat-engine/core/utils/index.js +8 -12
  206. package/es/chat-engine/core/utils/index.js.map +1 -1
  207. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  208. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  209. package/es/chat-engine/core/utils/logger.js +1 -1
  210. package/es/chat-engine/core/utils/performance.d.ts +94 -0
  211. package/es/chat-engine/core/utils/performance.js +205 -0
  212. package/es/chat-engine/core/utils/performance.js.map +1 -0
  213. package/es/chat-engine/hooks/index.js +14 -7
  214. package/es/chat-engine/hooks/index.js.map +1 -1
  215. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  216. package/es/chat-engine/hooks/useAgentState.js +14 -7
  217. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  218. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  219. package/es/chat-engine/hooks/useChat.js +14 -7
  220. package/es/chat-engine/hooks/useChat.js.map +1 -1
  221. package/es/chat-engine/index.js +28 -20
  222. package/es/chat-engine/index.js.map +1 -1
  223. package/es/chat-filecard/index.js +1 -1
  224. package/es/chat-loading/index.js +1 -1
  225. package/es/chat-markdown/index.js +1 -1
  226. package/es/chat-message/index.js +1 -1
  227. package/es/chat-sender/index.js +1 -1
  228. package/es/chat-thinking/index.js +1 -1
  229. package/es/chatbot/index.js +1 -1
  230. package/es/index.js +28 -20
  231. package/es/index.js.map +1 -1
  232. package/es/style/index.js +1 -1
  233. package/package.json +1 -1
@@ -0,0 +1,333 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
+ import _typeof from '@babel/runtime/helpers/typeof';
9
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
10
+
11
+ 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; }
12
+ 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; }
13
+ var DEFAULT_OPTIONS = {
14
+ strict: false,
15
+ logWarnings: true,
16
+ knownComponentTypes: ["Text", "Button", "Input", "Card", "Row", "Column", "RadioGroup", "CheckboxGroup"]
17
+ };
18
+ function validateComponent(component) {
19
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
20
+ var opts = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
21
+ var errors = [];
22
+ var repaired = false;
23
+ if (!component || _typeof(component) !== "object") {
24
+ return {
25
+ success: false,
26
+ errors: [{
27
+ type: "INVALID_COMPONENT",
28
+ message: "Component must be an object",
29
+ value: component,
30
+ recoverable: false
31
+ }],
32
+ repaired: false
33
+ };
34
+ }
35
+ var comp = component;
36
+ if (!comp.component || typeof comp.component !== "string") {
37
+ if (opts.strict) {
38
+ return {
39
+ success: false,
40
+ errors: [{
41
+ type: "MISSING_REQUIRED_FIELD",
42
+ message: 'Component must have a "component" field',
43
+ path: "component",
44
+ value: comp.component,
45
+ recoverable: false
46
+ }],
47
+ repaired: false
48
+ };
49
+ }
50
+ if (comp.text !== void 0) {
51
+ comp.component = "Text";
52
+ repaired = true;
53
+ } else if (comp.label !== void 0 && comp.action !== void 0) {
54
+ comp.component = "Button";
55
+ repaired = true;
56
+ } else {
57
+ comp.component = "Text";
58
+ repaired = true;
59
+ errors.push({
60
+ type: "MISSING_REQUIRED_FIELD",
61
+ message: 'Component type missing, defaulting to "Text"',
62
+ path: "component",
63
+ recoverable: true
64
+ });
65
+ }
66
+ }
67
+ if (opts.knownComponentTypes && !opts.knownComponentTypes.includes(comp.component)) {
68
+ errors.push({
69
+ type: "UNKNOWN_COMPONENT_TYPE",
70
+ message: "Unknown component type: ".concat(comp.component),
71
+ path: "component",
72
+ value: comp.component,
73
+ recoverable: true
74
+ });
75
+ }
76
+ if (!comp.id) {
77
+ comp.id = "auto_".concat(comp.component, "_").concat(Date.now(), "_").concat(Math.random().toString(36).substr(2, 5));
78
+ repaired = true;
79
+ }
80
+ if (Array.isArray(comp.children)) {
81
+ var validatedChildren = [];
82
+ var _loop = function _loop(i) {
83
+ var childResult = validateComponent(comp.children[i], opts);
84
+ if (childResult.success && childResult.data) {
85
+ validatedChildren.push(childResult.data);
86
+ } else {
87
+ errors.push.apply(errors, _toConsumableArray(childResult.errors.map(function (e) {
88
+ return _objectSpread(_objectSpread({}, e), {}, {
89
+ path: "children[".concat(i, "]").concat(e.path ? "." + e.path : "")
90
+ });
91
+ })));
92
+ if (!opts.strict && childResult.data) {
93
+ validatedChildren.push(childResult.data);
94
+ repaired = true;
95
+ }
96
+ }
97
+ if (childResult.repaired) repaired = true;
98
+ };
99
+ for (var i = 0; i < comp.children.length; i++) {
100
+ _loop(i);
101
+ }
102
+ comp.children = validatedChildren;
103
+ }
104
+ if (opts.logWarnings && errors.length > 0) {
105
+ console.warn("[A2UI] Component validation warnings:", errors);
106
+ }
107
+ return {
108
+ success: errors.filter(function (e) {
109
+ return !e.recoverable;
110
+ }).length === 0,
111
+ data: comp,
112
+ errors: errors,
113
+ repaired: repaired
114
+ };
115
+ }
116
+ function validateOperation(operation) {
117
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
118
+ var opts = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
119
+ var errors = [];
120
+ var repaired = false;
121
+ if (!operation || _typeof(operation) !== "object") {
122
+ return {
123
+ success: false,
124
+ errors: [{
125
+ type: "INVALID_OPERATION",
126
+ message: "Operation must be an object",
127
+ value: operation,
128
+ recoverable: false
129
+ }],
130
+ repaired: false
131
+ };
132
+ }
133
+ var op = operation;
134
+ var validTypes = ["create", "update", "patch", "delete", "action"];
135
+ if (!op.type || !validTypes.includes(op.type)) {
136
+ if (opts.strict) {
137
+ return {
138
+ success: false,
139
+ errors: [{
140
+ type: "INVALID_OPERATION",
141
+ message: "Invalid operation type: ".concat(op.type, ". Must be one of: ").concat(validTypes.join(", ")),
142
+ path: "type",
143
+ value: op.type,
144
+ recoverable: false
145
+ }],
146
+ repaired: false
147
+ };
148
+ }
149
+ if (op.payload && _typeof(op.payload) === "object") {
150
+ op.type = "update";
151
+ repaired = true;
152
+ errors.push({
153
+ type: "MISSING_REQUIRED_FIELD",
154
+ message: 'Operation type missing, defaulting to "update"',
155
+ path: "type",
156
+ recoverable: true
157
+ });
158
+ }
159
+ }
160
+ if (!op.surfaceId || typeof op.surfaceId !== "string") {
161
+ errors.push({
162
+ type: "MISSING_REQUIRED_FIELD",
163
+ message: "Operation must have a surfaceId",
164
+ path: "surfaceId",
165
+ value: op.surfaceId,
166
+ recoverable: false
167
+ });
168
+ return {
169
+ success: false,
170
+ errors: errors,
171
+ repaired: repaired
172
+ };
173
+ }
174
+ if (op.type === "patch" && !op.componentId) {
175
+ errors.push({
176
+ type: "MISSING_REQUIRED_FIELD",
177
+ message: "Patch operation requires componentId",
178
+ path: "componentId",
179
+ recoverable: false
180
+ });
181
+ if (opts.strict) {
182
+ return {
183
+ success: false,
184
+ errors: errors,
185
+ repaired: repaired
186
+ };
187
+ }
188
+ }
189
+ if (op.payload && ["create", "update"].includes(op.type)) {
190
+ var payloadResult = validateComponent(op.payload, opts);
191
+ if (payloadResult.data) {
192
+ op.payload = payloadResult.data;
193
+ }
194
+ errors.push.apply(errors, _toConsumableArray(payloadResult.errors.map(function (e) {
195
+ return _objectSpread(_objectSpread({}, e), {}, {
196
+ path: "payload".concat(e.path ? "." + e.path : "")
197
+ });
198
+ })));
199
+ if (payloadResult.repaired) repaired = true;
200
+ }
201
+ if (opts.logWarnings && errors.length > 0) {
202
+ console.warn("[A2UI] Operation validation warnings:", errors);
203
+ }
204
+ return {
205
+ success: errors.filter(function (e) {
206
+ return !e.recoverable;
207
+ }).length === 0,
208
+ data: op,
209
+ errors: errors,
210
+ repaired: repaired
211
+ };
212
+ }
213
+ function validateAction(action) {
214
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
215
+ var opts = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
216
+ var errors = [];
217
+ if (!action || _typeof(action) !== "object") {
218
+ return {
219
+ success: false,
220
+ errors: [{
221
+ type: "INVALID_ACTION",
222
+ message: "Action must be an object",
223
+ value: action,
224
+ recoverable: false
225
+ }],
226
+ repaired: false
227
+ };
228
+ }
229
+ var act = action;
230
+ if (!act.type || typeof act.type !== "string") {
231
+ errors.push({
232
+ type: "MISSING_REQUIRED_FIELD",
233
+ message: "Action must have a type",
234
+ path: "type",
235
+ value: act.type,
236
+ recoverable: false
237
+ });
238
+ return {
239
+ success: false,
240
+ errors: errors,
241
+ repaired: false
242
+ };
243
+ }
244
+ if (act.payload !== void 0 && _typeof(act.payload) !== "object") {
245
+ errors.push({
246
+ type: "TYPE_MISMATCH",
247
+ message: "Action payload should be an object",
248
+ path: "payload",
249
+ value: act.payload,
250
+ recoverable: true
251
+ });
252
+ }
253
+ if (opts.logWarnings && errors.length > 0) {
254
+ console.warn("[A2UI] Action validation warnings:", errors);
255
+ }
256
+ return {
257
+ success: errors.filter(function (e) {
258
+ return !e.recoverable;
259
+ }).length === 0,
260
+ data: act,
261
+ errors: errors,
262
+ repaired: false
263
+ };
264
+ }
265
+ function validateBindingPath(path) {
266
+ if (typeof path !== "string") {
267
+ return {
268
+ valid: false,
269
+ error: "Binding path must be a string"
270
+ };
271
+ }
272
+ if (!path.startsWith("/")) {
273
+ return {
274
+ valid: true,
275
+ path: "/" + path
276
+ };
277
+ }
278
+ var pathRegex = /^\/[a-zA-Z0-9_\-./]*$/;
279
+ if (!pathRegex.test(path)) {
280
+ return {
281
+ valid: false,
282
+ error: "Invalid binding path format: ".concat(path)
283
+ };
284
+ }
285
+ return {
286
+ valid: true,
287
+ path: path
288
+ };
289
+ }
290
+ function safeParseJSON(json, fallback) {
291
+ try {
292
+ var data = JSON.parse(json);
293
+ return {
294
+ success: true,
295
+ data: data
296
+ };
297
+ } catch (error) {
298
+ console.warn("[A2UI] JSON parse error:", error);
299
+ return {
300
+ success: false,
301
+ data: fallback,
302
+ error: error
303
+ };
304
+ }
305
+ }
306
+ function validateOperations(operations) {
307
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
308
+ var valid = [];
309
+ var invalid = [];
310
+ for (var i = 0; i < operations.length; i++) {
311
+ var result = validateOperation(operations[i], options);
312
+ if (result.success && result.data) {
313
+ valid.push(result.data);
314
+ } else {
315
+ invalid.push({
316
+ index: i,
317
+ errors: result.errors
318
+ });
319
+ }
320
+ }
321
+ return {
322
+ valid: valid,
323
+ invalid: invalid
324
+ };
325
+ }
326
+ function formatValidationErrors(errors) {
327
+ return errors.map(function (e) {
328
+ return "[".concat(e.type, "]").concat(e.path ? " at ".concat(e.path) : "", ": ").concat(e.message);
329
+ }).join("\n");
330
+ }
331
+
332
+ export { formatValidationErrors, safeParseJSON, validateAction, validateBindingPath, validateComponent, validateOperation, validateOperations };
333
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sources":["../../../../../../../pro-components/chat/chat-engine/core/adapters/a2ui/utils/validation.ts"],"sourcesContent":["/**\n * A2UI 协议解析容错工具\n * 提供数据验证、默认值填充、错误恢复等能力\n */\n\nimport type { A2UIComponent, A2UIOperation, A2UIAction } from '../types';\n\n// ============= 错误类型 =============\n\nexport type A2UIValidationErrorType =\n | 'INVALID_COMPONENT'\n | 'INVALID_OPERATION'\n | 'INVALID_SURFACE'\n | 'INVALID_ACTION'\n | 'MISSING_REQUIRED_FIELD'\n | 'TYPE_MISMATCH'\n | 'UNKNOWN_COMPONENT_TYPE';\n\nexport interface A2UIValidationError {\n type: A2UIValidationErrorType;\n message: string;\n path?: string;\n value?: unknown;\n recoverable: boolean;\n}\n\nexport interface A2UIValidationResult<T> {\n success: boolean;\n data?: T;\n errors: A2UIValidationError[];\n /** 是否进行了自动修复 */\n repaired: boolean;\n}\n\n// ============= 配置 =============\n\nexport interface A2UIValidationOptions {\n /** 是否严格模式(默认 false,宽松模式会尝试修复) */\n strict?: boolean;\n /** 是否输出警告日志(默认 true) */\n logWarnings?: boolean;\n /** 已知的组件类型列表(用于校验) */\n knownComponentTypes?: string[];\n}\n\nconst DEFAULT_OPTIONS: A2UIValidationOptions = {\n strict: false,\n logWarnings: true,\n knownComponentTypes: ['Text', 'Button', 'Input', 'Card', 'Row', 'Column', 'RadioGroup', 'CheckboxGroup'],\n};\n\n// ============= 组件验证 =============\n\n/**\n * 验证并修复组件数据\n */\nexport function validateComponent(\n component: unknown,\n options: A2UIValidationOptions = {}\n): A2UIValidationResult<A2UIComponent> {\n const opts = { ...DEFAULT_OPTIONS, ...options };\n const errors: A2UIValidationError[] = [];\n let repaired = false;\n\n // 基础类型检查\n if (!component || typeof component !== 'object') {\n return {\n success: false,\n errors: [{\n type: 'INVALID_COMPONENT',\n message: 'Component must be an object',\n value: component,\n recoverable: false,\n }],\n repaired: false,\n };\n }\n\n const comp = component as Record<string, unknown>;\n\n // 必须有 component 字段\n if (!comp.component || typeof comp.component !== 'string') {\n if (opts.strict) {\n return {\n success: false,\n errors: [{\n type: 'MISSING_REQUIRED_FIELD',\n message: 'Component must have a \"component\" field',\n path: 'component',\n value: comp.component,\n recoverable: false,\n }],\n repaired: false,\n };\n }\n\n // 宽松模式:尝试推断组件类型\n if (comp.text !== undefined) {\n comp.component = 'Text';\n repaired = true;\n } else if (comp.label !== undefined && comp.action !== undefined) {\n comp.component = 'Button';\n repaired = true;\n } else {\n // 无法推断,使用 Text 作为默认\n comp.component = 'Text';\n repaired = true;\n errors.push({\n type: 'MISSING_REQUIRED_FIELD',\n message: 'Component type missing, defaulting to \"Text\"',\n path: 'component',\n recoverable: true,\n });\n }\n }\n\n // 检查组件类型是否已知\n if (opts.knownComponentTypes && !opts.knownComponentTypes.includes(comp.component as string)) {\n errors.push({\n type: 'UNKNOWN_COMPONENT_TYPE',\n message: `Unknown component type: ${comp.component}`,\n path: 'component',\n value: comp.component,\n recoverable: true,\n });\n }\n\n // 确保有 id(如果没有,生成一个)\n if (!comp.id) {\n comp.id = `auto_${comp.component}_${Date.now()}_${Math.random().toString(36).substr(2, 5)}`;\n repaired = true;\n }\n\n // 递归验证子组件\n if (Array.isArray(comp.children)) {\n const validatedChildren: A2UIComponent[] = [];\n for (let i = 0; i < comp.children.length; i++) {\n const childResult = validateComponent(comp.children[i], opts);\n if (childResult.success && childResult.data) {\n validatedChildren.push(childResult.data);\n } else {\n errors.push(...childResult.errors.map(e => ({\n ...e,\n path: `children[${i}]${e.path ? '.' + e.path : ''}`,\n })));\n // 宽松模式下跳过无效子组件\n if (!opts.strict && childResult.data) {\n validatedChildren.push(childResult.data);\n repaired = true;\n }\n }\n if (childResult.repaired) repaired = true;\n }\n comp.children = validatedChildren;\n }\n\n // 输出警告\n if (opts.logWarnings && errors.length > 0) {\n console.warn('[A2UI] Component validation warnings:', errors);\n }\n\n return {\n success: errors.filter(e => !e.recoverable).length === 0,\n data: comp as A2UIComponent,\n errors,\n repaired,\n };\n}\n\n// ============= 操作验证 =============\n\n/**\n * 验证并修复操作数据\n */\nexport function validateOperation(\n operation: unknown,\n options: A2UIValidationOptions = {}\n): A2UIValidationResult<A2UIOperation> {\n const opts = { ...DEFAULT_OPTIONS, ...options };\n const errors: A2UIValidationError[] = [];\n let repaired = false;\n\n if (!operation || typeof operation !== 'object') {\n return {\n success: false,\n errors: [{\n type: 'INVALID_OPERATION',\n message: 'Operation must be an object',\n value: operation,\n recoverable: false,\n }],\n repaired: false,\n };\n }\n\n const op = operation as Record<string, unknown>;\n\n // 验证 type\n const validTypes = ['create', 'update', 'patch', 'delete', 'action'];\n if (!op.type || !validTypes.includes(op.type as string)) {\n if (opts.strict) {\n return {\n success: false,\n errors: [{\n type: 'INVALID_OPERATION',\n message: `Invalid operation type: ${op.type}. Must be one of: ${validTypes.join(', ')}`,\n path: 'type',\n value: op.type,\n recoverable: false,\n }],\n repaired: false,\n };\n }\n\n // 宽松模式:根据 payload 推断类型\n if (op.payload && typeof op.payload === 'object') {\n op.type = 'update';\n repaired = true;\n errors.push({\n type: 'MISSING_REQUIRED_FIELD',\n message: 'Operation type missing, defaulting to \"update\"',\n path: 'type',\n recoverable: true,\n });\n }\n }\n\n // 验证 surfaceId\n if (!op.surfaceId || typeof op.surfaceId !== 'string') {\n errors.push({\n type: 'MISSING_REQUIRED_FIELD',\n message: 'Operation must have a surfaceId',\n path: 'surfaceId',\n value: op.surfaceId,\n recoverable: false,\n });\n return { success: false, errors, repaired };\n }\n\n // patch 操作需要 componentId\n if (op.type === 'patch' && !op.componentId) {\n errors.push({\n type: 'MISSING_REQUIRED_FIELD',\n message: 'Patch operation requires componentId',\n path: 'componentId',\n recoverable: false,\n });\n if (opts.strict) {\n return { success: false, errors, repaired };\n }\n }\n\n // 验证 payload(如果有)\n if (op.payload && ['create', 'update'].includes(op.type as string)) {\n const payloadResult = validateComponent(op.payload, opts);\n if (payloadResult.data) {\n op.payload = payloadResult.data;\n }\n errors.push(...payloadResult.errors.map(e => ({\n ...e,\n path: `payload${e.path ? '.' + e.path : ''}`,\n })));\n if (payloadResult.repaired) repaired = true;\n }\n\n if (opts.logWarnings && errors.length > 0) {\n console.warn('[A2UI] Operation validation warnings:', errors);\n }\n\n return {\n success: errors.filter(e => !e.recoverable).length === 0,\n data: op as unknown as A2UIOperation,\n errors,\n repaired,\n };\n}\n\n// ============= Action 验证 =============\n\n/**\n * 验证 Action 数据\n */\nexport function validateAction(\n action: unknown,\n options: A2UIValidationOptions = {}\n): A2UIValidationResult<A2UIAction> {\n const opts = { ...DEFAULT_OPTIONS, ...options };\n const errors: A2UIValidationError[] = [];\n\n if (!action || typeof action !== 'object') {\n return {\n success: false,\n errors: [{\n type: 'INVALID_ACTION',\n message: 'Action must be an object',\n value: action,\n recoverable: false,\n }],\n repaired: false,\n };\n }\n\n const act = action as Record<string, unknown>;\n\n // 验证 type\n if (!act.type || typeof act.type !== 'string') {\n errors.push({\n type: 'MISSING_REQUIRED_FIELD',\n message: 'Action must have a type',\n path: 'type',\n value: act.type,\n recoverable: false,\n });\n return { success: false, errors, repaired: false };\n }\n\n // payload 应该是对象(如果存在)\n if (act.payload !== undefined && typeof act.payload !== 'object') {\n errors.push({\n type: 'TYPE_MISMATCH',\n message: 'Action payload should be an object',\n path: 'payload',\n value: act.payload,\n recoverable: true,\n });\n }\n\n if (opts.logWarnings && errors.length > 0) {\n console.warn('[A2UI] Action validation warnings:', errors);\n }\n\n return {\n success: errors.filter(e => !e.recoverable).length === 0,\n data: act as A2UIAction,\n errors,\n repaired: false,\n };\n}\n\n// ============= 数据绑定验证 =============\n\n/**\n * 验证数据绑定路径\n */\nexport function validateBindingPath(path: unknown): { valid: boolean; path?: string; error?: string } {\n if (typeof path !== 'string') {\n return { valid: false, error: 'Binding path must be a string' };\n }\n\n // 路径应该以 / 开头\n if (!path.startsWith('/')) {\n // 自动补全\n return { valid: true, path: '/' + path };\n }\n\n // 验证路径格式\n const pathRegex = /^\\/[a-zA-Z0-9_\\-./]*$/;\n if (!pathRegex.test(path)) {\n return { valid: false, error: `Invalid binding path format: ${path}` };\n }\n\n return { valid: true, path };\n}\n\n/**\n * 安全解析 JSON\n */\nexport function safeParseJSON<T = unknown>(\n json: string,\n fallback: T\n): { success: boolean; data: T; error?: Error } {\n try {\n const data = JSON.parse(json);\n return { success: true, data };\n } catch (error) {\n console.warn('[A2UI] JSON parse error:', error);\n return { success: false, data: fallback, error: error as Error };\n }\n}\n\n// ============= 批量验证 =============\n\n/**\n * 批量验证操作列表\n */\nexport function validateOperations(\n operations: unknown[],\n options: A2UIValidationOptions = {}\n): { valid: A2UIOperation[]; invalid: Array<{ index: number; errors: A2UIValidationError[] }> } {\n const valid: A2UIOperation[] = [];\n const invalid: Array<{ index: number; errors: A2UIValidationError[] }> = [];\n\n for (let i = 0; i < operations.length; i++) {\n const result = validateOperation(operations[i], options);\n if (result.success && result.data) {\n valid.push(result.data);\n } else {\n invalid.push({ index: i, errors: result.errors });\n }\n }\n\n return { valid, invalid };\n}\n\n// ============= 错误报告 =============\n\n/**\n * 格式化验证错误为可读字符串\n */\nexport function formatValidationErrors(errors: A2UIValidationError[]): string {\n return errors\n .map(e => `[${e.type}]${e.path ? ` at ${e.path}` : ''}: ${e.message}`)\n .join('\\n');\n}\n"],"names":["DEFAULT_OPTIONS","strict","logWarnings","knownComponentTypes","validateComponent","component","options","arguments","length","undefined","opts","_objectSpread","errors","repaired","_typeof","success","type","message","value","recoverable","comp","path","text","label","action","push","includes","concat","id","Date","now","Math","random","toString","substr","Array","isArray","children","validatedChildren","_loop","i","childResult","data","apply","_toConsumableArray","map","e","console","warn","filter","validateOperation","operation","op","validTypes","join","payload","surfaceId","componentId","payloadResult","validateAction","act","validateBindingPath","valid","error","startsWith","pathRegex","test","safeParseJSON","json","fallback","JSON","parse","validateOperations","operations","invalid","result","index","formatValidationErrors"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { ActivityData } from '../../type';
2
+ /**
3
+ * Activity 状态管理器
4
+ *
5
+ * 职责:
6
+ * - 处理 AG-UI Activity 事件的 Snapshot/Delta 增量合并
7
+ * - 提供当前 Activity 数据的快捷访问(用于 event-mapper 生成消息内容)
8
+ *
9
+ * 注意:
10
+ * - Activity 本身会渲染在消息流中,不需要独立订阅机制
11
+ * - 如需监听 Activity 变化,应使用 eventBus 的 MESSAGE_UPDATE 事件
12
+ */
13
+ export interface ActivityManager {
14
+ /**
15
+ * 获取当前活跃的 activityType
16
+ */
17
+ getCurrentActivityType: () => string | null;
18
+ /**
19
+ * 获取当前 Activity 内容(基于当前活跃的 activityType)
20
+ */
21
+ getCurrentActivity: () => ActivityData | null;
22
+ /**
23
+ * 获取指定 activityType 的 Activity 内容
24
+ */
25
+ getActivity: (activityType: string) => ActivityData | null;
26
+ /**
27
+ * 获取所有 activityType
28
+ */
29
+ getAllActivityTypes: () => string[];
30
+ /**
31
+ * 处理 AG-UI Activity 事件
32
+ */
33
+ handleActivityEvent: (event: {
34
+ type: string;
35
+ activityType: string;
36
+ content?: any;
37
+ patch?: any[];
38
+ messageId?: string;
39
+ }) => ActivityData | null;
40
+ /**
41
+ * 清理活动数据
42
+ */
43
+ clear: () => void;
44
+ }
45
+ export declare class ActivityManagerImpl implements ActivityManager {
46
+ private activities;
47
+ private currentActivityType;
48
+ /**
49
+ * 获取当前活跃的 activityType
50
+ */
51
+ getCurrentActivityType(): string | null;
52
+ /**
53
+ * 获取当前 Activity 内容
54
+ */
55
+ getCurrentActivity(): ActivityData | null;
56
+ /**
57
+ * 获取指定 activityType 的 Activity 内容
58
+ */
59
+ getActivity(activityType: string): ActivityData | null;
60
+ /**
61
+ * 获取所有 activityType
62
+ */
63
+ getAllActivityTypes(): string[];
64
+ /**
65
+ * 处理 AG-UI Activity 事件
66
+ * 返回更新后的 ActivityData,供 event-mapper 使用
67
+ */
68
+ handleActivityEvent(event: {
69
+ type: string;
70
+ activityType: string;
71
+ content?: any;
72
+ patch?: any[];
73
+ messageId?: string;
74
+ }): ActivityData | null;
75
+ /**
76
+ * 清理所有活动数据
77
+ * 用于新一轮对话开始时重置状态
78
+ */
79
+ clear(): void;
80
+ /**
81
+ * 根据 JSON Patch 路径推断初始内容结构
82
+ */
83
+ private inferInitialContent;
84
+ /**
85
+ * 获取 content 中的 operations/messages 数量
86
+ */
87
+ private getOperationsCount;
88
+ /**
89
+ * 设置 Activity
90
+ */
91
+ private setActivity;
92
+ }
93
+ export declare const activityManager: ActivityManagerImpl;
@@ -0,0 +1,148 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
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 _defineProperty from '@babel/runtime/helpers/defineProperty';
10
+ import { applyJsonPatch } from '../../utils/index.js';
11
+ import '../../utils/immutable-patch.js';
12
+ import '@babel/runtime/helpers/typeof';
13
+ import '@babel/runtime/helpers/objectWithoutProperties';
14
+ import '@babel/runtime/helpers/toConsumableArray';
15
+ import '@babel/runtime/helpers/toArray';
16
+
17
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
18
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
19
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
20
+ var ActivityManagerImpl = /*#__PURE__*/function () {
21
+ function ActivityManagerImpl() {
22
+ _classCallCheck(this, ActivityManagerImpl);
23
+ _defineProperty(this, "activities", {});
24
+ _defineProperty(this, "currentActivityType", null);
25
+ }
26
+ return _createClass(ActivityManagerImpl, [{
27
+ key: "getCurrentActivityType",
28
+ value: function getCurrentActivityType() {
29
+ return this.currentActivityType;
30
+ }
31
+ }, {
32
+ key: "getCurrentActivity",
33
+ value: function getCurrentActivity() {
34
+ if (!this.currentActivityType) return null;
35
+ return this.activities[this.currentActivityType] || null;
36
+ }
37
+ }, {
38
+ key: "getActivity",
39
+ value: function getActivity(activityType) {
40
+ return this.activities[activityType] || null;
41
+ }
42
+ }, {
43
+ key: "getAllActivityTypes",
44
+ value: function getAllActivityTypes() {
45
+ return Object.keys(this.activities);
46
+ }
47
+ }, {
48
+ key: "handleActivityEvent",
49
+ value: function handleActivityEvent(event) {
50
+ var activityType = event.activityType,
51
+ messageId = event.messageId;
52
+ if (event.type === "ACTIVITY_SNAPSHOT") {
53
+ var activityData = {
54
+ activityType: activityType,
55
+ content: event.content || {},
56
+ messageId: messageId
57
+ };
58
+ this.setActivity(activityType, activityData);
59
+ return activityData;
60
+ }
61
+ if (event.type === "ACTIVITY_DELTA") {
62
+ var isFirstDelta = !this.activities[activityType];
63
+ var currentActivity = this.activities[activityType];
64
+ if (isFirstDelta) {
65
+ currentActivity = {
66
+ activityType: activityType,
67
+ content: this.inferInitialContent(event.patch),
68
+ messageId: messageId
69
+ };
70
+ }
71
+ var oldContent = currentActivity.content;
72
+ var oldOpsCount = this.getOperationsCount(oldContent);
73
+ var newContent = oldContent;
74
+ if (event.patch && Array.isArray(event.patch)) {
75
+ newContent = applyJsonPatch(oldContent, event.patch);
76
+ }
77
+ var newOpsCount = this.getOperationsCount(newContent);
78
+ var deltaInfo = newOpsCount > oldOpsCount ? {
79
+ fromIndex: oldOpsCount,
80
+ toIndex: newOpsCount
81
+ } : void 0;
82
+ var _activityData = {
83
+ activityType: activityType,
84
+ content: newContent,
85
+ messageId: messageId,
86
+ deltaInfo: deltaInfo
87
+ };
88
+ this.setActivity(activityType, _activityData);
89
+ return _activityData;
90
+ }
91
+ return null;
92
+ }
93
+ }, {
94
+ key: "clear",
95
+ value: function clear() {
96
+ this.activities = {};
97
+ this.currentActivityType = null;
98
+ }
99
+ }, {
100
+ key: "inferInitialContent",
101
+ value: function inferInitialContent(patch) {
102
+ if (!patch || !Array.isArray(patch) || patch.length === 0) {
103
+ return {};
104
+ }
105
+ var initialContent = {};
106
+ var _iterator = _createForOfIteratorHelper(patch),
107
+ _step;
108
+ try {
109
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
110
+ var op = _step.value;
111
+ if (op.path) {
112
+ var pathParts = op.path.split("/").filter(Boolean);
113
+ if (pathParts.length > 0) {
114
+ var rootKey = pathParts[0];
115
+ if (pathParts.length > 1 && (pathParts[1] === "-" || /^\d+$/.test(pathParts[1]))) {
116
+ if (!initialContent[rootKey]) {
117
+ initialContent[rootKey] = [];
118
+ }
119
+ }
120
+ }
121
+ }
122
+ }
123
+ } catch (err) {
124
+ _iterator.e(err);
125
+ } finally {
126
+ _iterator.f();
127
+ }
128
+ return initialContent;
129
+ }
130
+ }, {
131
+ key: "getOperationsCount",
132
+ value: function getOperationsCount(content) {
133
+ if (!content) return 0;
134
+ var ops = content.operations || content.messages;
135
+ return Array.isArray(ops) ? ops.length : 0;
136
+ }
137
+ }, {
138
+ key: "setActivity",
139
+ value: function setActivity(activityType, activity) {
140
+ this.activities[activityType] = activity;
141
+ this.currentActivityType = activityType;
142
+ }
143
+ }]);
144
+ }();
145
+ var activityManager = new ActivityManagerImpl();
146
+
147
+ export { ActivityManagerImpl, activityManager };
148
+ //# sourceMappingURL=ActivityManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityManager.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/ActivityManager.ts"],"sourcesContent":["import { ActivityData } from '../../type';\nimport { applyJsonPatch } from '../../utils';\n\n/**\n * Activity 状态管理器\n * \n * 职责:\n * - 处理 AG-UI Activity 事件的 Snapshot/Delta 增量合并\n * - 提供当前 Activity 数据的快捷访问(用于 event-mapper 生成消息内容)\n * \n * 注意:\n * - Activity 本身会渲染在消息流中,不需要独立订阅机制\n * - 如需监听 Activity 变化,应使用 eventBus 的 MESSAGE_UPDATE 事件\n */\n\n\nexport interface ActivityManager {\n /**\n * 获取当前活跃的 activityType\n */\n getCurrentActivityType: () => string | null;\n /**\n * 获取当前 Activity 内容(基于当前活跃的 activityType)\n */\n getCurrentActivity: () => ActivityData | null;\n /**\n * 获取指定 activityType 的 Activity 内容\n */\n getActivity: (activityType: string) => ActivityData | null;\n /**\n * 获取所有 activityType\n */\n getAllActivityTypes: () => string[];\n /**\n * 处理 AG-UI Activity 事件\n */\n handleActivityEvent: (event: {\n type: string;\n activityType: string;\n content?: any;\n patch?: any[];\n messageId?: string;\n }) => ActivityData | null;\n /**\n * 清理活动数据\n */\n clear: () => void;\n}\n\nexport class ActivityManagerImpl implements ActivityManager {\n private activities: Record<string, ActivityData> = {};\n\n private currentActivityType: string | null = null;\n\n /**\n * 获取当前活跃的 activityType\n */\n getCurrentActivityType(): string | null {\n return this.currentActivityType;\n }\n\n /**\n * 获取当前 Activity 内容\n */\n getCurrentActivity(): ActivityData | null {\n if (!this.currentActivityType) return null;\n return this.activities[this.currentActivityType] || null;\n }\n\n /**\n * 获取指定 activityType 的 Activity 内容\n */\n getActivity(activityType: string): ActivityData | null {\n return this.activities[activityType] || null;\n }\n\n /**\n * 获取所有 activityType\n */\n getAllActivityTypes(): string[] {\n return Object.keys(this.activities);\n }\n\n\n\n /**\n * 处理 AG-UI Activity 事件\n * 返回更新后的 ActivityData,供 event-mapper 使用\n */\n handleActivityEvent(event: {\n type: string;\n activityType: string;\n content?: any;\n patch?: any[];\n messageId?: string;\n }): ActivityData | null {\n const { activityType, messageId } = event;\n\n if (event.type === 'ACTIVITY_SNAPSHOT') {\n // SNAPSHOT: 全量更新\n const activityData: ActivityData = {\n activityType,\n content: event.content || {},\n messageId,\n };\n this.setActivity(activityType, activityData);\n return activityData;\n }\n\n if (event.type === 'ACTIVITY_DELTA') {\n // DELTA: 增量更新\n const isFirstDelta = !this.activities[activityType];\n let currentActivity = this.activities[activityType];\n\n // 如果没有 snapshot,自动初始化空的 activity(纯增量模式)\n if (isFirstDelta) {\n currentActivity = {\n activityType,\n content: this.inferInitialContent(event.patch),\n messageId,\n };\n }\n\n // 记录旧的 operations/messages 数量(用于增量标记)\n const oldContent = currentActivity.content;\n const oldOpsCount = this.getOperationsCount(oldContent);\n\n let newContent = oldContent;\n\n // 使用 patch 进行 JSON Patch 更新\n if (event.patch && Array.isArray(event.patch)) {\n newContent = applyJsonPatch(oldContent, event.patch);\n }\n\n // 计算新增的 operations 范围\n const newOpsCount = this.getOperationsCount(newContent);\n const deltaInfo =\n newOpsCount > oldOpsCount ? { fromIndex: oldOpsCount, toIndex: newOpsCount } : undefined;\n\n const activityData: ActivityData = {\n activityType,\n content: newContent,\n messageId,\n deltaInfo,\n };\n\n this.setActivity(activityType, activityData);\n return activityData;\n }\n\n return null;\n }\n\n /**\n * 清理所有活动数据\n * 用于新一轮对话开始时重置状态\n */\n clear(): void {\n this.activities = {};\n this.currentActivityType = null;\n }\n\n /**\n * 根据 JSON Patch 路径推断初始内容结构\n */\n private inferInitialContent(patch: any[] | undefined): Record<string, any> {\n if (!patch || !Array.isArray(patch) || patch.length === 0) {\n return {};\n }\n\n const initialContent: Record<string, any> = {};\n\n for (const op of patch) {\n if (op.path) {\n const pathParts = op.path.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n const rootKey = pathParts[0];\n // 如果路径包含 - 或数字索引,说明是数组\n if (pathParts.length > 1 && (pathParts[1] === '-' || /^\\d+$/.test(pathParts[1]))) {\n if (!initialContent[rootKey]) {\n initialContent[rootKey] = [];\n }\n }\n }\n }\n }\n\n return initialContent;\n }\n\n /**\n * 获取 content 中的 operations/messages 数量\n */\n private getOperationsCount(content: Record<string, any> | null | undefined): number {\n if (!content) return 0;\n const ops = content.operations || content.messages;\n return Array.isArray(ops) ? ops.length : 0;\n }\n\n /**\n * 设置 Activity\n */\n private setActivity(activityType: string, activity: ActivityData): void {\n this.activities[activityType] = activity;\n this.currentActivityType = activityType;\n }\n}\n\n// 全局单例\nexport const activityManager = new ActivityManagerImpl();\n"],"names":["ActivityManagerImpl","_classCallCheck","_defineProperty","_createClass","key","value","getCurrentActivityType","currentActivityType","getCurrentActivity","activities","getActivity","activityType","getAllActivityTypes","Object","keys","handleActivityEvent","event","messageId","type","activityData","content","setActivity","isFirstDelta","currentActivity","inferInitialContent","patch","oldContent","oldOpsCount","getOperationsCount","newContent","Array","isArray","applyJsonPatch","newOpsCount","deltaInfo","fromIndex","toIndex","clear","length","initialContent","_iterator","_createForOfIteratorHelper","_step","s","n","done","op","path","pathParts","split","filter","Boolean","rootKey","test","err","e","f","ops","operations","messages","activity","activityManager"],"mappings":"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"}