/** * Configuration for a git repository watcher */ export interface GitWatcherConfig { /** Workspace ID for document isolation */ workspaceId: string; /** Codebase ID linking to codebase collection */ codebaseId: string; /** Local file system path to repository root */ repoPath: string; /** Git branch to watch (default: current branch) */ branch?: string; /** Include glob patterns (default: all text files) */ include?: string[]; /** Exclude glob patterns (default: .gitignore rules) */ exclude?: string[]; /** Debounce milliseconds for batch processing (default: 300000 = 5 min) */ debounceMs?: number; } /** * A single file change detected in watched repository */ export interface GitFileChange { /** Relative path from repo root */ filePath: string; /** Operation type: 'add', 'modify', 'delete' */ operation: 'add' | 'modify' | 'delete'; /** Git commit hash (from 'git log -1' for this file) */ commitHash: string; /** Git branch name */ branch: string; /** Commit author name */ author: string; /** Commit timestamp ISO string */ committedAt: string; } /** * Batch of file changes to be processed as one RAG sync job */ export interface GitWatcherBatch { /** Local repo path */ repoPath: string; /** Codebase ID for workspace isolation */ codebaseId: string; /** Workspace ID */ workspaceId: string; /** Array of file changes in this batch */ changes: GitFileChange[]; /** When batch was triggered (ISO string) */ triggeredAt: string; } /** * Git watcher instance status */ export interface GitWatcherStatus { id: string; codebaseId: string; repoPath: string; status: 'active' | 'paused' | 'error'; lastSync?: string; filesIndexed: number; errorMessage?: string; } //# sourceMappingURL=types.d.ts.map