// File manifest types for enhanced edit tracking export interface FileInfo { content: string; type: 'component' | 'page' | 'style' | 'config' | 'utility' | 'layout' | 'hook' | 'context'; exports?: string[]; // Named exports and default export imports?: ImportInfo[]; // Dependencies lastModified: number; componentInfo?: ComponentInfo; // For React components path: string; relativePath: string; // Path relative to src/ } export interface ImportInfo { source: string; // e.g., './Header', 'react', '@/components/Button' imports: string[]; // Named imports defaultImport?: string; // Default import name isLocal: boolean; // true if starts with './' or '@/' } export interface ComponentInfo { name: string; props?: string[]; // Prop names if detectable hooks?: string[]; // Hooks used (useState, useEffect, etc) hasState: boolean; childComponents?: string[]; // Components rendered inside } export interface RouteInfo { path: string; // Route path (e.g., '/videos', '/about') component: string; // Component file path layout?: string; // Layout component if any } export interface ComponentTree { [componentName: string]: { file: string; imports: string[]; // Components it imports importedBy: string[]; // Components that import it type: 'page' | 'layout' | 'component'; } } export interface FileManifest { files: Record; routes: RouteInfo[]; componentTree: ComponentTree; entryPoint: string; // Usually App.jsx or main.jsx styleFiles: string[]; // All CSS files timestamp: number; } // Edit classification types export enum EditType { UPDATE_COMPONENT = 'UPDATE_COMPONENT', // "update the header", "change button color" ADD_FEATURE = 'ADD_FEATURE', // "add a videos page", "create new component" FIX_ISSUE = 'FIX_ISSUE', // "fix the styling", "resolve error" REFACTOR = 'REFACTOR', // "reorganize", "clean up" FULL_REBUILD = 'FULL_REBUILD', // "start over", "recreate everything" UPDATE_STYLE = 'UPDATE_STYLE', // "change colors", "update theme" ADD_DEPENDENCY = 'ADD_DEPENDENCY' // "install package", "add library" } export interface EditIntent { type: EditType; targetFiles: string[]; // Predicted files to edit confidence: number; // 0-1 confidence score description: string; // Human-readable description suggestedContext: string[]; // Additional files to include for context } // Patterns for intent detection export interface IntentPattern { patterns: RegExp[]; type: EditType; fileResolver: (prompt: string, manifest: FileManifest) => string[]; }