UNPKG

aiwg

Version:

Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo

154 lines 4.14 kB
/** * @file codebase-analyzer.ts * @description Brownfield codebase analysis for generating intake documentation * * Implements F-003/UC-003: Codebase Intake Generation * - Scans existing codebases to extract structure, dependencies, and metrics * - Generates intake forms automatically from code analysis * - Identifies technologies, frameworks, and architectural patterns * - Estimates technical debt and modernization opportunities * * @implements NFR-ACC-002: >85% accurate technology detection * @implements NFR-PERF-003: <2min analysis for medium codebases (<50k LOC) */ export interface CodebaseMetrics { totalFiles: number; totalLines: number; codeLines: number; commentLines: number; blankLines: number; filesByLanguage: Record<string, number>; linesByLanguage: Record<string, number>; } export interface DependencyInfo { name: string; version: string; type: 'production' | 'development' | 'peer'; vulnerabilities?: number; lastUpdated?: string; } export interface TechnologyStack { languages: Array<{ language: string; percentage: number; files: number; }>; frameworks: Array<{ name: string; version?: string; confidence: number; }>; databases: Array<{ type: string; confidence: number; }>; buildTools: string[]; testFrameworks: string[]; cicd: string[]; } export interface ArchitecturePattern { pattern: string; confidence: number; indicators: string[]; } export interface TechnicalDebt { category: 'deprecated' | 'outdated' | 'security' | 'complexity' | 'duplication'; severity: 'critical' | 'high' | 'medium' | 'low'; description: string; location: string; estimatedEffort: string; } export interface CodebaseAnalysisResult { projectName: string; projectPath: string; analyzedAt: Date; metrics: CodebaseMetrics; technologies: TechnologyStack; dependencies: DependencyInfo[]; architecture: ArchitecturePattern[]; technicalDebt: TechnicalDebt[]; recommendations: string[]; estimatedComplexity: 'simple' | 'moderate' | 'complex' | 'enterprise'; } export interface AnalysisOptions { path: string; excludePaths?: string[]; maxFiles?: number; detectFrameworks?: boolean; detectDebt?: boolean; scanDependencies?: boolean; } export declare class CodebaseAnalyzer { private readonly defaultExcludePaths; private readonly languageExtensions; /** * Analyze a codebase and generate comprehensive analysis */ analyze(options: AnalysisOptions): Promise<CodebaseAnalysisResult>; /** * Validate analysis path exists and is accessible */ private validatePath; /** * Gather codebase metrics (lines, files, languages) */ private gatherMetrics; /** * Detect technologies, frameworks, and tools */ private detectTechnologies; /** * Detect frameworks from package.json, requirements.txt, pom.xml, etc. */ private detectFrameworks; /** * Detect databases from configuration files */ private detectDatabases; /** * Detect build tools */ private detectBuildTools; /** * Detect test frameworks */ private detectTestFrameworks; /** * Detect CI/CD configuration */ private detectCICD; /** * Scan project dependencies */ private scanDependencies; /** * Detect architecture patterns */ private detectArchitecture; /** * Detect technical debt */ private detectTechnicalDebt; /** * Generate recommendations based on analysis */ private generateRecommendations; /** * Estimate project complexity */ private estimateComplexity; /** * Walk directory recursively */ private walkDirectory; /** * Check if path should be excluded */ private shouldExclude; /** * Get empty tech stack */ private getEmptyTechStack; } export default CodebaseAnalyzer; //# sourceMappingURL=codebase-analyzer.d.ts.map