solver-sdk 3.1.10 → 3.1.14

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.
@@ -2,374 +2,161 @@
2
2
  * Утилиты для обработки потоковых данных от API чата
3
3
  */
4
4
  /**
5
- * Обрабатывает строку данных из SSE потока
6
- * @param line Строка данных из потока
7
- * @param isInThinkingBlock Флаг нахождения в блоке мышления
8
- * @param thinkingContent Накопленное содержимое мышления
9
- * @param textContent Накопленное текстовое содержимое
10
- * @param thinkingSignature Подпись блока мышления
11
- * @param onToken Обработчик получения токена
12
- * @returns Результат обработки
5
+ * Парсит строку SSE потока согласно официальному Anthropic API
13
6
  */
14
- export function processStreamChunk(line, isInThinkingBlock, thinkingContent, textContent, thinkingSignature, onToken) {
7
+ export function parseStreamLine(line) {
8
+ // Пропускаем пустые строки и комментарии
9
+ if (!line.trim() || line.startsWith(':')) {
10
+ return {};
11
+ }
12
+ // Обрабатываем только data: события
13
+ if (!line.startsWith('data: ')) {
14
+ return {};
15
+ }
16
+ const data = line.slice(6).trim();
17
+ // Пропускаем пустые данные
18
+ if (!data) {
19
+ return {};
20
+ }
21
+ try {
22
+ const jsonData = JSON.parse(data);
23
+ // ✅ Все события Anthropic API имеют поле type
24
+ if (!jsonData.type) {
25
+ return {};
26
+ }
27
+ // Создаем chunk согласно официальному формату Anthropic
28
+ const chunk = {
29
+ type: jsonData.type,
30
+ ...jsonData
31
+ };
32
+ return { chunk };
33
+ }
34
+ catch (error) {
35
+ console.warn('Failed to parse SSE line:', line, error);
36
+ return {};
37
+ }
38
+ }
39
+ /**
40
+ * Проверяет завершен ли поток согласно Anthropic API
41
+ */
42
+ export function isStreamComplete(chunk) {
43
+ return chunk.type === 'message_stop';
44
+ }
45
+ /**
46
+ * Обрабатывает чанк потоковой передачи данных в формате Server-Sent Events
47
+ * Работает только с официальными событиями Anthropic API
48
+ *
49
+ * @param line Строка из SSE потока
50
+ * @param logger Логгер для отладки
51
+ * @param options Опции обработки
52
+ * @returns Результат обработки чанка
53
+ */
54
+ export function processStreamChunk(line, logger, options) {
15
55
  try {
56
+ // Игнорируем пустые строки и комментарии
57
+ if (!line.trim() || line.startsWith(':')) {
58
+ return {};
59
+ }
60
+ // Проверяем формат SSE
16
61
  if (!line.startsWith('data: ')) {
17
- return { isInThinkingBlock, thinkingContent, textContent, thinkingSignature, isDone: false };
62
+ return {};
18
63
  }
19
64
  const data = line.slice(6).trim();
20
- // Проверяем на завершение потока
21
- if (data === '[DONE]') {
22
- const chunk = {
23
- type: 'message_stop',
24
- text: '',
25
- isComplete: true,
26
- thinkingContent: thinkingContent.length > 0 ? thinkingContent : undefined,
27
- thinkingSignature: thinkingSignature.length > 0 ? thinkingSignature : undefined
28
- };
29
- return {
30
- isInThinkingBlock,
31
- thinkingContent,
32
- textContent,
33
- thinkingSignature,
34
- chunk,
35
- isDone: true
36
- };
37
- }
38
- // Пытаемся распарсить JSON
39
- const jsonData = JSON.parse(data);
40
- // ИСПРАВЛЕНИЕ: Обрабатываем события начала блока мышления
41
- if (jsonData.type === 'content_block_start' && jsonData.content_block?.type === 'thinking') {
42
- const chunk = {
43
- type: 'content_block_start',
44
- text: '',
45
- isComplete: false,
46
- isThinking: true
47
- };
48
- return {
49
- isInThinkingBlock: true,
50
- thinkingContent,
51
- textContent,
52
- thinkingSignature,
53
- chunk,
54
- isDone: false
55
- };
56
- }
57
- // 🔧 КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: Обрабатываем события начала блока tool_use
58
- if (jsonData.type === 'content_block_start' && jsonData.content_block?.type === 'tool_use') {
59
- const chunk = {
60
- type: 'content_block_start',
61
- text: '',
62
- isComplete: false,
63
- isThinking: false,
64
- // Передаем данные tool_use в chunk для доступа в onEvent callback
65
- data: {
66
- content_block: jsonData.content_block,
67
- index: jsonData.index
65
+ // Пропускаем пустые данные
66
+ if (!data) {
67
+ return {};
68
+ }
69
+ // Парсим JSON данные
70
+ let jsonData;
71
+ try {
72
+ jsonData = JSON.parse(data);
73
+ }
74
+ catch (parseError) {
75
+ if (logger) {
76
+ logger.error('Ошибка парсинга JSON', { error: parseError, data: data.substring(0, 100) });
77
+ }
78
+ return {};
79
+ }
80
+ // Валидируем что это официальное событие Anthropic API
81
+ const validEvents = [
82
+ 'message_start', 'content_block_start', 'content_block_delta',
83
+ 'content_block_stop', 'message_delta', 'message_stop', 'ping', 'error'
84
+ ];
85
+ if (!validEvents.includes(jsonData.type)) {
86
+ if (logger) {
87
+ logger.warn('Неизвестное событие', { type: jsonData.type });
88
+ }
89
+ return {};
90
+ }
91
+ // Создаем ChatStreamChunk в соответствии с официальным API
92
+ const chunk = {
93
+ type: jsonData.type
94
+ };
95
+ // Добавляем поля в зависимости от типа события
96
+ switch (jsonData.type) {
97
+ case 'message_start':
98
+ if (jsonData.message) {
99
+ chunk.message = jsonData.message;
68
100
  }
69
- };
70
- return {
71
- isInThinkingBlock,
72
- thinkingContent,
73
- textContent,
74
- thinkingSignature,
75
- chunk,
76
- isDone: false
77
- };
78
- }
79
- // ✅ ИСПРАВЛЕНИЕ: Обрабатываем события начала текстового блока
80
- if (jsonData.type === 'content_block_start' && jsonData.content_block?.type === 'text') {
81
- const chunk = {
82
- type: 'content_block_start',
83
- text: '',
84
- isComplete: false,
85
- isThinking: false,
86
- data: {
87
- content_block: jsonData.content_block,
88
- index: jsonData.index
101
+ break;
102
+ case 'content_block_start':
103
+ if (jsonData.index !== undefined) {
104
+ chunk.index = jsonData.index;
89
105
  }
90
- };
91
- return {
92
- isInThinkingBlock,
93
- thinkingContent,
94
- textContent,
95
- thinkingSignature,
96
- chunk,
97
- isDone: false
98
- };
99
- }
100
- // ✅ Удалено: дублирование thinking_delta обработки (основная версия ниже)
101
- // ✅ ИСПРАВЛЕНИЕ: Обрабатываем signature_delta согласно документации Anthropic
102
- if (jsonData.type === 'content_block_delta' && jsonData.delta?.type === 'signature_delta' && jsonData.delta.signature) {
103
- const newSignature = jsonData.delta.signature;
104
- const chunk = {
105
- type: 'content_block_delta',
106
- text: '', // signature не отображается как текст
107
- isComplete: false,
108
- isThinking: true, // signature относится к thinking блоку
109
- signature: newSignature
110
- };
111
- return {
112
- isInThinkingBlock,
113
- thinkingContent,
114
- textContent,
115
- thinkingSignature: newSignature,
116
- chunk,
117
- isDone: false
118
- };
119
- }
120
- // ✅ КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: Обрабатываем дельты мышления в правильном формате
121
- if (jsonData.type === 'content_block_delta' && jsonData.delta?.type === 'thinking_delta' && jsonData.delta.thinking) {
122
- const newThinkingContent = thinkingContent + jsonData.delta.thinking;
123
- const chunk = {
124
- type: 'content_block_delta',
125
- text: jsonData.delta.thinking, // ✅ Извлекаем текст из delta.thinking
126
- isComplete: false,
127
- isThinking: true
128
- };
129
- // Вызываем onToken если передан
130
- if (onToken) {
131
- onToken(jsonData.delta.thinking);
132
- }
133
- return {
134
- isInThinkingBlock: true,
135
- thinkingContent: newThinkingContent,
136
- textContent,
137
- thinkingSignature,
138
- chunk,
139
- isDone: false
140
- };
141
- }
142
- // ✅ ИСПРАВЛЕНИЕ: Обрабатываем завершение любых блоков контента
143
- if (jsonData.type === 'content_block_stop') {
144
- const chunk = {
145
- type: 'content_block_stop',
146
- text: '',
147
- isComplete: false,
148
- isThinking: isInThinkingBlock, // Сохраняем текущее состояние thinking
149
- data: {
150
- index: jsonData.index
106
+ if (jsonData.content_block) {
107
+ chunk.content_block = jsonData.content_block;
151
108
  }
152
- };
153
- return {
154
- isInThinkingBlock: false, // Всегда завершаем thinking после content_block_stop
155
- thinkingContent,
156
- textContent,
157
- thinkingSignature,
158
- chunk,
159
- isDone: false
160
- };
161
- }
162
- // 🔧 КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: Обрабатываем input_json_delta для инструментов
163
- if (jsonData.type === 'content_block_delta' && jsonData.delta?.type === 'input_json_delta') {
164
- const chunk = {
165
- type: 'content_block_delta',
166
- text: jsonData.delta.partial_json || '',
167
- isComplete: false,
168
- isThinking: false,
169
- data: {
170
- delta: jsonData.delta,
171
- index: jsonData.index
109
+ break;
110
+ case 'content_block_delta':
111
+ if (jsonData.index !== undefined) {
112
+ chunk.index = jsonData.index;
172
113
  }
173
- };
174
- // Вызываем onToken если передан
175
- if (onToken && jsonData.delta.partial_json) {
176
- onToken(jsonData.delta.partial_json);
177
- }
178
- return {
179
- isInThinkingBlock,
180
- thinkingContent,
181
- textContent,
182
- thinkingSignature,
183
- chunk,
184
- isDone: false
185
- };
186
- }
187
- // ✅ ИСПРАВЛЕНИЕ: Обрабатываем текстовые дельты в правильном формате
188
- if (jsonData.type === 'content_block_delta' && jsonData.delta?.type === 'text_delta' && jsonData.delta.text) {
189
- const newTextContent = textContent + jsonData.delta.text;
190
- const chunk = {
191
- type: 'content_block_delta',
192
- text: jsonData.delta.text, // Извлекаем текст из delta.text
193
- isComplete: false,
194
- isThinking: false
195
- };
196
- // Вызываем onToken если передан
197
- if (onToken) {
198
- onToken(jsonData.delta.text);
199
- }
200
- return {
201
- isInThinkingBlock,
202
- thinkingContent,
203
- textContent: newTextContent,
204
- thinkingSignature,
205
- chunk,
206
- isDone: false
207
- };
208
- }
209
- // ✅ СОХРАНЯЕМ: Обрабатываем legacy форматы для совместимости
210
- if (jsonData.event === 'thinking_delta' && jsonData.thinking && isInThinkingBlock) {
211
- const newThinkingContent = thinkingContent + jsonData.thinking;
212
- const chunk = {
213
- type: 'content_block_delta',
214
- text: jsonData.thinking,
215
- isComplete: false,
216
- isThinking: true
217
- };
218
- if (onToken) {
219
- onToken(jsonData.thinking);
220
- }
221
- return {
222
- isInThinkingBlock: true,
223
- thinkingContent: newThinkingContent,
224
- textContent,
225
- thinkingSignature,
226
- chunk,
227
- isDone: false
228
- };
229
- }
230
- // Обрабатываем завершение мышления (legacy)
231
- if (jsonData.type === 'thinking_end' ||
232
- (jsonData.event === 'thinking_signature' && isInThinkingBlock)) {
233
- let signature = thinkingSignature;
234
- if (jsonData.signature) {
235
- signature = jsonData.signature;
236
- }
237
- const chunk = {
238
- type: 'content_block_delta',
239
- text: jsonData.text || '',
240
- isComplete: false,
241
- isThinking: false
242
- };
243
- if (jsonData.text && onToken) {
244
- onToken(jsonData.text);
245
- }
246
- return {
247
- isInThinkingBlock: false,
248
- thinkingContent,
249
- textContent: textContent + (jsonData.text || ''),
250
- thinkingSignature: signature,
251
- chunk,
252
- isDone: false
253
- };
254
- }
255
- // Обрабатываем текстовые дельты (legacy)
256
- if (jsonData.event === 'text_delta' && jsonData.text) {
257
- const newTextContent = textContent + jsonData.text;
258
- const chunk = {
259
- type: 'content_block_delta',
260
- text: jsonData.text,
261
- isComplete: false,
262
- isThinking: false
263
- };
264
- if (onToken) {
265
- onToken(jsonData.text);
266
- }
267
- return {
268
- isInThinkingBlock,
269
- thinkingContent,
270
- textContent: newTextContent,
271
- thinkingSignature,
272
- chunk,
273
- isDone: false
274
- };
275
- }
276
- // ✅ ИСПРАВЛЕНИЕ: Обрабатываем message_start согласно документации Anthropic
277
- if (jsonData.type === 'message_start') {
278
- const chunk = {
279
- type: 'message_start',
280
- message: jsonData.message,
281
- text: '',
282
- isComplete: false
283
- };
284
- return {
285
- isInThinkingBlock,
286
- thinkingContent,
287
- textContent,
288
- thinkingSignature,
289
- chunk,
290
- isDone: false
291
- };
292
- }
293
- // ✅ ИСПРАВЛЕНИЕ: Обрабатываем message_delta согласно документации Anthropic
294
- if (jsonData.type === 'message_delta') {
295
- const chunk = {
296
- type: 'message_delta',
297
- delta: jsonData.delta,
298
- text: '',
299
- isComplete: false
300
- };
301
- return {
302
- isInThinkingBlock,
303
- thinkingContent,
304
- textContent,
305
- thinkingSignature,
306
- chunk,
307
- isDone: false
308
- };
309
- }
310
- // ✅ ИСПРАВЛЕНИЕ: Обрабатываем message_stop согласно документации Anthropic
311
- if (jsonData.type === 'message_stop') {
312
- const chunk = {
313
- type: 'message_stop',
314
- message: jsonData.message,
315
- text: '',
316
- isComplete: true
317
- };
318
- return {
319
- isInThinkingBlock: false, // Завершаем thinking при остановке сообщения
320
- thinkingContent,
321
- textContent,
322
- thinkingSignature,
323
- chunk,
324
- isDone: true
325
- };
326
- }
327
- // Обрабатываем обычные текстовые данные (fallback)
328
- if (jsonData.content || jsonData.text || jsonData.delta) {
329
- const text = jsonData.content || jsonData.text || jsonData.delta;
330
- const newTextContent = textContent + text;
331
- const chunk = {
332
- type: 'content_block_delta',
333
- text: text,
334
- isComplete: false,
335
- isThinking: false
336
- };
337
- if (onToken) {
338
- onToken(text);
339
- }
340
- return {
341
- isInThinkingBlock,
342
- thinkingContent,
343
- textContent: newTextContent,
344
- thinkingSignature,
345
- chunk,
346
- isDone: false
347
- };
114
+ if (jsonData.delta) {
115
+ chunk.delta = jsonData.delta;
116
+ }
117
+ break;
118
+ case 'content_block_stop':
119
+ if (jsonData.index !== undefined) {
120
+ chunk.index = jsonData.index;
121
+ }
122
+ break;
123
+ case 'message_delta':
124
+ if (jsonData.delta) {
125
+ chunk.message_delta = jsonData.delta;
126
+ }
127
+ break;
128
+ case 'error':
129
+ if (jsonData.error) {
130
+ chunk.error = jsonData.error;
131
+ }
132
+ break;
133
+ // message_stop и ping не требуют дополнительных полей
348
134
  }
349
- // Удалено: signature_delta уже обрабатывается выше в правильном порядке
350
- // Если ничего не обработали, возвращаем исходное состояние
351
- return { isInThinkingBlock, thinkingContent, textContent, thinkingSignature, isDone: false };
135
+ return { chunk };
352
136
  }
353
137
  catch (error) {
354
- console.warn('Ошибка обработки потокового чанка:', error);
355
- return { isInThinkingBlock, thinkingContent, textContent, thinkingSignature, isDone: false };
138
+ if (logger) {
139
+ logger.error('Ошибка обработки чанка', { error, line: line.substring(0, 100) });
140
+ }
141
+ return {};
356
142
  }
357
143
  }
358
144
  /**
359
145
  * Обрабатывает ошибки потоковой передачи
360
- * @param error Ошибка
146
+ * @param error Ошибка для обработки
361
147
  * @returns Обработанная ошибка
362
148
  */
363
149
  export function handleStreamError(error) {
364
150
  if (error instanceof Error) {
365
151
  return error;
366
152
  }
367
- if (error && error.message) {
368
- return new Error(error.message);
369
- }
370
153
  if (typeof error === 'string') {
371
154
  return new Error(error);
372
155
  }
373
- return new Error('Неизвестная ошибка потоковой передачи');
156
+ if (error && typeof error === 'object') {
157
+ const message = error.message || error.error || JSON.stringify(error);
158
+ return new Error(message);
159
+ }
160
+ return new Error('Неизвестная ошибка потока');
374
161
  }
375
162
  //# sourceMappingURL=stream-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,iBAA0B,EAC1B,eAAuB,EACvB,WAAmB,EACnB,iBAAyB,EACzB,OAAiC;IAEjC,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC/F,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAElC,iCAAiC;QACjC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;gBACzE,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;aAChF,CAAC;YAEF,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,4DAA4D;QAC5D,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,aAAa,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3F,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,IAAI;aACjB,CAAC;YAEF,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,aAAa,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3F,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;gBACjB,kEAAkE;gBAClE,IAAI,EAAE;oBACJ,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB;aACF,CAAC;YAEF,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACvF,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;gBACjB,IAAI,EAAE;oBACJ,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB;aACF,CAAC;YAEF,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,0EAA0E;QAE1E,8EAA8E;QAC9E,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,iBAAiB,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtH,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;YAE9C,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,EAAE,EAAE,sCAAsC;gBAChD,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,IAAI,EAAE,uCAAuC;gBACzD,SAAS,EAAE,YAAY;aACxB,CAAC;YAEF,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW;gBACX,iBAAiB,EAAE,YAAY;gBAC/B,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,+EAA+E;QAC/E,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,gBAAgB,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpH,MAAM,kBAAkB,GAAG,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;YAErE,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,sCAAsC;gBACrE,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,IAAI;aACjB,CAAC;YAEF,gCAAgC;YAChC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YAED,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,eAAe,EAAE,kBAAkB;gBACnC,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,iBAAiB,EAAE,uCAAuC;gBACtE,IAAI,EAAE;oBACJ,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB;aACF,CAAC;YAEF,OAAO;gBACL,iBAAiB,EAAE,KAAK,EAAE,qDAAqD;gBAC/E,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC3F,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE;gBACvC,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;gBACjB,IAAI,EAAE;oBACJ,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB;aACF,CAAC;YAEF,gCAAgC;YAChC,IAAI,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvC,CAAC;YAED,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC5G,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAEzD,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,kCAAkC;gBAC7D,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;aAClB,CAAC;YAEF,gCAAgC;YAChC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAED,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW,EAAE,cAAc;gBAC3B,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,IAAI,QAAQ,CAAC,KAAK,KAAK,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YAClF,MAAM,kBAAkB,GAAG,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAE/D,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,IAAI;aACjB,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,eAAe,EAAE,kBAAkB;gBACnC,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc;YAChC,CAAC,QAAQ,CAAC,KAAK,KAAK,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC;YAEnE,IAAI,SAAS,GAAG,iBAAiB,CAAC;YAClC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvB,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YACjC,CAAC;YAED,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;gBACzB,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;aAClB,CAAC;YAEF,IAAI,QAAQ,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED,OAAO;gBACL,iBAAiB,EAAE,KAAK;gBACxB,eAAe;gBACf,WAAW,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;gBAChD,iBAAiB,EAAE,SAAS;gBAC5B,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,QAAQ,CAAC,KAAK,KAAK,YAAY,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;YAEnD,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;aAClB,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW,EAAE,cAAc;gBAC3B,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,4EAA4E;QAC5E,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACtC,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,KAAK;aAClB,CAAC;YAEF,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,4EAA4E;QAC5E,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACtC,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,KAAK;aAClB,CAAC;YAEF,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACrC,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,IAAI;aACjB,CAAC;YAEF,OAAO;gBACL,iBAAiB,EAAE,KAAK,EAAE,6CAA6C;gBACvE,eAAe;gBACf,WAAW;gBACX,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC;YACjE,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,CAAC;YAE1C,MAAM,KAAK,GAAoB;gBAC7B,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;aAClB,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAED,OAAO;gBACL,iBAAiB;gBACjB,eAAe;gBACf,WAAW,EAAE,cAAc;gBAC3B,iBAAiB;gBACjB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,0EAA0E;QAE1E,2DAA2D;QAC3D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAE/F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAU;IAC1C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { CodeModificationApi } from './api/code-modification-api.js';
7
7
  import { ChatApi } from './api/chat-api/index.js';
8
8
  import { ModelsApi } from './api/models-api.js';
9
9
  // Версия SDK
10
- const SDK_VERSION = '3.1.9';
10
+ const SDK_VERSION = '3.1.11';
11
11
  /**
12
12
  * Определение типа среды выполнения
13
13
  * @returns 'browser' | 'node' | 'unknown'
@@ -50,25 +50,25 @@ export class CodeSolverSDK {
50
50
  log: (message) => {
51
51
  const debugLevel = this._options.debug;
52
52
  if (debugLevel && debugLevel !== 'silent' && debugLevel !== 'error' && debugLevel !== 'warn') {
53
- console.log(`[CodeSolverSDK] ${message}`);
53
+ console.log(`${message}`);
54
54
  }
55
55
  },
56
56
  warn: (message) => {
57
57
  const debugLevel = this._options.debug;
58
58
  if (debugLevel && debugLevel !== 'silent' && debugLevel !== 'error') {
59
- console.warn(`[CodeSolverSDK] ⚠️ ${message}`);
59
+ console.warn(`⚠️ ${message}`);
60
60
  }
61
61
  },
62
62
  error: (message) => {
63
63
  const debugLevel = this._options.debug;
64
64
  if (debugLevel !== 'silent') {
65
- console.error(`[CodeSolverSDK] 🔴 ${message}`);
65
+ console.error(`🔴 ${message}`);
66
66
  }
67
67
  },
68
68
  debug: (message) => {
69
69
  const debugLevel = this._options.debug;
70
70
  if (debugLevel === 'verbose' || debugLevel === 'debug') {
71
- console.debug(`[CodeSolverSDK] 🔍 ${message}`);
71
+ console.debug(`🔍 ${message}`);
72
72
  }
73
73
  },
74
74
  // ✅ НОВЫЕ методы для контроля стрим логирования
@@ -78,7 +78,7 @@ export class CodeSolverSDK {
78
78
  if (debugLevel === 'silent')
79
79
  return;
80
80
  if (streamLogging?.sseEvents || (debugLevel === 'verbose' || debugLevel === 'debug')) {
81
- console.log(`[SDK-STREAM] ${message}`, data);
81
+ console.log(`STREAM: ${message}`, data);
82
82
  }
83
83
  },
84
84
  streamChunk: (message, data) => {
@@ -87,7 +87,7 @@ export class CodeSolverSDK {
87
87
  if (debugLevel === 'silent')
88
88
  return;
89
89
  if (streamLogging?.streamChunks || (debugLevel === 'verbose' || debugLevel === 'debug')) {
90
- console.log(`[SDK-CHUNK] ${message}`, data);
90
+ console.log(`CHUNK: ${message}`, data);
91
91
  }
92
92
  },
93
93
  eventCallback: (message, data) => {
@@ -96,7 +96,7 @@ export class CodeSolverSDK {
96
96
  if (debugLevel === 'silent')
97
97
  return;
98
98
  if (streamLogging?.eventCallbacks || (debugLevel === 'verbose' || debugLevel === 'debug')) {
99
- console.log(`[SDK-EVENT] ${message}`, data);
99
+ console.log(`EVENT: ${message}`, data);
100
100
  }
101
101
  }
102
102
  };
@@ -253,7 +253,7 @@ export class CodeSolverSDK {
253
253
  CodeSolverSDK.errorHandler(error);
254
254
  }
255
255
  else {
256
- console.error('[CodeSolverSDK] Необработанная ошибка:', error);
256
+ console.error('Необработанная ошибка:', error);
257
257
  }
258
258
  }
259
259
  /**
@@ -267,7 +267,7 @@ export class CodeSolverSDK {
267
267
  * Освобождает ресурсы SDK
268
268
  */
269
269
  dispose() {
270
- this.logger.debug('Освобождение ресурсов SDK');
270
+ this.logger.debug('Освобождение ресурсов');
271
271
  // В HTTP-only версии нет ресурсов для освобождения
272
272
  }
273
273
  /**