@tdesign-react/chat 1.1.0-alpha.11 → 1.1.0-alpha.13

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 (183) hide show
  1. package/es/_chunks/dep-58d90dfe.js +438 -0
  2. package/es/_chunks/dep-58d90dfe.js.map +1 -0
  3. package/es/_chunks/dep-771678df.js +438 -0
  4. package/es/_chunks/dep-771678df.js.map +1 -0
  5. package/es/_chunks/dep-93283bbd.js +1247 -0
  6. package/es/_chunks/dep-93283bbd.js.map +1 -0
  7. package/es/_chunks/dep-dbdfe7d6.js +169 -0
  8. package/es/_chunks/dep-dbdfe7d6.js.map +1 -0
  9. package/es/_util/reactify.js +1 -1
  10. package/es/_util/useDynamicStyle.js +1 -1
  11. package/es/attachments/index.js +1 -1
  12. package/es/chat-actionbar/index.js +1 -1
  13. package/es/chat-engine/components/activity/index.js +2 -2
  14. package/es/chat-engine/components/activity/registry.js +1 -1
  15. package/es/chat-engine/components/activity/render.js +2 -2
  16. package/es/chat-engine/components/activity/types.js +1 -1
  17. package/es/chat-engine/components/index.js +17 -4
  18. package/es/chat-engine/components/index.js.map +1 -1
  19. package/es/chat-engine/components/json-render/catalog/atomic/button.js +1 -1
  20. package/es/chat-engine/components/json-render/catalog/atomic/card.js +1 -1
  21. package/es/chat-engine/components/json-render/catalog/atomic/input.js +17 -4
  22. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
  23. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +1 -1
  24. package/es/chat-engine/components/json-render/catalog/atomic/text.js +1 -1
  25. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +1 -1
  26. package/es/chat-engine/components/json-render/contexts/actions.js +2 -2
  27. package/es/chat-engine/components/json-render/contexts/data.js +2 -2
  28. package/es/chat-engine/components/json-render/contexts/index.js +2 -2
  29. package/es/chat-engine/components/json-render/contexts/store.js +1 -1
  30. package/es/chat-engine/components/json-render/contexts/tree.js +1 -1
  31. package/es/chat-engine/components/json-render/contexts/validation.js +2 -2
  32. package/es/chat-engine/components/json-render/contexts/visibility.js +2 -2
  33. package/es/chat-engine/components/json-render/index.js +17 -4
  34. package/es/chat-engine/components/json-render/index.js.map +1 -1
  35. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +17 -4
  36. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
  37. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +17 -4
  38. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
  39. package/es/chat-engine/components/json-render/registry/config.js +17 -4
  40. package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
  41. package/es/chat-engine/components/json-render/registry/index.js +17 -4
  42. package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
  43. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +16 -3
  44. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
  45. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +3 -3
  46. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +2 -2
  47. package/es/chat-engine/components/json-render/renderer/_index.js +2 -2
  48. package/es/chat-engine/components/json-render/types.js +1 -1
  49. package/es/chat-engine/components/provider/agent-state.js +15 -2
  50. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  51. package/es/chat-engine/components/shared/ComponentErrorBoundary.js +1 -1
  52. package/es/chat-engine/components/shared/createRegistry.js +1 -1
  53. package/es/chat-engine/components/shared/index.js +1 -1
  54. package/es/chat-engine/components/shared/useRegistrationListener.js +1 -1
  55. package/es/chat-engine/components/toolcall/index.js +15 -2
  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 +15 -2
  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/a2ui/index.js +2 -1
  62. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -1
  63. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +1 -1
  64. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +1 -1
  65. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +1 -1
  66. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +1 -1
  67. package/es/chat-engine/core/adapters/a2ui/types/index.js +1 -1
  68. package/es/chat-engine/core/adapters/a2ui/types/types.js +1 -1
  69. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +2 -1631
  70. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -1
  71. package/es/chat-engine/core/adapters/a2ui/utils/index.js +2 -1
  72. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -1
  73. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +1 -1
  74. package/es/chat-engine/core/adapters/agui/ActivityManager.js +1 -1
  75. package/es/chat-engine/core/adapters/agui/StateManager.js +1 -1
  76. package/es/chat-engine/core/adapters/agui/event-mapper.js +1 -1
  77. package/es/chat-engine/core/adapters/agui/index.js +1 -1
  78. package/es/chat-engine/core/adapters/agui/types/events.js +1 -1
  79. package/es/chat-engine/core/adapters/agui/types/index.js +1 -1
  80. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  81. package/es/chat-engine/core/adapters/index.d.ts +2 -0
  82. package/es/chat-engine/core/adapters/index.js +27 -9
  83. package/es/chat-engine/core/adapters/index.js.map +1 -1
  84. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +1 -1
  85. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +1 -1
  86. package/es/chat-engine/core/adapters/json-render/engine.js +1 -1
  87. package/es/chat-engine/core/adapters/json-render/index.js +1 -1
  88. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +1 -1
  89. package/es/chat-engine/core/adapters/json-render/types/core.js +1 -1
  90. package/es/chat-engine/core/adapters/json-render/types/index.js +1 -1
  91. package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +212 -0
  92. package/es/chat-engine/core/adapters/openclaw/event-mapper.js +606 -0
  93. package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -0
  94. package/es/chat-engine/core/adapters/openclaw/index.d.ts +158 -0
  95. package/es/chat-engine/core/adapters/openclaw/index.js +460 -0
  96. package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -0
  97. package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +114 -0
  98. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +263 -0
  99. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -0
  100. package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +67 -0
  101. package/es/chat-engine/core/adapters/openclaw/types/config.js +35 -0
  102. package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -0
  103. package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +121 -0
  104. package/es/chat-engine/core/adapters/openclaw/types/events.js +71 -0
  105. package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -0
  106. package/es/chat-engine/core/adapters/openclaw/types/index.d.ts +6 -0
  107. package/es/chat-engine/core/adapters/openclaw/types/index.js +11 -0
  108. package/es/chat-engine/core/adapters/openclaw/types/index.js.map +1 -0
  109. package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +215 -0
  110. package/es/chat-engine/core/adapters/openclaw/types/messages.js +18 -0
  111. package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -0
  112. package/es/chat-engine/core/adapters/openclaw/utils.d.ts +49 -0
  113. package/es/chat-engine/core/adapters/openclaw/utils.js +109 -0
  114. package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -0
  115. package/es/chat-engine/core/adapters/shared/activity-manager.d.ts +11 -0
  116. package/es/chat-engine/core/adapters/shared/activity-manager.js +17 -0
  117. package/es/chat-engine/core/adapters/shared/activity-manager.js.map +1 -0
  118. package/es/chat-engine/core/adapters/shared/content-factory.d.ts +7 -0
  119. package/es/chat-engine/core/adapters/shared/content-factory.js +11 -0
  120. package/es/chat-engine/core/adapters/shared/content-factory.js.map +1 -0
  121. package/es/chat-engine/core/adapters/shared/index.d.ts +11 -0
  122. package/es/chat-engine/core/adapters/shared/index.js +21 -0
  123. package/es/chat-engine/core/adapters/shared/index.js.map +1 -0
  124. package/es/chat-engine/core/adapters/shared/merge-utils.d.ts +7 -0
  125. package/es/chat-engine/core/adapters/shared/merge-utils.js +11 -0
  126. package/es/chat-engine/core/adapters/shared/merge-utils.js.map +1 -0
  127. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  128. package/es/chat-engine/core/event-bus/index.js +1 -1
  129. package/es/chat-engine/core/event-bus/types.js +1 -1
  130. package/es/chat-engine/core/index.d.ts +7 -0
  131. package/es/chat-engine/core/index.js +83 -8
  132. package/es/chat-engine/core/index.js.map +1 -1
  133. package/es/chat-engine/core/processor/index.js +1 -1
  134. package/es/chat-engine/core/server/batch-client.js +1 -1
  135. package/es/chat-engine/core/server/connection-manager.js +1 -1
  136. package/es/chat-engine/core/server/errors.js +1 -1
  137. package/es/chat-engine/core/server/index.d.ts +1 -0
  138. package/es/chat-engine/core/server/index.js +22 -1
  139. package/es/chat-engine/core/server/index.js.map +1 -1
  140. package/es/chat-engine/core/server/llm-service.d.ts +5 -0
  141. package/es/chat-engine/core/server/llm-service.js +140 -13
  142. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  143. package/es/chat-engine/core/server/sse-client.js +1 -1
  144. package/es/chat-engine/core/server/sse-parser.js +1 -1
  145. package/es/chat-engine/core/server/types.js +1 -1
  146. package/es/chat-engine/core/server/websocket-client.d.ts +139 -0
  147. package/es/chat-engine/core/server/websocket-client.js +386 -0
  148. package/es/chat-engine/core/server/websocket-client.js.map +1 -0
  149. package/es/chat-engine/core/store/message.js +2 -2
  150. package/es/chat-engine/core/store/model.js +2 -2
  151. package/es/chat-engine/core/store/reactiveState.js +2 -2
  152. package/es/chat-engine/core/type.d.ts +7 -1
  153. package/es/chat-engine/core/type.js +1 -1
  154. package/es/chat-engine/core/utils/eventEmitter.d.ts +1 -0
  155. package/es/chat-engine/core/utils/eventEmitter.js +11 -1
  156. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -1
  157. package/es/chat-engine/core/utils/immutable-patch.js +1 -1
  158. package/es/chat-engine/core/utils/index.js +1 -1
  159. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  160. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  161. package/es/chat-engine/core/utils/logger.js +1 -1
  162. package/es/chat-engine/core/utils/performance.js +1 -1
  163. package/es/chat-engine/hooks/index.js +15 -2
  164. package/es/chat-engine/hooks/index.js.map +1 -1
  165. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  166. package/es/chat-engine/hooks/useAgentState.js +15 -2
  167. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  168. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  169. package/es/chat-engine/hooks/useChat.js +15 -2
  170. package/es/chat-engine/hooks/useChat.js.map +1 -1
  171. package/es/chat-engine/index.js +19 -6
  172. package/es/chat-engine/index.js.map +1 -1
  173. package/es/chat-filecard/index.js +1 -1
  174. package/es/chat-loading/index.js +1 -1
  175. package/es/chat-markdown/index.js +1 -1
  176. package/es/chat-message/index.js +1 -1
  177. package/es/chat-sender/index.js +1 -1
  178. package/es/chat-thinking/index.js +1 -1
  179. package/es/chatbot/index.js +1 -1
  180. package/es/index.js +19 -6
  181. package/es/index.js.map +1 -1
  182. package/es/style/index.js +1 -1
  183. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.11
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -12,6 +12,7 @@ import _regeneratorRuntime from '@babel/runtime/regenerator';
12
12
  import { LoggerManager } from '../utils/logger.js';
