@aaswe/codebase-ai
Version:
AI-Assisted Software Engineering (AASWE) - Rich codebase context for IDE LLMs
87 lines • 2.49 kB
TypeScript
/**
* Trigger Orchestrator
*
* Orchestrates automatic project analysis triggers from various sources
* including NPM hooks, file system changes, and manual triggers.
*/
import { EventEmitter } from 'events';
export interface TriggerConfig {
projectRoot: string;
enableNPMHooks: boolean;
enableInstallationDetection: boolean;
enableFileWatching: boolean;
analysisDelay: number;
maxConcurrentAnalyses: number;
cooldownPeriod: number;
}
export interface AnalysisTrigger {
id: string;
type: 'npm_hook' | 'installation' | 'file_change' | 'manual' | 'api';
timestamp: Date;
source: string;
reason: string;
priority: 'low' | 'medium' | 'high';
metadata?: any;
}
export interface TriggerResult {
triggerId: string;
success: boolean;
analysisId?: string;
startTime: Date;
endTime: Date;
duration: number;
error?: string;
}
/**
* Trigger Orchestrator
*
* Central coordinator for all automatic analysis triggers.
* Manages trigger sources, queuing, and execution coordination.
*/
export declare class TriggerOrchestrator extends EventEmitter {
private config;
private npmHookManager?;
private installationDetector?;
private projectAnalysisService?;
private isInitialized;
private triggerQueue;
private activeTriggers;
private lastAnalysisTime?;
private triggerHistory;
constructor(config?: Partial<TriggerConfig>);
/**
* Initialize the trigger orchestrator
*/
initialize(): Promise<void>;
/**
* Manually trigger analysis
*/
triggerAnalysis(reason?: string, priority?: AnalysisTrigger['priority'], metadata?: any): Promise<string>;
/**
* Get trigger status and statistics
*/
getStatus(): {
isInitialized: boolean;
config: TriggerConfig;
queueLength: number;
activeTriggers: number;
lastAnalysis?: Date | undefined;
recentTriggers: TriggerResult[];
};
/**
* Shutdown the orchestrator
*/
shutdown(): Promise<void>;
private setupNPMHookListeners;
private setupInstallationDetectorListeners;
private setupProjectAnalysisListeners;
private queueTrigger;
private startTriggerProcessing;
private processTriggerQueue;
private processTrigger;
private isInCooldownPeriod;
private getCooldownRemaining;
private determinePriority;
private generateTriggerId;
}
//# sourceMappingURL=TriggerOrchestrator.d.ts.map