solver-sdk 1.8.0 → 1.8.1

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 (91) hide show
  1. package/README.md +176 -468
  2. package/dist/cjs/api/{chat-api.js → chat-api/index.js} +77 -125
  3. package/dist/cjs/api/chat-api/index.js.map +1 -0
  4. package/dist/cjs/api/chat-api/interfaces.js +3 -0
  5. package/dist/cjs/api/chat-api/interfaces.js.map +1 -0
  6. package/dist/cjs/api/chat-api/models.js +6 -0
  7. package/dist/cjs/api/chat-api/models.js.map +1 -0
  8. package/dist/cjs/api/chat-api/stream-utils.js +192 -0
  9. package/dist/cjs/api/chat-api/stream-utils.js.map +1 -0
  10. package/dist/cjs/api/chat-api/websocket-helpers.js +211 -0
  11. package/dist/cjs/api/chat-api/websocket-helpers.js.map +1 -0
  12. package/dist/cjs/api/projects-api.js +279 -5
  13. package/dist/cjs/api/projects-api.js.map +1 -1
  14. package/dist/cjs/code-solver-sdk.js +12 -17
  15. package/dist/cjs/code-solver-sdk.js.map +1 -1
  16. package/dist/cjs/constants/websocket-events.constants.js +77 -52
  17. package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
  18. package/dist/cjs/utils/code-solver-websocket-client.js +87 -56
  19. package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
  20. package/dist/cjs/utils/http-client.js +7 -0
  21. package/dist/cjs/utils/http-client.js.map +1 -1
  22. package/dist/cjs/utils/reasoning-auth-helper.js +58 -0
  23. package/dist/cjs/utils/reasoning-auth-helper.js.map +1 -0
  24. package/dist/cjs/utils/websocket-client.js +37 -10
  25. package/dist/cjs/utils/websocket-client.js.map +1 -1
  26. package/dist/esm/api/{chat-api.js → chat-api/index.js} +74 -125
  27. package/dist/esm/api/chat-api/index.js.map +1 -0
  28. package/dist/esm/api/chat-api/interfaces.js +2 -0
  29. package/dist/esm/api/chat-api/interfaces.js.map +1 -0
  30. package/dist/esm/api/chat-api/models.js +5 -0
  31. package/dist/esm/api/chat-api/models.js.map +1 -0
  32. package/dist/esm/api/chat-api/stream-utils.js +188 -0
  33. package/dist/esm/api/chat-api/stream-utils.js.map +1 -0
  34. package/dist/esm/api/chat-api/websocket-helpers.js +205 -0
  35. package/dist/esm/api/chat-api/websocket-helpers.js.map +1 -0
  36. package/dist/esm/api/projects-api.js +279 -5
  37. package/dist/esm/api/projects-api.js.map +1 -1
  38. package/dist/esm/code-solver-sdk.js +10 -15
  39. package/dist/esm/code-solver-sdk.js.map +1 -1
  40. package/dist/esm/constants/websocket-events.constants.js +76 -51
  41. package/dist/esm/constants/websocket-events.constants.js.map +1 -1
  42. package/dist/esm/utils/code-solver-websocket-client.js +87 -56
  43. package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
  44. package/dist/esm/utils/http-client.js +7 -0
  45. package/dist/esm/utils/http-client.js.map +1 -1
  46. package/dist/esm/utils/reasoning-auth-helper.js +54 -0
  47. package/dist/esm/utils/reasoning-auth-helper.js.map +1 -0
  48. package/dist/esm/utils/websocket-client.js +37 -10
  49. package/dist/esm/utils/websocket-client.js.map +1 -1
  50. package/dist/types/api/chat-api/index.d.ts +81 -0
  51. package/dist/types/api/chat-api/index.d.ts.map +1 -0
  52. package/dist/types/api/chat-api/interfaces.d.ts +47 -0
  53. package/dist/types/api/chat-api/interfaces.d.ts.map +1 -0
  54. package/dist/types/api/{chat-api.d.ts → chat-api/models.d.ts} +10 -73
  55. package/dist/types/api/chat-api/models.d.ts.map +1 -0
  56. package/dist/types/api/chat-api/stream-utils.d.ts +31 -0
  57. package/dist/types/api/chat-api/stream-utils.d.ts.map +1 -0
  58. package/dist/types/api/chat-api/websocket-helpers.d.ts +40 -0
  59. package/dist/types/api/chat-api/websocket-helpers.d.ts.map +1 -0
  60. package/dist/types/api/projects-api.d.ts +114 -1
  61. package/dist/types/api/projects-api.d.ts.map +1 -1
  62. package/dist/types/code-solver-sdk.d.ts +1 -1
  63. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  64. package/dist/types/constants/websocket-events.constants.d.ts +65 -36
  65. package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
  66. package/dist/types/interfaces/http-client.d.ts +1 -1
  67. package/dist/types/interfaces/http-client.d.ts.map +1 -1
  68. package/dist/types/types/index.d.ts +8 -0
  69. package/dist/types/types/index.d.ts.map +1 -1
  70. package/dist/types/utils/code-solver-websocket-client.d.ts +44 -43
  71. package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
  72. package/dist/types/utils/http-client.d.ts +5 -0
  73. package/dist/types/utils/http-client.d.ts.map +1 -1
  74. package/dist/types/utils/reasoning-auth-helper.d.ts +24 -0
  75. package/dist/types/utils/reasoning-auth-helper.d.ts.map +1 -0
  76. package/dist/types/utils/websocket-client.d.ts +6 -0
  77. package/dist/types/utils/websocket-client.d.ts.map +1 -1
  78. package/docs/API_REFERENCE.md +432 -0
  79. package/docs/AUTHENTICATION.md +179 -0
  80. package/docs/ERROR_HANDLING.md +240 -0
  81. package/docs/INTEGRATION_EXAMPLES.md +342 -0
  82. package/docs/PING_PONG.md +212 -0
  83. package/docs/README.md +102 -0
  84. package/docs/WEBSOCKET.md +299 -0
  85. package/docs/advanced/PING_PONG.md +212 -0
  86. package/docs/features/THINKING.md +158 -0
  87. package/docs/indexing/INDEXING.md +231 -0
  88. package/package.json +4 -3
  89. package/dist/cjs/api/chat-api.js.map +0 -1
  90. package/dist/esm/api/chat-api.js.map +0 -1
  91. package/dist/types/api/chat-api.d.ts.map +0 -1
