@tdesign-react/chat 1.0.2-alpha.2 → 1.0.2-alpha.3

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 (105) hide show
  1. package/es/_util/reactify.js +3 -4
  2. package/es/_util/reactify.js.map +1 -1
  3. package/es/_util/useDynamicStyle.js +1 -1
  4. package/es/_util/useDynamicStyle.js.map +1 -1
  5. package/es/attachments/index.d.ts +5 -0
  6. package/es/attachments/index.js +26 -0
  7. package/es/attachments/index.js.map +1 -0
  8. package/es/chat-actionbar/index.js +1 -1
  9. package/es/chat-attachments/index.js +1 -1
  10. package/es/chat-engine/components/provider/agent-state.js +1 -1
  11. package/es/chat-engine/components/toolcall/index.js +1 -1
  12. package/es/chat-engine/components/toolcall/registry.js +1 -1
  13. package/es/chat-engine/components/toolcall/render.js +1 -1
  14. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  15. package/es/chat-engine/components/toolcall/types.js +1 -1
  16. package/es/chat-engine/hooks/useAgentState.js +1 -1
  17. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  18. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  19. package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -1
  20. package/es/chat-engine/hooks/useChat.d.ts +1 -2
  21. package/es/chat-engine/hooks/useChat.js +1 -1
  22. package/es/chat-engine/hooks/useChat.js.map +1 -1
  23. package/es/chat-engine/index.js +1 -1
  24. package/es/chat-filecard/index.js +1 -1
  25. package/es/chat-loading/index.js +1 -1
  26. package/es/chat-markdown/index.js +1 -1
  27. package/es/chat-message/index.js +1 -1
  28. package/es/chat-sender/index.js +1 -1
  29. package/es/chat-thinking/index.d.ts +0 -1
  30. package/es/chat-thinking/index.js +1 -1
  31. package/es/chatbot/_example-js/agui-toolcall.d.ts +11 -0
  32. package/es/chatbot/index.js +1 -1
  33. package/es/index.d.ts +1 -1
  34. package/es/index.js +2 -2
  35. package/es/style/index.js +1 -1
  36. package/package.json +2 -2
  37. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +0 -104
  38. package/es/chat-engine/core/adapters/agui/event-mapper.js +0 -341
  39. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +0 -1
  40. package/es/chat-engine/core/adapters/agui/events.d.ts +0 -1394
  41. package/es/chat-engine/core/adapters/agui/events.js +0 -181
  42. package/es/chat-engine/core/adapters/agui/events.js.map +0 -1
  43. package/es/chat-engine/core/adapters/agui/index.d.ts +0 -75
  44. package/es/chat-engine/core/adapters/agui/index.js +0 -165
  45. package/es/chat-engine/core/adapters/agui/index.js.map +0 -1
  46. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +0 -99
  47. package/es/chat-engine/core/adapters/agui/state-manager.js +0 -168
  48. package/es/chat-engine/core/adapters/agui/state-manager.js.map +0 -1
  49. package/es/chat-engine/core/adapters/agui/types.d.ts +0 -760
  50. package/es/chat-engine/core/adapters/agui/types.js +0 -89
  51. package/es/chat-engine/core/adapters/agui/types.js.map +0 -1
  52. package/es/chat-engine/core/adapters/agui/utils.d.ts +0 -180
  53. package/es/chat-engine/core/adapters/agui/utils.js +0 -302
  54. package/es/chat-engine/core/adapters/agui/utils.js.map +0 -1
  55. package/es/chat-engine/core/index.d.ts +0 -132
  56. package/es/chat-engine/core/index.js +0 -597
  57. package/es/chat-engine/core/index.js.map +0 -1
  58. package/es/chat-engine/core/processor/index.d.ts +0 -20
  59. package/es/chat-engine/core/processor/index.js +0 -146
  60. package/es/chat-engine/core/processor/index.js.map +0 -1
  61. package/es/chat-engine/core/server/batch-client.d.ts +0 -20
  62. package/es/chat-engine/core/server/batch-client.js +0 -114
  63. package/es/chat-engine/core/server/batch-client.js.map +0 -1
  64. package/es/chat-engine/core/server/connection-manager.d.ts +0 -39
  65. package/es/chat-engine/core/server/connection-manager.js +0 -84
  66. package/es/chat-engine/core/server/connection-manager.js.map +0 -1
  67. package/es/chat-engine/core/server/errors.d.ts +0 -22
  68. package/es/chat-engine/core/server/errors.js +0 -80
  69. package/es/chat-engine/core/server/errors.js.map +0 -1
  70. package/es/chat-engine/core/server/index.d.ts +0 -11
  71. package/es/chat-engine/core/server/index.js +0 -26
  72. package/es/chat-engine/core/server/index.js.map +0 -1
  73. package/es/chat-engine/core/server/llm-service.d.ts +0 -44
  74. package/es/chat-engine/core/server/llm-service.js +0 -198
  75. package/es/chat-engine/core/server/llm-service.js.map +0 -1
  76. package/es/chat-engine/core/server/sse-client.d.ts +0 -77
  77. package/es/chat-engine/core/server/sse-client.js +0 -362
  78. package/es/chat-engine/core/server/sse-client.js.map +0 -1
  79. package/es/chat-engine/core/server/sse-parser.d.ts +0 -49
  80. package/es/chat-engine/core/server/sse-parser.js +0 -116
  81. package/es/chat-engine/core/server/sse-parser.js.map +0 -1
  82. package/es/chat-engine/core/server/types.d.ts +0 -54
  83. package/es/chat-engine/core/server/types.js +0 -28
  84. package/es/chat-engine/core/server/types.js.map +0 -1
  85. package/es/chat-engine/core/store/message.d.ts +0 -27
  86. package/es/chat-engine/core/store/message.js +0 -263
  87. package/es/chat-engine/core/store/message.js.map +0 -1
  88. package/es/chat-engine/core/store/model.d.ts +0 -8
  89. package/es/chat-engine/core/store/model.js +0 -65
  90. package/es/chat-engine/core/store/model.js.map +0 -1
  91. package/es/chat-engine/core/store/reactiveState.d.ts +0 -52
  92. package/es/chat-engine/core/store/reactiveState.js +0 -1359
  93. package/es/chat-engine/core/store/reactiveState.js.map +0 -1
  94. package/es/chat-engine/core/type.d.ts +0 -248
  95. package/es/chat-engine/core/type.js +0 -7
  96. package/es/chat-engine/core/type.js.map +0 -1
  97. package/es/chat-engine/core/utils/eventEmitter.d.ts +0 -10
  98. package/es/chat-engine/core/utils/eventEmitter.js +0 -67
  99. package/es/chat-engine/core/utils/eventEmitter.js.map +0 -1
  100. package/es/chat-engine/core/utils/index.d.ts +0 -32
  101. package/es/chat-engine/core/utils/index.js +0 -996
  102. package/es/chat-engine/core/utils/index.js.map +0 -1
  103. package/es/chat-engine/core/utils/logger.d.ts +0 -30
  104. package/es/chat-engine/core/utils/logger.js +0 -87
  105. package/es/chat-engine/core/utils/logger.js.map +0 -1
