mnemos-coder
Version:
CLI-based coding agent with graph-based execution loop and terminal UI
105 lines • 2.55 kB
TypeScript
/**
* 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