solver-sdk 1.7.1 → 1.7.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 (37) hide show
  1. package/README.md +204 -517
  2. package/dist/cjs/api/chat-api.js +197 -2
  3. package/dist/cjs/api/chat-api.js.map +1 -1
  4. package/dist/cjs/constants/websocket-events.constants.js +17 -0
  5. package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
  6. package/dist/cjs/utils/http-client.js +7 -0
  7. package/dist/cjs/utils/http-client.js.map +1 -1
  8. package/dist/cjs/utils/websocket-client.js +37 -10
  9. package/dist/cjs/utils/websocket-client.js.map +1 -1
  10. package/dist/esm/api/chat-api.js +164 -2
  11. package/dist/esm/api/chat-api.js.map +1 -1
  12. package/dist/esm/constants/websocket-events.constants.js +17 -0
  13. package/dist/esm/constants/websocket-events.constants.js.map +1 -1
  14. package/dist/esm/utils/http-client.js +7 -0
  15. package/dist/esm/utils/http-client.js.map +1 -1
  16. package/dist/esm/utils/websocket-client.js +37 -10
  17. package/dist/esm/utils/websocket-client.js.map +1 -1
  18. package/dist/types/api/chat-api.d.ts +55 -0
  19. package/dist/types/api/chat-api.d.ts.map +1 -1
  20. package/dist/types/constants/websocket-events.constants.d.ts +11 -1
  21. package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
  22. package/dist/types/interfaces/http-client.d.ts +1 -1
  23. package/dist/types/interfaces/http-client.d.ts.map +1 -1
  24. package/dist/types/utils/http-client.d.ts +5 -0
  25. package/dist/types/utils/http-client.d.ts.map +1 -1
  26. package/dist/types/utils/websocket-client.d.ts +6 -0
  27. package/dist/types/utils/websocket-client.d.ts.map +1 -1
  28. package/docs/PING_PONG.md +212 -0
  29. package/docs/README.md +77 -0
  30. package/docs/REGIONS.md +140 -0
  31. package/docs/WEBSOCKET.md +508 -0
  32. package/docs/WEBSOCKET_EVENTS.md +183 -0
  33. package/docs/indexing/INDEXING.md +401 -0
  34. package/docs/thinking/THINKING_ARCHITECTURE.md +221 -0
  35. package/docs/thinking/streaming-thinking-guide.md +164 -0
  36. package/docs/thinking/thinking-mode.md +366 -0
  37. package/package.json +3 -2
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 (`thinking_delta`, `text_delta` и др.)
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,33 @@ 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
+ | `providers` | object | Настройки провайдеров API (Anthropic и др.) | Нет |
154
+ | `websocket` | object | Настройки WebSocket (reconnect, timeout и др.) | Нет |
155
+
156
+ ## Продвинутые функции
99
157
 
100
158
  ### Работа с проектами
101
159
 
@@ -139,9 +197,6 @@ const reasoning = await sdk.reasoning.createReasoning({
139
197
  query: 'Объясни, как работает этот проект'
140
198
  });
141
199
 
142
- // Запуск процесса рассуждения
143
- await sdk.reasoning.startReasoning(reasoning.id);
144
-
145
200
  // Подключение через WebSocket
146
201
  const wsClient = sdk.getWebSocketClient();
147
202
  await wsClient.connectToReasoning(reasoning.id);
@@ -150,12 +205,12 @@ await wsClient.connectToReasoning(reasoning.id);
150
205
  wsClient.enablePingPong(30000, 3);
151
206
 
152
207
  // Обработка событий мышления