13
13
  import { BatchClient } from './batch-client.js';
14
14
  import { SSEClient } from './sse-client.js';
15
+ import { OpenClawAdapter } from '../adapters/openclaw/index.js';
15
16
  import '@babel/runtime/helpers/possibleConstructorReturn';
16
17
  import '@babel/runtime/helpers/getPrototypeOf';
17
18
  import '@babel/runtime/helpers/inherits';
@@ -21,6 +22,26 @@ import '@babel/runtime/helpers/wrapNativeSuper';
21
22
  import './connection-manager.js';
22
23
  import './sse-parser.js';
23
24
  import './types.js';
25
+ import './websocket-client.js';
26
+ import '../adapters/openclaw/event-mapper.js';
27
+ import '@babel/runtime/helpers/typeof';
28
+ import '../adapters/openclaw/types/events.js';
29
+ import '../adapters/shared/index.js';
30
+ import '../adapters/shared/content-factory.js';
31
+ import '../adapters/agui/utils.js';
32
+ import '@babel/runtime/helpers/toConsumableArray';
33
+ import '../adapters/shared/merge-utils.js';
34
+ import '../adapters/shared/activity-manager.js';
35
+ import '../adapters/agui/ActivityManager.js';
36
+ import '../utils/index.js';
37
+ import '../utils/immutable-patch.js';
38
+ import '@babel/runtime/helpers/objectWithoutProperties';
39
+ import '@babel/runtime/helpers/toArray';
40
+ import '../adapters/openclaw/rpc-handler.js';
41
+ import '../adapters/openclaw/types/config.js';
42
+ import '../adapters/openclaw/utils.js';
43
+ import '../adapters/openclaw/types/index.js';
44
+ import '../adapters/openclaw/types/messages.js';
24
45
 
