Package Exports
- solver-sdk
Readme
Code Solver SDK v5.0.0
🗑️ Ультра-чистый JavaScript/TypeScript SDK для VS Code Extensions
Без legacy кода, без мертвых методов, только актуальный API
JavaScript/TypeScript SDK для работы с Code Solver API. Предоставляет простой интерфейс для индексации кода, семантического поиска функций и работы с AI чатом.
🎯 Основные возможности
- 💬 Chat API - взаимодействие с AI моделями (Claude, GPT)
- 🔍 Code Search - семантический поиск по коду и функциям
- 📊 Project Indexing - индексация и анализ проектов с богатой информацией
- 📝 Context API - получение контекста для AI
- 🛠️ Code Modification - модификация кода через AI
- 🔇 Настраиваемое логирование - полный контроль над выводом в консоль
- ✨ Улучшенная типизация - полные TypeScript типы с примерами и документацией
🚀 Что нового в v5.0.0
Чистая версия - убраны все устаревшие методы. Только актуальный API без мертвого кода.
📦 Установка
npm install solver-sdk⚙️ Конфигурация
const sdk = await CodeSolverSDK.create({
baseURL: 'http://localhost:3000', // Обязательный
apiKey: 'your-api-key', // Опционально
timeout: 30000, // Таймаут запросов (мс)
debug: 'error' // Уровень логирования
});📊 Уровни логирования
'silent'- полное отключение'error'- только ошибки (рекомендуется)'warn'- предупреждения и ошибки'info'- базовая информация'debug'- подробная отладка
🚀 Быстрый старт
import { CodeSolverSDK } from 'solver-sdk';
// Создание SDK
const sdk = await CodeSolverSDK.create({
baseURL: 'http://localhost:3000',
debug: 'error' // Рекомендуемый уровень для production
});
// 1. Создание проекта (с автоматической дедупликацией)
const project = await sdk.projects.createProject(
'My Project',
'/path/to/project'
);
// 2. Запуск индексации
await sdk.projects.startIndexing(project.id);
// 3. Проверка статуса
const status = await sdk.projects.getIndexingStatus(project.id);
console.log(`Статус: ${status.status}, прогресс: ${status.progress}%`);
// 4. Поиск в коде
const results = await sdk.search.searchCode(project.id, {
query: 'function calculateSum',
limit: 10
});
// 5. Чат с AI
const response = await sdk.chat.chat([
{ role: 'user', content: 'Объясни найденный код' }
], { projectId: project.id });
console.log(response.content);📋 API Методы
📁 Projects API
// Создание проекта
await sdk.projects.createProject('Project Name', '/project/path');
await sdk.projects.createProject('Project Name', '/project/path', { description: 'Optional' });
// Получение проектов
await sdk.projects.getAllProjects(); // Все проекты
await sdk.projects.getReadyProjects(); // Только готовые к работе
await sdk.projects.getProject(projectId); // Конкретный проект с полной информацией⚙️ Indexing API
// Управление индексацией
await sdk.projects.startIndexing(projectId);
await sdk.projects.cancelIndexing(projectId);
// Статус индексации
const status = await sdk.projects.getIndexingStatus(projectId);
console.log(`${status.status}: ${status.progress}%`);🔍 Search API
// Поиск в коде
const results = await sdk.search.searchCode(projectId, {
query: 'function name',
limit: 20
});
// Поиск функций
const functions = await sdk.search.searchFunctions(projectId, {
query: 'calculateSum',
limit: 10
});
// Статистика
const stats = await sdk.search.getFunctionStats(projectId);💬 Chat API
// Обычный чат
const response = await sdk.chat.chat([
{ role: 'user', content: 'Explain this code' }
], { projectId });
// Потоковый чат
for await (const chunk of sdk.chat.streamChat(messages, { projectId })) {
console.log(chunk.text);
}
// С thinking (мышление Claude)
const response = await sdk.chat.chat(messages, {
projectId,
thinking: { type: 'enabled', budget_tokens: 5000 }
});💡 Типы данных
Project
interface Project {
id: string;
name: string;
path: string;
ready: boolean; // Готов к работе
fileCount: number; // Количество файлов
indexStatus: 'pending' | 'indexing' | 'indexed' | 'failed' | 'cancelled';
indexingProgress?: number; // 0-100%
languageStats?: {[lang: string]: number}; // Статистика языков
indexingErrors?: any[]; // Ошибки индексации
// ... и еще 10+ полей
}📚 Пример использования
import { CodeSolverSDK } from 'solver-sdk';
const sdk = await CodeSolverSDK.create({
baseURL: 'http://localhost:3000'
});
// Работа с проектом
const project = await sdk.projects.createProject('My App', '/path/to/app');
await sdk.projects.startIndexing(project.id);
// Ожидание индексации
let status;
do {
status = await sdk.projects.getIndexingStatus(project.id);
console.log(`${status.status}: ${status.progress}%`);
await new Promise(r => setTimeout(r, 2000));
} while (status.status === 'indexing');
// Поиск и чат
const results = await sdk.search.searchCode(project.id, {
query: 'function main',
limit: 5
});
const response = await sdk.chat.chat([
{ role: 'user', content: 'Explain this code' }
], { projectId: project.id });🔧 Устранение неполадок
// Проверка подключения
const response = await fetch('http://localhost:3000/health');
console.log('Backend доступен:', response.ok);
// Увеличение таймаута для больших проектов
const sdk = await CodeSolverSDK.create({
baseURL: 'http://localhost:3000',
timeout: 120000 // 2 минуты
});
// Отладка с подробными логами
const sdk = await CodeSolverSDK.create({
baseURL: 'http://localhost:3000',
debug: 'debug'
});📄 Лицензия
MIT License
Документация актуальна для v5.0.0
История изменений: CHANGELOG.md