JSPM

  • Created
  • Published
  • Downloads 12
  • Score
    100M100P100Q82388F
  • License MIT

SDK for API integration

Package Exports

  • solver-sdk

Readme

Code Solver SDK v6.0.1

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

📦 Установка

npm install solver-sdk

🚀 Инициализация

import { CodeSolverSDK } from 'solver-sdk';

const sdk = new CodeSolverSDK({
  baseURL: 'http://localhost:3000',
  apiKey: 'your-api-key'
});

📖 API Reference

Projects API (sdk.projects)

// Базовое управление проектами
createProject(name: string, data?: any): Promise<Project>
getAllProjects(): Promise<Project[]>
getProject(projectId: string): Promise<Project>
findOrCreateProject(projectName: string): Promise<Project>  // Найти существующий или создать новый
deleteProject(projectId: string): Promise<void>

// Проверка состояния синхронизации
getProjectState(projectId: string, clientRootHash?: string): Promise<ProjectState>  // Передать clientRootHash для проверки нужна ли синхронизация
getIndexingStatus(projectId: string): Promise<any>
startIndexing(projectId: string, options?: any): Promise<any>
cancelIndexing(projectId: string): Promise<boolean>
resetIndexing(projectId: string): Promise<any>        // Очистить индекс, проект остается
restartIndexing(projectId: string): Promise<any>      // Очистить + подготовить к новой индексации

// Session Recovery - восстановление прерванных синхронизаций
getRecoveryStatus(projectId: string): Promise<any>    // Проверить есть ли прерванные сессии при старте
resumeSync(projectId: string, options?: any): Promise<any>  // Продолжить прерванную синхронизацию
cancelRecovery(projectId: string): Promise<any>       // Отменить восстановление, начать заново
initializeDeltaSync(projectId: string, clientRootHash: string): Promise<any>  // ОБЯЗАТЕЛЬНО вызвать перед отправкой chunks

// Delta Sync API - отправка готовых chunks
sendInitialSync(projectId: string, request: any): Promise<any>      // Инициализация с clientRootHash
sendDeltaSync(projectId: string, batchRequest: any): Promise<any>    // Отправка батча зашифрованных chunks
getDeltaSyncStatus(projectId: string): Promise<any>                  // Статус текущей синхронизации
finalizeDeltaSync(projectId: string): Promise<any>                   // ОБЯЗАТЕЛЬНО вызвать после всех batches
cancelDeltaSync(projectId: string): Promise<any>

// Диагностика
getFilePathMapping(projectId: string): Promise<any>   // Получить маппинг обфусцированных путей с сервера

Delta Manager API (sdk.deltaManager)

// Отправка готовых зашифрованных chunks (Client Extension уже подготовил)
syncEncryptedChunks(projectId: string, encryptedChunks: any[], rootHash: string, options?: any): Promise<any>  // Chunks должны быть ready-to-send
getSyncStatus(projectId: string): Promise<any>      // Статус delta-chunking процесса
cancelSync(projectId: string): Promise<boolean>

Chat API (sdk.chat)

chat(messages: any[], options?: any): Promise<any>                              // Обычный запрос-ответ
chatStream(messages: any[], options?: any): Promise<AsyncIterable<any>>         // Потоковый чат (streaming)
cancelCurrentRequest(): void                                                    // Прервать активный запрос

Search API (sdk.search)

search(query: string, options?: any): Promise<any[]>                           // Векторный поиск по индексу
searchThenFetch(query: string, options?: any): Promise<any>                    // Поиск + загрузка полного контекста

WebSocket API (sdk.projectSync)

// Real-time уведомления о синхронизации
connectProjectSync(projectId: string): Promise<void>         // Подключиться к конкретному проекту
onSyncProgress(callback: Function): void                      // Событие: прогресс индексации (%)
onSyncCompleted(callback: Function): void                     // Событие: синхронизация завершена
onSyncError(callback: Function): void                         // Событие: ошибка синхронизации
disconnectWebSocket(): void                                   // Отключить WebSocket

⚠️ Важные особенности

Архитектурные принципы:

  • Backend SDK = только HTTP API клиент, НЕ работает с файловой системой
  • Client Extension сканирует файлы, вычисляет hashes, создает chunks
  • Обязательная последовательность: initializeDeltaSync()sendDeltaSync()finalizeDeltaSync()

Session Recovery:

  • Всегда проверяйте getRecoveryStatus() при старте проекта
  • Показывайте пользователю диалог "Continue (67%) | Start Fresh"
  • resumeSync() продолжит с последнего batch, cancelRecovery() начнет заново

WebSocket для real-time:

  • Используйте WebSocket вместо polling для статуса
  • connectProjectSync(projectId) подключает к конкретному проекту
  • Все события автоматически фильтруются по projectId