solver-sdk
Version:
SDK для интеграции с Code Solver Backend API
304 lines (206 loc) • 7.14 kB
Markdown
# API Reference
В этом документе описаны основные классы и методы SDK.
## Содержание
- [CodeSolverSDK](#codesolversdk)
- [ChatApi](#chatapi)
- [ProjectsApi](#projectsapi)
- [SearchApi](#searchapi)
- [ReasoningApi](#reasoningapi)
## CodeSolverSDK
Основной класс SDK, предоставляющий доступ ко всем API.
### Конструктор
```javascript
const sdk = new CodeSolverSDK(options);
```
### Параметры
| Параметр | Тип | Описание | Обязательно |
|----------|-----|----------|-------------|
| `baseURL` | string | Базовый URL API | Да |
| `apiKey` | string | API ключ для авторизации | Нет |
| `wsURL` | string | URL для WebSocket соединений (если отличается от baseURL) | Нет |
| `timeout` | number | Таймаут для HTTP запросов (мс) | Нет |
| `headers` | object | Дополнительные HTTP заголовки | Нет |
| `websocket` | object | Настройки WebSocket соединений | Нет |
| `mode` | string | Режим работы SDK ('browser', 'node', 'auto') | Нет |
### Методы
#### `checkHealth()`
Проверяет доступность API сервера.
```javascript
const isHealthy = await sdk.checkHealth();
```
#### `connect()`
Подключается ко всем WebSocket сервисам одновременно.
```javascript
await sdk.connect();
```
#### `disconnect()`
Отключается от всех WebSocket серверов.
```javascript
await sdk.disconnect();
```
#### `dispose()`
Освобождает ресурсы, включая WebSocket соединения.
```javascript
sdk.dispose();
```
#### `setApiKey(apiKey)`
Устанавливает новый API ключ для SDK.
```javascript
sdk.setApiKey('новый-api-ключ');
```
## ChatApi
API для работы с чатом и AI-моделями.
### Методы
#### `chat(messages, options)`
Отправляет запрос чата и возвращает полный ответ.
```javascript
const response = await sdk.chat.chat([
{ role: 'user', content: 'Привет, как дела?' }
], {
model: 'claude-3-7-sonnet-20240229'
});
```
#### `streamChat(messages, options, callback)`
Отправляет запрос чата и получает ответ в потоковом режиме.
```javascript
await sdk.chat.streamChat(
[{ role: 'user', content: 'Объясни JavaScript' }],
{ model: 'claude-3-7-sonnet-20240229' },
(chunk) => console.log(chunk)
);
```
#### `streamChatWithThinking(messages, options, callback)`
Отправляет запрос чата с получением промежуточных шагов мышления.
```javascript
await sdk.chat.streamChatWithThinking(
[{ role: 'user', content: 'Объясни принцип работы реактивного программирования' }],
{
model: 'claude-3-7-sonnet-20240229',
thinking: true
},
(eventType, data) => {
if (eventType === 'thinking_delta') {
console.log('Мышление:', data.thinking);
} else if (eventType === 'text_delta') {
console.log('Ответ:', data.text);
}
}
);
```
#### `connectWebSocket()`
Подключается к WebSocket для событий чата.
```javascript
await sdk.chat.connectWebSocket();
```
## ProjectsApi
API для работы с проектами.
### Методы
#### `createProject(name, path, options)`
Создает новый проект.
```javascript
const project = await sdk.projects.createProject(
'Мой проект',
'/path/to/project',
{ excludePatterns: ['node_modules', '.git'] }
);
```
#### `getProject(projectId)`
Получает информацию о проекте.
```javascript
const project = await sdk.projects.getProject('project-id');
```
#### `getAllProjects()`
Получает список всех проектов.
```javascript
const projects = await sdk.projects.getAllProjects();
```
#### `indexProject(projectId, options)`
Запускает индексацию проекта.
```javascript
await sdk.projects.indexProject('project-id', {
indexingMode: 'full' // или 'incremental', 'auto'
});
```
#### `connectWebSocket()`
Подключается к WebSocket для отслеживания индексации.
```javascript
await sdk.projects.connectWebSocket();
```
#### `disconnectWebSocket()`
Отключается от WebSocket индексации.
```javascript
await sdk.projects.disconnectWebSocket();
```
#### `on(event, callback)`
Добавляет обработчик события для индексации.
```javascript
sdk.projects.on('indexing_progress', (data) => {
console.log(`Прогресс: ${data.progress}%`);
});
```
#### `stopIndexing(projectId)`
Останавливает индексацию проекта.
```javascript
await sdk.projects.stopIndexing('project-id');
```
#### `getIndexingStatus(projectId)`
Получает статус индексации проекта.
```javascript
const status = await sdk.projects.getIndexingStatus('project-id');
```
## SearchApi
API для поиска кода.
### Методы
#### `searchCode(projectId, options)`
Выполняет поиск кода в проекте.
```javascript
const results = await sdk.search.searchCode('project-id', {
query: 'function example',
limit: 10
});
```
#### `semanticSearch(projectId, options)`
Выполняет семантический поиск в проекте.
```javascript
const results = await sdk.search.semanticSearch('project-id', {
query: 'функция для обработки HTTP запросов',
limit: 10,
includeContent: true
});
```
## ReasoningApi
API для работы с рассуждениями.
### Методы
#### `createReasoning(options)`
Создаёт новое рассуждение.
```javascript
const reasoning = await sdk.reasoning.createReasoning({
projectId: 'project-id',
query: 'Объясни этот проект'
});
```
#### `getReasoning(reasoningId)`
Получает информацию о рассуждении.
```javascript
const reasoning = await sdk.reasoning.getReasoning('reasoning-id');
```
#### `connectWebSocket(reasoningId)`
Подключается к WebSocket для отслеживания рассуждений.
```javascript
await sdk.reasoning.connectWebSocket('reasoning-id');
```
#### `startReasoning(reasoningId)`
Запускает процесс рассуждения.
```javascript
await sdk.reasoning.startReasoning('reasoning-id');
```
#### `on(event, callback)`
Добавляет обработчик события для рассуждений.
```javascript
sdk.reasoning.on('thinking', (data) => {
console.log('Мышление:', data.content);
});
sdk.reasoning.on('complete', (data) => {
console.log('Результат:', data.content);
});
```