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

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 (116) hide show
  1. package/es/_util/reactify.js +1 -1
  2. package/es/_util/useDynamicStyle.js +1 -1
  3. package/es/attachments/index.js +1 -1
  4. package/es/chat-actionbar/index.js +1 -1
  5. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +110 -5
  6. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +84 -19
  7. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -1
  8. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +1 -1
  9. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +1 -1
  10. package/es/chat-engine/components/a2ui/A2UISkeleton.js +1 -1
  11. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +1 -1
  12. package/es/chat-engine/components/a2ui/containers/A2UICard.js +1 -1
  13. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +1 -1
  14. package/es/chat-engine/components/a2ui/containers/A2UIList.js +1 -1
  15. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +1 -1
  16. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +1 -1
  17. package/es/chat-engine/components/a2ui/containers/index.js +1 -1
  18. package/es/chat-engine/components/a2ui/index.d.ts +1 -1
  19. package/es/chat-engine/components/a2ui/index.js +4 -2
  20. package/es/chat-engine/components/a2ui/index.js.map +1 -1
  21. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +2 -0
  22. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +12 -8
  23. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -1
  24. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +1 -1
  25. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +1 -1
  26. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +1 -1
  27. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +1 -1
  28. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +1 -1
  29. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +1 -1
  30. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +1 -1
  31. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +1 -1
  32. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +1 -1
  33. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +1 -1
  34. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +1 -1
  35. package/es/chat-engine/components/a2ui/primitives/index.js +1 -1
  36. package/es/chat-engine/components/a2ui/registry.js +1 -1
  37. package/es/chat-engine/components/activity/index.js +1 -1
  38. package/es/chat-engine/components/activity/registry.js +1 -1
  39. package/es/chat-engine/components/activity/render.js +1 -1
  40. package/es/chat-engine/components/activity/types.js +1 -1
  41. package/es/chat-engine/components/index.js +1 -1
  42. package/es/chat-engine/components/provider/agent-state.js +1 -1
  43. package/es/chat-engine/components/toolcall/index.js +1 -1
  44. package/es/chat-engine/components/toolcall/registry.js +1 -1
  45. package/es/chat-engine/components/toolcall/render.js +1 -1
  46. package/es/chat-engine/components/toolcall/types.js +1 -1
  47. package/es/chat-engine/core/a2ui/index.js +1 -1
  48. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +1 -1
  49. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +1 -1
  50. package/es/chat-engine/core/a2ui/processor/DataStore.js +1 -1
  51. package/es/chat-engine/core/a2ui/processor/PathResolver.js +1 -1
  52. package/es/chat-engine/core/a2ui/types/index.js +1 -1
  53. package/es/chat-engine/core/a2ui/types/types.d.ts +2 -1
  54. package/es/chat-engine/core/a2ui/types/types.js +1 -1
  55. package/es/chat-engine/core/a2ui/types/types.js.map +1 -1
  56. package/es/chat-engine/core/a2ui/utils/binding.js +1 -1
  57. package/es/chat-engine/core/a2ui/utils/index.js +1 -1
  58. package/es/chat-engine/core/a2ui/utils/validation.js +1 -1
  59. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +34 -2
  60. package/es/chat-engine/core/adapters/agui/event-mapper.js +69 -20
  61. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  62. package/es/chat-engine/core/adapters/agui/events.js +1 -1
  63. package/es/chat-engine/core/adapters/agui/index.d.ts +1 -1
  64. package/es/chat-engine/core/adapters/agui/index.js +2 -2
  65. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  66. package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
  67. package/es/chat-engine/core/adapters/agui/types.js +1 -1
  68. package/es/chat-engine/core/adapters/agui/utils.d.ts +2 -1
  69. package/es/chat-engine/core/adapters/agui/utils.js +10 -2
  70. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  71. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  72. package/es/chat-engine/core/event-bus/index.js +1 -1
  73. package/es/chat-engine/core/event-bus/types.js +1 -1
  74. package/es/chat-engine/core/index.js +2 -2
  75. package/es/chat-engine/core/index.js.map +1 -1
  76. package/es/chat-engine/core/processor/index.js +1 -1
  77. package/es/chat-engine/core/server/batch-client.js +1 -1
  78. package/es/chat-engine/core/server/connection-manager.js +1 -1
  79. package/es/chat-engine/core/server/errors.js +1 -1
  80. package/es/chat-engine/core/server/index.js +1 -1
  81. package/es/chat-engine/core/server/llm-service.js +1 -1
  82. package/es/chat-engine/core/server/sse-client.js +1 -1
  83. package/es/chat-engine/core/server/sse-parser.js +1 -1
  84. package/es/chat-engine/core/server/types.js +1 -1
  85. package/es/chat-engine/core/store/message.js +2 -2
  86. package/es/chat-engine/core/store/message.js.map +1 -1
  87. package/es/chat-engine/core/store/model.js +1 -1
  88. package/es/chat-engine/core/store/reactiveState.js +1 -1
  89. package/es/chat-engine/core/type.js +1 -1
  90. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  91. package/es/chat-engine/core/utils/index.js +1 -1
  92. package/es/chat-engine/core/utils/logger.js +1 -1
  93. package/es/chat-engine/hooks/a2ui/A2UIContext.js +1 -1
  94. package/es/chat-engine/hooks/a2ui/index.d.ts +9 -4
  95. package/es/chat-engine/hooks/a2ui/index.js +5 -5
  96. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +1 -1
  97. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +1 -1
  98. package/es/chat-engine/hooks/a2ui/useDataBinding.js +1 -1
  99. package/es/chat-engine/hooks/index.js +1 -1
  100. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  101. package/es/chat-engine/hooks/useAgentState.js +1 -1
  102. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  103. package/es/chat-engine/hooks/useChat.d.ts +1 -1
  104. package/es/chat-engine/hooks/useChat.js +1 -1
  105. package/es/chat-engine/hooks/useChat.js.map +1 -1
  106. package/es/chat-engine/index.js +1 -1
  107. package/es/chat-filecard/index.js +1 -1
  108. package/es/chat-loading/index.js +1 -1
  109. package/es/chat-markdown/index.js +1 -1
  110. package/es/chat-message/index.js +1 -1
  111. package/es/chat-sender/index.js +1 -1
  112. package/es/chat-thinking/index.js +1 -1
  113. package/es/chatbot/index.js +1 -1
  114. package/es/index.js +1 -1
  115. package/es/style/index.js +1 -1
  116. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -12,8 +12,53 @@
12
12
  * 3. content 中包含 A2UI 协议消息
13
13
  */
14
14
  import React from 'react';