@@ -1,362 +0,0 @@
1
- /**
2
- * tdesign v1.0.1
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
8
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
9
- import _createClass from '@babel/runtime/helpers/createClass';
10
- import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
11
- import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
12
- import _inherits from '@babel/runtime/helpers/inherits';
13
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
14
- import _regeneratorRuntime from '@babel/runtime/regenerator';
15
- import SimpleEventEmitter from '../utils/eventEmitter.js';
16
- import { LoggerManager } from '../utils/logger.js';
17
- import { ConnectionManager } from './connection-manager.js';
18
- import { ConnectionError, TimeoutError } from './errors.js';
19
- import { SSEParser } from './sse-parser.js';
20
- import { SSEConnectionState, DEFAULT_SSE_CONFIG } from './types.js';
21
- import '@babel/runtime/helpers/wrapNativeSuper';
22
-
23
- 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; }
24
- 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; }
25
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
26
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
27
- var SSEClient = /*#__PURE__*/function (_EventEmitter) {
28
- function SSEClient(url) {
29
- var _this;
30
- _classCallCheck(this, SSEClient);
31
- _this = _callSuper(this, SSEClient);
32
- _defineProperty(_this, "state", SSEConnectionState.DISCONNECTED);
33
- _defineProperty(_this, "logger", LoggerManager.getLogger());
34
- _defineProperty(_this, "firstTokenReceived", false);
35
- _this.url = url;
36
- _this.connectionId = _this.generateConnectionId();
37
- _this.logger = LoggerManager.getLogger();
38
- _this.connectionManager = new ConnectionManager(_this.connectionId);
39
- _this.parser = new SSEParser();
40
- _this.parser.onMessage = function (event) {
41
- _this.emit("message", event);
42
- };
43
- _this.connectionInfo = {
44
- id: _this.connectionId,
45
- url: url,
46
- state: _this.state,
47
- createdAt: Date.now(),
48
- retryCount: 0,
49
- lastActivity: Date.now(),
50
- stats: {}
51
- };
52
- _this.setupInternalEventHandlers();
53
- return _this;
54
- }
55
- _inherits(SSEClient, _EventEmitter);
56
- return _createClass(SSEClient, [{
57
- key: "connect",
58
- value: function () {
59
- var _connect = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(config) {
60
- var _t;
61
- return _regeneratorRuntime.wrap(function (_context) {
62
- while (1) switch (_context.prev = _context.next) {
63
- case 0:
64
- if (!(this.state === SSEConnectionState.CONNECTED || this.state === SSEConnectionState.CONNECTING)) {
65
- _context.next = 1;
66
- break;
67
- }
68
- return _context.abrupt("return");
69
- case 1:
70
- this.config = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_SSE_CONFIG), config), {}, {
71
- headers: _objectSpread(_objectSpread({}, DEFAULT_SSE_CONFIG.headers), config.headers)
72
- });
73
- this.setState(SSEConnectionState.CONNECTING);
74
- this.connectionManager.startConnection();
75
- _context.prev = 2;
76
- this.startTimeoutMonitor();
77
- _context.next = 3;
78
- return this.establishConnection();
79
- case 3:
80
- this.setState(SSEConnectionState.CONNECTED);
81
- this.connectionManager.onConnectionSuccess();
82
- _context.next = 4;
83
- return this.readStream();
84
- case 4:
85
- _context.next = 6;
86
- break;
87
- case 5:
88
- _context.prev = 5;
89
- _t = _context["catch"](2);
90
- this.handleConnectionError(_t);
91
- case 6:
92
- case "end":
93
- return _context.stop();
94
- }
95
- }, _callee, this, [[2, 5]]);
96
- }));
97
- function connect(_x) {
98
- return _connect.apply(this, arguments);
99
- }
100
- return connect;
101
- }()
102
- }, {
103
- key: "abort",
104
- value: function () {
105
- var _abort = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
106
- var _t2;
107
- return _regeneratorRuntime.wrap(function (_context2) {
108
- while (1) switch (_context2.prev = _context2.next) {
109
- case 0:
110
- if (!(this.state === SSEConnectionState.DISCONNECTED || this.state === SSEConnectionState.CLOSING)) {
111
- _context2.next = 1;
112
- break;
113
- }
114
- return _context2.abrupt("return");
115
- case 1:
116
- this.setState(SSEConnectionState.CLOSING);
117
- _context2.prev = 2;
118
- if (!this.reader) {
119
- _context2.next = 4;
120
- break;
121
- }
122
- _context2.next = 3;
123
- return this.reader.cancel();
124
- case 3:
125
- this.reader = void 0;
126
- case 4:
127
- if (this.controller && !this.controller.signal.aborted) {
128
- this.controller.abort();
129
- }
130
- this.connectionManager.cleanup();
131
- this.resetParser();
132
- this.emit("complete", true);
133
- _context2.next = 6;
134
- break;
135
- case 5:
136
- _context2.prev = 5;
137
- _t2 = _context2["catch"](2);
138
- if (_t2.name !== "AbortError") {
139
- this.logger.error("stream abort failed:", _t2);
140
- this.emit("error", _t2);
141
- }
142
- case 6:
143
- _context2.prev = 6;
144
- this.clearTimeouts();
145
- this.controller = null;
146
- this.setState(SSEConnectionState.CLOSED);
147
- return _context2.finish(6);
148
- case 7:
149
- case "end":
150
- return _context2.stop();
151
- }
152
- }, _callee2, this, [[2, 5, 6, 7]]);
153
- }));
154
- function abort() {
155
- return _abort.apply(this, arguments);
156
- }
157
- return abort;
158
- }()
159
- }, {
160
- key: "getStatus",
161
- value: function getStatus() {
162
- return this.state;
163
- }
164
- }, {
165
- key: "getInfo",
166
- value: function getInfo() {
167
- return _objectSpread(_objectSpread({}, this.connectionInfo), this.connectionManager.getConnectionInfo());
168
- }
169
- }, {
170
- key: "establishConnection",
171
- value: function () {
172
- var _establishConnection = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
173
- var response, _t3;
174
- return _regeneratorRuntime.wrap(function (_context3) {
175
- while (1) switch (_context3.prev = _context3.next) {
176
- case 0:
177
- this.controller = new AbortController();
178
- _context3.prev = 1;
179
- _context3.next = 2;
180
- return fetch(this.url, _objectSpread(_objectSpread({}, this.config), {}, {
181
- signal: this.controller.signal,
182
- headers: _objectSpread(_objectSpread({}, this.config.headers), {}, {
183
- Accept: "text/event-stream",
184
- "Cache-Control": "no-cache"
185
- })
186
- }));
187
- case 2:
188
- response = _context3.sent;
189
- if (!(!response.body || !response.ok)) {
190
- _context3.next = 3;
191
- break;
192
- }
193
- this.emit("error", new ConnectionError("HTTP ".concat(response.status, ": ").concat(response.statusText), response.status, response));
194
- return _context3.abrupt("return");
195
- case 3:
196
- this.reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
197
- _context3.next = 5;
198
- break;
199
- case 4:
200
- _context3.prev = 4;
201
- _t3 = _context3["catch"](1);
202
- if (_t3.name !== "AbortError") {
203
- this.logger.error("sse request failed:", _t3);
204
- this.emit("error", _t3);
205
- }
206
- case 5:
207
- case "end":
208
- return _context3.stop();
209
- }
210
- }, _callee3, this, [[1, 4]]);
211
- }));
212
- function establishConnection() {
213
- return _establishConnection.apply(this, arguments);
214
- }
215
- return establishConnection;
216
- }()
217
- }, {
218
- key: "readStream",
219
- value: function () {
220
- var _readStream = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
221
- var _yield$this$reader$re, done, value, _this$controller, _t4;
222
- return _regeneratorRuntime.wrap(function (_context4) {
223
- while (1) switch (_context4.prev = _context4.next) {
224
- case 0:
225
- _context4.prev = 0;
226
- case 1:
227
- if (!(this.state === SSEConnectionState.CONNECTED && this.reader)) {
228
- _context4.next = 4;
229
- break;
230
- }
231
- _context4.next = 2;
232
- return this.reader.read();
233
- case 2:
234
- _yield$this$reader$re = _context4.sent;
235
- done = _yield$this$reader$re.done;
236
- value = _yield$this$reader$re.value;
237
- if (!done) {
238
- _context4.next = 3;
239
- break;
240
- }
241
- this.logger.info("Connection ".concat(this.connectionId, " stream ended normally"));
242
- this.emit("complete", false);
243
- this.setState(SSEConnectionState.DISCONNECTED);
244
- this.clearTimeouts();
245
- return _context4.abrupt("return");
246
- case 3:
247
- this.connectionInfo.lastActivity = Date.now();
248
- this.parseSSEData(value);
249
- _context4.next = 1;
250
- break;
251
- case 4:
252
- _context4.next = 6;
253
- break;
254
- case 5:
255
- _context4.prev = 5;
256
- _t4 = _context4["catch"](0);
257
- if (!((_this$controller = this.controller) !== null && _this$controller !== void 0 && _this$controller.signal.aborted)) {
258
- this.logger.error("Stream reading error for ".concat(this.connectionId, ":"), _t4);
259
- this.handleConnectionError(_t4);
260
- } else {
261
- this.logger.debug("Stream reading stopped for ".concat(this.connectionId, " (aborted)"));
262
- }
263
- case 6:
264
- case "end":
265
- return _context4.stop();
266
- }
267
- }, _callee4, this, [[0, 5]]);
268
- }));
269
- function readStream() {
270
- return _readStream.apply(this, arguments);
271
- }
272
- return readStream;
273
- }()
274
- }, {
275
- key: "startTimeoutMonitor",
276
- value: function startTimeoutMonitor() {
277
- var _this2 = this;
278
- if (!this.config.timeout || this.config.timeout <= 0) return;
279
- var checkInterval = Math.min(this.config.timeout / 2, 5e3);
280
- this.timeoutTimer = setInterval(function () {
281
- var now = Date.now();
282
- var timeSinceLastActivity = now - _this2.connectionInfo.lastActivity;
283
- if (timeSinceLastActivity >= _this2.config.timeout) {
284
- if (_this2.state === SSEConnectionState.CONNECTING) {
285
- _this2.logger.warn("Connection ".concat(_this2.connectionId, " establishment timeout after ").concat(_this2.config.timeout, "ms"));
286
- _this2.emit("error", new TimeoutError("Connection establishment timed out after ".concat(_this2.config.timeout, "ms")));
287
- } else {
288
- _this2.logger.warn("Connection ".concat(_this2.connectionId, " receive timeout after ").concat(_this2.config.timeout, "ms"));
289
- _this2.emit("error", new TimeoutError("No data received for ".concat(_this2.config.timeout, "ms")));
290
- }
291
- _this2.abort();
292
- }
293
- }, checkInterval);
294
- }
295
- }, {
296
- key: "parseSSEData",
297
- value: function parseSSEData(chunk) {
298
- this.parser.parse(chunk);
299
- if (!this.firstTokenReceived) {
300
- this.firstTokenReceived = true;
301
- this.emit("start", chunk);
302
- }
303
- }
304
- }, {
305
- key: "handleConnectionError",
306
- value: function handleConnectionError(error) {
307
- this.connectionInfo.error = error;
308
- this.connectionManager.handleConnectionError(error);
309
- this.setState(SSEConnectionState.ERROR);
310
- this.emit("error", error);
311
- }
312
- }, {
313
- key: "clearTimeouts",
314
- value: function clearTimeouts() {
315
- if (this.timeoutTimer) {
316
- clearInterval(this.timeoutTimer);
317
- this.timeoutTimer = void 0;
318
- }
319
- }
320
- }, {
321
- key: "setState",
322
- value: function setState(newState) {
323
- var oldState = this.state;
324
- this.state = newState;
325
- this.connectionInfo.state = newState;
326
- var stateChangeEvent = {
327
- connectionId: this.connectionId,
328
- from: oldState,
329
- to: newState,
330
- timestamp: Date.now()
331
- };
332
- this.emit("stateChange", stateChangeEvent);
333
- this.logger.debug("Connection ".concat(this.connectionId, " state: ").concat(oldState, " -> ").concat(newState));
334
- }
335
- }, {
336
- key: "resetParser",
337
- value: function resetParser() {
338
- this.parser.reset();
339
- }
340
- }, {
341
- key: "setupInternalEventHandlers",
342
- value: function setupInternalEventHandlers() {
343
- var _this3 = this;
344
- this.on("error", function (error) {
345
- _this3.logger.error("SSE Client ".concat(_this3.connectionId, " error:"), error);
346
- });
347
- this.on("complete", function (isAborted) {
348
- _this3.logger.info("SSE Client ".concat(_this3.connectionId, " completed, aborted: ").concat(isAborted));
349
- });
350
- }
351
- }, {
352
- key: "generateConnectionId",
353
- value: function generateConnectionId() {
354
- var _this$connectionInfo;
355
- var timestamp = ((_this$connectionInfo = this.connectionInfo) === null || _this$connectionInfo === void 0 ? void 0 : _this$connectionInfo.createdAt) || Date.now();
356
- return "sse_".concat(timestamp, "_").concat(Math.random().toString(36).substr(2, 9));
357
- }
358
- }]);
359
- }(SimpleEventEmitter);
360
-
361
- export { SSEClient };
362
- //# sourceMappingURL=sse-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse-client.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/sse-client.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop, max-classes-per-file */\nimport EventEmitter from '../utils/eventEmitter';\nimport { LoggerManager } from '../utils/logger';\nimport { ConnectionManager } from './connection-manager';\nimport { ConnectionError, TimeoutError } from './errors';\nimport { type SSEEvent, SSEParser } from './sse-parser';\nimport {\n type ConnectionInfo,\n DEFAULT_SSE_CONFIG,\n type SSEClientConfig,\n SSEConnectionState,\n type StateChangeEvent,\n} from './types';\n\n/**\n * SSE Client\n * 采用分层设计,分离了连接管理、状态管理、事件解析等职责\n */\nexport class SSEClient extends EventEmitter {\n public readonly connectionId: string;\n\n private state = SSEConnectionState.DISCONNECTED;\n\n private controller?: AbortController | null;\n\n private reader?: ReadableStreamDefaultReader<string>;\n\n private connectionManager: ConnectionManager;\n\n private parser: SSEParser;\n\n private timeoutTimer?: ReturnType<typeof setInterval>; // 统一超时定时器\n\n private config: SSEClientConfig;\n\n private logger = LoggerManager.getLogger();\n\n private url: string;\n\n private connectionInfo: ConnectionInfo;\n\n private firstTokenReceived = false;\n\n constructor(url: string) {\n super();\n this.url = url;\n this.connectionId = this.generateConnectionId();\n this.logger = LoggerManager.getLogger();\n this.connectionManager = new ConnectionManager(this.connectionId);\n\n // 初始化 SSE 解析器\n this.parser = new SSEParser();\n this.parser.onMessage = (event: SSEEvent) => {\n this.emit('message', event);\n };\n\n this.connectionInfo = {\n id: this.connectionId,\n url,\n state: this.state,\n createdAt: Date.now(),\n retryCount: 0,\n lastActivity: Date.now(),\n stats: {},\n };\n\n this.setupInternalEventHandlers();\n }\n\n /**\n * 连接 SSE 服务\n */\n async connect(config: SSEClientConfig): Promise<void> {\n if (this.state === SSEConnectionState.CONNECTED || this.state === SSEConnectionState.CONNECTING) {\n return;\n }\n\n this.config = {\n ...DEFAULT_SSE_CONFIG,\n ...config,\n headers: {\n ...DEFAULT_SSE_CONFIG.headers,\n ...config.headers,\n },\n };\n\n this.setState(SSEConnectionState.CONNECTING);\n this.connectionManager.startConnection();\n\n try {\n // 启动统一超时监控\n this.startTimeoutMonitor();\n\n await this.establishConnection();\n this.setState(SSEConnectionState.CONNECTED);\n this.connectionManager.onConnectionSuccess();\n await this.readStream();\n } catch (error) {\n this.handleConnectionError(error as Error);\n }\n }\n\n /**\n * 关闭连接\n */\n async abort(): Promise<void> {\n if (this.state === SSEConnectionState.DISCONNECTED || this.state === SSEConnectionState.CLOSING) {\n return;\n }\n\n this.setState(SSEConnectionState.CLOSING);\n\n try {\n if (this.reader) {\n await this.reader.cancel();\n this.reader = undefined;\n }\n\n if (this.controller && !this.controller.signal.aborted) {\n this.controller.abort();\n }\n\n this.connectionManager.cleanup();\n this.resetParser();\n this.emit('complete', true);\n } catch (error) {\n if (error.name !== 'AbortError') {\n this.logger.error('stream abort failed:', error);\n this.emit('error', error);\n }\n } finally {\n this.clearTimeouts();\n this.controller = null;\n this.setState(SSEConnectionState.CLOSED);\n }\n }\n\n /**\n * 获取连接状态\n */\n getStatus(): SSEConnectionState {\n return this.state;\n }\n\n /**\n * 获取连接信息\n */\n getInfo(): ConnectionInfo {\n return {\n ...this.connectionInfo,\n ...this.connectionManager.getConnectionInfo(),\n };\n }\n\n /**\n * 建立连接\n */\n private async establishConnection(): Promise<void> {\n this.controller = new AbortController();\n\n try {\n const response = await fetch(this.url, {\n ...this.config,\n signal: this.controller.signal,\n headers: {\n ...this.config.headers,\n Accept: 'text/event-stream',\n 'Cache-Control': 'no-cache',\n },\n });\n\n if (!response.body || !response.ok) {\n this.emit(\n 'error',\n new ConnectionError(`HTTP ${response.status}: ${response.statusText}`, response.status, response),\n );\n return;\n }\n this.reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n } catch (error: any) {\n if (error.name !== 'AbortError') {\n this.logger.error('sse request failed:', error);\n this.emit('error', error);\n }\n }\n }\n\n /**\n * 读取流数据\n */\n private async readStream(): Promise<void> {\n try {\n while (this.state === SSEConnectionState.CONNECTED && this.reader) {\n // eslint-disable no-await-in-loop\n const { done, value } = await this.reader.read();\n\n if (done) {\n this.logger.info(`Connection ${this.connectionId} stream ended normally`);\n this.emit('complete', false); // 发出流结束事件\n this.setState(SSEConnectionState.DISCONNECTED);\n this.clearTimeouts();\n return;\n }\n\n // 更新活动时间\n this.connectionInfo.lastActivity = Date.now();\n\n // 直接解析SSE数据\n this.parseSSEData(value);\n }\n } catch (error) {\n if (!this.controller?.signal.aborted) {\n this.logger.error(`Stream reading error for ${this.connectionId}:`, error);\n this.handleConnectionError(error as Error);\n } else {\n this.logger.debug(`Stream reading stopped for ${this.connectionId} (aborted)`);\n }\n }\n }\n\n /**\n * 启动统一超时监控\n */\n private startTimeoutMonitor(): void {\n if (!this.config.timeout || this.config.timeout <= 0) return;\n\n // 检查间隔为超时时间的一半,但不超过5秒\n const checkInterval = Math.min(this.config.timeout / 2, 5000);\n\n this.timeoutTimer = setInterval(() => {\n const now = Date.now();\n const timeSinceLastActivity = now - this.connectionInfo.lastActivity;\n\n if (timeSinceLastActivity >= this.config.timeout!) {\n // 根据当前状态决定超时类型\n if (this.state === SSEConnectionState.CONNECTING) {\n this.logger.warn(`Connection ${this.connectionId} establishment timeout after ${this.config.timeout}ms`);\n this.emit('error', new TimeoutError(`Connection establishment timed out after ${this.config.timeout}ms`));\n } else {\n this.logger.warn(`Connection ${this.connectionId} receive timeout after ${this.config.timeout}ms`);\n this.emit('error', new TimeoutError(`No data received for ${this.config.timeout}ms`));\n }\n\n this.abort(); // 触发连接中断\n }\n }, checkInterval);\n }\n\n /**\n * 解析SSE数据\n */\n private parseSSEData(chunk: string): void {\n // 使用独立的 SSE 解析器处理数据\n this.parser.parse(chunk);\n if (!this.firstTokenReceived) {\n this.firstTokenReceived = true;\n this.emit('start', chunk); // 派发start事件\n }\n }\n\n /**\n * 简化的错误处理\n */\n private handleConnectionError(error: Error) {\n this.connectionInfo.error = error;\n this.connectionManager.handleConnectionError(error);\n this.setState(SSEConnectionState.ERROR);\n this.emit('error', error);\n }\n\n /**\n * 清理超时定时器\n */\n private clearTimeouts(): void {\n if (this.timeoutTimer) {\n clearInterval(this.timeoutTimer);\n this.timeoutTimer = undefined;\n }\n }\n\n /**\n * 设置连接状态\n */\n private setState(newState: SSEConnectionState) {\n const oldState = this.state;\n this.state = newState;\n this.connectionInfo.state = newState;\n\n const stateChangeEvent: StateChangeEvent = {\n connectionId: this.connectionId,\n from: oldState,\n to: newState,\n timestamp: Date.now(),\n };\n\n this.emit('stateChange', stateChangeEvent);\n this.logger.debug(`Connection ${this.connectionId} state: ${oldState} -> ${newState}`);\n }\n\n /**\n * 重置解析器状态\n */\n private resetParser(): void {\n this.parser.reset();\n }\n\n /**\n * 设置内部事件处理器\n */\n private setupInternalEventHandlers(): void {\n this.on('error', (error) => {\n this.logger.error(`SSE Client ${this.connectionId} error:`, error);\n });\n\n this.on('complete', (isAborted) => {\n this.logger.info(`SSE Client ${this.connectionId} completed, aborted: ${isAborted}`);\n });\n }\n\n /**\n * 生成连接ID\n */\n private generateConnectionId(): string {\n // 使用this来访问实例属性,满足linter要求\n const timestamp = this.connectionInfo?.createdAt || Date.now();\n return `sse_${timestamp}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n"],"names":["SSEClient","url","_this","_classCallCheck","_callSuper","_defineProperty","SSEConnectionState","DISCONNECTED","LoggerManager","getLogger","connectionId","generateConnectionId","logger","connectionManager","ConnectionManager","parser","SSEParser","onMessage","event","emit","connectionInfo","id","state","createdAt","Date","now","retryCount","lastActivity","stats","setupInternalEventHandlers","_inherits","_EventEmitter","_createClass","key","value","_connect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","config","_t","wrap","_context","prev","next","CONNECTED","CONNECTING","abrupt","_objectSpread","DEFAULT_SSE_CONFIG","headers","setState","startConnection","startTimeoutMonitor","establishConnection","onConnectionSuccess","readStream","handleConnectionError","stop","connect","_callee2","_t2","_context2","CLOSING","reader","cancel","controller","signal","aborted","abort","cleanup","resetParser","name","error","clearTimeouts","CLOSED","finish","_abort","apply","arguments","getStatus","getInfo","getConnectionInfo","_establishConnection","_callee3","response","_t3","_context3","AbortController","fetch","Accept","sent","body","ok","ConnectionError","status","statusText","pipeThrough","TextDecoderStream","getReader","_readStream","_callee4","_yield$this$reader$re","done","_this$controller","_t4","_context4","read","info","concat","parseSSEData","debug","_this2","timeout","checkInterval","Math","min","timeoutTimer","setInterval","timeSinceLastActivity","warn","TimeoutError","chunk","parse","firstTokenReceived","ERROR","clearInterval","newState","oldState","stateChangeEvent","from","to","timestamp","reset","_this3","on","isAborted","_this$connectionInfo","random","toString","substr","EventEmitter"],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * SSE 事件接口
3
- */
4
- export interface SSEEvent {
5
- event?: string;
6
- data?: any;
7
- id?: string;
8
- }
9
- /**
10
- * SSE 事件流解析器
11
- */
12
- export declare class SSEParser {
13
- private eventBuffer;
14
- private currentEvent;
15
- private logger;
16
- onMessage?: (msg: SSEEvent) => void;
17
- /**
18
- * 解析SSE数据块
19
- */
20
- parse(chunk: string): void;
21
- /**
22
- * 处理SSE行数据
23
- */
24
- private processSSELine;
25
- /**
26
- * 发送当前事件
27
- */
28
- private emitCurrentEvent;
29
- /**
30
- * 重置解析器状态
31
- */
32
- reset(): void;
33
- /**
34
- * 获取当前缓冲区大小
35
- */
36
- getBufferSize(): number;
37
- /**
38
- * 获取当前事件状态
39
- */
40
- getCurrentEvent(): {
41
- event?: string;
42
- data?: string;
43
- id?: string;
44
- };
45
- /**
46
- * 检查是否有未完成的事件
47
- */
48
- hasIncompleteEvent(): boolean;
49
- }
@@ -1,116 +0,0 @@
1
- /**
2
- * tdesign v1.0.1
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
8
- import _createClass from '@babel/runtime/helpers/createClass';
9
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
10
- import { LoggerManager } from '../utils/logger.js';
11
-
12
- 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; }
13
- 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; }
14
- var SSEParser = /*#__PURE__*/function () {
15
- function SSEParser() {
16
- _classCallCheck(this, SSEParser);
17
- _defineProperty(this, "eventBuffer", "");
18
- _defineProperty(this, "currentEvent", {});
19
- _defineProperty(this, "logger", LoggerManager.getLogger());
20
- }
21
- return _createClass(SSEParser, [{
22
- key: "parse",
23
- value: function parse(chunk) {
24
- this.eventBuffer += chunk;
25
- var newlineIndex;
26
- while ((newlineIndex = this.eventBuffer.indexOf("\n")) !== -1) {
27
- var line = this.eventBuffer.slice(0, newlineIndex).replace(/\r$/, "");
28
- this.eventBuffer = this.eventBuffer.slice(newlineIndex + 1);
29
- this.processSSELine(line);
30
- }
31
- }
32
- }, {
33
- key: "processSSELine",
34
- value: function processSSELine(line) {
35
- if (line === "") {
36
- this.emitCurrentEvent();
37
- return;
38
- }
39
- var colonIndex = line.indexOf(":");
40
- if (colonIndex === 0) {
41
- return;
42
- }
43
- var field;
44
- var value;
45
- if (colonIndex === -1) {
46
- field = line.trim();
47
- value = "";
48
- } else {
49
- field = line.slice(0, colonIndex).trim();
50
- value = line.slice(colonIndex + 1).replace(/^ /, "");
51
- }
52
- switch (field) {
53
- case "event":
54
- this.currentEvent.event = value;
55
- break;
56
- case "data":
57
- if (this.currentEvent.data === void 0) {
58
- this.currentEvent.data = value;
59
- } else {
60
- this.currentEvent.data += "\n".concat(value);
61
- }
62
- break;
63
- case "id":
64
- this.currentEvent.id = value;
65
- break;
66
- default:
67
- break;
68
- }
69
- }
70
- }, {
71
- key: "emitCurrentEvent",
72
- value: function emitCurrentEvent() {
73
- if (this.currentEvent.data !== void 0 && this.onMessage) {
74
- try {
75
- var data;
76
- try {
77
- data = JSON.parse(this.currentEvent.data);
78
- } catch (_unused) {
79
- data = this.currentEvent.data;
80
- }
81
- this.onMessage({
82
- event: this.currentEvent.event || "",
83
- data: data
84
- });
85
- } catch (error) {
86
- this.logger.error("Error emitting event:", error);
87
- }
88
- }
89
- this.currentEvent = {};
90
- }
91
- }, {
92
- key: "reset",
93
- value: function reset() {
94
- this.eventBuffer = "";
95
- this.currentEvent = {};
96
- }
97
- }, {
98
- key: "getBufferSize",
99
- value: function getBufferSize() {
100
- return this.eventBuffer.length;
101
- }
102
- }, {
103
- key: "getCurrentEvent",
104
- value: function getCurrentEvent() {
105
- return _objectSpread({}, this.currentEvent);
106
- }
107
- }, {
108
- key: "hasIncompleteEvent",
109
- value: function hasIncompleteEvent() {
110
- return this.currentEvent.data !== void 0;
111
- }
112
- }]);
113
- }();
114
-
115
- export { SSEParser };
116
- //# sourceMappingURL=sse-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse-parser.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/sse-parser.ts"],"sourcesContent":["import { LoggerManager } from '../utils/logger';\n\n/**\n * SSE 事件接口\n */\nexport interface SSEEvent {\n event?: string;\n data?: any;\n id?: string;\n}\n\n/**\n * SSE 事件流解析器\n */\nexport class SSEParser {\n private eventBuffer = '';\n\n private currentEvent: { event?: string; data?: string; id?: string } = {};\n\n private logger = LoggerManager.getLogger();\n\n // 事件回调函数\n onMessage?: (msg: SSEEvent) => void;\n\n /**\n * 解析SSE数据块\n */\n parse(chunk: string): void {\n this.eventBuffer += chunk;\n\n // 循环处理,直到缓冲区中再也找不到完整的行\n let newlineIndex;\n // eslint-disable-next-line no-cond-assign\n while ((newlineIndex = this.eventBuffer.indexOf('\\n')) !== -1) {\n // 提取一行(包含 \\r 如果有的话)\n const line = this.eventBuffer.slice(0, newlineIndex).replace(/\\r$/, '');\n\n // 从缓冲区移除已处理的行和换行符\n this.eventBuffer = this.eventBuffer.slice(newlineIndex + 1);\n\n // 处理这一行\n this.processSSELine(line);\n }\n }\n\n /**\n * 处理SSE行数据\n */\n private processSSELine(line: string): void {\n if (line === '') {\n // 空行表示事件结束\n this.emitCurrentEvent();\n return;\n }\n\n const colonIndex = line.indexOf(':');\n if (colonIndex === 0) {\n // 注释行,忽略\n return;\n }\n\n let field: string;\n let value: string;\n\n if (colonIndex === -1) {\n field = line.trim();\n value = '';\n } else {\n field = line.slice(0, colonIndex).trim();\n value = line.slice(colonIndex + 1).replace(/^ /, ''); // 移除开头空格\n }\n\n // 处理SSE字段\n switch (field) {\n case 'event':\n this.currentEvent.event = value;\n break;\n case 'data':\n if (this.currentEvent.data === undefined) {\n this.currentEvent.data = value;\n } else {\n this.currentEvent.data += `\\n${value}`;\n }\n break;\n case 'id':\n this.currentEvent.id = value;\n break;\n default:\n // 忽略其他字段\n break;\n }\n }\n\n /**\n * 发送当前事件\n */\n private emitCurrentEvent(): void {\n if (this.currentEvent.data !== undefined && this.onMessage) {\n try {\n // 尝试解析JSON,失败则保持原始字符串\n let data: any;\n try {\n data = JSON.parse(this.currentEvent.data);\n } catch {\n data = this.currentEvent.data;\n }\n\n this.onMessage({\n event: this.currentEvent.event || '',\n data,\n });\n } catch (error) {\n this.logger.error('Error emitting event:', error);\n }\n }\n\n // 清理当前事件\n this.currentEvent = {};\n }\n\n /**\n * 重置解析器状态\n */\n reset(): void {\n this.eventBuffer = '';\n this.currentEvent = {};\n }\n\n /**\n * 获取当前缓冲区大小\n */\n getBufferSize(): number {\n return this.eventBuffer.length;\n }\n\n /**\n * 获取当前事件状态\n */\n getCurrentEvent(): { event?: string; data?: string; id?: string } {\n return { ...this.currentEvent };\n }\n\n /**\n * 检查是否有未完成的事件\n */\n hasIncompleteEvent(): boolean {\n return this.currentEvent.data !== undefined;\n }\n}\n"],"names":["SSEParser","_classCallCheck","_defineProperty","LoggerManager","getLogger","_createClass","key","value","parse","chunk","eventBuffer","newlineIndex","indexOf","line","slice","replace","processSSELine","emitCurrentEvent","colonIndex","field","trim","currentEvent","event","data","concat","id","onMessage","JSON","_unused","error","logger","reset","getBufferSize","length","getCurrentEvent","_objectSpread","hasIncompleteEvent"],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Enhanced server types for SSE client and LLM service
3
- */
4
- import { ChatRequestParams } from '../type';
5
- export declare enum SSEConnectionState {
6
- DISCONNECTED = "disconnected",
7
- CONNECTING = "connecting",
8
- CONNECTED = "connected",
9
- RECONNECTING = "reconnecting",
10
- CLOSING = "closing",
11
- CLOSED = "closed",
12
- ERROR = "error"
13
- }
14
- export interface SSEClientConfig extends Omit<RequestInit & ChatRequestParams, 'signal'> {
15
- timeout?: number;
16
- }
17
- export interface SSEEvent {
18
- event?: string;
19
- data?: any;
20
- id?: string;
21
- retry?: number;
22
- timestamp?: number;
23
- }
24
- export interface ConnectionInfo {
25
- id: string;
26
- retryCount: number;
27
- lastActivity: number;
28
- state?: SSEConnectionState;
29
- url?: string;
30
- createdAt?: number;
31
- error?: Error;
32
- stats: ConnectionStats;
33
- }
34
- export interface ConnectionStatus {
35
- id: string;
36
- state: SSEConnectionState;
37
- error?: Error;
38
- lastActivity?: number;
39
- }
40
- export interface ConnectionStats {
41
- lastError?: Error;
42
- connectionTime?: number;
43
- }
44
- export interface StateChangeEvent {
45
- connectionId: string;
46
- from: SSEConnectionState;
47
- to: SSEConnectionState;
48
- timestamp: number;
49
- }
50
- export interface HeartbeatEvent {
51
- connectionId: string;
52
- timestamp: number;
53
- }
54
- export declare const DEFAULT_SSE_CONFIG: SSEClientConfig;