@tdesign-react/chat 1.0.2-alpha.12 → 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 (122) 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.d.ts +0 -1
  42. package/es/chat-engine/components/index.js +1 -44
  43. package/es/chat-engine/components/index.js.map +1 -1
  44. package/es/chat-engine/components/provider/agent-state.js +1 -1
  45. package/es/chat-engine/components/toolcall/index.js +1 -1
  46. package/es/chat-engine/components/toolcall/registry.js +1 -1
  47. package/es/chat-engine/components/toolcall/render.js +1 -1
  48. package/es/chat-engine/components/toolcall/types.js +1 -1
  49. package/es/chat-engine/core/a2ui/index.js +1 -1
  50. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +1 -1
  51. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +1 -1
  52. package/es/chat-engine/core/a2ui/processor/DataStore.js +1 -1
  53. package/es/chat-engine/core/a2ui/processor/PathResolver.js +1 -1
  54. package/es/chat-engine/core/a2ui/types/index.js +1 -1
  55. package/es/chat-engine/core/a2ui/types/types.d.ts +10 -9
  56. package/es/chat-engine/core/a2ui/types/types.js +1 -1
  57. package/es/chat-engine/core/a2ui/types/types.js.map +1 -1
  58. package/es/chat-engine/core/a2ui/utils/binding.js +1 -1
  59. package/es/chat-engine/core/a2ui/utils/index.js +1 -1
  60. package/es/chat-engine/core/a2ui/utils/validation.js +1 -1
  61. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +34 -2
  62. package/es/chat-engine/core/adapters/agui/event-mapper.js +69 -20
  63. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  64. package/es/chat-engine/core/adapters/agui/events.js +1 -1
  65. package/es/chat-engine/core/adapters/agui/index.d.ts +1 -1
  66. package/es/chat-engine/core/adapters/agui/index.js +2 -2
  67. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  68. package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
  69. package/es/chat-engine/core/adapters/agui/types.js +1 -1
  70. package/es/chat-engine/core/adapters/agui/utils.d.ts +2 -1
  71. package/es/chat-engine/core/adapters/agui/utils.js +10 -2
  72. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  73. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  74. package/es/chat-engine/core/event-bus/index.js +1 -1
  75. package/es/chat-engine/core/event-bus/types.js +1 -1
  76. package/es/chat-engine/core/index.js +2 -2
  77. package/es/chat-engine/core/index.js.map +1 -1
  78. package/es/chat-engine/core/processor/index.js +1 -1
  79. package/es/chat-engine/core/server/batch-client.js +1 -1
  80. package/es/chat-engine/core/server/connection-manager.js +1 -1
  81. package/es/chat-engine/core/server/errors.js +1 -1
  82. package/es/chat-engine/core/server/index.js +1 -1
  83. package/es/chat-engine/core/server/llm-service.js +1 -1
  84. package/es/chat-engine/core/server/sse-client.js +1 -1
  85. package/es/chat-engine/core/server/sse-parser.js +1 -1
  86. package/es/chat-engine/core/server/types.js +1 -1
  87. package/es/chat-engine/core/store/message.js +2 -2
  88. package/es/chat-engine/core/store/message.js.map +1 -1
  89. package/es/chat-engine/core/store/model.js +1 -1
  90. package/es/chat-engine/core/store/reactiveState.js +1 -1
  91. package/es/chat-engine/core/type.js +1 -1
  92. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  93. package/es/chat-engine/core/utils/index.js +1 -1
  94. package/es/chat-engine/core/utils/logger.js +1 -1
  95. package/es/chat-engine/hooks/a2ui/A2UIContext.js +1 -1
  96. package/es/chat-engine/hooks/a2ui/index.d.ts +9 -4
  97. package/es/chat-engine/hooks/a2ui/index.js +5 -5
  98. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +1 -1
  99. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +1 -1
  100. package/es/chat-engine/hooks/a2ui/useDataBinding.js +1 -1
  101. package/es/chat-engine/hooks/index.d.ts +0 -1
  102. package/es/chat-engine/hooks/index.js +1 -9
  103. package/es/chat-engine/hooks/index.js.map +1 -1
  104. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  105. package/es/chat-engine/hooks/useAgentState.js +1 -1
  106. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  107. package/es/chat-engine/hooks/useChat.d.ts +1 -1
  108. package/es/chat-engine/hooks/useChat.js +1 -1
  109. package/es/chat-engine/hooks/useChat.js.map +1 -1
  110. package/es/chat-engine/index.js +1 -44
  111. package/es/chat-engine/index.js.map +1 -1
  112. package/es/chat-filecard/index.js +1 -1
  113. package/es/chat-loading/index.js +1 -1
  114. package/es/chat-markdown/index.js +1 -1
  115. package/es/chat-message/index.js +1 -1
  116. package/es/chat-sender/index.js +1 -1
  117. package/es/chat-thinking/index.js +1 -1
  118. package/es/chatbot/index.js +1 -1
  119. package/es/index.js +1 -44
  120. package/es/index.js.map +1 -1
  121. package/es/style/index.js +1 -1
  122. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.11
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -31,12 +31,15 @@ var AGUIEventMapper = /*#__PURE__*/function () {
31
31
  _classCallCheck(this, AGUIEventMapper);
32
32
  _defineProperty(this, "toolCallMap", {});
33
33
  _defineProperty(this, "toolCallEnded", /* @__PURE__ */new Set());
34
- _defineProperty(this, "currentActivity", null);
34
+ _defineProperty(this, "activityMap", {});
35
35
  _defineProperty(this, "reasoningContext", {
36
36
  active: false,
37
37
  currentData: [],
38
38
  currentDataIndex: 0
39
39
  });
40
+ _defineProperty(this, "currentTextMessageId", null);
41
+ _defineProperty(this, "currentTextMessageRole", null);
42
+ _defineProperty(this, "toolCallChunkStarted", /* @__PURE__ */new Set());
40
43
  }