15
- import type { A2UIServerMessage, A2UIComponentBase, ActionHandler, SkeletonHint } from '../../core/a2ui';
15
+ import type { A2UIServerMessage, A2UIComponentBase, A2UIAction, ActionHandler, ActionContext, SkeletonHint } from '../../core/a2ui';
16
16
  import type { ComponentRegistry } from '../../hooks/a2ui/A2UIContext';
17
+ /**
18
+ * UserAction 消息格式(A2UI 0.9 规范)
19
+ * 用于发送给服务端的用户操作消息
20
+ */
21
+ export interface UserActionMessage {
22
+ /** Action 名称 */
23
+ name: string;
24
+ /** 触发 Action 的 Surface ID */
25
+ surfaceId: string;
26
+ /** 触发 Action 的组件 ID */
27
+ sourceComponentId: string;
28
+ /** 时间戳 */
29
+ timestamp: string;
30
+ /** 解析后的上下文数据(数据绑定路径已解析为实际值) */
31
+ context: Record<string, unknown>;
32
+ }
33
+ /**
34
+ * Action 处理结果
35
+ * 返回给业务层,由业务层决定如何处理
36
+ */
37
+ export interface ActionResult {
38
+ /** 构造好的 userAction 消息 */
39
+ userActionMessage: UserActionMessage;
40
+ /** 原始 Action 定义 */
41
+ action: A2UIAction;
42
+ /** Action 上下文 */
43
+ actionContext?: ActionContext;
44
+ }
45
+ /**
46
+ * Action 处理回调
47
+ * 业务层通过此回调接收解析后的 Action 数据,自行决定是否发送请求
48
+ */
49
+ export type OnActionCallback = (result: ActionResult) => void | Promise<void>;
50
+ /**
51
+ * 创建 A2UI 0.9 协议标准的 Action 处理器
52
+ *
53
+ * 职责:
54
+ * 1. 解析 Action 中的数据绑定路径
55
+ * 2. 构造标准的 UserActionMessage
56
+ * 3. 将处理结果传递给业务层回调
57
+ *
58
+ * @param onAction 业务层回调,接收解析后的 ActionResult
59
+ * @returns ActionHandler
60
+ */
61
+ export declare function createA2UIActionHandler(onAction: OnActionCallback): ActionHandler;
17
62
  /**
18
63
  * A2UI Activity Content 类型
19
64
  * 支持 A2UI v0.9 原生格式和简化格式
@@ -69,14 +114,74 @@ export interface A2UIActivityRendererProps {
69
114
  */
70
115
  export declare const A2UIActivityRenderer: React.FC<A2UIActivityRendererProps>;
71
116
  /**
72
- * 创建 A2UI Activity 配置
117
+ * A2UI Activity 配置选项
73
118
  */
