export interface CLIOptions { dir: string; output: string; format: 'json' | 'yaml'; template: string; config: string; verbose: boolean; } export interface ProjectInfo { projectType: ProjectType; language: string; framework: string | null; dependencies: DependencyInfo; conventions: ConventionInfo | null; fileCount: number; analysisDate: string; } export interface ProjectType { primaryLanguage: string; languages: string[]; frameworks: string[]; buildTools: string[]; } export interface DependencyInfo { direct: Dependency[]; dev: Dependency[]; total: number; } export interface Dependency { name: string; version: string; type: 'prod' | 'dev'; isLocal: boolean; } export interface ConventionInfo { namingConvention: NamingConvention; importStyle: ImportStyle; testingFramework: string | null; codeStyle: CodeStyle; } export interface NamingConvention { files: 'camelCase' | 'snake_case' | 'kebab-case' | 'PascalCase'; variables: 'camelCase' | 'snake_case' | 'kebab-case' | 'PascalCase'; functions: 'camelCase' | 'snake_case' | 'kebab-case' | 'PascalCase'; classes: 'PascalCase' | 'camelCase' | 'snake_case' | 'kebab-case'; } export interface ImportStyle { style: 'ESM' | 'CommonJS' | 'mixed'; aliasPrefix: string | null; commonPatterns: string[]; } export interface CodeStyle { indentSize: number; indentType: 'spaces' | 'tabs'; lineEndings: 'LF' | 'CRLF'; quoteStyle: 'single' | 'double'; } export interface ContextConfig { includes: string[]; excludes: string[]; outputFormat: 'json' | 'yaml'; template: 'cursor' | 'copilot' | 'generic' | 'default'; outputFile: string; analyzeConventions: boolean; includeDevDependencies: boolean; respectGitignore: boolean; } export interface TemplateData { projectInfo: ProjectInfo; files: FileInfo[]; config: ContextConfig; generatedAt: string; } export interface FileInfo { path: string; size: number; type: string; language: string; }