153
- wsClient.on('thinking', (data) => {
154
- console.log('Размышление:', data.content);
208
+ wsClient.on('thinking_delta', (data) => {
209
+ console.log('Фрагмент размышления:', data.text);
155
210
  });
156
211
 
157
- wsClient.on('complete', (data) => {
158
- console.log('Завершено:', data.content);
212
+ wsClient.on('message_stop', (data) => {
213
+ console.log('Завершено:', data);
159
214
 
160
215
  // Отключаем механизм ping/pong и закрываем соединение
161
216
  wsClient.disablePingPong();
@@ -163,63 +218,13 @@ wsClient.on('complete', (data) => {
163
218
  });
164
219
 
165
220
  // Мониторинг качества соединения
166
- setInterval(() => {
167
- const stats = wsClient.getPingStats(WebSocketNamespace.REASONING);
168
- console.log(`Среднее время отклика: ${stats.averageRtt}ms`);
169
- }, 60000);
221
+ const diagnostics = wsClient.diagnoseConnection(WebSocketNamespace.REASONING);
222
+ console.log(`Состояние соединения:`, diagnostics);
170
223
  ```
171
224
 
172
- ### Индексация отдельных файлов
225
+ ### API для работы с зависимостями
173
226
 
174
227
  ```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
228
  // Получение зависимостей конкретного файла
224
229
  const fileDependencies = await sdk.dependencies.getFileDependencies(projectId, {
225
230
  filePath: 'src/app.js'
@@ -227,111 +232,146 @@ const fileDependencies = await sdk.dependencies.getFileDependencies(projectId, {
227
232
 
228
233
  console.log('Импорты:', fileDependencies.imports);
229
234
  console.log('Импортируется в:', fileDependencies.importedBy);
230
- console.log('Экспорты:', fileDependencies.exports);
231
- console.log('Экспортируемые из импортов:', fileDependencies.exportedBy);
232
- ```
233
235
 
234
- ### Получение графа зависимостей
235
-
236
- ```typescript
237
236
  // Получение полного графа зависимостей проекта
238
237
  const dependencyGraph = await sdk.dependencies.getDependencyGraph(projectId);
239
238
 
240
- console.log('Узлы графа:', dependencyGraph.nodes);
241
- console.log('Связи в графе:', dependencyGraph.edges);
242
- ```
243
-
244
- ### Анализ зависимостей
245
-
246
- ```typescript
247
239
  // Анализ графа зависимостей и поиск циклов
248
240
  const analysis = await sdk.dependencies.analyzeDependencyGraph(projectId);
249
-
250
241
  console.log('Циклические зависимости:', analysis.cycles);
251
- console.log('Статистика графа:', analysis.statistics);
252
- ```
253
242
 
254
- ### Статистика зависимостей
243
+ // Подключение к WebSocket для зависимостей
244
+ await sdk.dependencies.connectWebSocket(projectId);
245
+ sdk.dependencies.on('dependency_update', (data) => {
246
+ console.log('Обновление зависимостей:', data);
247
+ });
248
+ ```
255
249
 
256
- ```typescript
257
- // Получение статистики зависимостей в проекте
258
- const stats = await sdk.dependencies.getDependencyStatistics(projectId);
250
+ ### Потоковая передача мышления
259
251
 
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
- ```
252
+ Версия 1.7.2 включает полную поддержку потоковой передачи мышления через Anthropic API:
266
253
 
267
- ### Получение связанных компонентов
254
+ ```javascript
255
+ const { CodeSolverSDK } = require('solver-sdk');
268
256
 
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
- });
257
+ async function streamThinking() {
258
+ const sdk = new CodeSolverSDK({
259
+ baseURL: 'https://api.example.com',
260
+ apiKey: 'ваш-ключ-api'
261
+ });
262
+
263
+ // Сообщения для отправки
264
+ const messages = [
265
+ { role: 'user', content: 'Объясни, как работает blockchain' }
266
+ ];
267
+
268
+ // Опции запроса
269
+ const options = {
270
+ model: 'claude-3-7-sonnet-20240229',
271
+ temperature: 0.7,
272
+ thinking: true
273
+ };
274
+
275
+ // Обработчик событий WebSocket
276
+ const handleEvent = (eventType, data) => {
277
+ switch(eventType) {
278
+ case 'thinking_start':
279
+ console.log('Начало размышлений:');
280
+ break;
281
+
282
+ case 'thinking_delta':
283
+ process.stdout.write(data.text); // Потоковый вывод размышлений
284
+ break;
285
+
286
+ case 'text_delta':
287
+ process.stdout.write(data.text); // Потоковый вывод итогового текста
288
+ break;
289
+ }
290
+ };
291
+
292
+ try {
293
+ // Отправляем запрос с потоковым мышлением
294
+ const response = await sdk.chat.streamChatWithThinking(
295
+ messages,
296
+ options,
297
+ handleEvent
298
+ );
299
+
300
+ console.log(`Запрос успешно отправлен. Socket ID: ${response.socketId}`);
301
+ } catch (error) {
302
+ console.error('Ошибка:', error);
303
+ }
304
+ }
278
305
 
279
- console.log('Исходный файл:', relatedComponents.source);
280
- console.log('Связанные компоненты:', relatedComponents.nodes);
306
+ streamThinking();
281
307
  ```
282
308
 
283
- ### WebSocket события для зависимостей
309
+ #### Поддерживаемые события WebSocket для мышления
284
310
 
285
- Для получения уведомлений об изменениях в зависимостях в реальном времени можно использовать WebSocket:
311
+ - `message_start` - начало сообщения от модели
312
+ - `content_block_start` - начало блока контента (текст или thinking)
313
+ - `thinking_delta` - фрагмент размышления модели
314
+ - `text_delta` - фрагмент итогового текста
315
+ - `content_block_stop` - завершение блока контента
316
+ - `message_stop` - завершение сообщения
286
317
 
287
- ```typescript
288
- // Подключение к WebSocket для зависимостей
289
- const wsClient = sdk.getWebSocketClient();
290
- await wsClient.connectToDependencies(projectId);
318
+ ### Работа с региональными эндпоинтами
291
319
 
292
- // Обработка события обновления зависимостей
293
- wsClient.on('dependency_update', (data) => {
294
- console.log('Обновление зависимостей:', data);
295
- console.log('Затронутые файлы:', data.affectedFiles);
320
+ ```javascript
321
+ // Настройка SDK с указанием предпочтительного региона
322
+ const sdk = new CodeSolverSDK({
323
+ baseURL: 'https://api.example.com',
324
+ apiKey: 'your-api-key',
325
+ providers: {
326
+ anthropic: {
327
+ region: 'eu-west-1' // Использовать европейский регион
328
+ }
329
+ }
330
+ });
331
+
332
+ // Запрос с автоматическим переключением между регионами при ошибках
333
+ const response = await sdk.chat.chatWithRegionFailover([
334
+ { role: 'user', content: 'Расскажи о квантовых компьютерах' }
335
+ ], {
336
+ model: 'claude-3-7-sonnet-20240229'
337
+ });
338
+
339
+ // Запрос с явным указанием региона
340
+ const responseFromAsia = await sdk.chat.chat([
341
+ { role: 'user', content: 'Расскажи о квантовых компьютерах' }
342
+ ], {
343
+ model: 'claude-3-7-sonnet-20240229',
344
+ region: 'ap-southeast-2' // Явно указываем регион
296
345
  });
297
346
  ```
298
347
 
299
- ## Тестирование и совместимость
348
+ ## Примеры
300
349
 
301
- SDK тщательно тестируется в различных средах:
350
+ В директории [`examples`](./examples) доступны примеры использования SDK:
302
351
 
303
352
  ```bash
304
- # Запуск всех тестов
305
- npm test
306
-
307
- # Тесты браузерной совместимости
308
- npm run test:browser
353
+ # Проверка подключения к API
354
+ npm run example:check-api
309
355
 
310
- # Тесты Node.js совместимости
311
- npm run test:node
356
+ # Индексация проектов
357
+ npm run example:indexing
312
358
 
313
- # Тесты VS Code Web совместимости
314
- npm run test:vscode
359
+ # Работа с зависимостями
360
+ npm run example:dependencies
315
361
 
316
- # Проверка покрытия кода тестами
317
- npm run test:coverage
362
+ # Проверка доступности регионов
363
+ npm run example:regions
318
364
  ```
319
365
 
320
- ### Поддерживаемые среды
366
+ ## Совместимость
321
367
 
322
- SDK протестирован и работает в следующих средах:
368
+ SDK тщательно протестирован в различных средах и поддерживает:
323
369
 
324
370
  - **Браузеры**: Chrome 80+, Firefox 72+, Safari 14+, Edge 80+
325
371
  - **Node.js**: Версии 14.x и выше (как CommonJS, так и ESM)
326
372
  - **VS Code**: Desktop и Web версии
327
373
 
328
- ### Решение проблем совместимости
329
-
330
- Если у вас возникли проблемы с совместимостью, обратитесь к разделу "Устранение неполадок" в файле [INTEGRATION.md](./INTEGRATION.md).
331
-
332
- ## Сборка из исходного кода
333
-
334
- Для сборки SDK из исходного кода:
374
+ ## Разработка и тестирование
335
375
 
336
376
  ```bash
337
377
  # Установка зависимостей
@@ -340,94 +380,17 @@ npm install
340
380
  # Сборка SDK
341
381
  npm run build
342
382
 
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
383
  # Запуск всех тестов
388
384
  npm test
389
385
 
390
- # Запуск тестов для индексации
391
- npm run test:indexing
392
- ```
393
-
394
- #### Интеграционные тесты
386
+ # Тесты для рассуждений и WebSocket
387
+ npm run test:reasoning:all
395
388
 
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
389
+ # Запуск примеров
414
390
  npm run example:check-api
415
391
  ```
416
392
 
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. Используйте следующие настройки в вашем коде:
393
+ ### Локальная разработка
431
394
 
432
395
  ```javascript
433
396
  const sdk = new CodeSolverSDK({
@@ -443,293 +406,17 @@ const sdk = new CodeSolverSDK({
443
406
  });
444
407
  ```
445
408
 
446
- #### Игнорирование самоподписанных сертификатов
409
+ ## Документация
447
410
 
448
- При разработке с локальным сервером используйте:
411
+ Подробная документация доступна в директории [`docs`](./docs):
449
412
 
450
- ```bash
451
- # В Node.js скриптах
452
- NODE_TLS_REJECT_UNAUTHORIZED=0 node your-script.js
453
- ```
413
+ - [Начало работы](./docs/GETTING_STARTED.md)
414
+ - [Работа с проектами](./docs/PROJECTS.md)
415
+ - [Индексация проектов](./docs/INDEXING.md)
416
+ - [Потоковая передача мышления](./docs/THINKING_ARCHITECTURE.md)
417
+ - [Работа с регионами](./docs/ADVANCED.md)
418
+ - [Полное API](./docs/API.md)
454
419
 
455
420
  ## Лицензия
456
421
 
457
422
  [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
- });
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
- ```
522
-
523
- ### Использование через WebSocket (потоковое получение событий мышления)
524
-
525
- ```javascript
526
- const { CodeSolverSDK } = require('solver-sdk');
527
-
528
- async function streamThinking() {
529
- const sdk = new CodeSolverSDK({
530
- baseURL: 'https://api.example.com',
531
- apiKey: 'ваш-ключ-api'
532
- });
533
-
534
- // Получаем WebSocket клиент
535
- const wsClient = sdk.getWebSocketClient();
536
-
537
- // Обработчик событий мышления
538
- const handleThinking = (data) => {
539
- console.log('Новый шаг мышления:', data.content);
540
- };
541
-
542
- try {
543
- // Подключаемся к WebSocket серверу с обработчиком мышления
544
- const reasoningId = await wsClient.connectToThinkingSession('system', handleThinking);
545
-
546
- // Создаем рассуждение
547
- const result = await sdk.reasoning.createReasoning({
548
- projectId: 'project-123',
549
- query: 'Объясни асинхронное программирование в JavaScript',
550
- options: {
551
- thinking: true,
552
- socketId: wsClient.getSocketId()
553
- }
554
- });
555
-
556
- // Запускаем рассуждение
557
- await sdk.reasoning.startReasoning(result.id);
558
-
559
- console.log('Рассуждение запущено, шаги мышления будут приходить через WebSocket');
560
- } catch (error) {
561
- console.error('Ошибка:', error);
562
- }
563
- }
564
-
565
- streamThinking();
566
- ```
567
-
568
- ### Примеры использования
569
-
570
- Полные примеры кода можно найти в директории `examples`:
571
- - `examples/chat-example.js` - пример использования thinking в чате
572
- - `examples/thinking-example.js` - пример использования thinking через WebSocket
573
-
574
- ### Параметры режима мышления
575
-
576
- Параметр `level` позволяет настроить детализацию процесса мышления:
577
-
578
- - `CONCISE` - краткие шаги рассуждения
579
- - `STANDARD` - стандартный уровень детализации (по умолчанию)
580
- - `DETAILED` - подробное рассуждение с промежуточными шагами
581
- - `VERBOSE` - максимальная детализация процесса мышления
582
-
583
- ```javascript
584
- const result = await sdk.reasoning.createReasoning({
585
- projectId: 'project-123',
586
- query: 'Объясни, как работает blockchain',
587
- level: 'DETAILED', // Уровень детализации мышления
588
- options: {
589
- thinking: true,
590
- socketId: wsClient.getSocketId()
591
- }
592
- });
593
- ```
594
-
595
- ## Обновление до версии 1.6.1
596
-
597
- В версии 1.6.1 исправлены критические проблемы с WebSocket соединениями:
598
-
599
- 1. Исправлена обработка callback-функций в WebSocket событиях.
600
- 2. Добавлена правильная передача параметра `namespace` в Socket.IO событиях.
601
- 3. Улучшено логирование для упрощения отладки проблем с соединением.
602
- 4. Добавлена обработка таймаутов при ожидании ответов от сервера.
603
-
604
- ### Как обновиться
605
-
606
- ```bash
607
- npm update solver-sdk
608
- ```
609
-
610
- или с указанием конкретной версии:
611
-
612
- ```bash
613
- npm install solver-sdk@1.6.1
614
- ```
615
-
616
- ### Важные изменения
617
-
618
- Публичный API SDK остался без изменений, но внутренняя логика работы с WebSocket была значительно улучшена.
619
- Если вы столкнулись с проблемами при подключении к серверу WebSocket или получении данных через Socket.IO,
620
- обновление до версии 1.6.1 должно их решить.
621
-
622
- ## Обновления и важные изменения
623
-
624
- ### Синхронизация WebSocket событий (v1.6.3)
625
-
626
- Произведена полная синхронизация констант WebSocket событий между SDK и бэкендом. Добавлена поддержка новых событий:
627
-
628
- - `REASONING_CREATED` (`reasoning:created`)
629
- - `JOINED_REASONING` (`joined_reasoning`)
630
- - `JOIN_RESPONSE` (`join_response`)
631
- - `UPDATE_CONTEXT_OPTIONS` (`update_context_options`)
632
- - `ESTIMATE_CONTEXT` (`estimate_context`)
633
- - `CONTEXT_OPTIONS_UPDATED` (`context_options_updated`)
634
- - `CONTEXT_ESTIMATION` (`context_estimation`)
635
- - `CHAT_REQUEST` (`chat_request`)
636
- - `CHAT_STARTED` (`chat_started`)
637
- - `MESSAGE_START` (`message_start`)
638
- - `CONTENT_BLOCK_START` (`content_block_start`)
639
- - `THINKING_DELTA` (`thinking_delta`)
640
- - `TEXT_DELTA` (`text_delta`)
641
- - `CONTENT_BLOCK_STOP` (`content_block_stop`)
642
- - `MESSAGE_STOP` (`message_stop`)
643
- - `TYPESCRIPT_ERRORS` (`typescript_errors`)
644
- - `TYPESCRIPT_ERRORS_RECEIVED` (`typescript_errors_received`)
645
- - `TEST_MODULES_CREATED` (`test_modules_created`)
646
- - `CREATE_TEST_MODULES` (`create_test_modules`)
647
- - `CONNECTION_PING` (`connection_ping`)
648
- - `CONNECTION_PONG` (`connection_pong`)
649
- - `RECONNECT_TOKEN` (`reconnect_token`)
650
- - `JOIN` (`join`)
651
- - `JOINED` (`joined`)
652
-
653
- ### Улучшенная совместимость с модульными системами
654
-
655
- Добавлены тесты совместимости для проверки работы SDK в различных окружениях:
656
- - CommonJS (для Node.js)
657
- - ESM (для современного JavaScript)
658
-
659
- Для запуска тестов используйте:
660
-
661
- ```bash
662
- cd test
663
- ./run-tests.sh
664
- ```
665
-
666
- ### Результаты тестирования
667
-
668
- ✅ **CommonJS тесты**: Успешно пройдены
669
- ✅ **ESM тесты**: Успешно пройдены через ESM/CommonJS адаптер
670
- ✅ **WebSocket событий**: Все 62 события синхронизированы между бэкендом и SDK
671
-
672
- ### Примечание по совместимости
673
-
674
- При использовании SDK в браузере и Node.js окружении могут быть различия в работе некоторых API, особенно WebSocket. Для Node.js рекомендуется использовать пакет `ws` и настроить соответствующие параметры в опциях SDK.
675
-
676
-
677
- ### Важные изменения
678
-
679
- Публичный API SDK остался без изменений, но внутренняя логика работы с WebSocket была значительно улучшена.
680
- Если вы столкнулись с проблемами при подключении к серверу WebSocket или получении данных через Socket.IO,
681
- обновление до версии 1.6.1 должно их решить.
682
-
683
- ## Обновления и важные изменения
684
-
685
- ### Синхронизация WebSocket событий (v1.6.3)
686
-
687
- Произведена полная синхронизация констант WebSocket событий между SDK и бэкендом. Добавлена поддержка новых событий:
688
-
689
- - `REASONING_CREATED` (`reasoning:created`)
690
- - `JOINED_REASONING` (`joined_reasoning`)
691
- - `JOIN_RESPONSE` (`join_response`)
692
- - `UPDATE_CONTEXT_OPTIONS` (`update_context_options`)
693
- - `ESTIMATE_CONTEXT` (`estimate_context`)
694
- - `CONTEXT_OPTIONS_UPDATED` (`context_options_updated`)
695
- - `CONTEXT_ESTIMATION` (`context_estimation`)
696
- - `CHAT_REQUEST` (`chat_request`)
697
- - `CHAT_STARTED` (`chat_started`)
698
- - `MESSAGE_START` (`message_start`)
699
- - `CONTENT_BLOCK_START` (`content_block_start`)
700
- - `THINKING_DELTA` (`thinking_delta`)
701
- - `TEXT_DELTA` (`text_delta`)
702
- - `CONTENT_BLOCK_STOP` (`content_block_stop`)
703
- - `MESSAGE_STOP` (`message_stop`)
704
- - `TYPESCRIPT_ERRORS` (`typescript_errors`)
705
- - `TYPESCRIPT_ERRORS_RECEIVED` (`typescript_errors_received`)
706
- - `TEST_MODULES_CREATED` (`test_modules_created`)
707
- - `CREATE_TEST_MODULES` (`create_test_modules`)
708
- - `CONNECTION_PING` (`connection_ping`)
709
- - `CONNECTION_PONG` (`connection_pong`)
710
- - `RECONNECT_TOKEN` (`reconnect_token`)
711
- - `JOIN` (`join`)
712
- - `JOINED` (`joined`)
713
-
714
- ### Улучшенная совместимость с модульными системами
715
-
716
- Добавлены тесты совместимости для проверки работы SDK в различных окружениях:
717
- - CommonJS (для Node.js)
718
- - ESM (для современного JavaScript)
719
-
720
- Для запуска тестов используйте:
721
-
722
- ```bash
723
- cd test
724
- ./run-tests.sh
725
- ```
726
-
727
- ### Результаты тестирования
728
-
729
- ✅ **CommonJS тесты**: Успешно пройдены
730
- ✅ **ESM тесты**: Успешно пройдены через ESM/CommonJS адаптер
731
- ✅ **WebSocket событий**: Все 62 события синхронизированы между бэкендом и SDK
732
-
733
- ### Примечание по совместимости
734
-
735
- При использовании SDK в браузере и Node.js окружении могут быть различия в работе некоторых API, особенно WebSocket. Для Node.js рекомендуется использовать пакет `ws` и настроить соответствующие параметры в опциях SDK.