solver-sdk
Version:
SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system
122 lines • 5.8 kB
TypeScript
/**
* 🔄 Delta-Chunking Manager
* Менеджер для координации delta-chunking операций
*/
import { DeltaChunkingApi } from '../api/delta-chunking-api.js';
import { DeltaChunkingUtils } from './delta-chunking-utils.js';
import { CodeSolverSDKOptions } from '../interfaces/sdk-options.js';
import { SyncOptions, SyncResult, SyncStatus, FileContent, ActiveFile, FileCleanupResult, InvalidateFileOptions, FileInvalidationResult, BatchInvalidationResult } from '../types/delta-chunking.js';
/**
* Менеджер для координации всех delta-chunking операций
*/
export declare class DeltaChunkingManager {
private readonly deltaApi;
private readonly utils;
private readonly options;
private readonly logger;
constructor(deltaApi: DeltaChunkingApi, utils: DeltaChunkingUtils, options: CodeSolverSDKOptions, logger: {
log: (message: string) => void;
warn: (message: string) => void;
error: (message: string) => void;
});
/**
* Проверка активности delta-chunking
*/
get isEnabled(): boolean;
/**
* 📤 Синхронизация готовых зашифрованных чанков
*
* ✅ ПРАВИЛЬНАЯ АРХИТЕКТУРА:
* Client Extension передает готовые чанки и rootHash
* Backend SDK отправляет их на сервер через HTTP API
*
* @param projectId ID проекта
* @param encryptedChunks Готовые зашифрованные чанки от клиента
* @param rootHash Готовый clientRootHash от клиента
*/
syncEncryptedChunks(projectId: string, encryptedChunks: any[], rootHash: string, options?: SyncOptions): Promise<SyncResult>;
/**
* 📊 Получение статуса синхронизации
*/
getSyncStatus(projectId: string): Promise<SyncStatus>;
/**
* ❌ Отмена активной синхронизации
*/
cancelSync(projectId: string): Promise<boolean>;
/**
* 🧹 Очистка удаленных файлов из векторной базы
*/
cleanupDeletedFiles(projectId: string, currentFiles: FileContent[]): Promise<{
success: boolean;
deletedFromQdrant: number;
deletedFromPostgres: number;
activeFiles: number;
cleanupTime: number;
}>;
/**
* 🧹 Публичный метод для прямой очистки удаленных файлов
* @param projectId ID проекта
* @param activeFiles Список активных файлов
* @param deletedFiles ОПЦИОНАЛЬНО: Явно удаленные файлы (пути)
*/
performCleanup(projectId: string, activeFiles: ActiveFile[], deletedFiles?: string[]): Promise<FileCleanupResult>;
/**
* 🗑️ Инвалидировать chunks измененного файла
*
* Удаляет устаревшие chunks из Qdrant и инвалидирует RAG cache.
* После инвалидации отправьте новые chunks через syncEncryptedChunks().
*
* @param projectId - UUID проекта
* @param options - Опции инвалидации (filePath обязателен)
* @returns Результат операции с количеством инвалидированных chunks
*
* @example
* ```typescript
* // Инвалидировать файл после изменения
* const result = await sdk.deltaManager.invalidateFile(projectId, {
* filePath: 'src/app.tsx',
* reason: 'file_changed'
* });
*
* if (result.success) {
* console.log(`Invalidated ${result.chunksInvalidated} chunks`);
* }
*
* // Теперь отправить новые chunks
* await sdk.deltaManager.syncEncryptedChunks(projectId, newChunks, rootHash);
* ```
*/
invalidateFile(projectId: string, options: InvalidateFileOptions): Promise<FileInvalidationResult>;
/**
* 🗑️ Batch инвалидация файлов (для предотвращения rate limiting)
*
* Эффективная инвалидация множества файлов за один API запрос.
* Используйте этот метод вместо множественных вызовов invalidateFile()
* для предотвращения превышения rate limit сервера (30 req/sec).
*
* @param projectId - UUID проекта
* @param files - Массив файлов для инвалидации
* @returns Результат batch операции с общей статистикой
*
* @example
* ```typescript
* // Инвалидировать несколько файлов одним запросом
* const result = await sdk.deltaManager.invalidateFiles(projectId, [
* { filePath: 'src/app.tsx', reason: 'file_changed' },
* { filePath: 'src/utils.ts', reason: 'file_saved' },
* { filePath: 'src/config.json', reason: 'file_changed' }
* ]);
*
* console.log(`Invalidated ${result.totalChunksInvalidated} chunks from ${result.totalFiles} files`);
*
* // Теперь отправить новые chunks
* await sdk.deltaManager.syncEncryptedChunks(projectId, newChunks, rootHash);
* ```
*/
invalidateFiles(projectId: string, files: InvalidateFileOptions[]): Promise<BatchInvalidationResult>;
/**
* Проверка что delta-chunking включен
*/
private ensureEnabled;
}
//# sourceMappingURL=delta-chunking-manager.d.ts.map