UNPKG

@entro314labs/ai-changelog-generator

Version:

AI-powered changelog generator with MCP server support - works with most providers, online and local models

209 lines (208 loc) 6.46 kB
interface RepositoryHealth { healthy: boolean; score: number; issues: string[]; recommendations: string[]; metrics: { branches: number; commits: number; untrackedFiles: number; staleBranches: number; largeBinaryFiles: number; commitFrequency: number; conventionalCommitRatio?: number; recentCommitsCount?: number; repositoryAgeInDays?: number; totalCommits?: number; totalBranches?: number; unmergedCommits?: number; danglingCommits?: number; }; } interface BranchInfo { name: string; lastCommitDate: string; lastCommitAuthor: string; lastCommitSubject: string; isRemote: boolean; isStale: boolean; type: 'remote' | 'local'; } interface UnmergedCommitInfo { hash: string; message: string; branch: string; } interface DanglingCommitInfo { hash: string | undefined; type: 'dangling'; } interface BranchAnalysis { branches: BranchInfo[]; unmergedCommits: UnmergedCommitInfo[]; danglingCommits: DanglingCommitInfo[]; analysis: string; } interface ComprehensiveGitAnalysis { analysis: string; recommendations?: string[]; metrics: RepositoryHealth['metrics']; health: RepositoryHealth; } export declare class GitService { [key: string]: any; constructor(gitManager: any, tagger: any); getCommitAnalysis(commitHash: any): Promise<{ hash: any; fullHash: any; subject: any; author: any; date: any; body: any; files: any[]; diffStats: { files: number; insertions: number; deletions: number; }; semanticChanges: any; breakingChanges: any; categories: any; importance: any; tags: any; } | null>; analyzeFileChange(commitHash: any, status: any, filePath: any): Promise<{ status: any; filePath: any; diff: string; beforeContent: string; afterContent: string; category: string; language: string; importance: string; complexity: { score: number; additions?: undefined; deletions?: undefined; total?: undefined; level?: undefined; } | { score: number; additions: any; deletions: any; total: any; level: string; }; semanticChanges: any; functionalImpact: any; } | null>; analyzeWorkingDirectoryFileChange(status: any, filePath: any): Promise<{ status: any; filePath: any; diff: string; beforeContent: string; afterContent: string; category: string; language: string; importance: string; complexity: { score: number; additions?: undefined; deletions?: undefined; total?: undefined; level?: undefined; } | { score: number; additions: any; deletions: any; total: any; level: string; }; semanticChanges: any; functionalImpact: any; }>; analyzeStagedFileChange(status: any, filePath: any): Promise<{ status: string; filePath: any; diff: string; beforeContent: string; afterContent: string; additions: number; deletions: number; category: string; language: string; importance: string; complexity: { score: number; additions?: undefined; deletions?: undefined; total?: undefined; level?: undefined; } | { score: number; additions: any; deletions: any; total: any; level: string; }; semanticChanges: any; functionalImpact: any; }>; getCommitDiffStats(commitHash: any): { files: number; insertions: number; deletions: number; }; getCommitsSince(since: any, options?: Record<string, any>): Promise<any>; /** * Get commits in the range fromRef..toRef. * * Both refs are validated with `git rev-parse --verify <ref>^{commit}` before * the range is queried, so a typo'd tag/SHA surfaces as a clear error instead * of an empty range that masquerades as "no changes". * * @param {string} fromRef - Exclusive lower bound (commit, tag, or branch) * @param {string} toRef - Inclusive upper bound (default: 'HEAD') * @param {Object} options - Optional filters * @param {string} options.author - Filter by author name or email * @returns {Promise<Array<{hash: string, message: string}>>} Commits in range * @throws {Error} If either ref cannot be resolved to a commit */ getCommitsBetween(fromRef: string, toRef?: string, options?: Record<string, any>): Promise<Array<{ hash: string; message: string; }>>; /** * Process merge commit statistics to create meaningful file analysis */ processMergeCommitStats(commitHash: any, statOutput: any): any[]; /** * Create a meaningful diff summary for merge commits with enhanced categorization */ createMergeCommitDiffSummary(filePath: any, totalChanges: any, additions: any, deletions: any, _commitHash: any): string; /** * Generate comprehensive merge commit summary with categorized changes and technical details */ generateMergeCommitSummary(files: any, commitHash: any, subject: any): string; /** * Extract technical details from key merge commit files for specific descriptions */ extractTechnicalDetailsFromMerge(files: any, commitHash: any): string[]; /** * Extract specific technical changes from a diff */ extractSpecificChanges(filePath: any, diff: any): string | null; assessRepositoryHealth(_config?: Record<string, any>): Promise<RepositoryHealth>; analyzeBranches(format?: string): Promise<BranchAnalysis>; analyzeComprehensive(includeRecommendations?: boolean): Promise<ComprehensiveGitAnalysis | { analysis: string; recommendations: string[] | undefined; metrics: {}; health: { healthy: boolean; score: number; }; }>; findMainBranch(): any; } export {};