25
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; }
26
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; }
@@ -29,6 +50,7 @@ var LLMService = /*#__PURE__*/function () {
29
50
  _classCallCheck(this, LLMService);
30
51
  _defineProperty(this, "sseClient", null);
31
52
  _defineProperty(this, "batchClient", null);
53
+ _defineProperty(this, "openclawAdapter", null);
32
54
  _defineProperty(this, "isDestroyed", false);
33
55
  _defineProperty(this, "logger", LoggerManager.getLogger());
34
56
  }
@@ -107,17 +129,26 @@ var LLMService = /*#__PURE__*/function () {
107
129
  }
108
130
  return _context2.abrupt("return");
109
131
  case 1:
110
- this.sseClient = new SSEClient(config.endpoint);
132
+ if (!(config.protocol === "openclaw")) {
133
+ _context2.next = 3;
134
+ break;
135
+ }
111
136
  _context2.next = 2;
112
- return (_config$onRequest2 = config.onRequest) === null || _config$onRequest2 === void 0 ? void 0 : _config$onRequest2.call(config, params);
137
+ return this.handleOpenClawStreamRequest(params, config);
113
138
  case 2:
139
+ return _context2.abrupt("return");
140
+ case 3:
141
+ this.sseClient = new SSEClient(config.endpoint);
142
+ _context2.next = 4;
143
+ return (_config$onRequest2 = config.onRequest) === null || _config$onRequest2 === void 0 ? void 0 : _config$onRequest2.call(config, params);
144
+ case 4:
114
145
  _t3 = _context2.sent;
