@tdesign-react/chat 1.0.2-alpha.8 → 1.0.2-alpha.9

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 (227) hide show
  1. package/es/_util/reactify.d.ts +1 -2
  2. package/es/_util/reactify.js +81 -231
  3. package/es/_util/reactify.js.map +1 -1
  4. package/es/_util/useDynamicStyle.js +1 -1
  5. package/es/attachments/index.js +4 -6
  6. package/es/attachments/index.js.map +1 -1
  7. package/es/chat-actionbar/_example-js/base.d.ts +2 -0
  8. package/es/chat-actionbar/_example-js/custom.d.ts +2 -0
  9. package/es/chat-actionbar/_example-js/style.d.ts +2 -0
  10. package/es/chat-actionbar/index.js +4 -6
  11. package/es/chat-actionbar/index.js.map +1 -1
  12. package/es/chat-attachments/_example-js/base.d.ts +2 -0
  13. package/es/chat-attachments/_example-js/scroll-x.d.ts +2 -0
  14. package/es/chat-attachments/_example-js/scroll-y.d.ts +2 -0
  15. package/es/chat-attachments/index.js +3 -1
  16. package/es/chat-attachments/index.js.map +1 -1
  17. package/es/chat-engine/_example-js/agui-basic.d.ts +10 -0
  18. package/es/chat-engine/_example-js/agui-comprehensive.d.ts +2 -0
  19. package/es/chat-engine/_example-js/agui-test.d.ts +11 -0
  20. package/es/chat-engine/_example-js/agui-toolcall.d.ts +5 -0
  21. package/es/chat-engine/_example-js/agui-videoclip.d.ts +8 -0
  22. package/es/chat-engine/_example-js/agui.d.ts +1 -0
  23. package/es/chat-engine/_example-js/basic.d.ts +9 -0
  24. package/es/chat-engine/_example-js/components/HotelCard.d.ts +3 -0
  25. package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +6 -0
  26. package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +3 -0
  27. package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +3 -0
  28. package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +4 -0
  29. package/es/chat-engine/_example-js/components/Toolcall.d.ts +4 -0
  30. package/es/chat-engine/_example-js/components/WeatherCard.d.ts +3 -0
  31. package/es/chat-engine/_example-js/components/login.d.ts +1 -0
  32. package/es/chat-engine/_example-js/comprehensive.d.ts +12 -0
  33. package/es/chat-engine/_example-js/custom-content.d.ts +1 -0
  34. package/es/chat-engine/_example-js/hookComponent.d.ts +1 -0
  35. package/es/chat-engine/_example-js/initial-messages.d.ts +9 -0
  36. package/es/chat-engine/_example-js/instance-methods.d.ts +13 -0
  37. package/es/chat-engine/_example-js/travel-actions.d.ts +91 -0
  38. package/es/chat-engine/_example-js/travelToolcall.d.ts +1 -0
  39. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/index.d.ts +1 -0
  40. package/es/chat-engine/components/activity/index.js +18 -0
  41. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/index.js.map +1 -1
  42. package/es/chat-engine/components/activity/registry.d.ts +44 -0
  43. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/registry.js +32 -22
  44. package/es/chat-engine/components/activity/registry.js.map +1 -0
  45. package/es/chat-engine/components/activity/render.d.ts +11 -0
  46. package/es/chat-engine/components/activity/render.js +107 -0
  47. package/es/chat-engine/components/activity/render.js.map +1 -0
  48. package/es/chat-engine/components/activity/types.d.ts +32 -0
  49. package/es/chat-engine/components/activity/types.js +7 -0
  50. package/es/chat-engine/components/activity/types.js.map +1 -0
  51. package/es/chat-engine/components/index.d.ts +3 -0
  52. package/es/chat-engine/components/index.js +28 -0
  53. package/es/chat-engine/components/index.js.map +1 -0
  54. package/es/chat-engine/components/provider/agent-state.js +1 -1
  55. package/es/chat-engine/components/toolcall/index.js +4 -1
  56. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  57. package/es/chat-engine/components/toolcall/registry.js +1 -1
  58. package/es/chat-engine/components/toolcall/render.js +72 -25
  59. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  60. package/es/chat-engine/components/toolcall/types.js +1 -1
  61. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +109 -0
  62. package/es/chat-engine/core/adapters/agui/event-mapper.js +375 -0
  63. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -0
  64. package/es/chat-engine/core/adapters/agui/events.d.ts +1550 -0
  65. package/es/chat-engine/core/adapters/agui/events.js +199 -0
  66. package/es/chat-engine/core/adapters/agui/events.js.map +1 -0
  67. package/es/chat-engine/core/adapters/agui/index.d.ts +75 -0
  68. package/es/chat-engine/core/adapters/agui/index.js +175 -0
  69. package/es/chat-engine/core/adapters/agui/index.js.map +1 -0
  70. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +99 -0
  71. package/es/chat-engine/core/adapters/agui/state-manager.js +168 -0
  72. package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -0
  73. package/es/chat-engine/core/adapters/agui/types.d.ts +817 -0
  74. package/es/chat-engine/core/adapters/agui/types.js +95 -0
  75. package/es/chat-engine/core/adapters/agui/types.js.map +1 -0
  76. package/es/chat-engine/core/adapters/agui/utils.d.ts +197 -0
  77. package/es/chat-engine/core/adapters/agui/utils.js +311 -0
  78. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -0
  79. package/es/chat-engine/core/index.d.ts +132 -0
  80. package/es/chat-engine/core/index.js +597 -0
  81. package/es/chat-engine/core/index.js.map +1 -0
  82. package/es/chat-engine/core/processor/index.d.ts +20 -0
  83. package/es/chat-engine/core/processor/index.js +146 -0
  84. package/es/chat-engine/core/processor/index.js.map +1 -0
  85. package/es/chat-engine/core/server/batch-client.d.ts +20 -0
  86. package/es/chat-engine/core/server/batch-client.js +114 -0
  87. package/es/chat-engine/core/server/batch-client.js.map +1 -0
  88. package/es/chat-engine/core/server/connection-manager.d.ts +39 -0
  89. package/es/chat-engine/core/server/connection-manager.js +84 -0
  90. package/es/chat-engine/core/server/connection-manager.js.map +1 -0
  91. package/es/chat-engine/core/server/errors.d.ts +22 -0
  92. package/es/chat-engine/core/server/errors.js +80 -0
  93. package/es/chat-engine/core/server/errors.js.map +1 -0
  94. package/es/chat-engine/core/server/index.d.ts +11 -0
  95. package/es/chat-engine/core/server/index.js +26 -0
  96. package/es/chat-engine/core/server/index.js.map +1 -0
  97. package/es/chat-engine/core/server/llm-service.d.ts +44 -0
  98. package/es/chat-engine/core/server/llm-service.js +198 -0
  99. package/es/chat-engine/core/server/llm-service.js.map +1 -0
  100. package/es/chat-engine/core/server/sse-client.d.ts +77 -0
  101. package/es/chat-engine/core/server/sse-client.js +362 -0
  102. package/es/chat-engine/core/server/sse-client.js.map +1 -0
  103. package/es/chat-engine/core/server/sse-parser.d.ts +49 -0
  104. package/es/chat-engine/core/server/sse-parser.js +116 -0
  105. package/es/chat-engine/core/server/sse-parser.js.map +1 -0
  106. package/es/chat-engine/core/server/types.d.ts +54 -0
  107. package/es/chat-engine/core/server/types.js +28 -0
  108. package/es/chat-engine/core/server/types.js.map +1 -0
  109. package/es/chat-engine/core/store/message.d.ts +27 -0
  110. package/es/chat-engine/core/store/message.js +263 -0
  111. package/es/chat-engine/core/store/message.js.map +1 -0
  112. package/es/chat-engine/core/store/model.d.ts +8 -0
  113. package/es/chat-engine/core/store/model.js +65 -0
  114. package/es/chat-engine/core/store/model.js.map +1 -0
  115. package/es/chat-engine/core/store/reactiveState.d.ts +52 -0
  116. package/es/chat-engine/core/store/reactiveState.js +1359 -0
  117. package/es/chat-engine/core/store/reactiveState.js.map +1 -0
  118. package/es/chat-engine/core/type.d.ts +255 -0
  119. package/es/chat-engine/core/type.js +7 -0
  120. package/es/chat-engine/core/type.js.map +1 -0
  121. package/es/chat-engine/core/utils/eventEmitter.d.ts +10 -0
  122. package/es/chat-engine/core/utils/eventEmitter.js +67 -0
  123. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -0
  124. package/es/chat-engine/core/utils/index.d.ts +33 -0
  125. package/es/chat-engine/core/utils/index.js +999 -0
  126. package/es/chat-engine/core/utils/index.js.map +1 -0
  127. package/es/chat-engine/core/utils/logger.d.ts +30 -0
  128. package/es/chat-engine/core/utils/logger.js +87 -0
  129. package/es/chat-engine/core/utils/logger.js.map +1 -0
  130. package/es/chat-engine/hooks/index.d.ts +4 -0
  131. package/es/chat-engine/hooks/index.js +20 -0
  132. package/es/chat-engine/hooks/index.js.map +1 -0
  133. package/es/chat-engine/hooks/useAgentActivity.d.ts +16 -0
  134. package/es/chat-engine/hooks/useAgentActivity.js +73 -0
  135. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -0
  136. package/es/chat-engine/hooks/useAgentState.js +1 -1
  137. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  138. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  139. package/es/chat-engine/hooks/useChat.js +3 -3
  140. package/es/chat-engine/hooks/useChat.js.map +1 -1
  141. package/es/chat-engine/index.d.ts +3 -1
  142. package/es/chat-engine/index.js +37 -3
  143. package/es/chat-engine/index.js.map +1 -1
  144. package/es/chat-filecard/_example-js/base.d.ts +1 -0
  145. package/es/chat-filecard/index.js +4 -6
  146. package/es/chat-filecard/index.js.map +1 -1
  147. package/es/chat-loading/_example-js/base.d.ts +2 -0
  148. package/es/chat-loading/_example-js/text.d.ts +2 -0
  149. package/es/chat-loading/index.js +4 -6
  150. package/es/chat-loading/index.js.map +1 -1
  151. package/es/chat-markdown/_example-js/base.d.ts +1 -0
  152. package/es/chat-markdown/_example-js/custom.d.ts +2 -0
  153. package/es/chat-markdown/_example-js/event.d.ts +1 -0
  154. package/es/chat-markdown/_example-js/footnote.d.ts +2 -0
  155. package/es/chat-markdown/_example-js/plugin.d.ts +2 -0
  156. package/es/chat-markdown/_example-js/theme.d.ts +2 -0
  157. package/es/chat-markdown/index.js +4 -6
  158. package/es/chat-markdown/index.js.map +1 -1
  159. package/es/chat-message/_example-js/action.d.ts +1 -0
  160. package/es/chat-message/_example-js/base.d.ts +1 -0
  161. package/es/chat-message/_example-js/configure.d.ts +1 -0
  162. package/es/chat-message/_example-js/content.d.ts +1 -0
  163. package/es/chat-message/_example-js/custom.d.ts +1 -0
  164. package/es/chat-message/_example-js/handle-actions.d.ts +7 -0
  165. package/es/chat-message/_example-js/status.d.ts +1 -0
  166. package/es/chat-message/_example-js/think.d.ts +1 -0
  167. package/es/chat-message/index.js +4 -6
  168. package/es/chat-message/index.js.map +1 -1
  169. package/es/chat-sender/_example-js/attachment.d.ts +2 -0
  170. package/es/chat-sender/_example-js/base.d.ts +2 -0
  171. package/es/chat-sender/_example-js/custom.d.ts +2 -0
  172. package/es/chat-sender/index.js +4 -6
  173. package/es/chat-sender/index.js.map +1 -1
  174. package/es/chat-thinking/_example-js/base.d.ts +1 -0
  175. package/es/chat-thinking/_example-js/style.d.ts +1 -0
  176. package/es/chat-thinking/index.js +4 -6
  177. package/es/chat-thinking/index.js.map +1 -1
  178. package/es/chatbot/_example-js/agent.d.ts +1 -0
  179. package/es/chatbot/_example-js/agui.d.ts +13 -0
  180. package/es/chatbot/_example-js/backup/travel.d.ts +1 -0
  181. package/es/chatbot/_example-js/basic.d.ts +1 -0
  182. package/es/chatbot/_example-js/code.d.ts +1 -0
  183. package/es/chatbot/_example-js/components/ItineraryCard.d.ts +3 -0
  184. package/es/chatbot/_example-js/components/login.d.ts +1 -0
  185. package/es/chatbot/_example-js/comprehensive.d.ts +1 -0
  186. package/es/chatbot/_example-js/custom-content.d.ts +1 -0
  187. package/es/chatbot/_example-js/custom-merge.d.ts +1 -0
  188. package/es/chatbot/_example-js/custom.d.ts +1 -0
  189. package/es/chatbot/_example-js/docs.d.ts +1 -0
  190. package/es/chatbot/_example-js/image.d.ts +1 -0
  191. package/es/chatbot/_example-js/initial-messages.d.ts +9 -0
  192. package/es/chatbot/_example-js/instance-methods.d.ts +14 -0
  193. package/es/chatbot/_example-js/nostream.d.ts +1 -0
  194. package/es/chatbot/_example-js/quick-start.d.ts +9 -0
  195. package/es/chatbot/_example-js/research.d.ts +1 -0
  196. package/es/chatbot/_example-js/role-message-config.d.ts +22 -0
  197. package/es/chatbot/_example-js/sender-config.d.ts +20 -0
  198. package/es/chatbot/_example-js/service-config.d.ts +17 -0
  199. package/es/chatbot/_example-js/simple.d.ts +1 -0
  200. package/es/chatbot/_example-js/utils/messageRenderer.d.ts +5 -0
  201. package/es/chatbot/index.js +4 -6
  202. package/es/chatbot/index.js.map +1 -1
  203. package/es/index.js +37 -9
  204. package/es/index.js.map +1 -1
  205. package/es/style/index.js +1 -1
  206. package/package.json +2 -2
  207. package/es/chatbot/components/provider/agent-state.d.ts +0 -5
  208. package/es/chatbot/components/provider/agent-state.js +0 -28
  209. package/es/chatbot/components/provider/agent-state.js.map +0 -1
  210. package/es/chatbot/components/toolcall/index.js +0 -19
  211. package/es/chatbot/components/toolcall/registry.d.ts +0 -35
  212. package/es/chatbot/components/toolcall/registry.js.map +0 -1
  213. package/es/chatbot/components/toolcall/render.d.ts +0 -13
  214. package/es/chatbot/components/toolcall/render.js +0 -207
  215. package/es/chatbot/components/toolcall/render.js.map +0 -1
  216. package/es/chatbot/components/toolcall/types.d.ts +0 -57
  217. package/es/chatbot/components/toolcall/types.js +0 -15
  218. package/es/chatbot/components/toolcall/types.js.map +0 -1
  219. package/es/chatbot/hooks/useAgentState.d.ts +0 -40
  220. package/es/chatbot/hooks/useAgentState.js +0 -76
  221. package/es/chatbot/hooks/useAgentState.js.map +0 -1
  222. package/es/chatbot/hooks/useAgentToolcall.d.ts +0 -28
  223. package/es/chatbot/hooks/useAgentToolcall.js +0 -78
  224. package/es/chatbot/hooks/useAgentToolcall.js.map +0 -1
  225. package/es/chatbot/hooks/useChat.d.ts +0 -11
  226. package/es/chatbot/hooks/useChat.js +0 -66
  227. package/es/chatbot/hooks/useChat.js.map +0 -1
