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.
- package/README.md +204 -517
- package/dist/cjs/api/chat-api.js +197 -2
- package/dist/cjs/api/chat-api.js.map +1 -1
- package/dist/cjs/constants/websocket-events.constants.js +17 -0
- package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
- package/dist/cjs/utils/http-client.js +7 -0
- package/dist/cjs/utils/http-client.js.map +1 -1
- package/dist/cjs/utils/websocket-client.js +37 -10
- package/dist/cjs/utils/websocket-client.js.map +1 -1
- package/dist/esm/api/chat-api.js +164 -2
- package/dist/esm/api/chat-api.js.map +1 -1
- package/dist/esm/constants/websocket-events.constants.js +17 -0
- package/dist/esm/constants/websocket-events.constants.js.map +1 -1
- package/dist/esm/utils/http-client.js +7 -0
- package/dist/esm/utils/http-client.js.map +1 -1
- package/dist/esm/utils/websocket-client.js +37 -10
- package/dist/esm/utils/websocket-client.js.map +1 -1
- package/dist/types/api/chat-api.d.ts +55 -0
- package/dist/types/api/chat-api.d.ts.map +1 -1
- package/dist/types/constants/websocket-events.constants.d.ts +11 -1
- package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
- package/dist/types/interfaces/http-client.d.ts +1 -1
- package/dist/types/interfaces/http-client.d.ts.map +1 -1
- package/dist/types/utils/http-client.d.ts +5 -0
- package/dist/types/utils/http-client.d.ts.map +1 -1
- package/dist/types/utils/websocket-client.d.ts +6 -0
- package/dist/types/utils/websocket-client.d.ts.map +1 -1
- package/docs/PING_PONG.md +212 -0
- package/docs/README.md +77 -0
- package/docs/REGIONS.md +140 -0
- package/docs/WEBSOCKET.md +508 -0
- package/docs/WEBSOCKET_EVENTS.md +183 -0
- package/docs/indexing/INDEXING.md +401 -0
- package/docs/thinking/THINKING_ARCHITECTURE.md +221 -0
- package/docs/thinking/streaming-thinking-guide.md +164 -0
- package/docs/thinking/thinking-mode.md +366 -0
- 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
|
-
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
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
|
-
|
|
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('
|
|
154
|
-
console.log('
|
|
208
|
+
wsClient.on('thinking_delta', (data) => {
|
|
209
|
+
console.log('Фрагмент размышления:', data.text);
|
|
155
210
|
});
|
|
156
211
|
|
|
157
|
-
wsClient.on('
|
|
158
|
-
console.log('Завершено:', data
|
|
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
|
-
|
|
167
|
-
|
|
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
|
-
|
|
257
|
-
// Получение статистики зависимостей в проекте
|
|
258
|
-
const stats = await sdk.dependencies.getDependencyStatistics(projectId);
|
|
250
|
+
### Потоковая передача мышления
|
|
259
251
|
|
|
260
|
-
|
|
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
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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
|
-
|
|
280
|
-
console.log('Связанные компоненты:', relatedComponents.nodes);
|
|
306
|
+
streamThinking();
|
|
281
307
|
```
|
|
282
308
|
|
|
283
|
-
|
|
309
|
+
#### Поддерживаемые события WebSocket для мышления
|
|
284
310
|
|
|
285
|
-
|
|
311
|
+
- `message_start` - начало сообщения от модели
|
|
312
|
+
- `content_block_start` - начало блока контента (текст или thinking)
|
|
313
|
+
- `thinking_delta` - фрагмент размышления модели
|
|
314
|
+
- `text_delta` - фрагмент итогового текста
|
|
315
|
+
- `content_block_stop` - завершение блока контента
|
|
316
|
+
- `message_stop` - завершение сообщения
|
|
286
317
|
|
|
287
|
-
|
|
288
|
-
// Подключение к WebSocket для зависимостей
|
|
289
|
-
const wsClient = sdk.getWebSocketClient();
|
|
290
|
-
await wsClient.connectToDependencies(projectId);
|
|
318
|
+
### Работа с региональными эндпоинтами
|
|
291
319
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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
|
-
|
|
350
|
+
В директории [`examples`](./examples) доступны примеры использования SDK:
|
|
302
351
|
|
|
303
352
|
```bash
|
|
304
|
-
#
|
|
305
|
-
npm
|
|
306
|
-
|
|
307
|
-
# Тесты браузерной совместимости
|
|
308
|
-
npm run test:browser
|
|
353
|
+
# Проверка подключения к API
|
|
354
|
+
npm run example:check-api
|
|
309
355
|
|
|
310
|
-
#
|
|
311
|
-
npm run
|
|
356
|
+
# Индексация проектов
|
|
357
|
+
npm run example:indexing
|
|
312
358
|
|
|
313
|
-
#
|
|
314
|
-
npm run
|
|
359
|
+
# Работа с зависимостями
|
|
360
|
+
npm run example:dependencies
|
|
315
361
|
|
|
316
|
-
# Проверка
|
|
317
|
-
npm run
|
|
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:
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
#### Интеграционные тесты
|
|
386
|
+
# Тесты для рассуждений и WebSocket
|
|
387
|
+
npm run test:reasoning:all
|
|
395
388
|
|
|
396
|
-
|
|
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
|
-
|
|
451
|
-
|
|
452
|
-
|
|
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.
|