UNPKG

solver-sdk

Version:

SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system

122 lines 5.8 kB
/** * 🔄 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