74
- export declare function createA2UIActivityConfig(options?: {
119
+ export interface A2UIActivityConfigOptions {
120
+ /** Activity 类型标识 */
75
121
  activityType?: string;
122
+ /** 自定义组件注册表 */
76
123
  registry?: ComponentRegistry;
77
- onAction?: ActionHandler;
124
+ /**
125
+ * Action 处理回调(推荐使用)
126
+ *
127
+ * 接收解析后的 ActionResult,包含:
128
+ * - userActionMessage: 构造好的标准消息,可直接发送给服务端
129
+ * - action: 原始 Action 定义
130
+ * - actionContext: Action 上下文(包含 getData、updateData 等方法)
131
+ *
132
+ * 业务层自行决定:
133
+ * 1. 是否需要发送请求到服务端
134
+ * 2. 是否需要本地处理(如 reset 操作)
135
+ * 3. 是否需要更新本地状态
136
+ *
137
+ * @example
138
+ * ```tsx
139
+ * createA2UIActivityConfig({
140
+ * onAction: async ({ userActionMessage, action, actionContext }) => {
141
+ * // 根据 action.name 决定处理方式
142
+ * if (action.name === 'reset') {
143
+ * // 本地处理,不发送请求
144
+ * actionContext?.updateData('/', initialData);
145
+ * return;
146
+ * }
147
+ *
148
+ * // 发送请求到服务端
149
+ * await chatEngine.sendAIMessage({
150
+ * params: { userActionMessage },
151
+ * sendRequest: true,
152
+ * });
153
+ * }
154
+ * })
155
+ * ```
156
+ */
157
+ onAction?: OnActionCallback;
158
+ /** 加载中占位 */
78
159
  loading?: React.ReactNode | boolean;
79
- }): {
160
+ }
161
+ /**
162
+ * 创建 A2UI Activity 配置
163
+ *
164
+ * @example
165
+ * ```tsx
166
+ * const { chatEngine } = useChat({ ... });
167
+ *
168
+ * const a2uiConfig = useMemo(() => createA2UIActivityConfig({
169
+ * onAction: async ({ userActionMessage, action }) => {
170
+ * // 本地操作不发请求
171
+ * if (action.name === 'reset') return;
172
+ *
173
+ * // 其他操作发送到服务端
174
+ * await chatEngine.sendAIMessage({
175
+ * params: { userActionMessage },
176
+ * sendRequest: true,
177
+ * });
178
+ * }
179
+ * }), [chatEngine]);
180
+ *
181
+ * useAgentActivity(a2uiConfig);
182
+ * ```
183
+ */
184
+ export declare function createA2UIActivityConfig(options?: A2UIActivityConfigOptions): {
80
185
  activityType: string;
81
186
  component: (props: {
82
187
  activityType: string;
@@ -1,11 +1,14 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
6
6
 
7
7
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
9
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
10
  import _typeof from '@babel/runtime/helpers/typeof';
11
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
9
12
  import React__default, { useRef, useSyncExternalStore, useEffect, useMemo } from 'react';
10
13
  import '../../core/a2ui/index.js';
11
14
  import { A2UISurfaceRenderer } from './A2UISurfaceRenderer.js';
@@ -16,7 +19,6 @@ import '../../core/a2ui/types/types.js';
16
19
  import 'zod';
17
20
  import '../../core/a2ui/utils/index.js';
18
21
  import '../../core/a2ui/utils/binding.js';
19
- import '@babel/runtime/helpers/slicedToArray';
20
22
  import '../../core/a2ui/utils/validation.js';
21
23
  import '@babel/runtime/helpers/toConsumableArray';
22
24
  import '../../core/a2ui/processor/DataStore.js';
@@ -57,6 +59,68 @@ import './containers/A2UITabs.js';
57
59
 
58
60
  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; }
59
61
  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; }
62
+ function resolveActionContext(actionContext, getData) {
63
+ var resolved = {};
64
+ if (!actionContext || _typeof(actionContext) !== "object") {
65
+ return resolved;
66
+ }
67
+ for (var _i = 0, _Object$entries = Object.entries(actionContext); _i < _Object$entries.length; _i++) {
68
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
69
+ key = _Object$entries$_i[0],
70
+ value = _Object$entries$_i[1];
71
+ if (_typeof(value) === "object" && value && "path" in value) {
72
+ var path = value.path;
73
+ resolved[key] = getData === null || getData === void 0 ? void 0 : getData(path);
74
+ } else {
75
+ resolved[key] = value;
76
+ }
77
+ }
78
+ return resolved;
79
+ }
80
+ function createA2UIActionHandler(onAction) {
81
+ return /*#__PURE__*/function () {
82
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(action, context) {
83
+ var name, resolvedContext, userActionMessage;
84
+ return _regeneratorRuntime.wrap(function (_context) {
85
+ while (1) switch (_context.prev = _context.next) {
86
+ case 0:
87
+ name = action.name;
88
+ if (name) {
89
+ _context.next = 1;
90
+ break;
91
+ }
92
+ console.warn("[A2UI] Action \u7F3A\u5C11 name \u5B57\u6BB5:", action);
93
+ return _context.abrupt("return");
94
+ case 1:
95
+ resolvedContext = resolveActionContext(action.context, context === null || context === void 0 ? void 0 : context.getData);
96
+ userActionMessage = {
97
+ name: name,
98
+ surfaceId: (context === null || context === void 0 ? void 0 : context.surfaceId) || "unknown",
99
+ sourceComponentId: (context === null || context === void 0 ? void 0 : context.componentId) || "unknown",
100
+ timestamp: new Date().toISOString(),
101
+ context: resolvedContext
102
+ };
103
+ console.log("[A2UI] Action \u89E6\u53D1:", {
104
+ name: name,
105
+ userActionMessage: userActionMessage
106
+ });
107
+ _context.next = 2;
108
+ return onAction({
109
+ userActionMessage: userActionMessage,
110
+ action: action,
111
+ actionContext: context
112
+ });
113
+ case 2:
114
+ case "end":
115
+ return _context.stop();
116
+ }
117
+ }, _callee);
118
+ }));
119
+ return function (_x, _x2) {
120
+ return _ref.apply(this, arguments);
121
+ };
122
+ }();
123
+ }
60
124
  function isA2UIServerMessage(msg) {
61
125
  if (!msg || _typeof(msg) !== "object") return false;
62
126
  return "createSurface" in msg || "updateComponents" in msg || "updateDataModel" in msg || "deleteSurface" in msg;
@@ -131,15 +195,15 @@ function flattenComponents(root) {
131
195
  flatten(rootWithId);
132
196
  return components;
133
197
  }
134
- var A2UIActivityRenderer = function A2UIActivityRenderer(_ref) {
135
- var content = _ref.content,
136
- messageId = _ref.messageId,
137
- registry = _ref.registry,
138
- onAction = _ref.onAction,
139
- loading = _ref.loading,
140
- className = _ref.className,
141
- style = _ref.style,
142
- deltaInfo = _ref.deltaInfo;
198
+ var A2UIActivityRenderer = function A2UIActivityRenderer(_ref2) {
199
+ var content = _ref2.content,
200
+ messageId = _ref2.messageId,
201
+ registry = _ref2.registry,
202
+ onAction = _ref2.onAction,
203
+ loading = _ref2.loading,
204
+ className = _ref2.className,
205
+ style = _ref2.style,
206
+ deltaInfo = _ref2.deltaInfo;
143
207
  var processorRef = useRef(null);
144
208
  var lastContentRef = useRef(null);
145
209
  var processedCountRef = useRef(0);
@@ -211,19 +275,20 @@ var A2UIActivityRenderer = function A2UIActivityRenderer(_ref) {
211
275
  };
212
276
  A2UIActivityRenderer.displayName = "A2UIActivityRenderer";
213
277
  function createA2UIActivityConfig(options) {
214
- var _ref2 = options || {},
215
- _ref2$activityType = _ref2.activityType,
216
- activityType = _ref2$activityType === void 0 ? "a2ui-surface" : _ref2$activityType,
217
- registry = _ref2.registry,
218
- onAction = _ref2.onAction,
219
- loading = _ref2.loading;
278
+ var _ref3 = options || {},
279
+ _ref3$activityType = _ref3.activityType,
280
+ activityType = _ref3$activityType === void 0 ? "a2ui-surface" : _ref3$activityType,
281
+ registry = _ref3.registry,
282
+ onAction = _ref3.onAction,
283
+ loading = _ref3.loading;
284
+ var finalOnAction = onAction ? createA2UIActionHandler(onAction) : void 0;
220
285
  return {
221
286
  activityType: activityType,
222
287
  component: function component(props) {
223
288
  var _props$ext;
224
289
  return /* @__PURE__ */React__default.createElement(A2UIActivityRenderer, _objectSpread(_objectSpread({}, props), {}, {
225
290
  registry: registry,
226
- onAction: onAction,
291
+ onAction: finalOnAction,
227
292
  loading: loading,
228
293
  deltaInfo: (_props$ext = props.ext) === null || _props$ext === void 0 ? void 0 : _props$ext.deltaInfo
229
294
  }));
@@ -232,5 +297,5 @@ function createA2UIActivityConfig(options) {
232
297
  };
233
298
  }
234
299
 
235
- export { A2UIActivityRenderer, createA2UIActivityConfig, A2UIActivityRenderer as default };
300
+ export { A2UIActivityRenderer, createA2UIActionHandler, createA2UIActivityConfig, A2UIActivityRenderer as default };
236
301
  //# sourceMappingURL=A2UIActivityRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"A2UIActivityRenderer.js","sources":["../../../../../pro-components/chat/chat-engine/components/a2ui/A2UIActivityRenderer.tsx"],"sourcesContent":["/**\n * A2UI Activity 渲染器\n * 将 A2UI v0.9 协议数据作为 Activity 进行渲染\n * \n * 支持的消息格式:\n * 1. A2UI v0.9 原生格式(createSurface、updateComponents、updateDataModel、deleteSurface)\n * 2. 简化的 surface 格式(向后兼容)\n * \n * 使用方式:\n * 1. 通过 useAgentActivity 注册此组件\n * 2. 后端发送 ACTIVITY_SNAPSHOT/ACTIVITY_DELTA 事件,activityType 为 'a2ui-surface'\n * 3. content 中包含 A2UI 协议消息\n */\n\nimport React, { useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport { A2uiMessageProcessor } from '../../core/a2ui';\nimport type {\n A2UIServerMessage,\n A2UIComponentBase,\n ActionHandler,\n SkeletonHint,\n} from '../../core/a2ui';\nimport type { ComponentRegistry } from '../../hooks/a2ui/A2UIContext';\nimport { A2UISurfaceRenderer } from './A2UISurfaceRenderer';\nimport { defaultComponentRegistry } from './registry';\n\n/**\n * A2UI Activity Content 类型\n * 支持 A2UI v0.9 原生格式和简化格式\n */\nexport interface A2UIActivityContent {\n /** A2UI v0.9 消息列表(标准名称) */\n messages?: A2UIServerMessage[];\n \n /** A2UI v0.9 消息列表(别名,向后兼容) */\n operations?: A2UIServerMessage[];\n \n /** 简化模式:单个 Surface 定义 */\n surface?: {\n id?: string;\n root?: A2UIComponentBase;\n data?: Record<string, unknown>;\n skeletonHint?: SkeletonHint;\n };\n \n /** Surface ID(用于简化模式) */\n surfaceId?: string;\n}\n\n/**\n * 增量信息类型\n */\nexport interface DeltaInfo {\n fromIndex: number;\n toIndex: number;\n}\n\nexport interface A2UIActivityRendererProps {\n /** Activity 类型 */\n activityType?: string;\n /** Activity 内容数据 */\n content: A2UIActivityContent;\n /** 关联的消息 ID */\n messageId: string;\n /** 自定义组件注册表 */\n registry?: ComponentRegistry;\n /** Action 处理回调 */\n onAction?: ActionHandler;\n /** \n * 加载中占位\n * - ReactNode: 自定义骨架屏组件\n * - true: 使用服务端 skeletonHint 自动渲染骨架屏\n */\n loading?: React.ReactNode | boolean;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 增量信息(由 AG-UI adapter 提供) */\n deltaInfo?: DeltaInfo;\n}\n\n/**\n * 检查是否为 A2UI v0.9 原生消息格式\n */\nfunction isA2UIServerMessage(msg: unknown): msg is A2UIServerMessage {\n if (!msg || typeof msg !== 'object') return false;\n return (\n 'createSurface' in msg ||\n 'updateComponents' in msg ||\n 'updateDataModel' in msg ||\n 'deleteSurface' in msg\n );\n}\n\n/**\n * 将简化格式转换为 A2UI v0.9 消息\n */\nfunction convertToA2UIMessages(\n content: A2UIActivityContent,\n messageId: string\n): A2UIServerMessage[] {\n const messages: A2UIServerMessage[] = [];\n const surfaceId = content.surfaceId || content.surface?.id || `surface-${messageId}`;\n\n // 优先使用 messages 字段(A2UI v0.9 标准),其次使用 operations(别名)\n const a2uiMessages = content.messages || content.operations;\n if (a2uiMessages && a2uiMessages.length > 0) {\n // 验证并过滤有效消息\n return a2uiMessages.filter(isA2UIServerMessage);\n }\n\n // 简化格式转换\n if (content.surface) {\n // 1. 创建 Surface\n messages.push({\n createSurface: {\n surfaceId,\n catalogId: 'default',\n },\n });\n\n // 2. 如果有数据,更新数据模型\n if (content.surface.data) {\n messages.push({\n updateDataModel: {\n surfaceId,\n path: '/',\n op: 'replace',\n value: content.surface.data,\n },\n });\n }\n\n // 3. 如果有 root 组件,转换为 components 数组\n if (content.surface.root) {\n const components = flattenComponents(content.surface.root);\n if (components.length > 0) {\n messages.push({\n updateComponents: {\n surfaceId,\n components,\n },\n });\n }\n }\n }\n\n return messages;\n}\n\n/**\n * 将嵌套组件树展平为组件数组\n * A2UI v0.9 要求组件以平铺形式存储,通过 id 引用\n */\nfunction flattenComponents(root: A2UIComponentBase): A2UIComponentBase[] {\n const components: A2UIComponentBase[] = [];\n const idCounter = { value: 0 };\n\n function flatten(node: any, parentId?: string): string {\n // 确保有 id\n const nodeId = node.id || `comp_${idCounter.value++}`;\n \n // 创建新组件(不包含嵌套 children)\n const component: A2UIComponentBase = {\n ...node,\n id: nodeId,\n };\n\n // 处理 children\n if (Array.isArray(node.children)) {\n const childIds = node.children.map((child: any) => {\n if (typeof child === 'string') {\n return child;\n }\n return flatten(child);\n });\n component.children = childIds;\n }\n\n // 处理 child(单子组件)\n if (node.child && typeof node.child === 'object') {\n component.child = flatten(node.child);\n }\n\n components.push(component);\n return nodeId;\n }\n\n // 从 root 开始展平,确保 root id 为 'root'\n const rootWithId = { ...root, id: root.id || 'root' };\n flatten(rootWithId);\n\n return components;\n}\n\n/**\n * A2UI Activity 渲染器组件\n */\nexport const A2UIActivityRenderer: React.FC<A2UIActivityRendererProps> = ({\n content,\n messageId,\n registry,\n onAction,\n loading,\n className,\n style,\n deltaInfo,\n}) => {\n // 创建或获取 Processor\n const processorRef = useRef<A2uiMessageProcessor | null>(null);\n const lastContentRef = useRef<A2UIActivityContent | null>(null);\n const processedCountRef = useRef(0);\n\n // 初始化 processor\n if (!processorRef.current) {\n processorRef.current = new A2uiMessageProcessor({ onAction });\n }\n const processor = processorRef.current;\n\n // 订阅 processor 变化\n const snapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n // 处理 content 变化\n useEffect(() => {\n if (!content) return;\n\n // 获取 A2UI 消息\n const allMessages = content.messages || content.operations;\n \n // 如果有增量信息且有消息数组,使用增量处理\n if (deltaInfo && allMessages && Array.isArray(allMessages)) {\n const { fromIndex, toIndex } = deltaInfo;\n \n // 只处理新增的消息\n if (fromIndex < toIndex && fromIndex >= processedCountRef.current) {\n const newMessages = allMessages.slice(fromIndex, toIndex).filter(isA2UIServerMessage);\n \n if (newMessages.length > 0) {\n // 使用增量处理方法\n processor.processMessagesIncremental(newMessages);\n processedCountRef.current = toIndex;\n }\n }\n \n lastContentRef.current = content;\n return;\n }\n\n // 非增量模式:完整处理\n const contentStr = JSON.stringify(content);\n const lastContentStr = lastContentRef.current ? JSON.stringify(lastContentRef.current) : '';\n \n if (contentStr === lastContentStr && processedCountRef.current > 0) {\n return;\n }\n\n // 转换为 A2UI v0.9 消息格式\n const messages = convertToA2UIMessages(content, messageId);\n\n if (messages.length > 0) {\n // 获取 surfaceId 用于骨架屏\n const surfaceId = content.surfaceId || content.surface?.id || `surface-${messageId}`;\n \n // 如果有 loading 且 Surface 不存在,先创建 pending 状态\n if (loading && !processor.getSurface(surfaceId)) {\n const skeletonHint = content.surface?.skeletonHint;\n processor.createPendingSurface(surfaceId, skeletonHint);\n }\n\n // 处理消息\n processor.processMessages(messages);\n processedCountRef.current = messages.length;\n }\n\n lastContentRef.current = content;\n }, [content, messageId, processor, loading, deltaInfo]);\n\n // 合并组件注册表\n const mergedRegistry = useMemo<ComponentRegistry>(\n () => ({\n ...defaultComponentRegistry,\n ...registry,\n }),\n [registry]\n );\n\n // 获取当前所有 surface IDs\n const surfaceIds = Array.from(snapshot.keys());\n\n // 如果没有 surface,显示 loading 占位\n if (surfaceIds.length === 0) {\n return loading ? <div className={className} style={style}>{loading}</div> : null;\n }\n\n return (\n <div className={className} style={style}>\n {surfaceIds.map((surfaceId) => (\n <A2UISurfaceRenderer\n key={surfaceId}\n processor={processor}\n surfaceId={surfaceId}\n registry={mergedRegistry}\n onAction={onAction}\n loading={loading}\n />\n ))}\n </div>\n );\n};\n\nA2UIActivityRenderer.displayName = 'A2UIActivityRenderer';\n\n/**\n * 创建 A2UI Activity 配置\n */\nexport function createA2UIActivityConfig(options?: {\n activityType?: string;\n registry?: ComponentRegistry;\n onAction?: ActionHandler;\n loading?: React.ReactNode | boolean;\n}) {\n const {\n activityType = 'a2ui-surface',\n registry,\n onAction,\n loading,\n } = options || {};\n\n return {\n activityType,\n component: (props: { \n activityType: string; \n content: A2UIActivityContent; \n messageId: string;\n ext?: { deltaInfo?: DeltaInfo };\n }) => (\n <A2UIActivityRenderer\n {...props}\n registry={registry}\n onAction={onAction}\n loading={loading}\n deltaInfo={props.ext?.deltaInfo}\n />\n ),\n description: 'A2UI Surface 渲染器',\n };\n}\n\nexport default A2UIActivityRenderer;\n"],"names":["isA2UIServerMessage","msg","_typeof","convertToA2UIMessages","content","messageId","_content$surface","messages","surfaceId","surface","id","a2uiMessages","operations","length","filter","push","createSurface","catalogId","data","updateDataModel","path","op","value","root","components","flattenComponents","updateComponents","idCounter","flatten","node","parentId","nodeId","concat","component","_objectSpread","Array","isArray","children","childIds","map","child","rootWithId","A2UIActivityRenderer","_ref","registry","onAction","loading","className","style","deltaInfo","processorRef","useRef","lastContentRef","processedCountRef","current","A2uiMessageProcessor","processor","snapshot","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","useEffect","allMessages","fromIndex","toIndex","newMessages","slice","processMessagesIncremental","contentStr","JSON","stringify","lastContentStr","_content$surface2","getSurface","_content$surface3","skeletonHint","createPendingSurface","processMessages","mergedRegistry","useMemo","defaultComponentRegistry","surfaceIds","from","keys","React","createElement","A2UISurfaceRenderer","key","displayName","createA2UIActivityConfig","options","_ref2","_ref2$activityType","activityType","props","_props$ext","ext","description"],"mappings":"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"}
1
+ {"version":3,"file":"A2UIActivityRenderer.js","sources":["../../../../../pro-components/chat/chat-engine/components/a2ui/A2UIActivityRenderer.tsx"],"sourcesContent":["/**\n * A2UI Activity 渲染器\n * 将 A2UI v0.9 协议数据作为 Activity 进行渲染\n * \n * 支持的消息格式:\n * 1. A2UI v0.9 原生格式(createSurface、updateComponents、updateDataModel、deleteSurface)\n * 2. 简化的 surface 格式(向后兼容)\n * \n * 使用方式:\n * 1. 通过 useAgentActivity 注册此组件\n * 2. 后端发送 ACTIVITY_SNAPSHOT/ACTIVITY_DELTA 事件,activityType 为 'a2ui-surface'\n * 3. content 中包含 A2UI 协议消息\n */\n\nimport React, { useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport { A2uiMessageProcessor } from '../../core/a2ui';\nimport type {\n A2UIServerMessage,\n A2UIComponentBase,\n A2UIAction,\n ActionHandler,\n ActionContext,\n SkeletonHint,\n} from '../../core/a2ui';\nimport type { ComponentRegistry } from '../../hooks/a2ui/A2UIContext';\nimport { A2UISurfaceRenderer } from './A2UISurfaceRenderer';\nimport { defaultComponentRegistry } from './registry';\n\n// ============= A2UI 0.9 协议标准 Action 处理 =============\n\n/**\n * UserAction 消息格式(A2UI 0.9 规范)\n * 用于发送给服务端的用户操作消息\n */\nexport interface UserActionMessage {\n /** Action 名称 */\n name: string;\n /** 触发 Action 的 Surface ID */\n surfaceId: string;\n /** 触发 Action 的组件 ID */\n sourceComponentId: string;\n /** 时间戳 */\n timestamp: string;\n /** 解析后的上下文数据(数据绑定路径已解析为实际值) */\n context: Record<string, unknown>;\n}\n\n/**\n * Action 处理结果\n * 返回给业务层,由业务层决定如何处理\n */\nexport interface ActionResult {\n /** 构造好的 userAction 消息 */\n userActionMessage: UserActionMessage;\n /** 原始 Action 定义 */\n action: A2UIAction;\n /** Action 上下文 */\n actionContext?: ActionContext;\n}\n\n/**\n * Action 处理回调\n * 业务层通过此回调接收解析后的 Action 数据,自行决定是否发送请求\n */\nexport type OnActionCallback = (result: ActionResult) => void | Promise<void>;\n\n/**\n * 解析 Action 中的数据绑定路径\n * 将 { path: '/xxx' } 格式的绑定解析为实际数据值\n */\nfunction resolveActionContext(\n actionContext: Record<string, unknown> | undefined,\n getData?: (path?: string) => unknown\n): Record<string, unknown> {\n const resolved: Record<string, unknown> = {};\n \n if (!actionContext || typeof actionContext !== 'object') {\n return resolved;\n }\n\n for (const [key, value] of Object.entries(actionContext)) {\n if (typeof value === 'object' && value && 'path' in value) {\n // 解析数据绑定路径 { path: '/xxx' }\n const path = (value as { path: string }).path;\n resolved[key] = getData?.(path);\n } else {\n resolved[key] = value;\n }\n }\n\n return resolved;\n}\n\n/**\n * 创建 A2UI 0.9 协议标准的 Action 处理器\n * \n * 职责:\n * 1. 解析 Action 中的数据绑定路径\n * 2. 构造标准的 UserActionMessage\n * 3. 将处理结果传递给业务层回调\n * \n * @param onAction 业务层回调,接收解析后的 ActionResult\n * @returns ActionHandler\n */\nexport function createA2UIActionHandler(onAction: OnActionCallback): ActionHandler {\n return async (action: A2UIAction, context?: ActionContext) => {\n const { name } = action;\n \n if (!name) {\n console.warn('[A2UI] Action 缺少 name 字段:', action);\n return;\n }\n\n // 解析 context 中的数据绑定路径\n const resolvedContext = resolveActionContext(action.context, context?.getData);\n\n // 构造符合 A2UI 0.9 协议的 userAction 消息\n const userActionMessage: UserActionMessage = {\n name,\n surfaceId: context?.surfaceId || 'unknown',\n sourceComponentId: context?.componentId || 'unknown',\n timestamp: new Date().toISOString(),\n context: resolvedContext,\n };\n\n console.log('[A2UI] Action 触发:', { name, userActionMessage });\n\n // 将处理结果传递给业务层\n await onAction({\n userActionMessage,\n action,\n actionContext: context,\n });\n };\n}\n\n/**\n * A2UI Activity Content 类型\n * 支持 A2UI v0.9 原生格式和简化格式\n */\nexport interface A2UIActivityContent {\n /** A2UI v0.9 消息列表(标准名称) */\n messages?: A2UIServerMessage[];\n \n /** A2UI v0.9 消息列表(别名,向后兼容) */\n operations?: A2UIServerMessage[];\n \n /** 简化模式:单个 Surface 定义 */\n surface?: {\n id?: string;\n root?: A2UIComponentBase;\n data?: Record<string, unknown>;\n skeletonHint?: SkeletonHint;\n };\n \n /** Surface ID(用于简化模式) */\n surfaceId?: string;\n}\n\n/**\n * 增量信息类型\n */\nexport interface DeltaInfo {\n fromIndex: number;\n toIndex: number;\n}\n\nexport interface A2UIActivityRendererProps {\n /** Activity 类型 */\n activityType?: string;\n /** Activity 内容数据 */\n content: A2UIActivityContent;\n /** 关联的消息 ID */\n messageId: string;\n /** 自定义组件注册表 */\n registry?: ComponentRegistry;\n /** Action 处理回调 */\n onAction?: ActionHandler;\n /** \n * 加载中占位\n * - ReactNode: 自定义骨架屏组件\n * - true: 使用服务端 skeletonHint 自动渲染骨架屏\n */\n loading?: React.ReactNode | boolean;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 增量信息(由 AG-UI adapter 提供) */\n deltaInfo?: DeltaInfo;\n}\n\n/**\n * 检查是否为 A2UI v0.9 原生消息格式\n */\nfunction isA2UIServerMessage(msg: unknown): msg is A2UIServerMessage {\n if (!msg || typeof msg !== 'object') return false;\n return (\n 'createSurface' in msg ||\n 'updateComponents' in msg ||\n 'updateDataModel' in msg ||\n 'deleteSurface' in msg\n );\n}\n\n/**\n * 将简化格式转换为 A2UI v0.9 消息\n */\nfunction convertToA2UIMessages(\n content: A2UIActivityContent,\n messageId: string\n): A2UIServerMessage[] {\n const messages: A2UIServerMessage[] = [];\n const surfaceId = content.surfaceId || content.surface?.id || `surface-${messageId}`;\n\n // 优先使用 messages 字段(A2UI v0.9 标准),其次使用 operations(别名)\n const a2uiMessages = content.messages || content.operations;\n if (a2uiMessages && a2uiMessages.length > 0) {\n // 验证并过滤有效消息\n return a2uiMessages.filter(isA2UIServerMessage);\n }\n\n // 简化格式转换\n if (content.surface) {\n // 1. 创建 Surface\n messages.push({\n createSurface: {\n surfaceId,\n catalogId: 'default',\n },\n });\n\n // 2. 如果有数据,更新数据模型\n if (content.surface.data) {\n messages.push({\n updateDataModel: {\n surfaceId,\n path: '/',\n op: 'replace',\n value: content.surface.data,\n },\n });\n }\n\n // 3. 如果有 root 组件,转换为 components 数组\n if (content.surface.root) {\n const components = flattenComponents(content.surface.root);\n if (components.length > 0) {\n messages.push({\n updateComponents: {\n surfaceId,\n components,\n },\n });\n }\n }\n }\n\n return messages;\n}\n\n/**\n * 将嵌套组件树展平为组件数组\n * A2UI v0.9 要求组件以平铺形式存储,通过 id 引用\n */\nfunction flattenComponents(root: A2UIComponentBase): A2UIComponentBase[] {\n const components: A2UIComponentBase[] = [];\n const idCounter = { value: 0 };\n\n function flatten(node: any, parentId?: string): string {\n // 确保有 id\n const nodeId = node.id || `comp_${idCounter.value++}`;\n \n // 创建新组件(不包含嵌套 children)\n const component: A2UIComponentBase = {\n ...node,\n id: nodeId,\n };\n\n // 处理 children\n if (Array.isArray(node.children)) {\n const childIds = node.children.map((child: any) => {\n if (typeof child === 'string') {\n return child;\n }\n return flatten(child);\n });\n component.children = childIds;\n }\n\n // 处理 child(单子组件)\n if (node.child && typeof node.child === 'object') {\n component.child = flatten(node.child);\n }\n\n components.push(component);\n return nodeId;\n }\n\n // 从 root 开始展平,确保 root id 为 'root'\n const rootWithId = { ...root, id: root.id || 'root' };\n flatten(rootWithId);\n\n return components;\n}\n\n/**\n * A2UI Activity 渲染器组件\n */\nexport const A2UIActivityRenderer: React.FC<A2UIActivityRendererProps> = ({\n content,\n messageId,\n registry,\n onAction,\n loading,\n className,\n style,\n deltaInfo,\n}) => {\n // 创建或获取 Processor\n const processorRef = useRef<A2uiMessageProcessor | null>(null);\n const lastContentRef = useRef<A2UIActivityContent | null>(null);\n const processedCountRef = useRef(0);\n\n // 初始化 processor\n if (!processorRef.current) {\n processorRef.current = new A2uiMessageProcessor({ onAction });\n }\n const processor = processorRef.current;\n\n // 订阅 processor 变化\n const snapshot = useSyncExternalStore(\n processor.subscribe,\n processor.getSnapshot,\n processor.getServerSnapshot\n );\n\n // 处理 content 变化\n useEffect(() => {\n if (!content) return;\n\n // 获取 A2UI 消息\n const allMessages = content.messages || content.operations;\n \n // 如果有增量信息且有消息数组,使用增量处理\n if (deltaInfo && allMessages && Array.isArray(allMessages)) {\n const { fromIndex, toIndex } = deltaInfo;\n \n // 只处理新增的消息\n if (fromIndex < toIndex && fromIndex >= processedCountRef.current) {\n const newMessages = allMessages.slice(fromIndex, toIndex).filter(isA2UIServerMessage);\n \n if (newMessages.length > 0) {\n // 使用增量处理方法\n processor.processMessagesIncremental(newMessages);\n processedCountRef.current = toIndex;\n }\n }\n \n lastContentRef.current = content;\n return;\n }\n\n // 非增量模式:完整处理\n const contentStr = JSON.stringify(content);\n const lastContentStr = lastContentRef.current ? JSON.stringify(lastContentRef.current) : '';\n \n if (contentStr === lastContentStr && processedCountRef.current > 0) {\n return;\n }\n\n // 转换为 A2UI v0.9 消息格式\n const messages = convertToA2UIMessages(content, messageId);\n\n if (messages.length > 0) {\n // 获取 surfaceId 用于骨架屏\n const surfaceId = content.surfaceId || content.surface?.id || `surface-${messageId}`;\n \n // 如果有 loading 且 Surface 不存在,先创建 pending 状态\n if (loading && !processor.getSurface(surfaceId)) {\n const skeletonHint = content.surface?.skeletonHint;\n processor.createPendingSurface(surfaceId, skeletonHint);\n }\n\n // 处理消息\n processor.processMessages(messages);\n processedCountRef.current = messages.length;\n }\n\n lastContentRef.current = content;\n }, [content, messageId, processor, loading, deltaInfo]);\n\n // 合并组件注册表\n const mergedRegistry = useMemo<ComponentRegistry>(\n () => ({\n ...defaultComponentRegistry,\n ...registry,\n }),\n [registry]\n );\n\n // 获取当前所有 surface IDs\n const surfaceIds = Array.from(snapshot.keys());\n\n // 如果没有 surface,显示 loading 占位\n if (surfaceIds.length === 0) {\n return loading ? <div className={className} style={style}>{loading}</div> : null;\n }\n\n return (\n <div className={className} style={style}>\n {surfaceIds.map((surfaceId) => (\n <A2UISurfaceRenderer\n key={surfaceId}\n processor={processor}\n surfaceId={surfaceId}\n registry={mergedRegistry}\n onAction={onAction}\n loading={loading}\n />\n ))}\n </div>\n );\n};\n\nA2UIActivityRenderer.displayName = 'A2UIActivityRenderer';\n\n/**\n * A2UI Activity 配置选项\n */\nexport interface A2UIActivityConfigOptions {\n /** Activity 类型标识 */\n activityType?: string;\n /** 自定义组件注册表 */\n registry?: ComponentRegistry;\n /**\n * Action 处理回调(推荐使用)\n * \n * 接收解析后的 ActionResult,包含:\n * - userActionMessage: 构造好的标准消息,可直接发送给服务端\n * - action: 原始 Action 定义\n * - actionContext: Action 上下文(包含 getData、updateData 等方法)\n * \n * 业务层自行决定:\n * 1. 是否需要发送请求到服务端\n * 2. 是否需要本地处理(如 reset 操作)\n * 3. 是否需要更新本地状态\n * \n * @example\n * ```tsx\n * createA2UIActivityConfig({\n * onAction: async ({ userActionMessage, action, actionContext }) => {\n * // 根据 action.name 决定处理方式\n * if (action.name === 'reset') {\n * // 本地处理,不发送请求\n * actionContext?.updateData('/', initialData);\n * return;\n * }\n * \n * // 发送请求到服务端\n * await chatEngine.sendAIMessage({\n * params: { userActionMessage },\n * sendRequest: true,\n * });\n * }\n * })\n * ```\n */\n onAction?: OnActionCallback;\n /** 加载中占位 */\n loading?: React.ReactNode | boolean;\n}\n\n/**\n * 创建 A2UI Activity 配置\n * \n * @example\n * ```tsx\n * const { chatEngine } = useChat({ ... });\n * \n * const a2uiConfig = useMemo(() => createA2UIActivityConfig({\n * onAction: async ({ userActionMessage, action }) => {\n * // 本地操作不发请求\n * if (action.name === 'reset') return;\n * \n * // 其他操作发送到服务端\n * await chatEngine.sendAIMessage({\n * params: { userActionMessage },\n * sendRequest: true,\n * });\n * }\n * }), [chatEngine]);\n * \n * useAgentActivity(a2uiConfig);\n * ```\n */\nexport function createA2UIActivityConfig(options?: A2UIActivityConfigOptions) {\n const {\n activityType = 'a2ui-surface',\n registry,\n onAction,\n loading,\n } = options || {};\n\n // 使用 onAction 回调创建内置处理器\n const finalOnAction = onAction ? createA2UIActionHandler(onAction) : undefined;\n\n return {\n activityType,\n component: (props: { \n activityType: string; \n content: A2UIActivityContent; \n messageId: string;\n ext?: { deltaInfo?: DeltaInfo };\n }) => (\n <A2UIActivityRenderer\n {...props}\n registry={registry}\n onAction={finalOnAction}\n loading={loading}\n deltaInfo={props.ext?.deltaInfo}\n />\n ),\n description: 'A2UI Surface 渲染器',\n };\n}\n\nexport default A2UIActivityRenderer;\n"],"names":["resolveActionContext","actionContext","getData","resolved","_typeof","_i","_Object$entries","Object","entries","length","_Object$entries$_i","_slicedToArray","key","value","path","createA2UIActionHandler","onAction","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","action","context","name","resolvedContext","userActionMessage","wrap","_context","prev","next","console","warn","abrupt","surfaceId","sourceComponentId","componentId","timestamp","Date","toISOString","log","stop","_x","_x2","apply","arguments","isA2UIServerMessage","msg","convertToA2UIMessages","content","messageId","_content$surface","messages","surface","id","a2uiMessages","operations","filter","push","createSurface","catalogId","data","updateDataModel","op","root","components","flattenComponents","updateComponents","idCounter","flatten","node","parentId","nodeId","concat","component","_objectSpread","Array","isArray","children","childIds","map","child","rootWithId","A2UIActivityRenderer","_ref2","registry","loading","className","style","deltaInfo","processorRef","useRef","lastContentRef","processedCountRef","current","A2uiMessageProcessor","processor","snapshot","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","useEffect","allMessages","fromIndex","toIndex","newMessages","slice","processMessagesIncremental","contentStr","JSON","stringify","lastContentStr","_content$surface2","getSurface","_content$surface3","skeletonHint","createPendingSurface","processMessages","mergedRegistry","useMemo","defaultComponentRegistry","surfaceIds","from","keys","React","createElement","A2UISurfaceRenderer","displayName","createA2UIActivityConfig","options","_ref3","_ref3$activityType","activityType","finalOnAction","props","_props$ext","ext","description"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export { A2UIComponentRenderer, A2UIChildrenRenderer, type A2UIComponentRendererProps, } from './A2UIComponentRenderer';
5
5
  export { A2UISurfaceRenderer, type A2UISurfaceRendererProps, } from './A2UISurfaceRenderer';
6
- export { A2UIActivityRenderer, createA2UIActivityConfig, type A2UIActivityRendererProps, type A2UIActivityContent, type DeltaInfo, } from './A2UIActivityRenderer';
6
+ export { A2UIActivityRenderer, createA2UIActivityConfig, createA2UIActionHandler, type A2UIActivityRendererProps, type A2UIActivityContent, type A2UIActivityConfigOptions, type UserActionMessage, type ActionResult, type OnActionCallback, type DeltaInfo, } from './A2UIActivityRenderer';
7
7
  export { A2UIErrorBoundary, withA2UIErrorBoundary, type A2UIErrorBoundaryProps, } from './A2UIErrorBoundary';
8
8
  export { A2UISkeleton, A2UISurfaceSkeleton, type A2UISkeletonProps, type A2UISurfaceSkeletonProps, } from './A2UISkeleton';
9
9
  export { defaultComponentRegistry, createComponentRegistry, extendComponentRegistry, } from './registry';
@@ -1,12 +1,12 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
6
6
 
7
7
  export { A2UIChildrenRenderer, A2UIComponentRenderer } from './A2UIComponentRenderer.js';
8
8
  export { A2UISurfaceRenderer } from './A2UISurfaceRenderer.js';
9
- export { A2UIActivityRenderer, createA2UIActivityConfig } from './A2UIActivityRenderer.js';
9
+ export { A2UIActivityRenderer, createA2UIActionHandler, createA2UIActivityConfig } from './A2UIActivityRenderer.js';
10
10
  export { A2UIErrorBoundary, withA2UIErrorBoundary } from './A2UIErrorBoundary.js';
11
11
  export { A2UISkeleton, A2UISurfaceSkeleton } from './A2UISkeleton.js';
12
12
  export { createComponentRegistry, defaultComponentRegistry, extendComponentRegistry } from './registry.js';
@@ -48,6 +48,8 @@ import '@babel/runtime/helpers/typeof';
48
48
  import '../../core/a2ui/utils/validation.js';
49
49
  import '@babel/runtime/helpers/toConsumableArray';
50
50
  import '../../hooks/a2ui/useA2UIAction.js';
51
+ import '@babel/runtime/helpers/asyncToGenerator';
52
+ import '@babel/runtime/regenerator';
51
53
  import '../../core/a2ui/index.js';
52
54
  import '../../core/a2ui/types/index.js';
53
55
  import '../../core/a2ui/types/types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -14,6 +14,8 @@ export interface A2UIButtonProps {
14
14
  resolvedChildren?: ResolvedComponent[];
15
15
  /** A2UI v0.9: primary 属性 */
16
16
  primary?: boolean;
17
+ /** A2UI v0.9: text 属性(标准) */
18
+ text?: Bindable<string>;
17
19
  /** Action 定义 */
18
20
  action?: A2UIAction;
19
21
  disabled?: Bindable<boolean>;
@@ -1,13 +1,13 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.12
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
6
6
 
7
- import React__default from 'react';
7
+ import React__default, { useCallback } from 'react';
8
8
  import { Button } from 'tdesign-react';
9
9
  import { useDataBinding } from '../../../hooks/a2ui/useDataBinding.js';
10
- import { useActionCallback } from '../../../hooks/a2ui/useA2UIAction.js';
10
+ import { useA2UIAction } from '../../../hooks/a2ui/useA2UIAction.js';
11
11
  import { A2UIComponentRenderer } from '../A2UIComponentRenderer.js';
12
12
  import '@babel/runtime/helpers/slicedToArray';
13
13
  import '../../../hooks/a2ui/A2UIContext.js';
@@ -26,9 +26,9 @@ import '@babel/runtime/helpers/inherits';
26
26
 
27
27
  var A2UIButton = function A2UIButton(_ref) {
28
28
  var id = _ref.id,
29
- child = _ref.child,
30
29
  resolvedChildren = _ref.resolvedChildren,
31
30
  primary = _ref.primary,
31
+ text = _ref.text,
32
32
  action = _ref.action,
33
33
  disabled = _ref.disabled,
34
34
  loading = _ref.loading,
@@ -38,15 +38,19 @@ var A2UIButton = function A2UIButton(_ref) {
38
38
  variant = _ref$variant === void 0 ? "base" : _ref$variant,
39
39
  _ref$size = _ref.size,
40
40
  size = _ref$size === void 0 ? "medium" : _ref$size,
41
- label = _ref.label,
42
41
  className = _ref.className,
43
42
  style = _ref.style;
44
- var resolvedLabel = useDataBinding(label);
43
+ var resolvedText = useDataBinding(text);
45
44
  var resolvedDisabled = useDataBinding(disabled);
46
45
  var resolvedLoading = useDataBinding(loading);
47
46
  var resolvedTheme = useDataBinding(theme) || "default";
48
47
  var resolvedVariant = useDataBinding(variant) || "base";
49
- var handleClick = useActionCallback(action, id);
48
+ var dispatch = useA2UIAction();
49
+ var handleClick = useCallback(function () {
50
+ if (action) {
51
+ dispatch(action, id);
52
+ }
53
+ }, [dispatch, action, id]);
50
54
  var finalTheme = primary ? "primary" : resolvedTheme;
51
55
  var renderContent = function renderContent() {
52
56
  if (resolvedChildren && resolvedChildren.length > 0) {
@@ -57,7 +61,7 @@ var A2UIButton = function A2UIButton(_ref) {
57
61
  });
58
62
  });
59
63
  }
60
- return resolvedLabel;
64
+ return resolvedText;
61
65
  };
62
66
  return /* @__PURE__ */React__default.createElement(Button, {
63
67
  className: className,