/** * Git lens for version control insights */ import { BaseLens } from '../base/BaseLens.js'; import { LensResult, LensConfig, ExecuteResult, ToolConfiguration } from '../../types/index.js'; /** * Git file status codes */ export type GitStatusCode = 'M' | 'A' | 'D' | 'R' | 'C' | 'U' | '?' | '!' | 'T'; /** * Parsed git status entry */ export interface GitStatusEntry { status: string; stagedStatus: GitStatusCode | ' '; unstagedStatus: GitStatusCode | ' '; file: string; originalFile?: string; } /** * Detailed commit information */ export interface CommitInfo { hash: string; shortHash: string; author: string; authorEmail: string; date: string; message: string; files?: number; insertions?: number; deletions?: number; } /** * Git information structure */ export interface GitInfo { branch?: string; commit?: string; commitDetails?: CommitInfo; status: GitStatusEntry[]; untracked: string[]; modified: string[]; staged: string[]; deleted: string[]; renamed: Array<{ from: string; to: string; }>; } /** * Lens for Git version control insights */ export declare class GitLens extends BaseLens { readonly name = "git"; readonly description = "Version control insights from Git"; readonly languages: string[]; readonly supportedTools: string[]; private pathMapper?; private includeCommitDetails; /** * Calculate quality score (0-100) from Git results * * Scoring algorithm: * - Start at 100 * - Penalty for uncommitted changes (encourages clean working directory) * - Modified/deleted files: 2 points each * - Untracked files: 1 point each * - Floor at 0 * * Note: A clean working directory (no uncommitted changes) scores 100 * This encourages good VCS hygiene but doesn't indicate code quality per se */ static calculateQualityScore(result: LensResult): number; /** * Configure GitLens options */ configure(config: LensConfig & { includeCommitDetails?: boolean; }): void; /** * Execute git commands to gather information */ execute(): Promise; /** * Parse git command outputs */ parse(output: ExecuteResult): GitInfo; /** * Parse git status --porcelain output */ private parseStatus; /** * Format git information to standard format */ format(parsed: GitInfo): LensResult; /** * Get or create path mapper */ private getPathMapper; /** * Override canHandle to check for git availability */ canHandle(tool: ToolConfiguration): boolean; } //# sourceMappingURL=GitLens.d.ts.map