115
146
  if (_t3) {
116
- _context2.next = 3;
147
+ _context2.next = 5;
117
148
  break;
118
149
  }
119
150
  _t3 = {};
120
- case 3:
151
+ case 5:
121
152
  req = _t3;
122
153
  this.sseClient.on("start", function (chunk) {
123
154
  var _config$onStart;
@@ -137,9 +168,9 @@ var LLMService = /*#__PURE__*/function () {
137
168
  var _config$onComplete2;
138
169
  (_config$onComplete2 = config.onComplete) === null || _config$onComplete2 === void 0 || _config$onComplete2.call(config, isAborted, req);
139
170
  });
140
- _context2.next = 4;
171
+ _context2.next = 6;
141
172
  return this.sseClient.connect(req);
142
- case 4:
173
+ case 6:
143
174
  case "end":
144
175
  return _context2.stop();
145
176
  }
@@ -150,6 +181,90 @@ var LLMService = /*#__PURE__*/function () {
150
181
  }
151
182
  return handleStreamRequest;
152
183
  }()
184
+ }, {
185
+ key: "handleOpenClawStreamRequest",
186
+ value: function () {
187
+ var _handleOpenClawStreamRequest = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(params, config) {
188
+ var _this = this;
189
+ var openclawConfig, adapterConfig, _config$onRequest3, requestParams, _config$onError5, _t4, _t5;
190
+ return _regeneratorRuntime.wrap(function (_context3) {
191
+ while (1) switch (_context3.prev = _context3.next) {
192
+ case 0:
193
+ openclawConfig = config.openclaw || {};
194
+ adapterConfig = _objectSpread({
195
+ endpoint: config.endpoint,
196
+ timeout: config.timeout,
197
+ maxRetries: config.maxRetries,
198
+ retryInterval: config.retryInterval
199
+ }, openclawConfig);
200
+ if (!this.openclawAdapter) {
201
+ this.openclawAdapter = new OpenClawAdapter(adapterConfig);
202
+ }
203
+ this.openclawAdapter.setCallbacks({
204
+ onConnected: function onConnected() {
205
+ _this.logger.info("OpenClaw connected, sending message...");
206
+ },
207
+ onStart: function onStart() {
208
+ var _config$onStart2;
209
+ (_config$onStart2 = config.onStart) === null || _config$onStart2 === void 0 || _config$onStart2.call(config, "openclaw:stream:start");
210
+ },
211
+ onMessage: function onMessage(content) {
212
+ var _config$onMessage2;
213
+ var chunk = {
214
+ event: "openclaw",
215
+ data: content
216
+ };
217
+ (_config$onMessage2 = config.onMessage) === null || _config$onMessage2 === void 0 || _config$onMessage2.call(config, chunk);
218
+ },
219
+ onComplete: function onComplete(isAborted, requestParams) {
220
+ var _config$onComplete3;
221
+ (_config$onComplete3 = config.onComplete) === null || _config$onComplete3 === void 0 || _config$onComplete3.call(config, isAborted, requestParams);
222
+ },
223
+ onError: function onError(error) {
224
+ var _config$onError4;
225
+ (_config$onError4 = config.onError) === null || _config$onError4 === void 0 || _config$onError4.call(config, error);
226
+ }
227
+ });
228
+ _context3.prev = 1;
229
+ if (this.openclawAdapter.isAuthenticated()) {
230
+ _context3.next = 2;
231
+ break;
232
+ }
233
+ _context3.next = 2;
234
+ return this.openclawAdapter.connect();
235
+ case 2:
236
+ _context3.next = 3;
237
+ return (_config$onRequest3 = config.onRequest) === null || _config$onRequest3 === void 0 ? void 0 : _config$onRequest3.call(config, params);
238
+ case 3:
239
+ _t4 = _context3.sent;
240
+ if (_t4) {
241
+ _context3.next = 4;
242
+ break;
243
+ }
244
+ _t4 = {};
245
+ case 4:
246
+ requestParams = _t4;
247
+ _context3.next = 5;
248
+ return this.openclawAdapter.sendMessage(params, requestParams);
249
+ case 5:
250
+ _context3.next = 7;
251
+ break;
252
+ case 6:
253
+ _context3.prev = 6;
254
+ _t5 = _context3["catch"](1);
255
+ (_config$onError5 = config.onError) === null || _config$onError5 === void 0 || _config$onError5.call(config, _t5);
256
+ throw _t5;
257
+ case 7:
258
+ case "end":
259
+ return _context3.stop();
260
+ }
261
+ }, _callee3, this, [[1, 6]]);
262
+ }));
263
+ function handleOpenClawStreamRequest(_x5, _x6) {
264
+ return _handleOpenClawStreamRequest.apply(this, arguments);
265
+ }
266
+ return handleOpenClawStreamRequest;
267
+ }()
153
268
  }, {
154
269
  key: "closeConnect",
155
270
  value: function closeConnect() {
@@ -161,6 +276,9 @@ var LLMService = /*#__PURE__*/function () {
161
276
  this.batchClient.abort();
162
277
  this.batchClient = null;
163
278
  }
279
+ if (this.openclawAdapter) {
280
+ this.openclawAdapter.abort();
281
+ }
164
282
  }
165
283
  }, {
166
284
  key: "getSSEStats",
@@ -175,18 +293,27 @@ var LLMService = /*#__PURE__*/function () {
175
293
  }, {
176
294
  key: "destroy",
177
295
  value: function () {
178
- var _destroy = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
179
- return _regeneratorRuntime.wrap(function (_context3) {
180
- while (1) switch (_context3.prev = _context3.next) {
296
+ var _destroy = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
297
+ return _regeneratorRuntime.wrap(function (_context4) {
298
+ while (1) switch (_context4.prev = _context4.next) {
181
299
  case 0:
182
300
  this.isDestroyed = true;
183
301
  this.closeConnect();
184
- this.logger.info("Enhanced LLM Service destroyed");
302
+ if (!this.openclawAdapter) {
303
+ _context4.next = 2;
304
+ break;
305
+ }
306
+ _context4.next = 1;
307
+ return this.openclawAdapter.destroy();
185
308
  case 1:
309
+ this.openclawAdapter = null;
310
+ case 2:
311
+ this.logger.info("Enhanced LLM Service destroyed");
312
+ case 3:
186
313
  case "end":
187
- return _context3.stop();
314
+ return _context4.stop();
188
315
  }
189
- }, _callee3, this);
316
+ }, _callee4, this);
190
317
  }));
191
318
  function destroy() {
192
319
  return _destroy.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"llm-service.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/llm-service.ts"],"sourcesContent":["import type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { LoggerManager } from '../utils/logger';\nimport { BatchClient } from './batch-client';\nimport { SSEClient } from './sse-client';\n\n// 与原有接口保持兼容\nexport interface ILLMService {\n /**\n * 处理批量请求(非流式)\n */\n handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]>;\n\n /**\n * 处理流式请求\n */\n handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void>;\n}\n\n/**\n * Enhanced LLM Service with error handling and connection management\n */\nexport class LLMService implements ILLMService {\n private sseClient: SSEClient | null = null;\n\n private batchClient: BatchClient | null = null;\n\n private isDestroyed = false;\n\n private logger = LoggerManager.getLogger();\n\n /**\n * 处理批量请求(非流式)\n */\n async handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]> {\n // 确保只有一个客户端实例\n this.batchClient = this.batchClient || new BatchClient();\n this.batchClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n const req = (await config.onRequest?.(params)) || params;\n\n try {\n const data = await this.batchClient.request<AIMessageContent>(\n config.endpoint!,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...req.headers,\n },\n body: req.body,\n },\n config.timeout, // 现在timeout属性已存在\n );\n if (data) {\n const result = config.onComplete?.(false, req, data);\n // 如果onComplete返回了内容,使用它;否则使用原始data\n return result || data;\n }\n // 如果没有data,返回空数组\n return [];\n } catch (error) {\n config.onError?.(error as Error | Response);\n throw error;\n }\n }\n\n /**\n * 处理流式请求\n */\n async handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void> {\n if (!config.endpoint) return;\n this.sseClient = new SSEClient(config.endpoint);\n\n const req = (await config.onRequest?.(params)) || {};\n\n // 设置事件处理器\n this.sseClient.on('start', (chunk) => {\n config.onStart?.(chunk);\n });\n\n this.sseClient.on('message', (msg) => {\n const chunk = msg as SSEChunkData;\n // 如果配置了 isValidChunk 且返回 false,则跳过该 chunk\n if (config.isValidChunk && !config.isValidChunk(chunk)) return;\n config.onMessage?.(chunk);\n });\n\n this.sseClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n this.sseClient.on('complete', (isAborted) => {\n config.onComplete?.(isAborted, req);\n });\n\n await this.sseClient.connect(req);\n }\n\n /**\n * 关闭所有客户端连接\n */\n closeConnect(): void {\n if (this.sseClient) {\n this.sseClient.abort();\n this.sseClient = null;\n }\n if (this.batchClient) {\n this.batchClient.abort();\n this.batchClient = null;\n }\n }\n\n /**\n * 获取连接统计\n */\n getSSEStats(): { id: string; status: string; info: any } | null {\n if (!this.sseClient) return null;\n\n return {\n id: this.sseClient.connectionId,\n status: this.sseClient.getStatus(),\n info: this.sseClient.getInfo(),\n };\n }\n\n /**\n * 销毁服务\n */\n async destroy(): Promise<void> {\n this.isDestroyed = true;\n this.closeConnect();\n this.logger.info('Enhanced LLM Service destroyed');\n }\n}\n"],"names":["LLMService","_classCallCheck","_defineProperty","LoggerManager","getLogger","_createClass","key","value","_handleBatchRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","params","config","_config$onRequest","req","data","_config$onComplete","result","_config$onError2","_t","_t2","wrap","_context","prev","next","batchClient","BatchClient","on","error","_config$onError","onError","call","onRequest","sent","request","endpoint","method","headers","_objectSpread","body","timeout","onComplete","abrupt","stop","handleBatchRequest","_x","_x2","apply","arguments","_handleStreamRequest","_callee2","_config$onRequest2","_t3","_context2","sseClient","SSEClient","chunk","_config$onStart","onStart","msg","_config$onMessage","isValidChunk","onMessage","_config$onError3","isAborted","_config$onComplete2","connect","handleStreamRequest","_x3","_x4","closeConnect","abort","getSSEStats","id","connectionId","status","getStatus","info","getInfo","_destroy","_callee3","_context3","isDestroyed","logger","destroy"],"mappings":"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"}
