# API Reference

В этом документе описаны основные классы и методы SDK.

## Содержание

- [CodeSolverSDK](#codesolversdk)
- [ChatApi](#chatapi)
- [ReasoningApi](#reasoningapi)
- [ProjectsApi](#projectsapi)
- [SearchApi](#searchapi)

## CodeSolverSDK

Основной класс SDK, предоставляющий доступ ко всем API.

### Конструктор

```javascript
const sdk = new CodeSolverSDK(options);
```

### Параметры

| Параметр | Тип | Описание | Обязательно |
|----------|-----|----------|-------------|
| `baseURL` | string | Базовый URL API | Да |
| `apiKey` | string | API ключ для авторизации | Нет |
| `timeout` | number | Таймаут для HTTP запросов (мс) | Нет |
| `websocket` | object | Настройки WebSocket | Нет |

### Методы

#### `getWebSocketClient()`

Возвращает экземпляр WebSocket клиента для работы с соединениями.

```javascript
const wsClient = sdk.getWebSocketClient();
```

#### `checkHealth()`

Проверяет доступность API сервера.

```javascript
const isHealthy = await sdk.checkHealth();
```

## ChatApi

API для работы с чатом и потоковой передачей мышления.

### Методы

#### `streamChatWithThinking(messages, options, callback)`

Отправляет запрос чата с потоковой передачей мышления через WebSocket.

```javascript
const response = await sdk.chat.streamChatWithThinking(
  messages,
  options,
  callback
);
```

##### Параметры

| Параметр | Тип | Описание | Обязательно |
|----------|-----|----------|-------------|
| `messages` | Array | Массив сообщений для отправки модели | Да |
| `options` | Object | Параметры запроса (модель, thinking: true) | Да |
| `callback` | Function | Обработчик событий | Да |

#### `chat(messages, options)`

Отправляет запрос чата и возвращает полный ответ.

```javascript
const response = await sdk.chat.chat(
  messages,
  options
);
```

#### `getModels()`

Получает список доступных моделей.

```javascript
const models = await sdk.chat.getModels();
```

## 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');
```

## ProjectsApi

API для работы с проектами.

### Методы

#### `createProject(name, path)`

Создаёт новый проект.

```javascript
const project = await sdk.projects.createProject('Мой проект', '/path/to/project');
```

#### `indexProject(projectId)`

Запускает индексацию проекта.

```javascript
await sdk.projects.indexProject('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
});
```
