UNPKG

mnemos-coder

Version:

CLI-based coding agent with graph-based execution loop and terminal UI

105 lines 2.55 kB
/** * Real-time file monitoring and synchronization * Watches for file changes and updates the codebase index incrementally */ import { EventEmitter } from 'events'; import { VectraDatabase } from './VectraDatabase.js'; import { CodeParser } from './parser.js'; import { ApiEmbedder } from './ApiEmbedder.js'; export interface WatcherOptions { ignored?: string[]; persistent?: boolean; ignoreInitial?: boolean; debounceMs?: number; batchSize?: number; } export interface FileChangeEvent { type: 'add' | 'change' | 'unlink'; filePath: string; timestamp: Date; } export interface ProcessingStats { filesProcessed: number; filesSkipped: number; errors: number; totalTime: number; averageTime: number; } export declare class CodebaseWatcher extends EventEmitter { private watcher?; private db; private parser; private embedder; private projectRoot; private options; private isProcessing; private changeQueue; private debounceTimer?; private stats; constructor(projectRoot: string, db: VectraDatabase, parser: CodeParser, embedder: ApiEmbedder, options?: WatcherOptions); /** * Start watching for file changes */ startWatching(): Promise<void>; /** * Stop watching for file changes */ stopWatching(): Promise<void>; /** * Perform initial scan of the project */ performInitialScan(): Promise<void>; /** * Handle file change events */ private handleFileChange; /** * Debounce processing to batch rapid changes */ private debounceProcessing; /** * Process queued file changes */ private processChangeQueue; /** * Process a single file change */ private processFileChange; /** * Process a single file (add or update) */ private processFile; /** * Remove file from index */ private removeFile; /** * Get all code files in the project */ private getAllCodeFiles; /** * Check if file should be processed */ private shouldProcessFile; /** * Get processing statistics */ getStats(): ProcessingStats; /** * Reset statistics */ resetStats(): void; /** * Check if watcher is active */ isWatching(): boolean; /** * Get current queue size */ getQueueSize(): number; /** * Create content hash for deduplication */ private createContentHash; } //# sourceMappingURL=watcher.d.ts.map