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
TypeScript
/**
* @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