JSPM

  • Created
  • Published
  • Downloads 11
  • Score
    100M100P100Q82316F
  • License MIT

SDK для работы с VSCursor Backend - AI-powered система анализа кода

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