@@ -0,0 +1,432 @@
1
+ # API Reference
2
+
3
+ В этом документе описаны основные классы и методы SDK.
4
+
5
+ ## Содержание
6
+
7
+ - [CodeSolverSDK](#codesolversdk)
8
+ - [ChatApi](#chatapi)
9
+ - [ProjectsApi](#projectsapi)
10
+ - [SearchApi](#searchapi)
11
+ - [ReasoningApi](#reasoningapi)
12
+ - [WebSocketClient](#websocketclient)
13
+
14
+ ## CodeSolverSDK
15
+
16
+ Основной класс SDK, предоставляющий доступ ко всем API.
17
+
18
+ ### Конструктор
19
+
20
+ ```javascript
21
+ const sdk = new CodeSolverSDK(options);
22
+ ```
23
+
24
+ ### Параметры
25
+
26
+ | Параметр | Тип | Описание | Обязательно |
27
+ |----------|-----|----------|-------------|
28
+ | `baseURL` | string | Базовый URL API | Да |
29
+ | `apiKey` | string | API ключ для авторизации | Нет |
30
+ | `wsURL` | string | URL для WebSocket соединений (если отличается от baseURL) | Нет |
31
+ | `timeout` | number | Таймаут для HTTP запросов (мс) | Нет |
32
+ | `headers` | object | Дополнительные HTTP заголовки | Нет |
33
+ | `websocket` | object | Настройки WebSocket соединений | Нет |
34
+ | `mode` | string | Режим работы SDK ('browser', 'node', 'auto') | Нет |
35
+
36
+ ### Методы
37
+
38
+ #### `getWebSocketClient()`
39
+
40
+ Возвращает экземпляр WebSocket клиента для работы с соединениями.
41
+
42
+ ```javascript
43
+ const wsClient = sdk.getWebSocketClient();
44
+ ```
45
+
46
+ #### `checkHealth()`
47
+
48
+ Проверяет доступность API сервера.
49
+
50
+ ```javascript
51
+ const isHealthy = await sdk.checkHealth();
52
+ ```
53
+
54
+ #### `connect()`
55
+
56
+ Подключается к WebSocket серверу.
57
+
58
+ ```javascript
59
+ await sdk.connect();
60
+ ```
61
+
62
+ #### `disconnect()`
63
+
64
+ Отключается от WebSocket сервера.
65
+
66
+ ```javascript
67
+ await sdk.disconnect();
68
+ ```
69
+
70
+ #### `dispose()`
71
+
72
+ Освобождает ресурсы, включая WebSocket соединения.
73
+
74
+ ```javascript
75
+ sdk.dispose();
76
+ ```
77
+
78
+ #### `setApiKey(apiKey)`
79
+
80
+ Устанавливает новый API ключ для SDK.
81
+
82
+ ```javascript
83
+ sdk.setApiKey('новый-api-ключ');
84
+ ```
85
+
86
+ ## ChatApi
87
+
88
+ API для работы с чатом и AI-моделями.
89
+
90
+ ### Методы
91
+
92
+ #### `chat(messages, options)`
93
+
94
+ Отправляет запрос чата и возвращает полный ответ.
95
+
96
+ ```javascript
97
+ const response = await sdk.chat.chat(
98
+ messages,
99
+ options
100
+ );
101
+ ```
102
+
103
+ ##### Параметры
104
+
105
+ | Параметр | Тип | Описание | Обязательно |
106
+ |----------|-----|----------|-------------|
107
+ | `messages` | Array | Массив сообщений для отправки модели | Да |
108
+ | `options` | Object | Параметры запроса (модель, temperature и т.д.) | Нет |
109
+
110
+ #### `streamChatWithThinking(messages, options, onEvent)`
111
+
112
+ Отправляет запрос чата в потоковом режиме с получением "мышления" модели.
113
+
114
+ ```javascript
115
+ const response = await sdk.chat.streamChatWithThinking(
116
+ messages,
117
+ {
118
+ model: 'claude-3-7-sonnet-20240229',
119
+ thinking: true,
120
+ temperature: 0.7
121
+ },
122
+ (eventType, data) => {
123
+ if (eventType === 'thinking_delta') {
124
+ console.log('Мышление:', data.thinking);
125
+ } else if (eventType === 'text_delta') {
126
+ console.log('Ответ:', data.text);
127
+ }
128
+ }
129
+ );
130
+ ```
131
+
132
+ #### `connectWebSocket()`
133
+
134
+ Создает новое WebSocket соединение для потокового чата.
135
+
136
+ ```javascript
137
+ await sdk.chat.connectWebSocket();
138
+ ```
139
+
140
+ #### `getModels()`
141
+
142
+ Получает список доступных моделей.
143
+
144
+ ```javascript
145
+ const models = await sdk.chat.getModels();
146
+ ```
147
+
148
+ ## ProjectsApi
149
+
150
+ API для работы с проектами.
151
+
152
+ ### Методы
153
+
154
+ #### `getAllProjects()`
155
+
156
+ Получает список всех проектов.
157
+
158
+ ```javascript
159
+ const projects = await sdk.projects.getAllProjects();
160
+ ```
161
+
162
+ #### `getProject(projectId)`
163
+
164
+ Получает информацию о проекте по ID.
165
+
166
+ ```javascript
167
+ const project = await sdk.projects.getProject('project-id');
168
+ ```
169
+
170
+ #### `createProject(name, path, options)`
171
+
172
+ Создаёт новый проект.
173
+
174
+ ```javascript
175
+ const project = await sdk.projects.createProject('Мой проект', '/path/to/project', {
176
+ excludePatterns: ['node_modules', '.git']
177
+ });
178
+ ```
179
+
180
+ #### `updateProject(projectId, data)`
181
+
182
+ Обновляет проект.
183
+
184
+ ```javascript
185
+ await sdk.projects.updateProject('project-id', { name: 'Новое имя' });
186
+ ```
187
+
188
+ #### `deleteProject(projectId)`
189
+
190
+ Удаляет проект.
191
+
192
+ ```javascript
193
+ await sdk.projects.deleteProject('project-id');
194
+ ```
195
+
196
+ #### `indexProject(projectId)`
197
+
198
+ Запускает индексацию проекта.
199
+
200
+ ```javascript
201
+ await sdk.projects.indexProject('project-id');
202
+ ```
203
+
204
+ #### `getOrCreateProject(path, name)`
205
+
206
+ Получает существующий проект по пути или создает новый, если проект не найден.
207
+
208
+ ```javascript
209
+ const project = await sdk.projects.getOrCreateProject('/path/to/project', 'Название проекта');
210
+ ```
211
+
212
+ #### `indexProjectByPath(path, options)`
213
+
214
+ Индексирует проект по указанному пути. Если проект не существует, он будет создан автоматически.
215
+
216
+ ```javascript
217
+ const result = await sdk.projects.indexProjectByPath('/path/to/project', {
218
+ name: 'Название проекта',
219
+ forceFull: true, // принудительная полная индексация
220
+ excludePatterns: ['node_modules', '.git'] // паттерны для исключения
221
+ });
222
+ ```
223
+
224
+ #### `createAndIndexProject(path, options)`
225
+
226
+ Комбинированный метод для создания (если не существует) и индексации проекта в одной операции.
227
+
228
+ ```javascript
229
+ const result = await sdk.projects.createAndIndexProject('/path/to/project', {
230
+ name: 'Название проекта',
231
+ forceFull: false,
232
+ excludePatterns: ['node_modules', '.git']
233
+ });
234
+ ```
235
+
236
+ #### `connectWebSocket()`
237
+
238
+ Подключается к WebSocket для отслеживания индексации.
239
+
240
+ ```javascript
241
+ await sdk.projects.connectWebSocket();
242
+ ```
243
+
244
+ #### `disconnectWebSocket()`
245
+
246
+ Отключается от WebSocket индексации.
247
+
248
+ ```javascript
249
+ await sdk.projects.disconnectWebSocket();
250
+ ```
251
+
252
+ #### `on(event, callback)`
253
+
254
+ Добавляет обработчик события для индексации.
255
+
256
+ ```javascript
257
+ sdk.projects.on('indexing_progress', (data) => {
258
+ console.log(`Прогресс: ${data.progress}%`);
259
+ });
260
+ ```
261
+
262
+ #### `stopIndexing(projectId)`
263
+
264
+ Останавливает индексацию проекта.
265
+
266
+ ```javascript
267
+ await sdk.projects.stopIndexing('project-id');
268
+ ```
269
+
270
+ #### `getIndexingStatus(projectId)`
271
+
272
+ Получает статус индексации проекта.
273
+
274
+ ```javascript
275
+ const status = await sdk.projects.getIndexingStatus('project-id');
276
+ ```
277
+
278
+ ## SearchApi
279
+
280
+ API для поиска кода.
281
+
282
+ ### Методы
283
+
284
+ #### `searchCode(projectId, options)`
285
+
286
+ Выполняет поиск кода в проекте.
287
+
288
+ ```javascript
289
+ const results = await sdk.search.searchCode('project-id', {
290
+ query: 'function example',
291
+ limit: 10
292
+ });
293
+ ```
294
+
295
+ #### `semanticSearch(projectId, options)`
296
+
297
+ Выполняет семантический поиск в проекте.
298
+
299
+ ```javascript
300
+ const results = await sdk.search.semanticSearch('project-id', {
301
+ query: 'функция для обработки HTTP запросов',
302
+ limit: 10,
303
+ includeContent: true
304
+ });
305
+ ```
306
+
307
+ ## ReasoningApi
308
+
309
+ API для работы с рассуждениями.
310
+
311
+ ### Методы
312
+
313
+ #### `createReasoning(options)`
314
+
315
+ Создаёт новое рассуждение.
316
+
317
+ ```javascript
318
+ const reasoning = await sdk.reasoning.createReasoning({
319
+ projectId: 'project-id',
320
+ query: 'Объясни этот проект'
321
+ });
322
+ ```
323
+
324
+ #### `getReasoning(reasoningId)`
325
+
326
+ Получает информацию о рассуждении.
327
+
328
+ ```javascript
329
+ const reasoning = await sdk.reasoning.getReasoning('reasoning-id');
330
+ ```
331
+
332
+ #### `connectWebSocket(reasoningId)`
333
+
334
+ Подключается к WebSocket для отслеживания рассуждений.
335
+
336
+ ```javascript
337
+ await sdk.reasoning.connectWebSocket('reasoning-id');
338
+ ```
339
+
340
+ #### `startReasoning(reasoningId)`
341
+
342
+ Запускает процесс рассуждения.
343
+
344
+ ```javascript
345
+ await sdk.reasoning.startReasoning('reasoning-id');
346
+ ```
347
+
348
+ #### `on(event, callback)`
349
+
350
+ Добавляет обработчик события для рассуждений.
351
+
352
+ ```javascript
353
+ sdk.reasoning.on('thinking', (data) => {
354
+ console.log('Мышление:', data.content);
355
+ });
356
+
357
+ sdk.reasoning.on('complete', (data) => {
358
+ console.log('Результат:', data.content);
359
+ });
360
+ ```
361
+
362
+ ## WebSocketClient
363
+
364
+ Клиент для работы с WebSocket соединениями. Получается через `sdk.getWebSocketClient()`.
365
+
366
+ ### Методы
367
+
368
+ #### `connectToReasoning(reasoningId)`
369
+
370
+ Подключается к namespace рассуждений.
371
+
372
+ ```javascript
373
+ await wsClient.connectToReasoning('reasoning-id');
374
+ ```
375
+
376
+ #### `connectToIndexing(projectId)`
377
+
378
+ Подключается к namespace индексации.
379
+
380
+ ```javascript
381
+ await wsClient.connectToIndexing('project-id');
382
+ ```
383
+
384
+ #### `disconnect(namespace)`
385
+
386
+ Отключается от определенного namespace.
387
+
388
+ ```javascript
389
+ await wsClient.disconnect(WebSocketNamespace.REASONING);
390
+ ```
391
+
392
+ #### `disconnectAll()`
393
+
394
+ Отключается от всех namespace.
395
+
396
+ ```javascript
397
+ await wsClient.disconnectAll();
398
+ ```
399
+
400
+ #### `isConnected(namespace)`
401
+
402
+ Проверяет подключение к определенному namespace.
403
+
404
+ ```javascript
405
+ const isConnected = wsClient.isConnected(WebSocketNamespace.REASONING);
406
+ ```
407
+
408
+ #### `isConnectedToReasoning()`
409
+
410
+ Проверяет подключение к namespace рассуждений.
411
+
412
+ ```javascript
413
+ const isConnected = wsClient.isConnectedToReasoning();
414
+ ```
415
+
416
+ #### `isConnectedToIndexing()`
417
+
418
+ Проверяет подключение к namespace индексации.
419
+
420
+ ```javascript
421
+ const isConnected = wsClient.isConnectedToIndexing();
422
+ ```
423
+
424
+ #### `on(event, callback, namespace)`
425
+
426
+ Добавляет обработчик события для определенного namespace.
427
+
428
+ ```javascript
429
+ wsClient.on('thinking', (data) => {
430
+ console.log('Мышление:', data);
431
+ }, WebSocketNamespace.REASONING);
432
+ ```
@@ -0,0 +1,179 @@
1
+ # Аутентификация в Solver SDK
2
+
3
+ В этом документе описаны методы аутентификации в Solver SDK для различных API и WebSocket соединений.
4
+
5
+ ## Содержание
6
+
7
+ - [HTTP API аутентификация](#http-api-аутентификация)
8
+ - [WebSocket аутентификация](#websocket-аутентификация)
9
+ - [Тестовая аутентификация](#тестовая-аутентификация)
10
+ - [Обработка ошибок аутентификации](#обработка-ошибок-аутентификации)
11
+
12
+ ## HTTP API аутентификация
13
+
14
+ SDK поддерживает два основных метода аутентификации для HTTP запросов:
15
+
16
+ ### 1. API ключ
17
+
18
+ ```javascript
19
+ const sdk = new CodeSolverSDK({
20
+ baseURL: 'https://api.example.com',
21
+ apiKey: 'your-api-key'
22
+ });
23
+ ```
24
+
25
+ API ключ автоматически добавляется в заголовок `X-API-Key` для всех HTTP запросов.
26
+
27
+ ### 2. Пользовательские заголовки
28
+
29
+ ```javascript
30
+ const sdk = new CodeSolverSDK({
31
+ baseURL: 'https://api.example.com',
32
+ headers: {
33
+ 'Authorization': 'Bearer your-jwt-token',
34
+ 'X-Custom-Header': 'Custom-Value'
35
+ }
36
+ });
37
+ ```
38
+
39
+ ## WebSocket аутентификация
40
+
41
+ Для WebSocket соединений SDK использует отдельный механизм аутентификации через специальное событие `authenticate`.
42
+
43
+ ### Стандартная аутентификация WebSocket
44
+
45
+ ```javascript
46
+ // 1. Создаем экземпляр SDK
47
+ const sdk = new CodeSolverSDK({
48
+ baseURL: 'https://api.example.com',
49
+ apiKey: 'your-api-key'
50
+ });
51
+
52
+ // 2. Опции для streamChatWithThinking
53
+ const options = {
54
+ model: 'claude-3-7-sonnet-20240229',
55
+ thinking: true,
56
+ authToken: 'your-auth-token' // ← Токен для WebSocket аутентификации
57
+ };
58
+
59
+ // 3. Отправка запроса
60
+ const response = await sdk.chat.streamChatWithThinking(messages, options, handleEvent);
61
+ ```
62
+
63
+ Параметр `authToken` используется для аутентификации WebSocket соединений и передается в событии `authenticate`.
64
+
65
+ ### Низкоуровневая WebSocket аутентификация
66
+
67
+ Если вы работаете напрямую с WebSocket клиентом, вы можете настроить аутентификацию следующим образом:
68
+
69
+ ```javascript
70
+ // Получаем WebSocket клиент
71
+ const wsClient = sdk.getWebSocketClient();
72
+
73
+ // Настраиваем опции подключения с аутентификацией
74
+ const connectionOptions = {
75
+ namespace: 'reasoning',
76
+ authToken: 'your-auth-token',
77
+ query: {
78
+ reasoningId: 'reasoning-123'
79
+ }
80
+ };
81
+
82
+ // Подключаемся к WebSocket серверу
83
+ await wsClient.connect(connectionOptions);
84
+
85
+ // Проверяем статус аутентификации
86
+ const isAuthenticated = wsClient.isAuthenticated();
87
+ console.log('Аутентификация WebSocket:', isAuthenticated);
88
+ ```
89
+
90
+ ## Тестовая аутентификация
91
+
92
+ Для тестовых сред SDK поддерживает упрощенную аутентификацию:
93
+
94
+ ```javascript
95
+ const options = {
96
+ // Другие параметры...
97
+ authToken: 'test-token'
98
+ };
99
+
100
+ const response = await sdk.chat.streamChatWithThinking(messages, options, handleEvent);
101
+ ```
102
+
103
+ > **Важно**: Начиная с версии 1.7.4, устаревший параметр `testToken` удален в пользу унифицированного параметра `authToken`.
104
+
105
+ ## Обработка ошибок аутентификации
106
+
107
+ SDK предоставляет механизм обработки ошибок аутентификации:
108
+
109
+ ```javascript
110
+ // Обработчик событий WebSocket
111
+ const handleEvent = (eventType, data) => {
112
+ if (eventType === 'authentication_error') {
113
+ console.error('Ошибка аутентификации:', data.message);
114
+
115
+ // Возможная реакция на ошибку (переподключение, запрос нового токена и т.д.)
116
+ switch (data.code) {
117
+ case 'TOKEN_EXPIRED':
118
+ // Запросить новый токен
119
+ break;
120
+ case 'INVALID_TOKEN':
121
+ // Перенаправить на страницу входа
122
+ break;
123
+ default:
124
+ // Общая обработка ошибок
125
+ break;
126
+ }
127
+ }
128
+ };
129
+ ```
130
+
131
+ ### Коды ошибок аутентификации
132
+
133
+ | Код ошибки | Описание |
134
+ |------------|----------|
135
+ | `TOKEN_EXPIRED` | Истек срок действия токена |
136
+ | `INVALID_TOKEN` | Недействительный токен |
137
+ | `MISSING_TOKEN` | Отсутствует токен |
138
+ | `AUTH_ERROR` | Общая ошибка аутентификации |
139
+ | `FORBIDDEN` | Доступ запрещен |
140
+
141
+ ## Примеры
142
+
143
+ ### Полный пример аутентификации для рассуждений
144
+
145
+ ```javascript
146
+ const { CodeSolverSDK, WebSocketNamespace } = require('solver-sdk');
147
+
148
+ async function exampleWithAuthentication() {
149
+ // 1. Создаем экземпляр SDK
150
+ const sdk = new CodeSolverSDK({
151
+ baseURL: 'https://api.example.com',
152
+ apiKey: 'your-api-key'
153
+ });
154
+
155
+ // 2. Создаем рассуждение
156
+ const reasoning = await sdk.reasoning.createReasoning({
157
+ projectId: 'project-id',
158
+ query: 'Объясни этот проект'
159
+ });
160
+
161
+ // 3. Подключаемся через WebSocket с аутентификацией
162
+ await sdk.reasoning.connectWebSocket({
163
+ reasoningId: reasoning.id,
164
+ authToken: 'your-auth-token'
165
+ });
166
+
167
+ // 4. Настраиваем обработчики событий
168
+ sdk.reasoning.on('authentication_error', (data) => {
169
+ console.error('Ошибка аутентификации:', data);
170
+ });
171
+
172
+ sdk.reasoning.on('authenticated', (data) => {
173
+ console.log('Успешная аутентификация:', data);
174
+ });
175
+
176
+ // 5. Отправляем запрос
177
+ await sdk.reasoning.startReasoning(reasoning.id);
178
+ }
179
+ ```