JSPM

  • Created
  • Published
  • Downloads 194
  • Score
    100M100P100Q77094F
  • License MIT

SDK для интеграции с Code Solver Backend API

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