@@ -0,0 +1,597 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.6
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
8
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
9
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
10
+ import _createClass from '@babel/runtime/helpers/createClass';
11
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
12
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
13
+ import { AGUIAdapter } from './adapters/agui/index.js';
14
+ export { AGUIAdapter } from './adapters/agui/index.js';
15
+ import { MessageStore } from './store/message.js';
16
+ import MessageProcessor from './processor/index.js';
17
+ import './server/index.js';
18
+ import { isAIMessage } from './utils/index.js';
19
+ export { applyJsonPatch, findTargetElement, getMessageContentForCopy, isAIMessage, isActivityContent, isAttachmentContent, isImageContent, isMarkdownContent, isReasoningContent, isSearchContent, isSuggestionContent, isTextContent, isThinkingContent, isToolCallContent, isUserMessage, safeParseJSON } from './utils/index.js';
20
+ import { LLMService } from './server/llm-service.js';
21
+ export { StateManagerImpl, stateManager } from './adapters/agui/state-manager.js';
22
+ import '@babel/runtime/helpers/toConsumableArray';
23
+ import './adapters/agui/event-mapper.js';
24
+ import './adapters/agui/events.js';
25
+ import 'zod';
26
+ import './adapters/agui/types.js';
27
+ import '@babel/runtime/helpers/possibleConstructorReturn';
28
+ import '@babel/runtime/helpers/getPrototypeOf';
29
+ import '@babel/runtime/helpers/inherits';
30
+ import '@babel/runtime/helpers/wrapNativeSuper';
31
+ import './adapters/agui/utils.js';
32
+ import '@babel/runtime/helpers/typeof';
33
+ import '@babel/runtime/helpers/slicedToArray';
34
+ import '@babel/runtime/helpers/get';
35
+ import './store/reactiveState.js';
36
+ import './server/types.js';
37
+ import './server/errors.js';
38
+ import './server/connection-manager.js';
39
+ import './utils/logger.js';
40
+ import './server/sse-client.js';
41
+ import './utils/eventEmitter.js';
42
+ import './server/sse-parser.js';
43
+ import './server/batch-client.js';
44
+
45
+ var _excluded = ["prompt", "attachments"];
46
+ 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; }
47
+ 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; }
48
+ var ChatEngine = /*#__PURE__*/function () {
49
+ function ChatEngine() {
50
+ _classCallCheck(this, ChatEngine);
51
+ _defineProperty(this, "stopReceive", false);
52
+ _defineProperty(this, "aguiAdapter", null);
53
+ this.messageProcessor = new MessageProcessor();
54
+ this.messageStore = new MessageStore();
55
+ }
56
+ return _createClass(ChatEngine, [{
57
+ key: "messages",
58
+ get: function get() {
59
+ return this.messageStore.messages;
60
+ }
61
+ }, {
62
+ key: "status",
63
+ get: function get() {
64
+ var _this$messages$at;
65
+ return ((_this$messages$at = this.messages.at(-1)) === null || _this$messages$at === void 0 ? void 0 : _this$messages$at.status) || "idle";
66
+ }
67
+ }, {
68
+ key: "destroy",
69
+ value: function destroy() {
70
+ this.abortChat();
71
+ this.messageStore.clearHistory();
72
+ this.aguiAdapter = null;
73
+ }
74
+ }, {
75
+ key: "init",
76
+ value: function init(configSetter, initialMessages) {
77
+ this.messageStore.initialize(this.convertMessages(initialMessages));
78
+ this.config = typeof configSetter === "function" ? configSetter() : configSetter || {};
79
+ this.llmService = new LLMService();
80
+ if (this.config.protocol === "agui") {
81
+ this.aguiAdapter = new AGUIAdapter();
82
+ }
83
+ }
84
+ }, {
85
+ key: "sendUserMessage",
86
+ value: function () {
87
+ var _sendUserMessage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(requestParams) {
88
+ var sendRequest,
89
+ prompt,
90
+ attachments,
91
+ customParams,
92
+ hasValidPrompt,
93
+ hasValidAttachments,
94
+ userMessage,
95
+ aiMessage,
96
+ params,
97
+ _args = arguments;
98
+ return _regeneratorRuntime.wrap(function (_context) {
99
+ while (1) switch (_context.prev = _context.next) {
100
+ case 0:
101
+ sendRequest = _args.length > 1 && _args[1] !== undefined ? _args[1] : true;
102
+ prompt = requestParams.prompt, attachments = requestParams.attachments, customParams = _objectWithoutProperties(requestParams, _excluded);
103
+ hasValidPrompt = prompt && prompt.trim() !== "";
104
+ hasValidAttachments = Array.isArray(attachments) && attachments.length > 0;
105
+ if (!(!hasValidPrompt && !hasValidAttachments)) {
106
+ _context.next = 1;
107
+ break;
108
+ }
109
+ console.warn("[ChatEngine] sendUserMessage: \u5FC5\u987B\u63D0\u4F9B\u6709\u6548\u7684prompt\u6216attachments");
110
+ return _context.abrupt("return");
111
+ case 1:
112
+ userMessage = this.messageProcessor.createUserMessage(prompt, attachments);
113
+ aiMessage = this.messageProcessor.createAssistantMessage();
114
+ this.messageStore.createMultiMessages([userMessage, aiMessage]);
115
+ if (sendRequest) {
116
+ params = _objectSpread(_objectSpread({}, requestParams), {}, {
117
+ messageID: aiMessage.id
118
+ }, customParams);
119
+ this.sendRequest(params);
120
+ }
121
+ case 2:
122
+ case "end":
123
+ return _context.stop();
124
+ }
125
+ }, _callee, this);
126
+ }));
127
+ function sendUserMessage(_x) {
128
+ return _sendUserMessage.apply(this, arguments);
129
+ }
130
+ return sendUserMessage;
131
+ }()
132
+ }, {
133
+ key: "sendSystemMessage",
134
+ value: function () {
135
+ var _sendSystemMessage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(msg) {
136
+ return _regeneratorRuntime.wrap(function (_context2) {
137
+ while (1) switch (_context2.prev = _context2.next) {
138
+ case 0:
139
+ this.messageStore.createMessage({
140
+ role: "system",
141
+ content: [{
142
+ type: "text",
143
+ data: msg
144
+ }]
145
+ });
146
+ case 1:
147
+ case "end":
148
+ return _context2.stop();
149
+ }
150
+ }, _callee2, this);
151
+ }));
152
+ function sendSystemMessage(_x2) {
153
+ return _sendSystemMessage.apply(this, arguments);
154
+ }
155
+ return sendSystemMessage;
156
+ }()
157
+ }, {
158
+ key: "sendAIMessage",
159
+ value: function () {
160
+ var _sendAIMessage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
161
+ var options,
162
+ _options$params,
163
+ params,
164
+ content,
165
+ _options$sendRequest,
166
+ sendRequest,
167
+ newAIMessage,
168
+ _args3 = arguments;
169
+ return _regeneratorRuntime.wrap(function (_context3) {
170
+ while (1) switch (_context3.prev = _context3.next) {
171
+ case 0:
172
+ options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};
173
+ _options$params = options.params, params = _options$params === void 0 ? {} : _options$params, content = options.content, _options$sendRequest = options.sendRequest, sendRequest = _options$sendRequest === void 0 ? true : _options$sendRequest;
174
+ newAIMessage = this.messageProcessor.createAssistantMessage({
175
+ content: content,
176
+ status: sendRequest ? "pending" : "complete"
177
+ });
178
+ this.messageStore.createMessage(newAIMessage);
179
+ if (!sendRequest) {
180
+ _context3.next = 1;
181
+ break;
182
+ }
183
+ params.messageID = newAIMessage.id;
184
+ _context3.next = 1;
185
+ return this.sendRequest(params);
186
+ case 1:
187
+ case "end":
188
+ return _context3.stop();
189
+ }
190
+ }, _callee3, this);
191
+ }));
192
+ function sendAIMessage() {
193
+ return _sendAIMessage.apply(this, arguments);
194
+ }
195
+ return sendAIMessage;
196
+ }()
197
+ }, {
198
+ key: "abortChat",
199
+ value: function () {
200
+ var _abortChat = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
201
+ var _this$config;
202
+ var _this$messageStore$la;
203
+ return _regeneratorRuntime.wrap(function (_context4) {
204
+ while (1) switch (_context4.prev = _context4.next) {
205
+ case 0:
206
+ this.stopReceive = true;
207
+ if (!((_this$config = this.config) !== null && _this$config !== void 0 && _this$config.onAbort)) {
208
+ _context4.next = 1;
209
+ break;
210
+ }
211
+ _context4.next = 1;
212
+ return this.config.onAbort();
213
+ case 1:
214
+ try {
215
+ this.llmService.closeConnect();
216
+ if (!this.config.stream) {
217
+ if ((_this$messageStore$la = this.messageStore.lastAIMessage) !== null && _this$messageStore$la !== void 0 && _this$messageStore$la.id) {
218
+ this.messageStore.removeMessage(this.messageStore.lastAIMessage.id);
219
+ }
220
+ }
221
+ } catch (error) {
222
+ console.warn("Error during service cleanup:", error);
223
+ }
224
+ case 2:
225
+ case "end":
226
+ return _context4.stop();
227
+ }
228
+ }, _callee4, this);
229
+ }));
230
+ function abortChat() {
231
+ return _abortChat.apply(this, arguments);
232
+ }
233
+ return abortChat;
234
+ }()
235
+ }, {
236
+ key: "registerMergeStrategy",
237
+ value: function registerMergeStrategy(type, handler) {
238
+ this.messageProcessor.registerHandler(type, handler);
239
+ }
240
+ }, {
241
+ key: "setMessages",
242
+ value: function setMessages(messages) {
243
+ var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "replace";
244
+ this.messageStore.setMessages(messages, mode);
245
+ }
246
+ }, {
247
+ key: "clearMessages",
248
+ value: function clearMessages() {
249
+ this.messageStore.clearHistory();
250
+ }
251
+ }, {
252
+ key: "regenerateAIMessage",
253
+ value: function () {
254
+ var _regenerateAIMessage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
255
+ var _this$lastRequestPara, _this$lastRequestPara2;
256
+ var keepVersion,
257
+ lastAIMessage,
258
+ newAIMessage,
259
+ params,
260
+ _args5 = arguments;
261
+ return _regeneratorRuntime.wrap(function (_context5) {
262
+ while (1) switch (_context5.prev = _context5.next) {
263
+ case 0:
264
+ keepVersion = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : false;
265
+ lastAIMessage = this.messageStore.lastAIMessage;
266
+ if (lastAIMessage) {
267
+ _context5.next = 1;
268
+ break;
269
+ }
270
+ return _context5.abrupt("return");
271
+ case 1:
272
+ if (!keepVersion) {
273
+ this.messageStore.removeMessage(lastAIMessage.id);
274
+ } else {
275
+ this.messageStore.createMessageBranch(lastAIMessage.id);
276
+ }
277
+ newAIMessage = this.messageProcessor.createAssistantMessage();
278
+ this.messageStore.createMessage(newAIMessage);
279
+ params = _objectSpread(_objectSpread({}, this.lastRequestParams || {}), {}, {
280
+ messageID: newAIMessage.id,
281
+ prompt: (_this$lastRequestPara = (_this$lastRequestPara2 = this.lastRequestParams) === null || _this$lastRequestPara2 === void 0 ? void 0 : _this$lastRequestPara2.prompt) !== null && _this$lastRequestPara !== void 0 ? _this$lastRequestPara : ""
282
+ });
283
+ _context5.next = 2;
284
+ return this.sendRequest(params);
285
+ case 2:
286
+ case "end":
287
+ return _context5.stop();
288
+ }
289
+ }, _callee5, this);
290
+ }));
291
+ function regenerateAIMessage() {
292
+ return _regenerateAIMessage.apply(this, arguments);
293
+ }
294
+ return regenerateAIMessage;
295
+ }()
296
+ }, {
297
+ key: "sendRequest",
298
+ value: function () {
299
+ var _sendRequest = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(params) {
300
+ var id, _t;
301
+ return _regeneratorRuntime.wrap(function (_context6) {
302
+ while (1) switch (_context6.prev = _context6.next) {
303
+ case 0:
304
+ id = params.messageID;
305
+ _context6.prev = 1;
306
+ if (!this.config.stream) {
307
+ _context6.next = 3;
308
+ break;
309
+ }
310
+ this.stopReceive = false;
311
+ _context6.next = 2;
312
+ return this.handleStreamRequest(params);
313
+ case 2:
314
+ _context6.next = 4;
315
+ break;
316
+ case 3:
317
+ _context6.next = 4;
318
+ return this.handleBatchRequest(params);
319
+ case 4:
320
+ this.lastRequestParams = params;
321
+ _context6.next = 6;
322
+ break;
323
+ case 5:
324
+ _context6.prev = 5;
325
+ _t = _context6["catch"](1);
326
+ this.setMessageStatus(id, "error");
327
+ throw _t;
328
+ case 6:
329
+ case "end":
330
+ return _context6.stop();
331
+ }
332
+ }, _callee6, this, [[1, 5]]);
333
+ }));
334
+ function sendRequest(_x3) {
335
+ return _sendRequest.apply(this, arguments);
336
+ }
337
+ return sendRequest;
338
+ }()
339
+ }, {
340
+ key: "getToolcallByName",
341
+ value: function getToolcallByName(name) {
342
+ var _this$aguiAdapter;
343
+ return (_this$aguiAdapter = this.aguiAdapter) === null || _this$aguiAdapter === void 0 ? void 0 : _this$aguiAdapter.getToolcallByName(name);
344
+ }
345
+ }, {
346
+ key: "handleBatchRequest",
347
+ value: function () {
348
+ var _handleBatchRequest = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(params) {
349
+ var id, result;
350
+ return _regeneratorRuntime.wrap(function (_context7) {
351
+ while (1) switch (_context7.prev = _context7.next) {
352
+ case 0:
353
+ id = params.messageID;
354
+ if (id) {
355
+ _context7.next = 1;
356
+ break;
357
+ }
358
+ return _context7.abrupt("return");
359
+ case 1:
360
+ this.setMessageStatus(id, "pending");
361
+ _context7.next = 2;
362
+ return this.llmService.handleBatchRequest(params, this.config);
363
+ case 2:
364
+ result = _context7.sent;
365
+ if (result) {
366
+ this.processMessageResult(id, result);
367
+ this.setMessageStatus(id, "complete");
368
+ } else {
369
+ this.setMessageStatus(id, "error");
370
+ }
371
+ case 3:
372
+ case "end":
373
+ return _context7.stop();
374
+ }
375
+ }, _callee7, this);
376
+ }));
377
+ function handleBatchRequest(_x4) {
378
+ return _handleBatchRequest.apply(this, arguments);
379
+ }
380
+ return handleBatchRequest;
381
+ }()
382
+ }, {
383
+ key: "handleError",
384
+ value: function handleError(id, error) {
385
+ var _this$config$onError, _this$config2;
386
+ this.setMessageStatus(id, "error");
387
+ (_this$config$onError = (_this$config2 = this.config).onError) === null || _this$config$onError === void 0 || _this$config$onError.call(_this$config2, error);
388
+ }
389
+ }, {
390
+ key: "handleComplete",
391
+ value: function handleComplete(id, isAborted, params, chunk) {
392
+ var _this$config$onComple, _this$config3;
393
+ var customResult = (_this$config$onComple = (_this$config3 = this.config).onComplete) === null || _this$config$onComple === void 0 ? void 0 : _this$config$onComple.call(_this$config3, isAborted, params, chunk);
394
+ if (Array.isArray(customResult) || customResult && "status" in customResult) {
395
+ this.processMessageResult(id, customResult);
396
+ } else {
397
+ var allContentFailed = this.messageStore.messages.every(function (content) {
398
+ return content.status === "error";
399
+ });
400
+ this.setMessageStatus(id, isAborted ? "stop" : allContentFailed ? "error" : "complete");
401
+ }
402
+ }
403
+ }, {
404
+ key: "handleStreamRequest",
405
+ value: function () {
406
+ var _handleStreamRequest = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(params) {
407
+ var id, isAGUI;
408
+ return _regeneratorRuntime.wrap(function (_context8) {
409
+ while (1) switch (_context8.prev = _context8.next) {
410
+ case 0:
411
+ id = params.messageID;
412
+ isAGUI = this.config.protocol === "agui";
413
+ if (id) {
414
+ this.setMessageStatus(id, "streaming");
415
+ }
416
+ if (!(isAGUI && this.aguiAdapter)) {
417
+ _context8.next = 2;
418
+ break;
419
+ }
420
+ _context8.next = 1;
421
+ return this.handleAGUIStreamRequest(params, id);
422
+ case 1:
423
+ _context8.next = 3;
424
+ break;
425
+ case 2:
426
+ _context8.next = 3;
427
+ return this.handleDefaultStreamRequest(params, id);
428
+ case 3:
429
+ case "end":
430
+ return _context8.stop();
431
+ }
432
+ }, _callee8, this);
433
+ }));
434
+ function handleStreamRequest(_x5) {
435
+ return _handleStreamRequest.apply(this, arguments);
436
+ }
437
+ return handleStreamRequest;
438
+ }()
439
+ }, {
440
+ key: "handleAGUIStreamRequest",
441
+ value: function () {
442
+ var _handleAGUIStreamRequest = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee9(params, messageId) {
443
+ var _this = this;
444
+ return _regeneratorRuntime.wrap(function (_context9) {
445
+ while (1) switch (_context9.prev = _context9.next) {
446
+ case 0:
447
+ _context9.next = 1;
448
+ return this.llmService.handleStreamRequest(params, _objectSpread(_objectSpread({}, this.config), {}, {
449
+ onMessage: function onMessage(chunk) {
450
+ if (_this.stopReceive || !messageId) return null;
451
+ var result;
452
+ if (_this.aguiAdapter) {
453
+ result = _this.aguiAdapter.handleAGUIEvent(chunk, {
454
+ onRunStart: function onRunStart(event) {
455
+ var _this$config$onStart, _this$config4;
456
+ return (_this$config$onStart = (_this$config4 = _this.config).onStart) === null || _this$config$onStart === void 0 ? void 0 : _this$config$onStart.call(_this$config4, JSON.stringify(event));
457
+ },
458
+ onRunComplete: function onRunComplete(isAborted, params2, event) {
459
+ return _this.handleComplete(messageId, isAborted, params2, event);
460
+ },
461
+ onRunError: function onRunError(error) {
462
+ return _this.handleError(messageId, error);
463
+ }
464
+ });
465
+ }
466
+ if (_this.config.onMessage) {
467
+ var userResult = _this.config.onMessage(chunk, _this.messageStore.getMessageByID(messageId), result);
468
+ if (userResult) {
469
+ result = userResult;
470
+ }
471
+ }
472
+ _this.processMessageResult(messageId, result);
473
+ return result;
474
+ },
475
+ onError: function onError(error) {
476
+ if (messageId) _this.handleError(messageId, error);
477
+ },
478
+ onComplete: function onComplete(isAborted) {
479
+ if (isAborted && messageId) {
480
+ _this.handleComplete(messageId, isAborted, params);
481
+ }
482
+ }
483
+ }));
484
+ case 1:
485
+ case "end":
486
+ return _context9.stop();
487
+ }
488
+ }, _callee9, this);
489
+ }));
490
+ function handleAGUIStreamRequest(_x6, _x7) {
491
+ return _handleAGUIStreamRequest.apply(this, arguments);
492
+ }
493
+ return handleAGUIStreamRequest;
494
+ }()
495
+ }, {
496
+ key: "handleDefaultStreamRequest",
497
+ value: function () {
498
+ var _handleDefaultStreamRequest = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee0(params, messageId) {
499
+ var _this2 = this;
500
+ return _regeneratorRuntime.wrap(function (_context0) {
501
+ while (1) switch (_context0.prev = _context0.next) {
502
+ case 0:
503
+ _context0.next = 1;
504
+ return this.llmService.handleStreamRequest(params, _objectSpread(_objectSpread({}, this.config), {}, {
505
+ onStart: function onStart(chunk) {
506
+ var _this2$config$onStart, _this2$config;
507
+ (_this2$config$onStart = (_this2$config = _this2.config).onStart) === null || _this2$config$onStart === void 0 || _this2$config$onStart.call(_this2$config, chunk);
508
+ },
509
+ onMessage: function onMessage(chunk) {
510
+ if (_this2.stopReceive || !messageId) return null;
511
+ var result = null;
512
+ if (_this2.config.onMessage) {
513
+ result = _this2.config.onMessage(chunk, _this2.messageStore.getMessageByID(messageId));
514
+ }
515
+ _this2.processMessageResult(messageId, result);
516
+ return result;
517
+ },
518
+ onError: function onError(error) {
519
+ if (messageId) _this2.handleError(messageId, error);
520
+ },
521
+ onComplete: function onComplete(isAborted) {
522
+ if (messageId) {
523
+ _this2.handleComplete(messageId, isAborted, params);
524
+ }
525
+ }
526
+ }));
527
+ case 1:
528
+ case "end":
529
+ return _context0.stop();
530
+ }
531
+ }, _callee0, this);
532
+ }));
533
+ function handleDefaultStreamRequest(_x8, _x9) {
534
+ return _handleDefaultStreamRequest.apply(this, arguments);
535
+ }
536
+ return handleDefaultStreamRequest;
537
+ }()
538
+ }, {
539
+ key: "processMessageResult",
540
+ value: function processMessageResult(messageId, result) {
541
+ if (!result) return;
542
+ if (Array.isArray(result)) {
543
+ this.messageStore.updateMultipleContents(messageId, result);
544
+ } else {
545
+ this.processContentUpdate(messageId, result);
546
+ }
547
+ }
548
+ }, {
549
+ key: "convertMessages",
550
+ value: function convertMessages(messages) {
551
+ if (!messages) return {
552
+ messageIds: [],
553
+ messages: []
554
+ };
555
+ return {
556
+ messageIds: messages.map(function (msg) {
557
+ return msg.id;
558
+ }),
559
+ messages: messages
560
+ };
561
+ }
562
+ }, {
563
+ key: "setMessageStatus",
564
+ value: function setMessageStatus(messageId, status) {
565
+ this.messageStore.setMessageStatus(messageId, status);
566
+ }
567
+ }, {
568
+ key: "processContentUpdate",
569
+ value: function processContentUpdate(messageId, rawChunk) {
570
+ var message = this.messageStore.messages.find(function (m) {
571
+ return m.id === messageId;
572
+ });
573
+ if (!message || !isAIMessage(message) || !message.content) return;
574
+ var targetIndex;
575
+ if ((rawChunk === null || rawChunk === void 0 ? void 0 : rawChunk.strategy) === "append") {
576
+ targetIndex = -1;
577
+ } else {
578
+ targetIndex = message.content.findIndex(function (content) {
579
+ return content.type === rawChunk.type;
580
+ });
581
+ if (targetIndex !== -1) {
582
+ for (var i = message.content.length - 1; i >= 0; i--) {
583
+ if (message.content[i].type === rawChunk.type) {
584
+ targetIndex = i;
585
+ break;
586
+ }
587
+ }
588
+ }
589
+ }
590
+ var processed = this.messageProcessor.processContentUpdate(targetIndex !== -1 ? message.content[targetIndex] : void 0, rawChunk);
591
+ this.messageStore.appendContent(messageId, processed, targetIndex);
592
+ }
593
+ }]);
594
+ }();
595
+
596
+ export { ChatEngine as default };
597
+ //# sourceMappingURL=index.js.map