Package Exports
- solver-sdk
Readme
Code Solver SDK v3.0
🚀 Версия 3.0 - полный переход на HTTP API
Убрана поддержка WebSocket, все взаимодействие происходит через REST API
JavaScript/TypeScript SDK для работы с Code Solver API. Предоставляет простой интерфейс для индексации кода, поиска, работы с чатом и анализа зависимостей.
🎯 Основные возможности
- 💬 Chat API - взаимодействие с AI моделями (Claude, GPT)
- 🔍 Code Search - семантический поиск по коду
- 📊 Project Indexing - индексация и анализ проектов
- 🕸️ Dependencies - анализ зависимостей кода
- 📝 Context API - получение контекста для AI
- 🛠️ Code Modification - модификация кода через AI
📦 Установка
npm install solver-sdk🚀 Быстрый старт
import { CodeSolverSDK } from 'solver-sdk';
// Создание SDK
const sdk = new CodeSolverSDK({
baseURL: 'https://your-api-server.com',
apiKey: 'your-api-key',
timeout: 30000
});
// Проверка здоровья API
const isHealthy = await sdk.checkHealth();
console.log('API доступен:', isHealthy);
// Создание проекта
const project = await sdk.projects.createProject({
name: 'My Project',
path: '/path/to/project',
description: 'Описание проекта'
});
// Индексация проекта
const indexingResult = await sdk.indexing.indexProject(
'/path/to/project',
'My Project'
);
// Ожидание завершения индексации
const finalStatus = await sdk.indexing.waitForCompletion(indexingResult.projectId);
// Поиск кода
const searchResults = await sdk.search.searchCode({
projectId: project.projectId,
query: 'function calculateSum',
maxResults: 10
});
// Работа с чатом
const response = await sdk.chat.chat([
{ role: 'user', content: 'Объясни этот код' }
], {
model: 'claude-3-5-sonnet-20241022',
maxTokens: 8192
});📋 API Методы
📁 Projects API
// Создание проекта
await sdk.projects.createProject({
name: 'Project Name',
path: '/project/path',
description: 'Description'
});
// Получение списка проектов
await sdk.projects.getProjects();
// Получение информации о проекте
await sdk.projects.getProject(projectId);🔄 Indexing API
// Индексация проекта
await sdk.indexing.indexProject('/path/to/project', 'Project Name');
// Получение статуса индексации
await sdk.indexing.getStatus(projectId);
// Ожидание завершения
await sdk.indexing.waitForCompletion(projectId);🔍 Search API
// Поиск кода
await sdk.search.searchCode({
projectId: 'project-id',
query: 'search query',
maxResults: 20
});💬 Chat API
// Обычный чат
const response = await sdk.chat.chat([
{ role: 'user', content: 'Объясни этот код' }
], {
model: 'claude-3-5-sonnet-20241022',
maxTokens: 8192
});
// Потоковый чат
for await (const chunk of sdk.chat.streamChat(messages, options)) {
console.log(chunk.text);
}🕸️ Dependencies API
// Граф зависимостей
await sdk.dependencies.getDependencyGraph(projectId);
// Статистика зависимостей
await sdk.dependencies.getDependencyStatistics(projectId);⚙️ Конфигурация
const sdk = new CodeSolverSDK({
baseURL: 'https://api.example.com', // Обязательный
apiKey: 'your-api-key', // Рекомендуется
timeout: 30000, // Таймаут запросов
headers: { // Дополнительные заголовки
'Custom-Header': 'value'
},
http: { // HTTP настройки
timeout: 45000,
retries: 3,
retryDelay: 1000
},
debug: true // Отладочная информация
});🧪 Тестирование
# Все тесты
npm test
# Только HTTP тесты
npm test -- --testNamePattern="HTTP"
# Интеграционные тесты
npm run test:integration
# Тесты индексации
npm test -- --testPathPattern="indexing"📚 Примеры использования
Полный цикл работы с проектом
import { CodeSolverSDK } from 'solver-sdk';
async function fullWorkflow() {
const sdk = new CodeSolverSDK({
baseURL: 'http://localhost:3001',
apiKey: 'your-api-key'
});
try {
// 1. Создаем проект
const project = await sdk.projects.createProject({
name: 'My React App',
path: '/path/to/react-app',
description: 'React приложение для анализа'
});
// 2. Запускаем индексацию
const indexing = await sdk.indexing.indexProject(
'/path/to/react-app',
'My React App'
);
// 3. Ждем завершения индексации
console.log('Ожидание завершения индексации...');
await sdk.indexing.waitForCompletion(indexing.projectId);
// 4. Ищем React компоненты
const components = await sdk.search.searchCode({
projectId: project.projectId,
query: 'React.Component class',
maxResults: 10
});
// 5. Анализируем зависимости
const dependencies = await sdk.dependencies.getDependencyGraph(project.projectId);
// 6. Задаем вопрос AI о коде
const aiResponse = await sdk.chat.chat([
{
role: 'user',
content: `Проанализируй найденные React компоненты: ${JSON.stringify(components)}`
}
], {
model: 'claude-3-5-sonnet-20241022',
maxTokens: 8192
});
console.log('✅ Анализ завершен');
console.log('📊 Компоненты:', components.length);
console.log('🕸️ Зависимости:', dependencies);
console.log('🤖 AI анализ:', aiResponse.content[0].text);
} catch (error) {
console.error('❌ Ошибка:', error.message);
}
}
fullWorkflow();🔧 Устранение неполадок
Проблемы с подключением
// Диагностика API
const diagnosis = await sdk.diagnoseAPI();
console.log('Диагностика:', diagnosis);
// Проверка здоровья конкретных эндпоинтов
if (!diagnosis.healthy) {
console.log('Проблемные эндпоинты:', diagnosis.errors);
}Таймауты и повторы
// Увеличение таймаутов для больших проектов
const sdk = new CodeSolverSDK({
baseURL: 'https://api.example.com',
timeout: 120000, // 2 минуты
http: {
timeout: 90000,
retries: 5,
retryDelay: 2000
}
});📝 Changelog v3.0
✅ Добавлено
- Полная поддержка HTTP-only API
- Новый
IndexingClientдля простой индексации - Улучшенная обработка ошибок
- Подробная диагностика API
- Потоковый чат через HTTP
❌ Удалено
- Поддержка WebSocket (полностью удалена)
socket.io-clientзависимость- WebSocket события и обработчики
- Сложные WebSocket конфигурации
🔄 Изменено
- Все API методы теперь работают через HTTP
- Упрощенная конфигурация SDK
- Более быстрая инициализация
- Лучшая совместимость с разными средами
📄 Лицензия
MIT License