41
44
  return _createClass(AGUIEventMapper, [{
42
45
  key: "mapEvent",
@@ -70,6 +73,7 @@ var AGUIEventMapper = /*#__PURE__*/function () {
70
73
  value: function clearToolCall(toolCallId) {
71
74
  delete this.toolCallMap[toolCallId];
72
75
  this.toolCallEnded["delete"](toolCallId);
76
+ this.toolCallChunkStarted["delete"](toolCallId);
73
77
  }
74
78
  }, {
75
79
  key: "getToolCall",
@@ -86,23 +90,42 @@ var AGUIEventMapper = /*#__PURE__*/function () {
86
90
  value: function reset() {
87
91
  this.toolCallMap = {};
88
92
  this.toolCallEnded.clear();
89
- this.currentActivity = null;
93
+ this.activityMap = {};
90
94
  this.resetReasoningContext();
95
+ this.currentTextMessageId = null;
96
+ this.currentTextMessageRole = null;
97
+ this.toolCallChunkStarted.clear();
91
98
  }
92
99
  }, {
93
100
  key: "handleTextMessageEvent",
94
101
  value: function handleTextMessageEvent(event) {
95
102
  switch (event.type) {
96
103
  case AGUIEventType.TEXT_MESSAGE_START:
104
+ this.currentTextMessageId = event.messageId || null;
97
105
  return createMarkdownContent("", "streaming", "append");
98
106
  case AGUIEventType.TEXT_MESSAGE_CHUNK:
107
+ return this.handleTextMessageChunk(event);
99
108
  case AGUIEventType.TEXT_MESSAGE_CONTENT:
109
+ return createMarkdownContent(event.delta || "", "streaming", "merge");
100
110
  case AGUIEventType.TEXT_MESSAGE_END:
101
- return createMarkdownContent(event.delta || "", event.type === AGUIEventType.TEXT_MESSAGE_END ? "complete" : "streaming", "merge");
111
+ this.currentTextMessageId = null;
112
+ return createMarkdownContent(event.delta || "", "complete", "merge");
102
113
  default:
103
114
  return null;
104
115
  }
105
116
  }
117
+ }, {
118
+ key: "handleTextMessageChunk",
119
+ value: function handleTextMessageChunk(event) {
120
+ var messageId = event.messageId || "default";
121
+ var role = (event === null || event === void 0 ? void 0 : event.role) || "assistant";
122
+ if (this.currentTextMessageId !== messageId) {
123
+ this.currentTextMessageId = messageId;
124
+ this.currentTextMessageRole = role;
125
+ return createMarkdownContent(event.delta || "", "streaming", "append", role);
126
+ }
127
+ return createMarkdownContent(event.delta || "", "streaming", "merge", this.currentTextMessageRole || role);
128
+ }
106
129
  }, {
107
130
  key: "handleThinkingEvent",
108
131
  value: function handleThinkingEvent(event) {
@@ -142,35 +165,37 @@ var AGUIEventMapper = /*#__PURE__*/function () {
142
165
  }, {
143
166
  key: "handleActivityEvent",
144
167
  value: function handleActivityEvent(event) {
168
+ var activityType = event.activityType || "unknown";
145
169
  switch (event.type) {
146
170
  case AGUIEventType.ACTIVITY_SNAPSHOT:
147
- this.currentActivity = {
148
- activityType: event.activityType,
171
+ this.activityMap[activityType] = {
172
+ activityType: activityType,
149
173
  content: event.content
150
174
  };
151
- return createActivityContent(this.currentActivity.activityType, this.currentActivity.content, "streaming", "append");
175
+ return createActivityContent(activityType, this.activityMap[activityType].content, "streaming", "append");
152
176
  case AGUIEventType.ACTIVITY_DELTA:
153
177
  {
154
- var isFirstDelta = !this.currentActivity;
178
+ var isFirstDelta = !this.activityMap[activityType];
155
179
  if (isFirstDelta) {
156
- this.currentActivity = {
157
- activityType: event.activityType || "unknown",
180
+ this.activityMap[activityType] = {
181
+ activityType: activityType,
158
182
  content: this.inferInitialContent(event.patch)
159
183
  };
160
184
  }
161
- var oldContent = this.currentActivity.content;
185
+ var currentActivity = this.activityMap[activityType];
186
+ var oldContent = currentActivity.content;
162
187
  var oldOpsCount = this.getOperationsCount(oldContent);
163
188
  var newContent = oldContent;
164
189
  if (event.patch && Array.isArray(event.patch)) {
165
190
  newContent = applyJsonPatch(oldContent, event.patch);
166
191
  }
167
- this.currentActivity.content = newContent;
192
+ currentActivity.content = newContent;
168
193
  var newOpsCount = this.getOperationsCount(newContent);
169
194
  var deltaInfo = newOpsCount > oldOpsCount ? {
170
195
  fromIndex: oldOpsCount,
171
196
  toIndex: newOpsCount
172
197
  } : void 0;
173
- return createActivityContent(this.currentActivity.activityType, this.currentActivity.content, "streaming", isFirstDelta ? "append" : "merge", deltaInfo);
198
+ return createActivityContent(activityType, currentActivity.content, "streaming", isFirstDelta ? "append" : "merge", deltaInfo);
174
199
  }
175
200
  default:
176
201
  return null;
@@ -196,7 +221,7 @@ var AGUIEventMapper = /*#__PURE__*/function () {
196
221
  if (!initialContent[rootKey]) {
197
222
  initialContent[rootKey] = [];
198
223
  }
199
- }
224
+ } else if (pathParts.length === 1) {}
200
225
  }
201
226
  }
202
227
  }
@@ -316,6 +341,7 @@ var AGUIEventMapper = /*#__PURE__*/function () {
316
341
  }, {
317
342
  key: "handleToolCallStart",
318
343
  value: function handleToolCallStart(event) {
344
+ this.toolCallChunkStarted.add(event.toolCallId);
319
345
  this.toolCallMap[event.toolCallId] = {
320
346
  eventType: "TOOL_CALL_START",
321
347
  toolCallId: event.toolCallId,
@@ -348,14 +374,37 @@ var AGUIEventMapper = /*#__PURE__*/function () {
348
374
  }, {
349
375
  key: "handleToolCallChunk",
350
376
  value: function handleToolCallChunk(event) {
351
- if (!this.toolCallMap[event.toolCallId]) return null;
352
- var currentChunk = this.toolCallMap[event.toolCallId].chunk || "";
353
- var newChunk = mergeStringContent(currentChunk, event.delta || "");
354
- this.toolCallMap[event.toolCallId] = updateToolCall(this.toolCallMap[event.toolCallId], {
377
+ var toolCallId = event.toolCallId || "auto_".concat(Date.now(), "_").concat(Math.random().toString(36).substring(2, 11));
378
+ var isFirstChunk = !this.toolCallChunkStarted.has(toolCallId) && !this.toolCallMap[toolCallId];
379
+ if (isFirstChunk) {
380
+ this.toolCallChunkStarted.add(toolCallId);
381
+ this.currentTextMessageId = null;
382
+ this.toolCallMap[toolCallId] = {
383
+ eventType: "TOOL_CALL_START",
384
+ toolCallId: toolCallId,
385
+ toolCallName: event.toolCallName || "unknown",
386
+ parentMessageId: event.parentMessageId || "",
387
+ args: event.delta || ""
388
+ };
389
+ var toolCallContent = createToolCallContent(this.toolCallMap[toolCallId], "streaming", "append");
390
+ if (this.reasoningContext.active) {
391
+ var _addToReasoningData3 = addToReasoningData(this.reasoningContext.currentData, toolCallContent),
392
+ data = _addToReasoningData3.data,
393
+ index = _addToReasoningData3.index;
394
+ this.reasoningContext.currentData = data;
395
+ this.reasoningContext.currentDataIndex = index;
396
+ return createReasoningContent(data, "streaming", "merge", false);
397
+ }
398
+ return toolCallContent;
399
+ }
400
+ if (!this.toolCallMap[toolCallId]) return null;
401
+ var currentArgs = this.toolCallMap[toolCallId].args || "";
402
+ var newArgs = mergeStringContent(currentArgs, event.delta || "");
403
+ this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], {
355
404
  eventType: "TOOL_CALL_CHUNK",
356
- chunk: newChunk
405
+ args: newArgs
357
406
  });
358
- return this.updateToolCallInContext(event.toolCallId, "streaming");
407
+ return this.updateToolCallInContext(toolCallId, "streaming");
359
408
  }
360
409
  }, {
361
410
  key: "handleToolCallResult",
@@ -1 +1 @@
1
- {"version":3,"file":"event-mapper.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/event-mapper.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type { AIMessageContent, SSEChunkData, ToolCall } from '../../type';\nimport {\n AGUIEventType,\n isActivityEvent,\n isStateEvent,\n isTextMessageEvent,\n isThinkingEvent,\n isToolCallEvent,\n} from './events';\nimport { stateManager } from './state-manager';\nimport { applyJsonPatch } from '../../utils';\nimport {\n addToReasoningData,\n createActivityContent,\n createMarkdownContent,\n createReasoningContent,\n createTextContent,\n createThinkingContent,\n createToolCallContent,\n handleCustomEvent,\n handleMessagesSnapshot,\n handleSuggestionToolCall,\n mergeStringContent,\n parseSSEData,\n updateReasoningData,\n updateToolCall,\n} from './utils';\n\n/**\n * AGUIEventMapper\n * 将AG-UI协议事件(SSEChunkData)转换为AIContentChunkUpdate\n * 支持多轮对话、增量文本、工具调用、思考、状态快照、消息快照等基础事件\n * 同时提供状态变更和步骤生命周期事件的分发机制\n */\nexport class AGUIEventMapper {\n private toolCallMap: Record<string, ToolCall> = {};\n\n private toolCallEnded: Set<string> = new Set(); // 记录已经TOOL_CALL_END的工具调用\n\n private currentActivity: {\n activityType: string;\n content: Record<string, any>;\n } | null = null;\n\n // Reasoning 上下文状态管理\n private reasoningContext: {\n active: boolean;\n currentData: AIMessageContent[];\n currentDataIndex: number;\n } = {\n active: false,\n currentData: [],\n currentDataIndex: 0,\n };\n\n /**\n * 主入口:将SSE事件转换为AIContentChunkUpdate\n *\n * @param chunk SSE数据块,其中data字段可能是字符串(需要解析)或已解析的对象\n */\n mapEvent(chunk: SSEChunkData): AIMessageContent | AIMessageContent[] | null {\n // 处理data字段,可能是字符串或已解析的对象\n const event = parseSSEData(chunk.data);\n\n if (!event?.type) return null;\n\n // 根据事件类型分发到不同的处理函数\n if (isTextMessageEvent(event.type)) {\n return this.handleTextMessageEvent(event);\n }\n\n if (isThinkingEvent(event.type)) {\n return this.handleThinkingEvent(event);\n }\n\n if (isToolCallEvent(event.type)) {\n return this.handleToolCallEvent(event);\n }\n\n if (isActivityEvent(event.type)) {\n return this.handleActivityEvent(event);\n }\n\n if (isStateEvent(event.type)) {\n return this.handleStateEvent(event);\n }\n\n // 处理其他事件类型\n return this.handleOtherEvent(event);\n }\n\n /**\n * 获取当前所有工具调用\n */\n getToolCalls(): ToolCall[] {\n return Object.values(this.toolCallMap);\n }\n\n /**\n * 清除指定工具调用\n */\n clearToolCall(toolCallId: string): void {\n delete this.toolCallMap[toolCallId];\n this.toolCallEnded.delete(toolCallId);\n }\n\n /**\n * 获取指定工具调用\n */\n getToolCall(toolCallId: string): ToolCall | undefined {\n return this.toolCallMap[toolCallId];\n }\n\n /**\n * 检查工具调用是否已结束\n */\n isToolCallEnded(toolCallId: string): boolean {\n return this.toolCallEnded.has(toolCallId);\n }\n\n reset() {\n this.toolCallMap = {};\n this.toolCallEnded.clear();\n this.currentActivity = null;\n this.resetReasoningContext();\n }\n\n /**\n * 处理文本消息事件\n */\n private handleTextMessageEvent(event: any): AIMessageContent | null {\n switch (event.type) {\n case AGUIEventType.TEXT_MESSAGE_START:\n return createMarkdownContent('', 'streaming', 'append');\n case AGUIEventType.TEXT_MESSAGE_CHUNK:\n case AGUIEventType.TEXT_MESSAGE_CONTENT:\n case AGUIEventType.TEXT_MESSAGE_END:\n return createMarkdownContent(\n event.delta || '',\n event.type === AGUIEventType.TEXT_MESSAGE_END ? 'complete' : 'streaming',\n 'merge',\n );\n default:\n return null;\n }\n }\n\n /**\n * 处理思考事件\n */\n private handleThinkingEvent(event: any): AIMessageContent | null {\n switch (event.type) {\n case AGUIEventType.THINKING_START:\n return this.handleThinkingStart();\n case AGUIEventType.THINKING_TEXT_MESSAGE_START:\n return this.handleThinkingTextStart(event);\n case AGUIEventType.THINKING_TEXT_MESSAGE_CONTENT:\n return this.handleThinkingTextContent(event);\n case AGUIEventType.THINKING_TEXT_MESSAGE_END:\n return this.handleThinkingTextEnd(event);\n case AGUIEventType.THINKING_END:\n return this.handleThinkingEnd();\n default:\n return null;\n }\n }\n\n /**\n * 处理工具调用事件\n */\n private handleToolCallEvent(event: any): AIMessageContent | null {\n switch (event.type) {\n case AGUIEventType.TOOL_CALL_START:\n return this.handleToolCallStart(event);\n case AGUIEventType.TOOL_CALL_ARGS:\n return this.handleToolCallArgs(event);\n case AGUIEventType.TOOL_CALL_CHUNK:\n return this.handleToolCallChunk(event);\n case AGUIEventType.TOOL_CALL_RESULT:\n return this.handleToolCallResult(event);\n case AGUIEventType.TOOL_CALL_END:\n return this.handleToolCallEnd(event);\n default:\n return null;\n }\n }\n\n /**\n * 处理活动事件\n * 支持增量处理:对于包含 operations/messages 数组的 content,\n * 在 delta 更新时标记新增的 operations 范围,供下游组件增量处理\n * \n * 支持两种模式:\n * 1. 标准模式:先收到 ACTIVITY_SNAPSHOT,后续 ACTIVITY_DELTA 基于 snapshot 增量更新\n * 2. 纯增量模式:没有 ACTIVITY_SNAPSHOT,直接收到 ACTIVITY_DELTA,自动初始化空内容\n */\n private handleActivityEvent(event: any): AIMessageContent | null {\n switch (event.type) {\n case AGUIEventType.ACTIVITY_SNAPSHOT:\n this.currentActivity = {\n activityType: event.activityType,\n content: event.content,\n };\n return createActivityContent(\n this.currentActivity.activityType,\n this.currentActivity.content,\n 'streaming',\n 'append',\n );\n\n case AGUIEventType.ACTIVITY_DELTA: {\n // 如果没有 snapshot,自动初始化空的 activity(纯增量模式)\n const isFirstDelta = !this.currentActivity;\n if (isFirstDelta) {\n this.currentActivity = {\n activityType: event.activityType || 'unknown',\n // 根据 patch 路径推断初始结构\n content: this.inferInitialContent(event.patch),\n };\n }\n\n // 记录旧的 operations/messages 数量(用于增量标记)\n const oldContent = this.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 this.currentActivity!.content = newContent;\n\n // 计算新增的 operations 范围\n const newOpsCount = this.getOperationsCount(newContent);\n const deltaInfo = newOpsCount > oldOpsCount \n ? { fromIndex: oldOpsCount, toIndex: newOpsCount }\n : undefined;\n\n return createActivityContent(\n this.currentActivity!.activityType,\n this.currentActivity!.content,\n 'streaming',\n // 首次 delta 使用 append 创建新内容块,后续使用 merge\n isFirstDelta ? 'append' : 'merge',\n deltaInfo,\n );\n }\n\n default:\n return null;\n }\n }\n\n /**\n * 根据 JSON Patch 路径推断初始内容结构\n * 用于纯增量模式下自动初始化\n */\n private inferInitialContent(patch: any[] | undefined): Record<string, any> {\n if (!patch || !Array.isArray(patch) || patch.length === 0) {\n return {};\n }\n\n // 分析 patch 路径,推断需要的初始结构\n const initialContent: Record<string, any> = {};\n\n for (const op of patch) {\n if (op.path) {\n // 解析路径的第一层,如 /operations/- -> operations, /messages/- -> messages\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 */\n private getOperationsCount(content: Record<string, any> | null | undefined): number {\n if (!content) return 0;\n // 支持 operations(A2UI)或 messages(通用)\n const ops = content.operations || content.messages;\n return Array.isArray(ops) ? ops.length : 0;\n }\n\n /**\n * 处理状态事件\n */\n private handleStateEvent(event: any): null {\n stateManager.handleStateEvent(event);\n return null; // 让业务层通过useStateSubscription订阅状态变化\n }\n\n /**\n * 处理其他事件\n */\n private handleOtherEvent(event: any): AIMessageContent | AIMessageContent[] | null {\n switch (event.type) {\n case AGUIEventType.MESSAGES_SNAPSHOT:\n return handleMessagesSnapshot(event.messages);\n case AGUIEventType.CUSTOM:\n return handleCustomEvent(event);\n case AGUIEventType.RUN_ERROR:\n return [createTextContent(event.message || event.error || '系统未知错误', 'error')];\n default:\n return null;\n }\n }\n\n /**\n * 处理思考开始事件\n */\n private handleThinkingStart(): AIMessageContent {\n // 激活 reasoning 上下文\n this.reasoningContext.active = true;\n this.reasoningContext.currentData = [];\n this.reasoningContext.currentDataIndex = 0;\n\n return createReasoningContent([], 'streaming', 'append', false);\n }\n\n /**\n * 处理思考文本开始事件\n */\n private handleThinkingTextStart(event: any): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:添加新的 text 内容到 reasoning.data\n const newTextContent = createTextContent('', 'streaming');\n const { data, index } = addToReasoningData(this.reasoningContext.currentData, newTextContent);\n this.reasoningContext.currentData = data;\n this.reasoningContext.currentDataIndex = index;\n\n return createReasoningContent(data, 'streaming', 'merge', false);\n }\n // 独立模式:创建独立的 thinking 内容\n return createThinkingContent({ title: event.title || '思考中...' }, 'streaming', 'append', false);\n }\n\n /**\n * 处理思考文本内容事件\n */\n private handleThinkingTextContent(event: any): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:更新最后一个 text 内容\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n const currentContent = this.reasoningContext.currentData[currentIndex];\n if (currentContent.type === 'text') {\n const currentText = currentContent.data || '';\n const newText = mergeStringContent(currentText, event.delta || '');\n const updatedContent = { ...currentContent, data: newText, status: 'streaming' };\n\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n updatedContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n }\n return null;\n }\n // 独立模式:更新独立的 thinking 内容\n return createThinkingContent({ text: event.delta }, 'streaming', 'merge', false);\n }\n\n /**\n * 处理思考文本结束事件\n */\n private handleThinkingTextEnd(event: any): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:标记最后一个 text 内容为完成\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n const currentContent = this.reasoningContext.currentData[currentIndex];\n if (currentContent.type === 'text') {\n const updatedContent = { ...currentContent, status: 'complete' };\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n updatedContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n }\n return null;\n }\n // 独立模式:完成独立的 thinking 内容\n return createThinkingContent({ title: event.title || '思考结束' }, 'complete', 'merge', true);\n }\n\n /**\n * 处理思考结束事件\n */\n private handleThinkingEnd(): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // 完成 reasoning 并重置上下文\n const finalData = [...this.reasoningContext.currentData];\n this.resetReasoningContext();\n\n return createReasoningContent(finalData, 'complete', 'merge', true);\n }\n return null;\n }\n\n /**\n * 处理工具调用开始事件\n */\n private handleToolCallStart(event: any): AIMessageContent | null {\n // 初始化工具调用\n this.toolCallMap[event.toolCallId] = {\n eventType: 'TOOL_CALL_START',\n toolCallId: event.toolCallId,\n toolCallName: event.toolCallName,\n parentMessageId: event.parentMessageId || '',\n };\n\n // 每个toocallstart都会开始一个新的内容块,使用append(添加新的工具调用,使用不同的渲染组件)\n const toolCallContent = createToolCallContent(this.toolCallMap[event.toolCallId], 'pending', 'append');\n\n if (this.reasoningContext.active) {\n // Reasoning 模式:添加 toolcall 到 reasoning.data\n const { data, index } = addToReasoningData(this.reasoningContext.currentData, toolCallContent);\n this.reasoningContext.currentData = data;\n this.reasoningContext.currentDataIndex = index;\n\n return createReasoningContent(data, 'streaming', 'merge', false);\n }\n // 独立模式:返回独立的工具调用内容块\n // 通过 type (toolcall-${toolCallName}) + strategy 来控制是否合并\n return toolCallContent;\n }\n\n /**\n * 处理工具调用参数事件\n */\n private handleToolCallArgs(event: any): AIMessageContent | null {\n if (!this.toolCallMap[event.toolCallId]) return null;\n\n const currentArgs = this.toolCallMap[event.toolCallId].args || '';\n const newArgs = mergeStringContent(currentArgs, event.delta || '');\n\n // 更新内部ToolCall对象\n this.toolCallMap[event.toolCallId] = updateToolCall(this.toolCallMap[event.toolCallId], {\n eventType: 'TOOL_CALL_ARGS',\n args: newArgs,\n });\n\n return this.updateToolCallInContext(event.toolCallId, 'streaming');\n }\n\n /**\n * 处理工具调用块事件\n */\n private handleToolCallChunk(event: any): AIMessageContent | null {\n if (!this.toolCallMap[event.toolCallId]) return null;\n\n const currentChunk = this.toolCallMap[event.toolCallId].chunk || '';\n const newChunk = mergeStringContent(currentChunk, event.delta || '');\n\n // 更新内部ToolCall对象\n this.toolCallMap[event.toolCallId] = updateToolCall(this.toolCallMap[event.toolCallId], {\n eventType: 'TOOL_CALL_CHUNK',\n chunk: newChunk,\n });\n\n return this.updateToolCallInContext(event.toolCallId, 'streaming');\n }\n\n /**\n * 处理工具调用结果事件\n */\n private handleToolCallResult(event: any): AIMessageContent | null {\n if (!this.toolCallMap[event.toolCallId]) return null;\n\n const currentResult = this.toolCallMap[event.toolCallId].result || '';\n const newResult = mergeStringContent(currentResult, event.content || '');\n\n // 更新内部ToolCall对象\n this.toolCallMap[event.toolCallId] = updateToolCall(this.toolCallMap[event.toolCallId], {\n eventType: AGUIEventType.TOOL_CALL_RESULT,\n result: newResult,\n });\n\n // 处理 suggestion 特殊情况\n const suggestionContent = handleSuggestionToolCall(this.toolCallMap[event.toolCallId]);\n if (suggestionContent) {\n if (this.reasoningContext.active) {\n // Reasoning 模式:替换最后一个 toolcall 为 suggestion\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n suggestionContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n } else {\n // 独立模式:返回 suggestion\n return suggestionContent;\n }\n }\n\n return this.updateToolCallInContext(event.toolCallId, 'complete');\n }\n\n /**\n * 处理工具调用结束事件\n */\n private handleToolCallEnd(event: any) {\n // 标记工具调用结束\n this.toolCallEnded.add(event.toolCallId);\n \n // 更新 toolCallMap 中的 eventType\n if (this.toolCallMap[event.toolCallId]) {\n this.toolCallMap[event.toolCallId] = {\n ...this.toolCallMap[event.toolCallId],\n eventType: AGUIEventType.TOOL_CALL_END,\n };\n }\n \n return this.updateToolCallInContext(event.toolCallId, 'complete');\n }\n\n /**\n * 在上下文中更新工具调用\n */\n private updateToolCallInContext(toolCallId: string, status: 'streaming' | 'complete'): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:更新 reasoning.data 中的 toolcall\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n const currentContent = this.reasoningContext.currentData[currentIndex];\n const currentType = currentContent.type;\n\n // 检查 type 是否匹配(toolcall-${toolCallName})\n if (currentType.startsWith('toolcall')) {\n const updatedContent = {\n ...currentContent,\n data: this.toolCallMap[toolCallId],\n status,\n };\n\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n updatedContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n }\n return null;\n }\n // 独立模式:返回独立的 toolcall 更新\n // 通过相同的 type (toolcall-${toolCallName}) 来实现 merge\n return createToolCallContent(this.toolCallMap[toolCallId], status, 'merge');\n }\n\n /**\n * 重置 reasoning 上下文\n */\n private resetReasoningContext(): void {\n this.reasoningContext = {\n active: false,\n currentData: [],\n currentDataIndex: 0,\n };\n }\n}\n\nexport default AGUIEventMapper;\n"],"names":["AGUIEventMapper","_classCallCheck","_defineProperty","Set","active","currentData","currentDataIndex","_createClass","key","value","mapEvent","chunk","event","parseSSEData","data","type","isTextMessageEvent","handleTextMessageEvent","isThinkingEvent","handleThinkingEvent","isToolCallEvent","handleToolCallEvent","isActivityEvent","handleActivityEvent","isStateEvent","handleStateEvent","handleOtherEvent","getToolCalls","Object","values","toolCallMap","clearToolCall","toolCallId","toolCallEnded","getToolCall","isToolCallEnded","has","reset","clear","currentActivity","resetReasoningContext","AGUIEventType","TEXT_MESSAGE_START","createMarkdownContent","TEXT_MESSAGE_CHUNK","TEXT_MESSAGE_CONTENT","TEXT_MESSAGE_END","delta","THINKING_START","handleThinkingStart","THINKING_TEXT_MESSAGE_START","handleThinkingTextStart","THINKING_TEXT_MESSAGE_CONTENT","handleThinkingTextContent","THINKING_TEXT_MESSAGE_END","handleThinkingTextEnd","THINKING_END","handleThinkingEnd","TOOL_CALL_START","handleToolCallStart","TOOL_CALL_ARGS","handleToolCallArgs","TOOL_CALL_CHUNK","handleToolCallChunk","TOOL_CALL_RESULT","handleToolCallResult","TOOL_CALL_END","handleToolCallEnd","ACTIVITY_SNAPSHOT","activityType","content","createActivityContent","ACTIVITY_DELTA","isFirstDelta","inferInitialContent","patch","oldContent","oldOpsCount","getOperationsCount","newContent","Array","isArray","applyJsonPatch","newOpsCount","deltaInfo","fromIndex","toIndex","length","initialContent","_iterator","_createForOfIteratorHelper","_step","s","n","done","op","path","pathParts","split","filter","Boolean","rootKey","test","err","e","f","ops","operations","messages","stateManager","MESSAGES_SNAPSHOT","handleMessagesSnapshot","CUSTOM","handleCustomEvent","RUN_ERROR","createTextContent","message","error","reasoningContext","createReasoningContent","newTextContent","_addToReasoningData","addToReasoningData","index","createThinkingContent","title","currentIndex","currentContent","currentText","newText","mergeStringContent","updatedContent","status","updateReasoningData","text","_objectSpread","finalData","_toConsumableArray","eventType","toolCallName","parentMessageId","toolCallContent","createToolCallContent","_addToReasoningData2","currentArgs","args","newArgs","updateToolCall","updateToolCallInContext","currentChunk","newChunk","currentResult","result","newResult","suggestionContent","handleSuggestionToolCall","add","currentType","startsWith"],"mappings":"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"}
1
+ {"version":3,"file":"event-mapper.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/event-mapper.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type { AIMessageContent, SSEChunkData, ToolCall } from '../../type';\nimport {\n AGUIEventType,\n isActivityEvent,\n isStateEvent,\n isTextMessageEvent,\n isThinkingEvent,\n isToolCallEvent,\n} from './events';\nimport { stateManager } from './state-manager';\nimport { applyJsonPatch } from '../../utils';\nimport {\n addToReasoningData,\n createActivityContent,\n createMarkdownContent,\n createReasoningContent,\n createTextContent,\n createThinkingContent,\n createToolCallContent,\n handleCustomEvent,\n handleMessagesSnapshot,\n handleSuggestionToolCall,\n mergeStringContent,\n parseSSEData,\n updateReasoningData,\n updateToolCall,\n} from './utils';\n\n/**\n * AGUIEventMapper\n * 将AG-UI协议事件(SSEChunkData)转换为AIContentChunkUpdate\n * 支持多轮对话、增量文本、工具调用、思考、状态快照、消息快照等基础事件\n * 同时提供状态变更和步骤生命周期事件的分发机制\n * \n * 支持简化模式:\n * - TEXT_MESSAGE_CHUNK:自动补全 Start → Content → End 生命周期\n * - TOOL_CALL_CHUNK:自动补全 Start → Args → End 生命周期\n */\nexport class AGUIEventMapper {\n private toolCallMap: Record<string, ToolCall> = {};\n\n private toolCallEnded: Set<string> = new Set(); // 记录已经TOOL_CALL_END的工具调用\n\n // 改为支持多个 activityType 的独立状态\n private activityMap: Record<string, {\n activityType: string;\n content: Record<string, any>;\n }> = {};\n\n // Reasoning 上下文状态管理\n private reasoningContext: {\n active: boolean;\n currentData: AIMessageContent[];\n currentDataIndex: number;\n } = {\n active: false,\n currentData: [],\n currentDataIndex: 0,\n };\n\n // 简化模式状态跟踪\n private currentTextMessageId: string | null = null; // 当前正在处理的文本消息 ID\n\n private currentTextMessageRole: 'assistant' | 'system' | null = null; // 当前正在处理的文本消息角色\n\n private toolCallChunkStarted: Set<string> = new Set(); // 已自动触发 TOOL_CALL_START 的 toolCallId\n\n /**\n * 主入口:将SSE事件转换为AIContentChunkUpdate\n *\n * @param chunk SSE数据块,其中data字段可能是字符串(需要解析)或已解析的对象\n */\n mapEvent(chunk: SSEChunkData): AIMessageContent | AIMessageContent[] | null {\n // 处理data字段,可能是字符串或已解析的对象\n const event = parseSSEData(chunk.data);\n \n if (!event?.type) return null;\n\n // 根据事件类型分发到不同的处理函数\n if (isTextMessageEvent(event.type)) {\n return this.handleTextMessageEvent(event);\n }\n\n if (isThinkingEvent(event.type)) {\n return this.handleThinkingEvent(event);\n }\n\n if (isToolCallEvent(event.type)) {\n return this.handleToolCallEvent(event);\n }\n\n if (isActivityEvent(event.type)) {\n return this.handleActivityEvent(event);\n }\n\n if (isStateEvent(event.type)) {\n return this.handleStateEvent(event);\n }\n\n // 处理其他事件类型\n return this.handleOtherEvent(event);\n }\n\n /**\n * 获取当前所有工具调用\n */\n getToolCalls(): ToolCall[] {\n return Object.values(this.toolCallMap);\n }\n\n /**\n * 清除指定工具调用\n */\n clearToolCall(toolCallId: string): void {\n delete this.toolCallMap[toolCallId];\n this.toolCallEnded.delete(toolCallId);\n this.toolCallChunkStarted.delete(toolCallId);\n }\n\n /**\n * 获取指定工具调用\n */\n getToolCall(toolCallId: string): ToolCall | undefined {\n return this.toolCallMap[toolCallId];\n }\n\n /**\n * 检查工具调用是否已结束\n */\n isToolCallEnded(toolCallId: string): boolean {\n return this.toolCallEnded.has(toolCallId);\n }\n\n reset() {\n this.toolCallMap = {};\n this.toolCallEnded.clear();\n this.activityMap = {};\n this.resetReasoningContext();\n // 重置简化模式状态\n this.currentTextMessageId = null;\n this.currentTextMessageRole = null;\n this.toolCallChunkStarted.clear();\n }\n\n /**\n * 处理文本消息事件\n * \n * 支持两种模式:\n * 1. 标准模式:TEXT_MESSAGE_START → TEXT_MESSAGE_CONTENT → TEXT_MESSAGE_END\n * 2. 简化模式:仅发送 TEXT_MESSAGE_CHUNK,自动补全生命周期\n */\n private handleTextMessageEvent(event: any): AIMessageContent | null {\n switch (event.type) {\n case AGUIEventType.TEXT_MESSAGE_START:\n this.currentTextMessageId = event.messageId || null; // 标记当前消息 ID\n return createMarkdownContent('', 'streaming', 'append');\n\n case AGUIEventType.TEXT_MESSAGE_CHUNK:\n return this.handleTextMessageChunk(event);\n\n case AGUIEventType.TEXT_MESSAGE_CONTENT:\n return createMarkdownContent(event.delta || '', 'streaming', 'merge');\n\n case AGUIEventType.TEXT_MESSAGE_END:\n this.currentTextMessageId = null; // 重置状态\n return createMarkdownContent(event.delta || '', 'complete', 'merge');\n\n default:\n return null;\n }\n }\n\n /**\n * 处理简化模式的 TEXT_MESSAGE_CHUNK 事件\n * 自动补全 Start → Content → End 生命周期\n * \n * 关键:通过 messageId 区分不同的文本块,\n * 当 messageId 变化时创建新的内容块\n */\n private handleTextMessageChunk(event: any): AIMessageContent | null {\n const messageId = event.messageId || 'default';\n const role = event?.role || 'assistant';\n \n // 如果是新的 messageId,需要创建新的内容块\n if (this.currentTextMessageId !== messageId) {\n this.currentTextMessageId = messageId;\n this.currentTextMessageRole = role;\n // 创建新内容块,使用 append 策略,通过 ext.role 传递角色信息\n return createMarkdownContent(event.delta || '', 'streaming', 'append', role);\n }\n\n // 同一个 messageId,使用 merge 策略追加内容\n return createMarkdownContent(event.delta || '', 'streaming', 'merge', this.currentTextMessageRole || role);\n }\n\n /**\n * 处理思考事件\n */\n private handleThinkingEvent(event: any): AIMessageContent | null {\n switch (event.type) {\n case AGUIEventType.THINKING_START:\n return this.handleThinkingStart();\n case AGUIEventType.THINKING_TEXT_MESSAGE_START:\n return this.handleThinkingTextStart(event);\n case AGUIEventType.THINKING_TEXT_MESSAGE_CONTENT:\n return this.handleThinkingTextContent(event);\n case AGUIEventType.THINKING_TEXT_MESSAGE_END:\n return this.handleThinkingTextEnd(event);\n case AGUIEventType.THINKING_END:\n return this.handleThinkingEnd();\n default:\n return null;\n }\n }\n\n /**\n * 处理工具调用事件\n * \n * 支持两种模式:\n * 1. 标准模式:TOOL_CALL_START → TOOL_CALL_ARGS → TOOL_CALL_END\n * 2. 简化模式:仅发送 TOOL_CALL_CHUNK,自动补全生命周期\n */\n private handleToolCallEvent(event: any): AIMessageContent | null {\n switch (event.type) {\n case AGUIEventType.TOOL_CALL_START:\n return this.handleToolCallStart(event);\n case AGUIEventType.TOOL_CALL_ARGS:\n return this.handleToolCallArgs(event);\n case AGUIEventType.TOOL_CALL_CHUNK:\n return this.handleToolCallChunk(event);\n case AGUIEventType.TOOL_CALL_RESULT:\n return this.handleToolCallResult(event);\n case AGUIEventType.TOOL_CALL_END:\n return this.handleToolCallEnd(event);\n default:\n return null;\n }\n }\n\n /**\n * 处理活动事件\n * 支持增量处理:对于包含 operations/messages 数组的 content,\n * 在 delta 更新时标记新增的 operations 范围,供下游组件增量处理\n * \n * 支持两种模式:\n * 1. 标准模式:先收到 ACTIVITY_SNAPSHOT,后续 ACTIVITY_DELTA 基于 snapshot 增量更新\n * 2. 纯增量模式:没有 ACTIVITY_SNAPSHOT,直接收到 ACTIVITY_DELTA,自动初始化空内容\n * \n * 注意:不同 activityType 的活动是独立管理的,互不影响\n */\n private handleActivityEvent(event: any): AIMessageContent | null {\n const activityType = event.activityType || 'unknown';\n\n switch (event.type) {\n case AGUIEventType.ACTIVITY_SNAPSHOT:\n this.activityMap[activityType] = {\n activityType,\n content: event.content,\n };\n return createActivityContent(\n activityType,\n this.activityMap[activityType].content,\n 'streaming',\n 'append',\n );\n\n case AGUIEventType.ACTIVITY_DELTA: {\n // 检查该 activityType 是否已存在\n const isFirstDelta = !this.activityMap[activityType];\n \n // 如果没有 snapshot,自动初始化空的 activity(纯增量模式)\n if (isFirstDelta) {\n this.activityMap[activityType] = {\n activityType,\n // 根据 patch 路径推断初始结构\n content: this.inferInitialContent(event.patch),\n };\n }\n\n const currentActivity = this.activityMap[activityType];\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 currentActivity.content = newContent;\n\n // 计算新增的 operations 范围\n const newOpsCount = this.getOperationsCount(newContent);\n const deltaInfo = newOpsCount > oldOpsCount \n ? { fromIndex: oldOpsCount, toIndex: newOpsCount }\n : undefined;\n\n return createActivityContent(\n activityType,\n currentActivity.content,\n 'streaming',\n // 首次 delta 使用 append 创建新内容块,后续使用 merge\n isFirstDelta ? 'append' : 'merge',\n deltaInfo,\n );\n }\n\n default:\n return null;\n }\n }\n\n /**\n * 根据 JSON Patch 路径推断初始内容结构\n * 用于纯增量模式下自动初始化\n */\n private inferInitialContent(patch: any[] | undefined): Record<string, any> {\n if (!patch || !Array.isArray(patch) || patch.length === 0) {\n return {};\n }\n\n // 分析 patch 路径,推断需要的初始结构\n const initialContent: Record<string, any> = {};\n\n for (const op of patch) {\n if (op.path) {\n // 解析路径的第一层,如 /operations/- -> operations, /messages/- -> messages\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 } else if (pathParts.length === 1) {\n // 对于直接的属性路径(如 /node, /interrupt),不需要预初始化\n // JSON Patch 的 add 操作会自动创建属性\n // 这里保持空对象,让 applyJsonPatch 处理\n }\n }\n }\n }\n\n return initialContent;\n }\n\n /**\n * 获取 content 中的 operations/messages 数量\n * 用于增量标记\n */\n private getOperationsCount(content: Record<string, any> | null | undefined): number {\n if (!content) return 0;\n // 支持 operations(A2UI)或 messages(通用)\n const ops = content.operations || content.messages;\n return Array.isArray(ops) ? ops.length : 0;\n }\n\n /**\n * 处理状态事件\n */\n private handleStateEvent(event: any): null {\n stateManager.handleStateEvent(event);\n return null; // 让业务层通过useStateSubscription订阅状态变化\n }\n\n /**\n * 处理其他事件\n */\n private handleOtherEvent(event: any): AIMessageContent | AIMessageContent[] | null {\n switch (event.type) {\n case AGUIEventType.MESSAGES_SNAPSHOT:\n return handleMessagesSnapshot(event.messages);\n case AGUIEventType.CUSTOM:\n return handleCustomEvent(event);\n case AGUIEventType.RUN_ERROR:\n return [createTextContent(event.message || event.error || '系统未知错误', 'error')];\n default:\n return null;\n }\n }\n\n /**\n * 处理思考开始事件\n */\n private handleThinkingStart(): AIMessageContent {\n // 激活 reasoning 上下文\n this.reasoningContext.active = true;\n this.reasoningContext.currentData = [];\n this.reasoningContext.currentDataIndex = 0;\n\n return createReasoningContent([], 'streaming', 'append', false);\n }\n\n /**\n * 处理思考文本开始事件\n */\n private handleThinkingTextStart(event: any): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:添加新的 text 内容到 reasoning.data\n const newTextContent = createTextContent('', 'streaming');\n const { data, index } = addToReasoningData(this.reasoningContext.currentData, newTextContent);\n this.reasoningContext.currentData = data;\n this.reasoningContext.currentDataIndex = index;\n\n return createReasoningContent(data, 'streaming', 'merge', false);\n }\n // 独立模式:创建独立的 thinking 内容\n return createThinkingContent({ title: event.title || '思考中...' }, 'streaming', 'append', false);\n }\n\n /**\n * 处理思考文本内容事件\n */\n private handleThinkingTextContent(event: any): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:更新最后一个 text 内容\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n const currentContent = this.reasoningContext.currentData[currentIndex];\n if (currentContent.type === 'text') {\n const currentText = currentContent.data || '';\n const newText = mergeStringContent(currentText, event.delta || '');\n const updatedContent = { ...currentContent, data: newText, status: 'streaming' };\n\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n updatedContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n }\n return null;\n }\n // 独立模式:更新独立的 thinking 内容\n return createThinkingContent({ text: event.delta }, 'streaming', 'merge', false);\n }\n\n /**\n * 处理思考文本结束事件\n */\n private handleThinkingTextEnd(event: any): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:标记最后一个 text 内容为完成\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n const currentContent = this.reasoningContext.currentData[currentIndex];\n if (currentContent.type === 'text') {\n const updatedContent = { ...currentContent, status: 'complete' };\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n updatedContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n }\n return null;\n }\n // 独立模式:完成独立的 thinking 内容\n return createThinkingContent({ title: event.title || '思考结束' }, 'complete', 'merge', true);\n }\n\n /**\n * 处理思考结束事件\n */\n private handleThinkingEnd(): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // 完成 reasoning 并重置上下文\n const finalData = [...this.reasoningContext.currentData];\n this.resetReasoningContext();\n\n return createReasoningContent(finalData, 'complete', 'merge', true);\n }\n return null;\n }\n\n /**\n * 处理工具调用开始事件\n */\n private handleToolCallStart(event: any): AIMessageContent | null {\n // 标记已显式开始(防止后续 chunk 重复触发 start)\n this.toolCallChunkStarted.add(event.toolCallId);\n \n // 初始化工具调用\n this.toolCallMap[event.toolCallId] = {\n eventType: 'TOOL_CALL_START',\n toolCallId: event.toolCallId,\n toolCallName: event.toolCallName,\n parentMessageId: event.parentMessageId || '',\n };\n\n // 每个toocallstart都会开始一个新的内容块,使用append(添加新的工具调用,使用不同的渲染组件)\n const toolCallContent = createToolCallContent(this.toolCallMap[event.toolCallId], 'pending', 'append');\n\n if (this.reasoningContext.active) {\n // Reasoning 模式:添加 toolcall 到 reasoning.data\n const { data, index } = addToReasoningData(this.reasoningContext.currentData, toolCallContent);\n this.reasoningContext.currentData = data;\n this.reasoningContext.currentDataIndex = index;\n\n return createReasoningContent(data, 'streaming', 'merge', false);\n }\n // 独立模式:返回独立的工具调用内容块\n // 通过 type (toolcall-${toolCallName}) + strategy 来控制是否合并\n return toolCallContent;\n }\n\n /**\n * 处理工具调用参数事件\n */\n private handleToolCallArgs(event: any): AIMessageContent | null {\n if (!this.toolCallMap[event.toolCallId]) return null;\n\n const currentArgs = this.toolCallMap[event.toolCallId].args || '';\n const newArgs = mergeStringContent(currentArgs, event.delta || '');\n\n // 更新内部ToolCall对象\n this.toolCallMap[event.toolCallId] = updateToolCall(this.toolCallMap[event.toolCallId], {\n eventType: 'TOOL_CALL_ARGS',\n args: newArgs,\n });\n\n return this.updateToolCallInContext(event.toolCallId, 'streaming');\n }\n\n /**\n * 处理简化模式的 TOOL_CALL_CHUNK 事件\n * 自动补全 Start → Args → End 生命周期\n * \n * TOOL_CALL_CHUNK 事件结构:\n * - toolCallId: 工具调用ID(可选,首次时自动生成)\n * - toolCallName: 工具名称(首次必需)\n * - delta: 参数增量内容\n * - parentMessageId: 父消息ID(可选)\n */\n private handleToolCallChunk(event: any): AIMessageContent | null {\n // 生成或使用 toolCallId\n const toolCallId = event.toolCallId || `auto_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;\n \n // 检查是否是该 toolCallId 的第一个 chunk\n const isFirstChunk = !this.toolCallChunkStarted.has(toolCallId) && !this.toolCallMap[toolCallId];\n \n if (isFirstChunk) {\n // 自动触发 TOOL_CALL_START 逻辑\n this.toolCallChunkStarted.add(toolCallId);\n \n // 重置当前文本消息 ID,确保后续文本消息创建新内容块\n this.currentTextMessageId = null;\n \n // 初始化工具调用\n this.toolCallMap[toolCallId] = {\n eventType: 'TOOL_CALL_START',\n toolCallId,\n toolCallName: event.toolCallName || 'unknown',\n parentMessageId: event.parentMessageId || '',\n args: event.delta || '', // 第一个 chunk 的 delta 作为初始 args\n };\n\n // 创建新的工具调用内容块\n const toolCallContent = createToolCallContent(this.toolCallMap[toolCallId], 'streaming', 'append');\n\n if (this.reasoningContext.active) {\n // Reasoning 模式:添加 toolcall 到 reasoning.data\n const { data, index } = addToReasoningData(this.reasoningContext.currentData, toolCallContent);\n this.reasoningContext.currentData = data;\n this.reasoningContext.currentDataIndex = index;\n\n return createReasoningContent(data, 'streaming', 'merge', false);\n }\n \n return toolCallContent;\n }\n\n // 后续 chunk:更新 args\n if (!this.toolCallMap[toolCallId]) return null;\n\n const currentArgs = this.toolCallMap[toolCallId].args || '';\n const newArgs = mergeStringContent(currentArgs, event.delta || '');\n\n // 更新内部ToolCall对象\n this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], {\n eventType: 'TOOL_CALL_CHUNK',\n args: newArgs,\n });\n\n return this.updateToolCallInContext(toolCallId, 'streaming');\n }\n\n /**\n * 处理工具调用结果事件\n */\n private handleToolCallResult(event: any): AIMessageContent | null {\n if (!this.toolCallMap[event.toolCallId]) return null;\n\n const currentResult = this.toolCallMap[event.toolCallId].result || '';\n const newResult = mergeStringContent(currentResult, event.content || '');\n\n // 更新内部ToolCall对象\n this.toolCallMap[event.toolCallId] = updateToolCall(this.toolCallMap[event.toolCallId], {\n eventType: AGUIEventType.TOOL_CALL_RESULT,\n result: newResult,\n });\n\n // 处理 suggestion 特殊情况\n const suggestionContent = handleSuggestionToolCall(this.toolCallMap[event.toolCallId]);\n if (suggestionContent) {\n if (this.reasoningContext.active) {\n // Reasoning 模式:替换最后一个 toolcall 为 suggestion\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n suggestionContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n } else {\n // 独立模式:返回 suggestion\n return suggestionContent;\n }\n }\n\n return this.updateToolCallInContext(event.toolCallId, 'complete');\n }\n\n /**\n * 处理工具调用结束事件\n */\n private handleToolCallEnd(event: any) {\n // 标记工具调用结束\n this.toolCallEnded.add(event.toolCallId);\n \n // 更新 toolCallMap 中的 eventType\n if (this.toolCallMap[event.toolCallId]) {\n this.toolCallMap[event.toolCallId] = {\n ...this.toolCallMap[event.toolCallId],\n eventType: AGUIEventType.TOOL_CALL_END,\n };\n }\n \n return this.updateToolCallInContext(event.toolCallId, 'complete');\n }\n\n /**\n * 在上下文中更新工具调用\n */\n private updateToolCallInContext(toolCallId: string, status: 'streaming' | 'complete'): AIMessageContent | null {\n if (this.reasoningContext.active) {\n // Reasoning 模式:更新 reasoning.data 中的 toolcall\n const currentIndex = this.reasoningContext.currentDataIndex;\n if (currentIndex >= 0 && this.reasoningContext.currentData[currentIndex]) {\n const currentContent = this.reasoningContext.currentData[currentIndex];\n const currentType = currentContent.type;\n\n // 检查 type 是否匹配(toolcall-${toolCallName})\n if (currentType.startsWith('toolcall')) {\n const updatedContent = {\n ...currentContent,\n data: this.toolCallMap[toolCallId],\n status,\n };\n\n this.reasoningContext.currentData = updateReasoningData(\n this.reasoningContext.currentData,\n currentIndex,\n updatedContent,\n );\n\n return createReasoningContent(this.reasoningContext.currentData, 'streaming', 'merge', false);\n }\n }\n return null;\n }\n // 独立模式:返回独立的 toolcall 更新\n // 通过相同的 type (toolcall-${toolCallName}) 来实现 merge\n return createToolCallContent(this.toolCallMap[toolCallId], status, 'merge');\n }\n\n /**\n * 重置 reasoning 上下文\n */\n private resetReasoningContext(): void {\n this.reasoningContext = {\n active: false,\n currentData: [],\n currentDataIndex: 0,\n };\n }\n}\n\nexport default AGUIEventMapper;\n"],"names":["AGUIEventMapper","_classCallCheck","_defineProperty","Set","active","currentData","currentDataIndex","_createClass","key","value","mapEvent","chunk","event","parseSSEData","data","type","isTextMessageEvent","handleTextMessageEvent","isThinkingEvent","handleThinkingEvent","isToolCallEvent","handleToolCallEvent","isActivityEvent","handleActivityEvent","isStateEvent","handleStateEvent","handleOtherEvent","getToolCalls","Object","values","toolCallMap","clearToolCall","toolCallId","toolCallEnded","toolCallChunkStarted","getToolCall","isToolCallEnded","has","reset","clear","activityMap","resetReasoningContext","currentTextMessageId","currentTextMessageRole","AGUIEventType","TEXT_MESSAGE_START","messageId","createMarkdownContent","TEXT_MESSAGE_CHUNK","handleTextMessageChunk","TEXT_MESSAGE_CONTENT","delta","TEXT_MESSAGE_END","role","THINKING_START","handleThinkingStart","THINKING_TEXT_MESSAGE_START","handleThinkingTextStart","THINKING_TEXT_MESSAGE_CONTENT","handleThinkingTextContent","THINKING_TEXT_MESSAGE_END","handleThinkingTextEnd","THINKING_END","handleThinkingEnd","TOOL_CALL_START","handleToolCallStart","TOOL_CALL_ARGS","handleToolCallArgs","TOOL_CALL_CHUNK","handleToolCallChunk","TOOL_CALL_RESULT","handleToolCallResult","TOOL_CALL_END","handleToolCallEnd","activityType","ACTIVITY_SNAPSHOT","content","createActivityContent","ACTIVITY_DELTA","isFirstDelta","inferInitialContent","patch","currentActivity","oldContent","oldOpsCount","getOperationsCount","newContent","Array","isArray","applyJsonPatch","newOpsCount","deltaInfo","fromIndex","toIndex","length","initialContent","_iterator","_createForOfIteratorHelper","_step","s","n","done","op","path","pathParts","split","filter","Boolean","rootKey","test","err","e","f","ops","operations","messages","stateManager","MESSAGES_SNAPSHOT","handleMessagesSnapshot","CUSTOM","handleCustomEvent","RUN_ERROR","createTextContent","message","error","reasoningContext","createReasoningContent","newTextContent","_addToReasoningData","addToReasoningData","index","createThinkingContent","title","currentIndex","currentContent","currentText","newText","mergeStringContent","updatedContent","status","updateReasoningData","text","_objectSpread","finalData","_toConsumableArray","add","eventType","toolCallName","parentMessageId","toolCallContent","createToolCallContent","_addToReasoningData2","currentArgs","args","newArgs","updateToolCall","updateToolCallInContext","concat","Date","now","Math","random","toString","substring","isFirstChunk","_addToReasoningData3","currentResult","result","newResult","suggestionContent","handleSuggestionToolCall","currentType","startsWith"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.11
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -80,7 +80,7 @@ export declare class AGUIAdapter {
80
80
  *
81
81
  * @param event 解析后的事件对象
82
82
  * @param callbacks 回调函数
83
- * @returns 是否处理了生命周期事件
83
+ * @returns 是否处理了生命周期事件(仅RUN_STARTED和RUN_FINISHED返回true,RUN_ERROR需要继续处理生成消息内容)
84
84
  */
85
85
  private handleAGUISpecificEvents;
86
86
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.11
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -78,7 +78,7 @@ var AGUIAdapter = /*#__PURE__*/function () {
78
78
  return true;
79
79
  case AGUIEventType.RUN_ERROR:
80
80
  (_callbacks$onRunError = callbacks.onRunError) === null || _callbacks$onRunError === void 0 || _callbacks$onRunError.call(callbacks, event);
81
- return true;
81
+ return false;
82
82
  default:
83
83
  return false;
84
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type { AIMessageContent, ChatMessagesData, ChatRequestParams, SSEChunkData, ToolCall } from '../../type';\nimport { AGUIEventMapper } from './event-mapper';\nimport type { BaseEvent, RunErrorEvent, RunFinishedEvent, RunStartedEvent } from './events';\nimport { AGUIEventType } from './events';\nimport type { AGUIAssistantHistoryMessage, AGUIHistoryMessage, AGUIUserHistoryMessage, AGUIActivityMessage } from './types';\nimport { buildToolCallMap, processReasoningContent, processToolCalls } from './utils';\n\n// 重新导出类型,以便其他文件可以使用\nexport type {\n AGUIHistoryMessage,\n AGUIUserHistoryMessage,\n AGUIAssistantHistoryMessage,\n AGUIToolHistoryMessage,\n AGUIActivityMessage,\n} from './types';\n\n/**\n * AGUI协议适配器回调接口\n */\nexport interface AGUIAdapterCallbacks {\n onRunStart?: (event: RunStartedEvent) => void;\n onRunComplete?: (isAborted: boolean, params: ChatRequestParams, event?: RunFinishedEvent) => void;\n onRunError?: (error: RunErrorEvent) => void;\n}\n\n/**\n * AGUI协议适配器\n * 1. 处理AGUI协议特定的事件(RUN_STARTED, RUN_FINISHED, RUN_ERROR)\n * 2. 管理工具调用的生命周期\n * 3. 将AGUI事件映射为ChatEngine可理解的消息内容\n * 4. 转换AG-UI历史消息为ChatMessagesData格式\n */\nexport class AGUIAdapter {\n /**\n * 转换AG-UI历史消息为ChatMessagesData格式(静态方法)\n *\n * ## 设计说明\n *\n * ### AG-UI 协议中的消息角色\n * - `user`: 用户消息\n * - `assistant`: AI 回复,可包含 content、reasoningContent、toolCalls\n * - `tool`: 工具调用结果,通过 toolCallId 关联到 assistant 的 toolCalls\n * - `activity`: 独立的活动/事件消息,表示代理运行过程中的中间状态\n *\n * ### Activity 消息的处理策略\n * Activity 在 AG-UI 中是独立的 role,不是 assistant 的附属。\n * 但在 UI 展示层,我们选择将其合并到 AI 响应中,原因:\n * 1. 保持对话气泡的整洁性(一问一答模式)\n * 2. Activity 通常是 AI 处理过程的可视化,属于同一个响应周期\n * 3. 通过 activityType 区分不同类型的 Activity 渲染\n *\n * 转换策略:\n * 1. 以用户消息为边界进行分组\n * 2. 每个用户消息对应一个AI消息,包含该用户输入后的所有AI回复和工具调用结果\n * 3. 按照后端数据的原始顺序构建content数组\n * 4. 避免重复处理同一个工具调用\n * 5. 支持只有assistant消息的情况(如welcome消息)\n *\n * @param historyMessages AG-UI格式的历史消息数组\n * @returns 转换后的ChatMessagesData数组\n */\n static convertHistoryMessages(historyMessages: AGUIHistoryMessage[]): ChatMessagesData[] {\n if (!historyMessages || historyMessages.length === 0) {\n return [];\n }\n const convertedMessages: ChatMessagesData[] = [];\n const toolCallMap = buildToolCallMap(historyMessages);\n\n // 按用户消息分组处理\n let currentUserMessage: AGUIUserHistoryMessage | null = null;\n let currentGroupMessages: AGUIHistoryMessage[] = []; // 存储当前组的所有消息\n\n /**\n * 处理消息组,构建AI消息的content数组\n *\n * 处理顺序(保持原始顺序):\n * 1. assistant 的 reasoningContent(思考过程)\n * 2. assistant 的 content(文本回复)\n * 3. assistant 的 toolCalls(工具调用)\n * 4. activity 消息(活动/状态展示)\n */\n const processMessageGroup = (messages: AGUIHistoryMessage[]): AIMessageContent[] => {\n const allContent: AIMessageContent[] = [];\n\n messages.forEach((msg) => {\n if (msg.role === 'assistant') {\n const assistantMsg = msg as AGUIAssistantHistoryMessage;\n\n // 处理 reasoningContent(支持 reasoning 和 thinking 两种类型)\n if (assistantMsg.reasoningContent) {\n const reasoningContentResult = processReasoningContent(assistantMsg.reasoningContent);\n if (reasoningContentResult) {\n allContent.push(reasoningContentResult);\n }\n }\n\n // 处理普通文本内容\n if (assistantMsg.content) {\n allContent.push({\n type: 'markdown',\n data: assistantMsg.content,\n });\n }\n\n // 处理工具调用内容\n if (assistantMsg.toolCalls && assistantMsg.toolCalls.length > 0) {\n const toolCallContents = processToolCalls(assistantMsg.toolCalls, toolCallMap);\n allContent.push(...(toolCallContents as AIMessageContent[]));\n }\n } else if (msg.role === 'activity') {\n const activityMsg = msg as AGUIActivityMessage;\n \n // 检查是否是存储为 Activity 的 CUSTOM 事件\n if (activityMsg.activityType === AGUIEventType.CUSTOM) {\n // 将存储为 Activity 的 CUSTOM 事件转换为标准 custom 格式,业务层自行处理\n const customContent: any = {\n type: 'custom',\n data: {\n name: activityMsg.content?.name || '',\n value: activityMsg.content?.value,\n },\n status: 'complete',\n };\n allContent.push(customContent);\n } else {\n // 普通 Activity 处理\n // 使用 activity-${activityType} 格式的 type,与流式传输时的处理保持一致\n allContent.push({\n type: `activity-${activityMsg.activityType}`,\n data: {\n activityType: activityMsg.activityType,\n content: activityMsg.content,\n },\n status: 'complete',\n } as any);\n }\n }\n });\n\n return allContent;\n };\n\n /**\n * 创建AI消息\n */\n const createAIMessage = (messages: AGUIHistoryMessage[]): void => {\n if (messages.length > 0) {\n const allContent = processMessageGroup(messages);\n if (allContent.length > 0) {\n const firstMessageInGroup = messages[0];\n convertedMessages.push({\n id: firstMessageInGroup.id,\n role: 'assistant',\n content: allContent,\n status: 'complete',\n });\n }\n }\n };\n\n /**\n * 处理当前消息组\n */\n const flushCurrentGroup = () => {\n if (currentUserMessage) {\n // 添加用户消息\n convertedMessages.push({\n id: currentUserMessage.id,\n role: 'user',\n content: [\n {\n type: 'text',\n data: currentUserMessage.content,\n },\n ],\n datetime: new Date(currentUserMessage.timestamp || Date.now()).toISOString(),\n });\n }\n // 处理AI消息\n createAIMessage(currentGroupMessages);\n\n // 重置当前组\n currentUserMessage = null;\n currentGroupMessages = [];\n };\n\n // 按顺序处理消息\n historyMessages.forEach((msg) => {\n if (msg.role === 'user') {\n // 遇到新的用户消息,先处理之前的组\n flushCurrentGroup();\n\n // 开始新的组\n currentUserMessage = msg as AGUIUserHistoryMessage;\n } else if (msg.role === 'assistant' || msg.role === 'tool' || msg.role === 'activity') {\n // 收集助手消息、工具调用结果和活动消息到当前组\n currentGroupMessages.push(msg);\n }\n });\n\n // 处理最后一组\n flushCurrentGroup();\n return convertedMessages;\n }\n\n private aguiEventMapper: AGUIEventMapper;\n\n constructor() {\n this.aguiEventMapper = new AGUIEventMapper();\n }\n\n /**\n * 处理AGUI事件\n *\n * 处理流程:\n * 1. 解析SSE数据(AG-UI后端返回标准SSE格式,data字段是JSON字符串)\n * 2. 处理AGUI特定事件(生命周期事件)\n * 3. 使用事件映射器转换为消息内容\n * 4. 同步工具调用状态\n *\n * @param chunk SSE数据块\n * @param callbacks 回调函数\n * @returns 处理结果\n */\n handleAGUIEvent(chunk: SSEChunkData, callbacks: AGUIAdapterCallbacks): AIMessageContent | AIMessageContent[] | null {\n // AG-UI后端返回标准SSE格式,data字段是JSON字符串\n let event: BaseEvent;\n try {\n event = typeof chunk.data === 'string' ? JSON.parse(chunk.data) : chunk.data;\n } catch (error) {\n console.warn('Failed to parse AG-UI event data:', error);\n return null;\n }\n\n if (!event?.type) return null;\n\n // 处理AGUI特定事件(生命周期事件)\n const lifecycleHandled = this.handleAGUISpecificEvents(event, callbacks);\n\n // 如果是生命周期事件,不需要转换为消息内容\n if (lifecycleHandled) {\n return null;\n }\n\n // 使用事件映射器处理内容事件\n const result = this.aguiEventMapper.mapEvent(chunk);\n\n return result;\n }\n\n /**\n * 获取AGUI事件映射器\n */\n get toolcalls() {\n return this.aguiEventMapper.getToolCalls();\n }\n\n getToolcallByName(name: string): ToolCall | undefined {\n const result = this.aguiEventMapper.getToolCalls().find((call) => call.toolCallName === name);\n return result;\n }\n\n /**\n * 重置适配器状态\n */\n reset(): void {\n this.aguiEventMapper.reset();\n }\n\n /**\n * 处理AGUI特定事件\n *\n * 处理RUN_STARTED、RUN_FINISHED、RUN_ERROR等生命周期事件\n * 这些事件用于通知外部系统状态变化,并执行相应的回调\n *\n * @param event 解析后的事件对象\n * @param callbacks 回调函数\n * @returns 是否处理了生命周期事件\n */\n private handleAGUISpecificEvents(event: BaseEvent, callbacks: AGUIAdapterCallbacks): boolean {\n switch (event.type) {\n case AGUIEventType.RUN_STARTED:\n callbacks.onRunStart?.(event as RunStartedEvent);\n return true;\n case AGUIEventType.RUN_FINISHED:\n callbacks.onRunComplete?.(false, {} as ChatRequestParams, event as RunFinishedEvent);\n return true;\n case AGUIEventType.RUN_ERROR:\n callbacks.onRunError?.(event as RunErrorEvent);\n return true;\n default:\n return false; // 不是生命周期事件\n }\n }\n}\n\n/**\n * 状态订阅机制导出\n */\nexport * from './state-manager';\n\nexport * from './events';\n"],"names":["AGUIAdapter","_classCallCheck","aguiEventMapper","AGUIEventMapper","_createClass","key","value","handleAGUIEvent","chunk","callbacks","_event","event","data","JSON","parse","error","console","warn","type","lifecycleHandled","handleAGUISpecificEvents","result","mapEvent","get","getToolCalls","getToolcallByName","name","find","call","toolCallName","reset","_callbacks$onRunStart","_callbacks$onRunCompl","_callbacks$onRunError","AGUIEventType","RUN_STARTED","onRunStart","RUN_FINISHED","onRunComplete","RUN_ERROR","onRunError","convertHistoryMessages","historyMessages","length","convertedMessages","toolCallMap","buildToolCallMap","currentUserMessage","currentGroupMessages","processMessageGroup","messages","allContent","forEach","msg","role","assistantMsg","reasoningContent","reasoningContentResult","processReasoningContent","push","content","toolCalls","toolCallContents","processToolCalls","apply","_toConsumableArray","activityMsg","activityType","CUSTOM","_activityMsg$content","_activityMsg$content2","customContent","status","concat","createAIMessage","firstMessageInGroup","id","flushCurrentGroup","datetime","Date","timestamp","now","toISOString"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type { AIMessageContent, ChatMessagesData, ChatRequestParams, SSEChunkData, ToolCall } from '../../type';\nimport { AGUIEventMapper } from './event-mapper';\nimport type { BaseEvent, RunErrorEvent, RunFinishedEvent, RunStartedEvent } from './events';\nimport { AGUIEventType } from './events';\nimport type { AGUIAssistantHistoryMessage, AGUIHistoryMessage, AGUIUserHistoryMessage, AGUIActivityMessage } from './types';\nimport { buildToolCallMap, processReasoningContent, processToolCalls } from './utils';\n\n// 重新导出类型,以便其他文件可以使用\nexport type {\n AGUIHistoryMessage,\n AGUIUserHistoryMessage,\n AGUIAssistantHistoryMessage,\n AGUIToolHistoryMessage,\n AGUIActivityMessage,\n} from './types';\n\n/**\n * AGUI协议适配器回调接口\n */\nexport interface AGUIAdapterCallbacks {\n onRunStart?: (event: RunStartedEvent) => void;\n onRunComplete?: (isAborted: boolean, params: ChatRequestParams, event?: RunFinishedEvent) => void;\n onRunError?: (error: RunErrorEvent) => void;\n}\n\n/**\n * AGUI协议适配器\n * 1. 处理AGUI协议特定的事件(RUN_STARTED, RUN_FINISHED, RUN_ERROR)\n * 2. 管理工具调用的生命周期\n * 3. 将AGUI事件映射为ChatEngine可理解的消息内容\n * 4. 转换AG-UI历史消息为ChatMessagesData格式\n */\nexport class AGUIAdapter {\n /**\n * 转换AG-UI历史消息为ChatMessagesData格式(静态方法)\n *\n * ## 设计说明\n *\n * ### AG-UI 协议中的消息角色\n * - `user`: 用户消息\n * - `assistant`: AI 回复,可包含 content、reasoningContent、toolCalls\n * - `tool`: 工具调用结果,通过 toolCallId 关联到 assistant 的 toolCalls\n * - `activity`: 独立的活动/事件消息,表示代理运行过程中的中间状态\n *\n * ### Activity 消息的处理策略\n * Activity 在 AG-UI 中是独立的 role,不是 assistant 的附属。\n * 但在 UI 展示层,我们选择将其合并到 AI 响应中,原因:\n * 1. 保持对话气泡的整洁性(一问一答模式)\n * 2. Activity 通常是 AI 处理过程的可视化,属于同一个响应周期\n * 3. 通过 activityType 区分不同类型的 Activity 渲染\n *\n * 转换策略:\n * 1. 以用户消息为边界进行分组\n * 2. 每个用户消息对应一个AI消息,包含该用户输入后的所有AI回复和工具调用结果\n * 3. 按照后端数据的原始顺序构建content数组\n * 4. 避免重复处理同一个工具调用\n * 5. 支持只有assistant消息的情况(如welcome消息)\n *\n * @param historyMessages AG-UI格式的历史消息数组\n * @returns 转换后的ChatMessagesData数组\n */\n static convertHistoryMessages(historyMessages: AGUIHistoryMessage[]): ChatMessagesData[] {\n if (!historyMessages || historyMessages.length === 0) {\n return [];\n }\n const convertedMessages: ChatMessagesData[] = [];\n const toolCallMap = buildToolCallMap(historyMessages);\n\n // 按用户消息分组处理\n let currentUserMessage: AGUIUserHistoryMessage | null = null;\n let currentGroupMessages: AGUIHistoryMessage[] = []; // 存储当前组的所有消息\n\n /**\n * 处理消息组,构建AI消息的content数组\n *\n * 处理顺序(保持原始顺序):\n * 1. assistant 的 reasoningContent(思考过程)\n * 2. assistant 的 content(文本回复)\n * 3. assistant 的 toolCalls(工具调用)\n * 4. activity 消息(活动/状态展示)\n */\n const processMessageGroup = (messages: AGUIHistoryMessage[]): AIMessageContent[] => {\n const allContent: AIMessageContent[] = [];\n\n messages.forEach((msg) => {\n if (msg.role === 'assistant') {\n const assistantMsg = msg as AGUIAssistantHistoryMessage;\n\n // 处理 reasoningContent(支持 reasoning 和 thinking 两种类型)\n if (assistantMsg.reasoningContent) {\n const reasoningContentResult = processReasoningContent(assistantMsg.reasoningContent);\n if (reasoningContentResult) {\n allContent.push(reasoningContentResult);\n }\n }\n\n // 处理普通文本内容\n if (assistantMsg.content) {\n allContent.push({\n type: 'markdown',\n data: assistantMsg.content,\n });\n }\n\n // 处理工具调用内容\n if (assistantMsg.toolCalls && assistantMsg.toolCalls.length > 0) {\n const toolCallContents = processToolCalls(assistantMsg.toolCalls, toolCallMap);\n allContent.push(...(toolCallContents as AIMessageContent[]));\n }\n } else if (msg.role === 'activity') {\n const activityMsg = msg as AGUIActivityMessage;\n \n // 检查是否是存储为 Activity 的 CUSTOM 事件\n if (activityMsg.activityType === AGUIEventType.CUSTOM) {\n // 将存储为 Activity 的 CUSTOM 事件转换为标准 custom 格式,业务层自行处理\n const customContent: any = {\n type: 'custom',\n data: {\n name: activityMsg.content?.name || '',\n value: activityMsg.content?.value,\n },\n status: 'complete',\n };\n allContent.push(customContent);\n } else {\n // 普通 Activity 处理\n // 使用 activity-${activityType} 格式的 type,与流式传输时的处理保持一致\n allContent.push({\n type: `activity-${activityMsg.activityType}`,\n data: {\n activityType: activityMsg.activityType,\n content: activityMsg.content,\n },\n status: 'complete',\n } as any);\n }\n }\n });\n\n return allContent;\n };\n\n /**\n * 创建AI消息\n */\n const createAIMessage = (messages: AGUIHistoryMessage[]): void => {\n if (messages.length > 0) {\n const allContent = processMessageGroup(messages);\n if (allContent.length > 0) {\n const firstMessageInGroup = messages[0];\n convertedMessages.push({\n id: firstMessageInGroup.id,\n role: 'assistant',\n content: allContent,\n status: 'complete',\n });\n }\n }\n };\n\n /**\n * 处理当前消息组\n */\n const flushCurrentGroup = () => {\n if (currentUserMessage) {\n // 添加用户消息\n convertedMessages.push({\n id: currentUserMessage.id,\n role: 'user',\n content: [\n {\n type: 'text',\n data: currentUserMessage.content,\n },\n ],\n datetime: new Date(currentUserMessage.timestamp || Date.now()).toISOString(),\n });\n }\n // 处理AI消息\n createAIMessage(currentGroupMessages);\n\n // 重置当前组\n currentUserMessage = null;\n currentGroupMessages = [];\n };\n\n // 按顺序处理消息\n historyMessages.forEach((msg) => {\n if (msg.role === 'user') {\n // 遇到新的用户消息,先处理之前的组\n flushCurrentGroup();\n\n // 开始新的组\n currentUserMessage = msg as AGUIUserHistoryMessage;\n } else if (msg.role === 'assistant' || msg.role === 'tool' || msg.role === 'activity') {\n // 收集助手消息、工具调用结果和活动消息到当前组\n currentGroupMessages.push(msg);\n }\n });\n\n // 处理最后一组\n flushCurrentGroup();\n return convertedMessages;\n }\n\n private aguiEventMapper: AGUIEventMapper;\n\n constructor() {\n this.aguiEventMapper = new AGUIEventMapper();\n }\n\n /**\n * 处理AGUI事件\n *\n * 处理流程:\n * 1. 解析SSE数据(AG-UI后端返回标准SSE格式,data字段是JSON字符串)\n * 2. 处理AGUI特定事件(生命周期事件)\n * 3. 使用事件映射器转换为消息内容\n * 4. 同步工具调用状态\n *\n * @param chunk SSE数据块\n * @param callbacks 回调函数\n * @returns 处理结果\n */\n handleAGUIEvent(chunk: SSEChunkData, callbacks: AGUIAdapterCallbacks): AIMessageContent | AIMessageContent[] | null {\n // AG-UI后端返回标准SSE格式,data字段是JSON字符串\n let event: BaseEvent;\n try {\n event = typeof chunk.data === 'string' ? JSON.parse(chunk.data) : chunk.data;\n } catch (error) {\n console.warn('Failed to parse AG-UI event data:', error);\n return null;\n }\n\n if (!event?.type) return null;\n\n // 处理AGUI特定事件(生命周期事件)\n const lifecycleHandled = this.handleAGUISpecificEvents(event, callbacks);\n\n // 如果是生命周期事件,不需要转换为消息内容\n if (lifecycleHandled) {\n return null;\n }\n\n // 使用事件映射器处理内容事件\n const result = this.aguiEventMapper.mapEvent(chunk);\n\n return result;\n }\n\n /**\n * 获取AGUI事件映射器\n */\n get toolcalls() {\n return this.aguiEventMapper.getToolCalls();\n }\n\n getToolcallByName(name: string): ToolCall | undefined {\n const result = this.aguiEventMapper.getToolCalls().find((call) => call.toolCallName === name);\n return result;\n }\n\n /**\n * 重置适配器状态\n */\n reset(): void {\n this.aguiEventMapper.reset();\n }\n\n /**\n * 处理AGUI特定事件\n *\n * 处理RUN_STARTED、RUN_FINISHED、RUN_ERROR等生命周期事件\n * 这些事件用于通知外部系统状态变化,并执行相应的回调\n *\n * @param event 解析后的事件对象\n * @param callbacks 回调函数\n * @returns 是否处理了生命周期事件(仅RUN_STARTED和RUN_FINISHED返回true,RUN_ERROR需要继续处理生成消息内容)\n */\n private handleAGUISpecificEvents(event: BaseEvent, callbacks: AGUIAdapterCallbacks): boolean {\n switch (event.type) {\n case AGUIEventType.RUN_STARTED:\n callbacks.onRunStart?.(event as RunStartedEvent);\n return true;\n case AGUIEventType.RUN_FINISHED:\n callbacks.onRunComplete?.(false, {} as ChatRequestParams, event as RunFinishedEvent);\n return true;\n case AGUIEventType.RUN_ERROR:\n // RUN_ERROR 需要触发回调,但不能返回 true\n // 因为还需要通过 event-mapper 生成错误消息内容用于 UI 展示\n callbacks.onRunError?.(event as RunErrorEvent);\n return false; // 继续处理,让 event-mapper 生成错误消息\n default:\n return false; // 不是生命周期事件\n }\n }\n}\n\n/**\n * 状态订阅机制导出\n */\nexport * from './state-manager';\n\nexport * from './events';\n"],"names":["AGUIAdapter","_classCallCheck","aguiEventMapper","AGUIEventMapper","_createClass","key","value","handleAGUIEvent","chunk","callbacks","_event","event","data","JSON","parse","error","console","warn","type","lifecycleHandled","handleAGUISpecificEvents","result","mapEvent","get","getToolCalls","getToolcallByName","name","find","call","toolCallName","reset","_callbacks$onRunStart","_callbacks$onRunCompl","_callbacks$onRunError","AGUIEventType","RUN_STARTED","onRunStart","RUN_FINISHED","onRunComplete","RUN_ERROR","onRunError","convertHistoryMessages","historyMessages","length","convertedMessages","toolCallMap","buildToolCallMap","currentUserMessage","currentGroupMessages","processMessageGroup","messages","allContent","forEach","msg","role","assistantMsg","reasoningContent","reasoningContentResult","processReasoningContent","push","content","toolCalls","toolCallContents","processToolCalls","apply","_toConsumableArray","activityMsg","activityType","CUSTOM","_activityMsg$content","_activityMsg$content2","customContent","status","concat","createAIMessage","firstMessageInGroup","id","flushCurrentGroup","datetime","Date","timestamp","now","toISOString"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.11
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.11
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -119,9 +119,10 @@ export declare function createActivityContent(activityType: string, content: Rec
119
119
  * @param data markdown 数据
120
120
  * @param status 状态
121
121
  * @param strategy 策略
122
+ * @param role 消息角色(可选,默认 assistant),通过 ext.role 传递给业务层
122
123
  * @returns markdown 类型的 AIMessageContent
123
124
  */
124
- export declare function createMarkdownContent(data: string, status?: 'streaming' | 'complete', strategy?: 'append' | 'merge'): any;
125
+ export declare function createMarkdownContent(data: string, status?: 'streaming' | 'complete', strategy?: 'append' | 'merge', role?: 'assistant' | 'system'): any;
125
126
  /**
126
127
  * 创建 suggestion 类型的 AIMessageContent
127
128
  * @param data suggestion 数据
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.11
2
+ * tdesign v1.0.2-alpha.14
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -146,7 +146,15 @@ function createActivityContent(activityType, content) {
146
146
  function createMarkdownContent(data) {
147
147
  var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "complete";
148
148
  var strategy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "append";
149
- return createAIMessageContent("markdown", data, status, strategy);
149
+ var role = arguments.length > 3 ? arguments[3] : undefined;
150
+ var notAssistant = role && role !== "assistant";
151
+ var content = createAIMessageContent(notAssistant ? "".concat(role, "-text") : "markdown", data, status, strategy);
152
+ if (notAssistant) {
153
+ content.ext = _objectSpread(_objectSpread({}, content.ext), {}, {
154
+ role: role
155
+ });
156
+ }
157
+ return content;
150
158
  }
151
159
  function createSuggestionContent(data) {
152
160
  return createAIMessageContent("suggestion", data, "complete", "append");