@aaswe/codebase-ai
Version:
AI-Assisted Software Engineering (AASWE) - Rich codebase context for IDE LLMs
73 lines • 2.09 kB
TypeScript
/**
* Installation Detector
*
* Detects package installations, updates, and dependency changes
* to trigger appropriate analysis workflows.
*/
import { EventEmitter } from 'events';
export interface PackageChange {
name: string;
oldVersion?: string;
newVersion: string;
changeType: 'added' | 'updated' | 'removed';
isDev: boolean;
}
export interface InstallationEvent {
type: 'package_installed' | 'package_updated' | 'package_removed' | 'lockfile_changed';
timestamp: Date;
projectRoot: string;
changes: PackageChange[];
packageManager: 'npm' | 'yarn' | 'pnpm' | 'unknown';
triggerAnalysis: boolean;
}
export interface DetectorConfig {
projectRoot: string;
watchLockFiles: boolean;
watchPackageJson: boolean;
debounceDelay: number;
ignoreDevDependencies: boolean;
}
/**
* Installation Detector
*
* Monitors package installations and dependency changes to trigger
* automatic project analysis when significant changes occur.
*/
export declare class InstallationDetector extends EventEmitter {
private config;
private isActive;
private watchers;
private lastPackageSnapshot?;
private debounceTimer?;
constructor(config?: Partial<DetectorConfig>);
/**
* Start monitoring for installation events
*/
startMonitoring(): Promise<void>;
/**
* Stop monitoring
*/
stopMonitoring(): Promise<void>;
/**
* Manually detect changes (for testing or one-time checks)
*/
detectChanges(): Promise<InstallationEvent | null>;
/**
* Get current monitoring status
*/
getStatus(): {
isActive: boolean;
config: DetectorConfig;
watcherCount: number;
lastSnapshot?: Date | undefined;
};
private setupPackageJsonWatcher;
private setupLockFileWatchers;
private scheduleChangeDetection;
private createPackageSnapshot;
private compareSnapshots;
private determineEventType;
private shouldTriggerAnalysis;
private detectPackageManager;
}
//# sourceMappingURL=InstallationDetector.d.ts.map