1
+ {"version":3,"file":"llm-service.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/llm-service.ts"],"sourcesContent":["import type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { LoggerManager } from '../utils/logger';\nimport { BatchClient } from './batch-client';\nimport { SSEClient } from './sse-client';\nimport {\n OpenClawAdapter,\n type OpenClawAdapterConfig,\n} from '../adapters/openclaw';\n\n// 与原有接口保持兼容\nexport interface ILLMService {\n /**\n * 处理批量请求(非流式)\n */\n handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]>;\n\n /**\n * 处理流式请求\n */\n handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void>;\n}\n\n/**\n * Enhanced LLM Service with error handling and connection management\n */\nexport class LLMService implements ILLMService {\n private sseClient: SSEClient | null = null;\n\n private batchClient: BatchClient | null = null;\n\n private openclawAdapter: OpenClawAdapter | null = null;\n\n private isDestroyed = false;\n\n private logger = LoggerManager.getLogger();\n\n /**\n * 处理批量请求(非流式)\n */\n async handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]> {\n // 确保只有一个客户端实例\n this.batchClient = this.batchClient || new BatchClient();\n this.batchClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n const req = (await config.onRequest?.(params)) || params;\n\n try {\n const data = await this.batchClient.request<AIMessageContent>(\n config.endpoint!,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...req.headers,\n },\n body: req.body,\n },\n config.timeout, // 现在timeout属性已存在\n );\n if (data) {\n const result = config.onComplete?.(false, req, data);\n // 如果onComplete返回了内容,使用它;否则使用原始data\n return result || data;\n }\n // 如果没有data,返回空数组\n return [];\n } catch (error) {\n config.onError?.(error as Error | Response);\n throw error;\n }\n }\n\n /**\n * 处理流式请求\n */\n async handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void> {\n if (!config.endpoint) return;\n\n // OpenClaw WebSocket 协议\n if (config.protocol === 'openclaw') {\n await this.handleOpenClawStreamRequest(params, config);\n return;\n }\n\n this.sseClient = new SSEClient(config.endpoint);\n\n const req = (await config.onRequest?.(params)) || {};\n\n // 设置事件处理器\n this.sseClient.on('start', (chunk) => {\n config.onStart?.(chunk);\n });\n\n this.sseClient.on('message', (msg) => {\n const chunk = msg as SSEChunkData;\n // 如果配置了 isValidChunk 且返回 false,则跳过该 chunk\n if (config.isValidChunk && !config.isValidChunk(chunk)) return;\n config.onMessage?.(chunk);\n });\n\n this.sseClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n this.sseClient.on('complete', (isAborted) => {\n config.onComplete?.(isAborted, req);\n });\n\n await this.sseClient.connect(req);\n }\n\n /**\n * 处理 OpenClaw WebSocket 流式请求\n */\n private async handleOpenClawStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void> {\n const openclawConfig = config.openclaw || {};\n\n // 构建适配器配置\n const adapterConfig: OpenClawAdapterConfig = {\n endpoint: config.endpoint!,\n timeout: config.timeout,\n maxRetries: config.maxRetries,\n retryInterval: config.retryInterval,\n ...openclawConfig,\n };\n\n // 复用或创建适配器\n if (!this.openclawAdapter) {\n this.openclawAdapter = new OpenClawAdapter(adapterConfig);\n }\n\n // 设置回调\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected, sending message...');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: (content) => {\n // 将 OpenClaw 事件转换为 SSEChunkData 格式,保持与 ChatEngine 的兼容性\n const chunk: SSEChunkData = {\n event: 'openclaw',\n data: content,\n };\n config.onMessage?.(chunk);\n },\n onComplete: (isAborted, requestParams) => {\n config.onComplete?.(isAborted, requestParams);\n },\n onError: (error) => {\n config.onError?.(error);\n },\n });\n\n try {\n // 连接 WebSocket(如果未连接)\n if (!this.openclawAdapter.isAuthenticated()) {\n await this.openclawAdapter.connect();\n }\n\n // 通过 onRequest 获取用户自定义的业务参数\n const requestParams = (await config.onRequest?.(params)) || {};\n\n // 发送消息(requestParams 包含用户自定义的 sessionKey、token 等)\n await this.openclawAdapter.sendMessage(params, requestParams as Record<string, unknown>);\n } catch (error) {\n config.onError?.(error as Error);\n throw error;\n }\n }\n\n /**\n * 关闭所有客户端连接\n */\n closeConnect(): void {\n if (this.sseClient) {\n this.sseClient.abort();\n this.sseClient = null;\n }\n if (this.batchClient) {\n this.batchClient.abort();\n this.batchClient = null;\n }\n if (this.openclawAdapter) {\n this.openclawAdapter.abort();\n }\n }\n\n /**\n * 获取连接统计\n */\n getSSEStats(): { id: string; status: string; info: any } | null {\n if (!this.sseClient) return null;\n\n return {\n id: this.sseClient.connectionId,\n status: this.sseClient.getStatus(),\n info: this.sseClient.getInfo(),\n };\n }\n\n /**\n * 销毁服务\n */\n async destroy(): Promise<void> {\n this.isDestroyed = true;\n this.closeConnect();\n if (this.openclawAdapter) {\n await this.openclawAdapter.destroy();\n this.openclawAdapter = null;\n }\n this.logger.info('Enhanced LLM Service destroyed');\n }\n}\n"],"names":["LLMService","_classCallCheck","_defineProperty","LoggerManager","getLogger","_createClass","key","value","_handleBatchRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","params","config","_config$onRequest","req","data","_config$onComplete","result","_config$onError2","_t","_t2","wrap","_context","prev","next","batchClient","BatchClient","on","error","_config$onError","onError","call","onRequest","sent","request","endpoint","method","headers","_objectSpread","body","timeout","onComplete","abrupt","stop","handleBatchRequest","_x","_x2","apply","arguments","_handleStreamRequest","_callee2","_config$onRequest2","_t3","_context2","protocol","handleOpenClawStreamRequest","sseClient","SSEClient","chunk","_config$onStart","onStart","msg","_config$onMessage","isValidChunk","onMessage","_config$onError3","isAborted","_config$onComplete2","connect","handleStreamRequest","_x3","_x4","_handleOpenClawStreamRequest","_callee3","_this","openclawConfig","adapterConfig","_config$onRequest3","requestParams","_config$onError5","_t4","_t5","_context3","openclaw","maxRetries","retryInterval","openclawAdapter","OpenClawAdapter","setCallbacks","onConnected","logger","info","_config$onStart2","content","_config$onMessage2","event","_config$onComplete3","_config$onError4","isAuthenticated","sendMessage","_x5","_x6","closeConnect","abort","getSSEStats","id","connectionId","status","getStatus","getInfo","_destroy","_callee4","_context4","isDestroyed","destroy"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.11
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.11
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.11
2
+ * tdesign v1.1.0-alpha.12
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -0,0 +1,139 @@
1
+ import EventEmitter from '../utils/eventEmitter';
2
+ import type { ConnectionInfo } from './types';
3
+ /**
4
+ * WebSocket 连接状态
5
+ */
6
+ export declare enum WebSocketConnectionState {
7
+ DISCONNECTED = "disconnected",
8
+ CONNECTING = "connecting",
9
+ CONNECTED = "connected",
10
+ CLOSING = "closing",
11
+ CLOSED = "closed",
12
+ ERROR = "error"
13
+ }
14
+ /**
15
+ * WebSocket 客户端配置
16
+ */
17
+ export interface WebSocketClientConfig {
18
+ /** 请求超时时间(毫秒) */
19
+ timeout?: number;
20
+ /** 重连间隔(毫秒) */
21
+ retryInterval?: number;
22
+ /** 最大重连次数 */
23
+ maxRetries?: number;
24
+ /** 心跳间隔(毫秒),0 表示禁用 */
25
+ heartbeatInterval?: number;
26
+ }
27
+ /**
28
+ * 默认 WebSocket 配置
29
+ */
30
+ export declare const DEFAULT_WS_CONFIG: Required<WebSocketClientConfig>;
31
+ /**
32
+ * WebSocket 状态变更事件
33
+ */
34
+ export interface WSStateChangeEvent {
35
+ connectionId: string;
36
+ from: WebSocketConnectionState;
37
+ to: WebSocketConnectionState;
38
+ timestamp: number;
39
+ }
40
+ /**
41
+ * WebSocket 客户端
42
+ *
43
+ * 设计原则:
44
+ * - 与 SSEClient 保持相同的事件接口(message、error、complete、start、stateChange)
45
+ * - 支持心跳保活、自动重连
46
+ * - 支持消息发送和接收
47
+ */
48
+ export declare class WebSocketClient extends EventEmitter {
49
+ readonly connectionId: string;
50
+ private state;
51
+ private ws;
52
+ private config;
53
+ private logger;
54
+ private url;
55
+ private connectionInfo;
56
+ private retryCount;
57
+ private reconnectTimer?;
58
+ private heartbeatTimer?;
59
+ private timeoutTimer?;
60
+ private manualClose;
61
+ private firstMessageReceived;
62
+ constructor(url: string);
63
+ /**
64
+ * 连接 WebSocket 服务
65
+ */
66
+ connect(config?: WebSocketClientConfig): Promise<void>;
67
+ /**
68
+ * 发送消息
69
+ */
70
+ send(data: string | object): void;
71
+ /**
72
+ * 关闭连接
73
+ */
74
+ close(): Promise<void>;
75
+ /**
76
+ * 中止连接(与 SSEClient 接口保持一致)
77
+ */
78
+ abort(): Promise<void>;
79
+ /**
80
+ * 获取连接状态
81
+ */
82
+ getStatus(): WebSocketConnectionState;
83
+ /**
84
+ * 获取连接信息
85
+ */
86
+ getInfo(): ConnectionInfo;
87
+ /**
88
+ * 检查是否已连接
89
+ */
90
+ isConnected(): boolean;
91
+ /**
92
+ * 建立 WebSocket 连接
93
+ */
94
+ private establishConnection;
95
+ /**
96
+ * 处理接收到的消息
97
+ */
98
+ private handleMessage;
99
+ /**
100
+ * 处理连接关闭
101
+ */
102
+ private handleClose;
103
+ /**
104
+ * 处理连接错误
105
+ */
106
+ private handleConnectionError;
107
+ /**
108
+ * 判断是否应该重连
109
+ */
110
+ private shouldReconnect;
111
+ /**
112
+ * 调度重连
113
+ */
114
+ private scheduleReconnect;
115
+ /**
116
+ * 启动心跳
117
+ */
118
+ private startHeartbeat;
119
+ /**
120
+ * 清理超时定时器
121
+ */
122
+ private clearTimeout;
123
+ /**
124
+ * 清理所有定时器
125
+ */
126
+ private clearTimers;
127
+ /**
128
+ * 设置连接状态
129
+ */
130
+ private setState;
131
+ /**
132
+ * 设置内部事件处理器
133
+ */
134
+ private setupInternalEventHandlers;
135
+ /**
136
+ * 生成连接 ID
137
+ */
138
+ private generateConnectionId;
139
+ }