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
package/README.md CHANGED
@@ -2,20 +2,59 @@
2
2
 
3
3
  SDK для интеграции с Code Solver Backend API. Поддерживает работу как в браузере, так и в Node.js.
4
4
 
5
- ## Возможности
6
-
7
- - Совместимость с ESM и CommonJS
8
- - Поддержка браузера и Node.js
9
- - Типизация TypeScript
10
- - WebSocket для реалтайм функций
5
+ <p align="center">
6
+ <a href="https://www.npmjs.com/package/solver-sdk"><img src="https://img.shields.io/npm/v/solver-sdk.svg" alt="NPM Version" /></a>
7
+ <a href="https://www.npmjs.com/package/solver-sdk"><img src="https://img.shields.io/npm/dm/solver-sdk.svg" alt="NPM Downloads" /></a>
8
+ <a href="https://github.com/code-solver/browser-sdk/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/solver-sdk.svg" alt="License" /></a>
9
+ </p>
10
+
11
+ ## 📋 Содержание
12
+
13
+ - [Основные возможности](#основные-возможности)
14
+ - [Установка](#установка)
15
+ - [Быстрый старт](#быстрый-старт)
16
+ - [CommonJS (Node.js)](#в-среде-commonjs-nodejs)
17
+ - [ESM (Node.js)](#в-среде-esm-nodejs)
18
+ - [Браузер](#в-браузере)
19
+ - [API](#api)
20
+ - [Основные компоненты](#основные-компоненты)
21
+ - [Опции SDK](#опции-sdk)
22
+ - [Продвинутые функции](#продвинутые-функции)
23
+ - [Проекты и индексация](#работа-с-проектами)
24
+ - [Поиск кода](#поиск-кода)
25
+ - [WebSocket и подписки](#работа-с-рассуждениями-через-websocket)
26
+ - [Работа с зависимостями](#api-для-работы-с-зависимостями)
27
+ - [Потоковая передача мышления](#потоковая-передача-мышления)
28
+ - [Региональные эндпоинты](#работа-с-региональными-эндпоинтами)
29
+ - [Примеры](#примеры)
30
+ - [Совместимость](#совместимость)
31
+ - [Разработка и тестирование](#разработка-и-тестирование)
32
+ - [Документация](#документация)
33
+ - [Лицензия](#лицензия)
34
+
35
+ ## Основные возможности
36
+
37
+ - **Кросс-платформенность**: совместимость с ESM, CommonJS, браузером и Node.js
38
+ - **Типизация**: полная поддержка TypeScript
39
+ - **Расширенная работа с WebSocket**:
11
40
  - Автоматический ping/pong механизм для мониторинга соединений
12
41
  - Сбор статистики времени отклика (RTT) и состояния соединений
13
- - Автоматическое обнаружение проблем с соединением
14
- - Поддержка Server-Sent Events (SSE)
15
- - Инкрементальная индексация отдельных файлов
16
- - Обработка ошибок и повторные попытки
17
- - Поддержка региональных эндпоинтов Anthropic API
18
- - Полная документация API
42
+ - Интеллектуальный механизм переподключения с экспоненциальной задержкой
43
+ - Настраиваемый мониторинг здоровья соединения
44
+ - **Потоковая передача мышления**:
45
+ - Метод `streamChatWithThinking()` для потоковой передачи процесса мышления модели
46
+ - Полная поддержка официального Anthropic API со всеми типами блоков контента
47
+ - Единый стандартизированный формат событий
48
+ - **Работа с регионами**:
49
+ - Поддержка региональных эндпоинтов Anthropic API
50
+ - Автоматическое переключение между регионами при ошибках
51
+ - Поддержка регионов: 'us-east-1', 'eu-west-1', 'ap-southeast-2'
52
+ - **Индексация и поиск**:
53
+ - Инкрементальная индексация отдельных файлов
54
+ - Семантический поиск кода
55
+ - **Обработка ошибок**:
56
+ - Интеллектуальные повторные попытки
57
+ - Обширная диагностика соединений
19
58
 
20
59
  ## Установка
21
60
 
@@ -23,7 +62,7 @@ SDK для интеграции с Code Solver Backend API. Поддержива
23
62
  npm install solver-sdk
24
63
  ```
25
64
 
26
- ## Использование
65
+ ## Быстрый старт
27
66
 
28
67
  ### В среде CommonJS (Node.js)
29
68
 
@@ -53,14 +92,7 @@ example().catch(console.error);
53
92
  ### В среде ESM (Node.js)
54
93
 
55
94
  ```javascript
56
- // Вариант 1: Динамический импорт через createRequire
57
- import { createRequire } from 'module';
58
- const require = createRequire(import.meta.url);
59
- const { CodeSolverSDK } = require('solver-sdk');
60
-
61
- // Вариант 2: Прямой импорт (если в package.json указан "type": "module")
62
- // import * as sdk from 'solver-sdk';
63
- // const { CodeSolverSDK } = sdk;
95
+ import { CodeSolverSDK } from 'solver-sdk';
64
96
 
65
97
  // Создание экземпляра SDK
66
98
  const sdk = new CodeSolverSDK({
@@ -95,7 +127,32 @@ example().catch(console.error);
95
127
  </script>
96
128
  ```
97
129
 
98
- ## Примеры
130
+ ## API
131
+
132
+ ### Основные компоненты
133
+
134
+ - `CodeSolverSDK` - Основной класс SDK
135
+ - `ReasoningApi` - API для работы с рассуждениями
136
+ - `ProjectsApi` - API для работы с проектами
137
+ - `SearchApi` - API для поиска кода
138
+ - `AgentsApi` - API для работы с агентами
139
+ - `ContextApi` - API для работы с контекстом кода
140
+ - `DependenciesApi` - API для работы с зависимостями
141
+ - `ChatApi` - API для работы с чатом и потоковой передачей мышления
142
+
143
+ ### Опции SDK
144
+
145
+ | Опция | Тип | Описание | Обязательна |
146
+ |-------|-----|----------|-------------|
147
+ | `baseURL` | string | Базовый URL API | Да |
148
+ | `apiKey` | string | API ключ для авторизации | Нет |
149
+ | `timeout` | number | Таймаут для HTTP запросов (мс) | Нет |
150
+ | `headers` | object | Пользовательские HTTP заголовки | Нет |
151
+ | `httpsAgent` | object | Опции для HTTPS агента (Node.js) | Нет |
152
+ | `mode` | string | Режим работы SDK ('browser', 'node', 'auto') | Нет |
153
+ | `websocket` | object | Настройки WebSocket (reconnect, timeout и др.) | Нет |
154
+
155
+ ## Продвинутые функции
99
156
 
100
157
  ### Работа с проектами
101
158
 
@@ -139,9 +196,6 @@ const reasoning = await sdk.reasoning.createReasoning({
139
196
  query: 'Объясни, как работает этот проект'
140
197
  });
141
198
 
142
- // Запуск процесса рассуждения
143
- await sdk.reasoning.startReasoning(reasoning.id);
144
-
145
199
  // Подключение через WebSocket
146
200
  const wsClient = sdk.getWebSocketClient();
147
201
  await wsClient.connectToReasoning(reasoning.id);
@@ -150,12 +204,16 @@ await wsClient.connectToReasoning(reasoning.id);
150
204
  wsClient.enablePingPong(30000, 3);
151
205
 
152
206
  // Обработка событий мышления
153
- wsClient.on('thinking', (data) => {
154
- console.log('Размышление:', data.content);
207
+ wsClient.on('content_block_delta', (data) => {
208
+ if (data.delta?.type === 'thinking_delta') {
209
+ console.log('Фрагмент размышления:', data.delta.thinking);
210
+ } else if (data.delta?.type === 'text_delta') {
211
+ console.log('Фрагмент ответа:', data.delta.text);
212
+ }
155
213
  });
156
214
 
157
- wsClient.on('complete', (data) => {
158
- console.log('Завершено:', data.content);
215
+ wsClient.on('message_stop', (data) => {
216
+ console.log('Завершено:', data);
159
217
 
160
218
  // Отключаем механизм ping/pong и закрываем соединение
161
219
  wsClient.disablePingPong();
@@ -163,63 +221,13 @@ wsClient.on('complete', (data) => {
163
221
  });
164
222
 
165
223
  // Мониторинг качества соединения
166
- setInterval(() => {
167
- const stats = wsClient.getPingStats(WebSocketNamespace.REASONING);
168
- console.log(`Среднее время отклика: ${stats.averageRtt}ms`);
169
- }, 60000);
224
+ const diagnostics = wsClient.diagnoseConnection(WebSocketNamespace.REASONING);
225
+ console.log(`Состояние соединения:`, diagnostics);
170
226
  ```
171
227
 
172
- ### Индексация отдельных файлов
228
+ ### API для работы с зависимостями
173
229
 
174
230
  ```javascript
175
- // Инкрементальная индексация отдельного файла
176
- async function updateSingleFile() {
177
- const projectId = 'your-project-id';
178
- const filePath = 'src/components/App.js';
179
- const fileContent = 'console.log("Hello World");';
180
-
181
- // Обновление индекса отдельного файла
182
- const result = await sdk.projects.updateFileIndex(
183
- projectId,
184
- filePath,
185
- {
186
- content: fileContent, // Содержимое файла
187
- force: false // true для принудительного обновления
188
- }
189
- );
190
-
191
- console.log(`Файл ${result.filePath} успешно проиндексирован`);
192
- console.log(`Метаданные файла:`, result.fileIndex);
193
-
194
- // Альтернативный вариант через ContextApi
195
- await sdk.context.updateFileIndex(
196
- projectId,
197
- filePath,
198
- fileContent,
199
- false // force flag
200
- );
201
- }
202
-
203
- // Чтение файла с диска и обновление индекса
204
- async function updateFileFromDisk() {
205
- const projectId = 'your-project-id';
206
- const filePath = 'src/components/App.js';
207
-
208
- // Обновление индекса без передачи содержимого
209
- // SDK прочитает файл с диска
210
- const result = await sdk.projects.updateFileIndex(projectId, filePath);
211
-
212
- console.log(`Файл ${result.filePath} успешно проиндексирован`);
213
- }
214
- ```
215
-
216
- ## API для работы с зависимостями
217
-
218
- SDK предоставляет API для работы с зависимостями файлов в проекте, что позволяет анализировать структуру проекта, импорты/экспорты и выявлять циклические зависимости.
219
-
220
- ### Получение зависимостей файла
221
-
222
- ```typescript
223
231
  // Получение зависимостей конкретного файла
224
232
  const fileDependencies = await sdk.dependencies.getFileDependencies(projectId, {
225
233
  filePath: 'src/app.js'
@@ -227,302 +235,24 @@ const fileDependencies = await sdk.dependencies.getFileDependencies(projectId, {
227
235
 
228
236
  console.log('Импорты:', fileDependencies.imports);
229
237
  console.log('Импортируется в:', fileDependencies.importedBy);
230
- console.log('Экспорты:', fileDependencies.exports);
231
- console.log('Экспортируемые из импортов:', fileDependencies.exportedBy);
232
- ```
233
-
234
- ### Получение графа зависимостей
235
238
 
236
- ```typescript
237
239
  // Получение полного графа зависимостей проекта
238
240
  const dependencyGraph = await sdk.dependencies.getDependencyGraph(projectId);
239
241
 
240
- console.log('Узлы графа:', dependencyGraph.nodes);
241
- console.log('Связи в графе:', dependencyGraph.edges);
242
- ```
243
-
244
- ### Анализ зависимостей
245
-
246
- ```typescript
247
242
  // Анализ графа зависимостей и поиск циклов
248
243
  const analysis = await sdk.dependencies.analyzeDependencyGraph(projectId);
249
-
250
244
  console.log('Циклические зависимости:', analysis.cycles);
251
- console.log('Статистика графа:', analysis.statistics);
252
- ```
253
-
254
- ### Статистика зависимостей
255
-
256
- ```typescript
257
- // Получение статистики зависимостей в проекте
258
- const stats = await sdk.dependencies.getDependencyStatistics(projectId);
259
-
260
- console.log('Общее количество зависимостей:', stats.totalDependencies);
261
- console.log('Уникальные файлы:', stats.uniqueFiles);
262
- console.log('Импорты:', stats.importCount);
263
- console.log('Экспорты:', stats.exportCount);
264
- console.log('Циклические зависимости:', stats.cyclicDependenciesCount);
265
- ```
266
-
267
- ### Получение связанных компонентов
268
245
 
269
- ```typescript
270
- // Получение связанных компонентов для файла
271
- const relatedComponents = await sdk.dependencies.getRelatedComponents(projectId, {
272
- filePath: 'src/app.js',
273
- maxDepth: 3,
274
- includeIncoming: true,
275
- includeOutgoing: true,
276
- maxNodes: 20
277
- });
278
-
279
- console.log('Исходный файл:', relatedComponents.source);
280
- console.log('Связанные компоненты:', relatedComponents.nodes);
281
- ```
282
-
283
- ### WebSocket события для зависимостей
284
-
285
- Для получения уведомлений об изменениях в зависимостях в реальном времени можно использовать WebSocket:
286
-
287
- ```typescript
288
246
  // Подключение к WebSocket для зависимостей
289
- const wsClient = sdk.getWebSocketClient();
290
- await wsClient.connectToDependencies(projectId);
291
-
292
- // Обработка события обновления зависимостей
293
- wsClient.on('dependency_update', (data) => {
247
+ await sdk.dependencies.connectWebSocket(projectId);
248
+ sdk.dependencies.on('dependency_update', (data) => {
294
249
  console.log('Обновление зависимостей:', data);
295
- console.log('Затронутые файлы:', data.affectedFiles);
296
- });
297
- ```
298
-
299
- ## Тестирование и совместимость
300
-
301
- SDK тщательно тестируется в различных средах:
302
-
303
- ```bash
304
- # Запуск всех тестов
305
- npm test
306
-
307
- # Тесты браузерной совместимости
308
- npm run test:browser
309
-
310
- # Тесты Node.js совместимости
311
- npm run test:node
312
-
313
- # Тесты VS Code Web совместимости
314
- npm run test:vscode
315
-
316
- # Проверка покрытия кода тестами
317
- npm run test:coverage
318
- ```
319
-
320
- ### Поддерживаемые среды
321
-
322
- SDK протестирован и работает в следующих средах:
323
-
324
- - **Браузеры**: Chrome 80+, Firefox 72+, Safari 14+, Edge 80+
325
- - **Node.js**: Версии 14.x и выше (как CommonJS, так и ESM)
326
- - **VS Code**: Desktop и Web версии
327
-
328
- ### Решение проблем совместимости
329
-
330
- Если у вас возникли проблемы с совместимостью, обратитесь к разделу "Устранение неполадок" в файле [INTEGRATION.md](./INTEGRATION.md).
331
-
332
- ## Сборка из исходного кода
333
-
334
- Для сборки SDK из исходного кода:
335
-
336
- ```bash
337
- # Установка зависимостей
338
- npm install
339
-
340
- # Сборка SDK
341
- npm run build
342
-
343
- # Очистка директории сборки
344
- npm run clean
345
- ```
346
-
347
- ## Опции SDK
348
-
349
- SDK поддерживает следующие опции при инициализации:
350
-
351
- | Опция | Тип | Описание | Обязательна |
352
- |-------|-----|----------|-------------|
353
- | `baseURL` | string | Базовый URL API | Да |
354
- | `apiKey` | string | API ключ для авторизации | Нет |
355
- | `timeout` | number | Таймаут для HTTP запросов (мс) | Нет |
356
- | `headers` | object | Пользовательские HTTP заголовки | Нет |
357
- | `httpsAgent` | object | Опции для HTTPS агента (Node.js) | Нет |
358
- | `mode` | string | Режим работы SDK ('browser', 'node', 'auto') | Нет |
359
-
360
- ## Документация
361
-
362
- Подробная документация по использованию SDK доступна в директории [`docs`](./docs):
363
-
364
- - [Начало работы](./docs/GETTING_STARTED.md) - инструкции по установке и базовому использованию SDK
365
- - [Работа с проектами](./docs/PROJECTS.md) - управление проектами через SDK
366
- - [Индексация проектов](./docs/INDEXING.md) - работа с индексацией и отслеживание через WebSocket
367
- - [Документация API](./docs/API.md) - полная документация по всем методам SDK
368
-
369
- ## Тестирование и локальная разработка
370
-
371
- ### Предварительные требования
372
-
373
- Для локальной разработки и тестирования требуется:
374
- - Node.js 16+
375
- - npm 8+
376
- - Запущенный локальный сервер Code Solver Backend (по умолчанию на https://localhost:3000)
377
-
378
- ### Тестирование SDK
379
-
380
- SDK включает несколько типов тестов:
381
-
382
- #### Модульные тесты
383
-
384
- Эти тесты проверяют внутреннюю логику SDK без взаимодействия с реальным бэкендом:
385
-
386
- ```bash
387
- # Запуск всех тестов
388
- npm test
389
-
390
- # Запуск тестов для индексации
391
- npm run test:indexing
392
- ```
393
-
394
- #### Интеграционные тесты
395
-
396
- Эти тесты проверяют взаимодействие SDK с реальным бэкендом:
397
-
398
- ```bash
399
- # Запуск интеграционных тестов индексации
400
- npm run test:integration
401
- ```
402
-
403
- > **Важно:** Для запуска интеграционных тестов необходимо, чтобы локальный сервер Code Solver Backend был запущен на https://localhost:3000.
404
-
405
- ### Примеры использования
406
-
407
- В директории [`examples`](./examples) находятся примеры использования SDK:
408
-
409
- #### Проверка подключения к API
410
-
411
- Пример проверяет доступность API и WebSocket соединения:
412
-
413
- ```bash
414
- npm run example:check-api
415
- ```
416
-
417
- #### Индексация проектов
418
-
419
- Пример демонстрирует процесс индексации проекта с отслеживанием через WebSocket:
420
-
421
- ```bash
422
- npm run example:indexing
423
- ```
424
-
425
- ### Режим разработки
426
-
427
- Для запуска SDK в режиме разработки с локальным сервером:
428
-
429
- 1. Запустите локальный сервер Code Solver Backend
430
- 2. Используйте следующие настройки в вашем коде:
431
-
432
- ```javascript
433
- const sdk = new CodeSolverSDK({
434
- baseURL: 'https://localhost:3000',
435
- apiKey: 'test-api-key',
436
- httpsAgent: new https.Agent({
437
- rejectUnauthorized: false // Для самоподписанных сертификатов
438
- }),
439
- websocket: {
440
- reconnect: true,
441
- rejectUnauthorized: false
442
- }
443
- });
444
- ```
445
-
446
- #### Игнорирование самоподписанных сертификатов
447
-
448
- При разработке с локальным сервером используйте:
449
-
450
- ```bash
451
- # В Node.js скриптах
452
- NODE_TLS_REJECT_UNAUTHORIZED=0 node your-script.js
453
- ```
454
-
455
- ## Лицензия
456
-
457
- [MIT](./LICENSE)
458
-
459
- ## API Reference
460
-
461
- ### Основные компоненты
462
-
463
- - `CodeSolverSDK` - Основной класс SDK
464
- - `ReasoningApi` - API для работы с рассуждениями
465
- - `ProjectsApi` - API для работы с проектами
466
- - `SearchApi` - API для поиска кода
467
- - `AgentsApi` - API для работы с агентами
468
- - `ContextApi` - API для работы с контекстом кода
469
- - `CodeModificationApi` - API для модификации кода
470
-
471
- ### Настройка соединения с сервером
472
-
473
- ```javascript
474
- const sdk = new CodeSolverSDK({
475
- baseURL: 'https://localhost:3000', // URL сервера (обязательный параметр)
476
- apiKey: 'your-api-key', // API ключ (если требуется)
477
- timeout: 30000, // Таймаут запросов в миллисекундах
478
- headers: { // Дополнительные HTTP заголовки
479
- 'Custom-Header': 'value'
480
- }
481
- });
482
- ```
483
-
484
- ## Версия 1.0.5
485
-
486
- - Улучшена совместимость с CommonJS и ESM модулями
487
- - Добавлена поддержка WebSocket соединений
488
- - Добавлена встроенная зависимость ws для Node.js
489
-
490
- ## Режим мышления (Thinking Mode)
491
-
492
- Режим мышления позволяет получать промежуточные рассуждения модели в процессе формирования ответа. Это особенно полезно для отладки и понимания логики работы AI.
493
-
494
- ### Использование через REST API
495
-
496
- ```javascript
497
- const { CodeSolverSDK } = require('solver-sdk');
498
-
499
- const sdk = new CodeSolverSDK({
500
- baseURL: 'https://api.example.com',
501
- apiKey: 'ваш-ключ-api'
502
250
  });
503
-
504
- // Запрос с включенным режимом мышления
505
- const response = await sdk.chat.chat([
506
- { role: 'user', content: 'Как реализовать алгоритм сортировки слиянием?' }
507
- ], {
508
- model: 'Claude',
509
- thinking: true // Активируем режим мышления
510
- });
511
-
512
- // Вывод хода мыслей
513
- if (response.choices && response.choices[0] && response.choices[0].thinking) {
514
- console.log('Ход мыслей модели:');
515
- console.log(response.choices[0].thinking);
516
- }
517
-
518
- // Вывод финального ответа
519
- console.log('Ответ модели:');
520
- console.log(response.choices[0].message.content);
521
251
  ```
522
252
 
523
- ### Использование через WebSocket (потоковое получение событий мышления)
253
+ ### Потоковая передача мышления
524
254
 
525
- В версии 1.7.0 SDK добавлена полная поддержка событий потокового мышления в соответствии с документацией Anthropic. Теперь вы можете получать события `thinking_delta`, `text_delta`, `signature_delta` и другие в режиме реального времени.
255
+ Версия 1.7.4 включает полную поддержку потоковой передачи мышления через Anthropic API, а также улучшенную обработку ошибок:
526
256
 
527
257
  ```javascript
528
258
  const { CodeSolverSDK } = require('solver-sdk');
@@ -542,22 +272,34 @@ async function streamThinking() {
542
272
  const options = {
543
273
  model: 'claude-3-7-sonnet-20240229',
544
274
  temperature: 0.7,
545
- thinking: true
275
+ thinking: true,
276
+ authToken: 'your-auth-token' // Унифицированный параметр для аутентификации WebSocket
546
277
  };
547
278
 
548
279
  // Обработчик событий WebSocket
549
280
  const handleEvent = (eventType, data) => {
550
281
  switch(eventType) {
551
- case 'thinking_start':
552
- console.log('Начало размышлений:');
282
+ case 'content_block_start':
283
+ if (data.content_block && data.content_block.type === 'thinking') {
284
+ console.log('Начало размышлений:');
285
+ }
553
286
  break;
554
287
 
555
- case 'thinking_delta':
556
- process.stdout.write(data.text); // Потоковый вывод размышлений
288
+ case 'content_block_delta':
289
+ if (data.delta && data.delta.type === 'thinking_delta') {
290
+ process.stdout.write(data.delta.thinking); // Потоковый вывод размышлений
291
+ } else if (data.delta && data.delta.type === 'text_delta') {
292
+ process.stdout.write(data.delta.text); // Потоковый вывод итогового текста
293
+ }
557
294
  break;
558
295
 
559
- case 'text_delta':
560
- process.stdout.write(data.text); // Потоковый вывод итогового текста
296
+ case 'error':
297
+ console.error('Ошибка:', data.message);
298
+
299
+ // Обработка ошибки географических ограничений
300
+ if (data.type === 'geo_restriction') {
301
+ console.error('Необходимо включить VPN для доступа к API Anthropic из вашего региона');
302
+ }
561
303
  break;
562
304
  }
563
305
  };
@@ -573,133 +315,99 @@ async function streamThinking() {
573
315
  console.log(`Запрос успешно отправлен. Socket ID: ${response.socketId}`);
574
316
  } catch (error) {
575
317
  console.error('Ошибка:', error);
318
+
319
+ // Проверка наличия ошибки географических ограничений
320
+ if (error.type === 'geo_restriction') {
321
+ console.error('Необходимо включить VPN для доступа к API Anthropic из вашего региона');
322
+ }
576
323
  }
577
324
  }
578
325
 
579
326
  streamThinking();
580
327
  ```
581
328
 
582
- #### Поддерживаемые события WebSocket
583
-
584
- SDK теперь поддерживает полный набор событий из документации Anthropic:
329
+ #### Поддерживаемые события WebSocket для мышления
585
330
 
586
331
  - `message_start` - начало сообщения от модели
587
332
  - `content_block_start` - начало блока контента (текст или thinking)
588
- - `thinking_delta` - фрагмент размышления модели
589
- - `text_delta` - фрагмент итогового текста
590
- - `signature_delta` - подпись блока размышлений
333
+ - `content_block_delta` - дельта блока контента со следующими типами:
334
+ - `delta.type === 'thinking_delta'` - фрагмент размышления модели
335
+ - `delta.type === 'text_delta'` - фрагмент текстового ответа
336
+ - `delta.type === 'input_json_delta'` - фрагмент JSON для инструментов
337
+ - `delta.type === 'signature_delta'` - подпись блока мышления
591
338
  - `content_block_stop` - завершение блока контента
592
- - `message_delta` - изменения верхнего уровня сообщения
339
+ - `message_delta` - дельта сообщения
593
340
  - `message_stop` - завершение сообщения
594
- - `ping` - событие для поддержания соединения
595
- - `tool_use_start` - начало использования инструмента
596
- - `input_json_delta` - фрагмент JSON входных данных для инструмента
597
341
 
598
- ### Примеры использования
342
+ ## Примеры
599
343
 
600
- Полные примеры кода можно найти в директории `examples`:
601
- - `examples/chat-example.js` - пример использования thinking в обычном чате
602
- - `examples/thinking-example.js` - пример использования thinking через WebSocket
344
+ В директории [`examples`](./examples) доступны примеры использования SDK:
603
345
 
604
- ### Параметры режима мышления
346
+ ```bash
347
+ # Проверка подключения к API
348
+ npm run example:check-api
605
349
 
606
- Вы можете управлять режимом мышления с помощью следующих параметров:
350
+ # Индексация проектов
351
+ npm run example:indexing
607
352
 
608
- ```javascript
609
- // Активация режима thinking
610
- const options = {
611
- model: 'claude-3-7-sonnet-20240229',
612
- thinking: true, // Активируем режим мышления
613
- temperature: 0.7,
614
- maxTokens: 4096
615
- };
616
-
617
- // Использование с автоматическим созданием WebSocket соединения
618
- const response = await sdk.chat.streamChatWithThinking(messages, options, eventHandler);
619
-
620
- // Или с существующим socketId
621
- const connectResponse = await sdk.chat.connectWebSocket();
622
- options.socketId = connectResponse.socketId;
623
- const response = await sdk.chat.streamChatWithThinking(messages, options, eventHandler);
353
+ # Работа с зависимостями
354
+ npm run example:dependencies
624
355
  ```
625
356
 
626
- ## Обновление до версии 1.6.1
357
+ ## Совместимость
627
358
 
628
- В версии 1.6.1 исправлены критические проблемы с WebSocket соединениями:
359
+ SDK тщательно протестирован в различных средах и поддерживает:
629
360
 
630
- 1. Исправлена обработка callback-функций в WebSocket событиях.
631
- 2. Добавлена правильная передача параметра `namespace` в Socket.IO событиях.
632
- 3. Улучшено логирование для упрощения отладки проблем с соединением.
633
- 4. Добавлена обработка таймаутов при ожидании ответов от сервера.
361
+ - **Браузеры**: Chrome 80+, Firefox 72+, Safari 14+, Edge 80+
362
+ - **Node.js**: Версии 14.x и выше (как CommonJS, так и ESM)
363
+ - **VS Code**: Desktop и Web версии
634
364
 
635
- ### Как обновиться
365
+ ## Разработка и тестирование
636
366
 
637
367
  ```bash
638
- npm update solver-sdk
639
- ```
368
+ # Установка зависимостей
369
+ npm install
640
370
 
641
- или с указанием конкретной версии:
371
+ # Сборка SDK
372
+ npm run build
642
373
 
643
- ```bash
644
- npm install solver-sdk@1.6.1
374
+ # Запуск всех тестов
375
+ npm test
376
+
377
+ # Тесты для рассуждений и WebSocket
378
+ npm run test:reasoning:all
379
+
380
+ # Запуск примеров
381
+ npm run example:check-api
645
382
  ```
646
383
 
647
- ### Важные изменения
648
-
649
- Публичный API SDK остался без изменений, но внутренняя логика работы с WebSocket была значительно улучшена.
650
- Если вы столкнулись с проблемами при подключении к серверу WebSocket или получении данных через Socket.IO,
651
- обновление до версии 1.6.1 должно их решить.
652
-
653
- ## Обновления и важные изменения
654
-
655
- ### Синхронизация WebSocket событий (v1.6.3)
656
-
657
- Произведена полная синхронизация констант WebSocket событий между SDK и бэкендом. Добавлена поддержка новых событий:
658
-
659
- - `REASONING_CREATED` (`reasoning:created`)
660
- - `JOINED_REASONING` (`joined_reasoning`)
661
- - `JOIN_RESPONSE` (`join_response`)
662
- - `UPDATE_CONTEXT_OPTIONS` (`update_context_options`)
663
- - `ESTIMATE_CONTEXT` (`estimate_context`)
664
- - `CONTEXT_OPTIONS_UPDATED` (`context_options_updated`)
665
- - `CONTEXT_ESTIMATION` (`context_estimation`)
666
- - `CHAT_REQUEST` (`chat_request`)
667
- - `CHAT_STARTED` (`chat_started`)
668
- - `MESSAGE_START` (`message_start`)
669
- - `CONTENT_BLOCK_START` (`content_block_start`)
670
- - `THINKING_DELTA` (`thinking_delta`)
671
- - `TEXT_DELTA` (`text_delta`)
672
- - `CONTENT_BLOCK_STOP` (`content_block_stop`)
673
- - `MESSAGE_STOP` (`message_stop`)
674
- - `TYPESCRIPT_ERRORS` (`typescript_errors`)
675
- - `TYPESCRIPT_ERRORS_RECEIVED` (`typescript_errors_received`)
676
- - `TEST_MODULES_CREATED` (`test_modules_created`)
677
- - `CREATE_TEST_MODULES` (`create_test_modules`)
678
- - `CONNECTION_PING` (`connection_ping`)
679
- - `CONNECTION_PONG` (`connection_pong`)
680
- - `RECONNECT_TOKEN` (`reconnect_token`)
681
- - `JOIN` (`join`)
682
- - `JOINED` (`joined`)
683
-
684
- ### Улучшенная совместимость с модульными системами
685
-
686
- Добавлены тесты совместимости для проверки работы SDK в различных окружениях:
687
- - CommonJS (для Node.js)
688
- - ESM (для современного JavaScript)
689
-
690
- Для запуска тестов используйте:
384
+ ### Локальная разработка
691
385
 
692
- ```bash
693
- cd test
694
- ./run-tests.sh
386
+ ```javascript
387
+ const sdk = new CodeSolverSDK({
388
+ baseURL: 'https://localhost:3000',
389
+ apiKey: 'test-api-key',
390
+ httpsAgent: new https.Agent({
391
+ rejectUnauthorized: false // Для самоподписанных сертификатов
392
+ }),
393
+ websocket: {
394
+ reconnect: true,
395
+ rejectUnauthorized: false
396
+ }
397
+ });
695
398
  ```
696
399
 
697
- ### Результаты тестирования
400
+ ## Документация
401
+
402
+ Подробная документация доступна в директории [`docs`](./docs):
698
403
 
699
- **CommonJS тесты**: Успешно пройдены
700
- **ESM тесты**: Успешно пройдены через ESM/CommonJS адаптер
701
- **WebSocket событий**: Все 62 события синхронизированы между бэкендом и SDK
404
+ - [Начало работы](./docs/GETTING_STARTED.md)
405
+ - [Работа с проектами](./docs/PROJECTS.md)
406
+ - [Индексация проектов](./docs/INDEXING.md)
407
+ - [Потоковая передача мышления](./docs/THINKING_ARCHITECTURE.md)
408
+ - [Работа с регионами](./docs/ADVANCED.md)
409
+ - [Полное API](./docs/API.md)
702
410
 
703
- ### Примечание по совместимости
411
+ ## Лицензия
704
412
 
705
- При использовании SDK в браузере и Node.js окружении могут быть различия в работе некоторых API, особенно WebSocket. Для Node.js рекомендуется использовать пакет `ws` и настроить соответствующие параметры в опциях SDK.
413
+ [MIT](./LICENSE)