UNPKG

@invisiblecities/sidequest-cqo

Version:

Configuration-agnostic TypeScript and ESLint orchestrator with real-time watch mode, SQLite persistence, and intelligent terminal detection

268 lines 9.81 kB
/** * Service Interfaces for Code Quality Orchestrator * Defines contracts for module separation and clean architecture */ import type { Violation as OrchestratorViolation } from "../utils/violation-types.js"; import type { Violation, ViolationHistory, RuleSchedule, NewRuleSchedule, DashboardData, ViolationQueryParameters, HistoryQueryParameters } from "../database/types.js"; export interface RuleCheckResult { rule: string; engine: "typescript" | "eslint"; checkId?: number; success: boolean; violationCount: number; executionTime: number; error?: string; filesChecked?: number; filesWithViolations?: number; violations?: any[]; } /** * Storage Service Interface * Handles all database operations and data persistence */ export interface IStorageService { storeViolations(_violations: OrchestratorViolation[]): Promise<{ inserted: number; updated: number; errors: string[]; }>; getViolations(_parameters?: ViolationQueryParameters): Promise<Violation[]>; getViolationSummary(): Promise<any[]>; resolveViolations(_hashes: string[]): Promise<number>; startRuleCheck(_rule: string, _engine: "typescript" | "eslint"): Promise<number>; completeRuleCheck(_checkId: number, _violationsFound: number, _executionTimeMs: number, _filesChecked?: number, _filesWithViolations?: number): Promise<void>; failRuleCheck(_checkId: number, _errorMessage: string): Promise<void>; recordViolationDeltas(_checkId: number, _currentViolationHashes: string[]): Promise<{ added: number; removed: number; unchanged: number; }>; getViolationHistory(_parameters?: HistoryQueryParameters): Promise<ViolationHistory[]>; upsertRuleSchedule(_schedule: NewRuleSchedule): Promise<number>; getNextRulesToCheck(_limit?: number): Promise<RuleSchedule[]>; getDashboardData(): Promise<DashboardData>; recordPerformanceMetric(_type: string, _value: number, _unit: string, _context?: string): Promise<void>; cleanupOldData(): Promise<any>; getStorageStats(): Promise<any>; } /** * Polling Service Interface * Manages rule execution scheduling and coordination */ export interface IPollingService { start(): Promise<void>; stop(): Promise<void>; pause(): Promise<void>; resume(): Promise<void>; isRunning(): boolean; scheduleRule(_rule: string, _engine: "typescript" | "eslint", _frequencyMs?: number): Promise<void>; unscheduleRule(_rule: string, _engine: "typescript" | "eslint"): Promise<void>; getScheduledRules(): Promise<RuleSchedule[]>; executeRule(_rule: string, _engine: "typescript" | "eslint"): Promise<RuleCheckResult>; executeNextRules(_maxConcurrent?: number): Promise<RuleCheckResult[]>; setDefaultFrequency(_frequencyMs: number): void; setMaxConcurrentChecks(_max: number): void; enableAdaptivePolling(_enabled: boolean): void; on(_event: "ruleStarted", _listener: (_rule: string, _engine: string) => void): void; on(_event: "ruleCompleted", _listener: (_result: RuleCheckResult) => void): void; on(_event: "ruleFailed", _listener: (_rule: string, _engine: string, _error: Error) => void): void; on(_event: "cycleCompleted", _listener: (_results: RuleCheckResult[]) => void): void; } /** * Analysis Service Interface * Provides historical analysis and delta computation */ export interface IAnalysisService { computeViolationDeltas(_previousViolations: string[], _currentViolations: string[]): { added: string[]; removed: string[]; unchanged: string[]; }; getViolationTrends(_timeRange: TimeRange): Promise<ViolationTrend[]>; getRulePerformanceAnalysis(_ruleId?: string): RulePerformanceAnalysis[]; getFileQualityTrends(_filePath?: string): Promise<FileQualityTrend[]>; calculateViolationStats(_timeRange: TimeRange): Promise<ViolationStats>; identifyProblemFiles(_threshold?: number): Promise<ProblemFile[]>; detectRuleFlakyness(_minRuns?: number): FlakyRule[]; predictViolationGrowth(_timeRange: TimeRange): Promise<ViolationPrediction>; recommendRuleFrequencies(): RuleFrequencyRecommendation[]; generateQualityReport(_timeRange: TimeRange): Promise<QualityReport>; generateRuleEfficiencyReport(): Promise<RuleEfficiencyReport>; } /** * Violation Tracker Interface * Manages violation lifecycle and deduplication */ export interface IViolationTracker { processViolations(_violations: OrchestratorViolation[]): Promise<ProcessingResult>; deduplicateViolations(_violations: OrchestratorViolation[]): OrchestratorViolation[]; markAsResolved(_violationHashes: string[]): Promise<number>; markAsIgnored(_violationHashes: string[]): Promise<number>; reactivateViolations(_violationHashes: string[]): Promise<number>; generateViolationHash(_violation: OrchestratorViolation): string; validateViolationHash(_violation: OrchestratorViolation, _hash: string): boolean; filterViolationsByRule(_violations: OrchestratorViolation[], _ruleIds: string[]): OrchestratorViolation[]; filterViolationsBySeverity(_violations: OrchestratorViolation[], _severities: string[]): OrchestratorViolation[]; filterViolationsByFile(_violations: OrchestratorViolation[], _filePaths: string[]): OrchestratorViolation[]; validateViolation(_violation: OrchestratorViolation): ValidationResult; sanitizeViolation(_violation: OrchestratorViolation): OrchestratorViolation; setSilentMode(_silent: boolean): void; } /** * Orchestrator Service Interface * Main coordination service that brings all services together */ export interface IOrchestratorService { initialize(): Promise<void>; shutdown(): Promise<void>; getStorageService(): IStorageService; getPollingService(): IPollingService; getAnalysisService(): IAnalysisService; getViolationTracker(): IViolationTracker; startWatchMode(_options?: WatchModeOptions): Promise<void>; stopWatchMode(): Promise<void>; isWatchModeActive(): boolean; runSingleCheck(_rule: string, _engine: "typescript" | "eslint"): Promise<RuleCheckResult>; runAllChecks(): Promise<RuleCheckResult[]>; updateConfiguration(_config: Partial<OrchestratorConfig>): Promise<void>; getConfiguration(): OrchestratorConfig; healthCheck(): Promise<HealthCheckResult>; getSystemStats(): Promise<SystemStats>; on(_event: string, _listener: (..._arguments: any[]) => void): void; off(_event: string, _listener: (..._arguments: any[]) => void): void; emit(_event: string, ..._arguments: any[]): void; } export interface TimeRange { start: Date; end: Date; } export interface ViolationTrend { date: string; count: number; severity: string; category: string; } export interface RulePerformanceAnalysis { rule: string; engine: string; avgExecutionTime: number; avgViolationsFound: number; successRate: number; lastRun: string; trend: "improving" | "stable" | "degrading"; } export interface FileQualityTrend { filePath: string; violationCount: number; trend: "improving" | "stable" | "degrading"; categories: string[]; } export interface ViolationStats { total: number; byCategory: Record<string, number>; bySeverity: Record<string, number>; bySource: Record<string, number>; avgPerFile: number; filesAffected: number; } export interface ProblemFile { filePath: string; violationCount: number; severityScore: number; categories: string[]; lastModified: string; } export interface FlakyRule { rule: string; engine: string; varianceScore: number; runCount: number; avgViolations: number; stdDeviation: number; } export interface ViolationPrediction { projectedGrowth: number; confidence: number; timeframe: string; factors: string[]; } export interface RuleFrequencyRecommendation { rule: string; engine: string; currentFrequency: number; recommendedFrequency: number; reasoning: string; } export interface QualityReport { timeRange: TimeRange; summary: ViolationStats; trends: ViolationTrend[]; problemFiles: ProblemFile[]; rulePerformance: RulePerformanceAnalysis[]; recommendations: string[]; } export interface RuleEfficiencyReport { totalRules: number; activeRules: number; avgExecutionTime: number; resourceUtilization: number; recommendations: RuleFrequencyRecommendation[]; } export interface ProcessingResult { processed: number; inserted: number; updated: number; deduplicated: number; errors: string[]; } export interface ValidationResult { isValid: boolean; errors: string[]; warnings: string[]; } export interface WatchModeOptions { intervalMs?: number; debounceMs?: number; autoCleanup?: boolean; maxConcurrentChecks?: number; } export interface OrchestratorConfig { database: { path: string; enableWAL: boolean; maxHistoryDays: number; }; polling: { defaultFrequencyMs: number; maxConcurrentChecks: number; adaptivePolling: boolean; }; watch: { intervalMs: number; debounceMs: number; autoCleanup: boolean; }; performance: { batchSize: number; enableMetrics: boolean; }; } export interface HealthCheckResult { overall: boolean; services: { storage: boolean; polling: boolean; analysis: boolean; tracker: boolean; }; errors: string[]; } export interface SystemStats { uptime: number; memoryUsage: ReturnType<typeof process.memoryUsage>; database: any; storage: any; activeChecks: number; watchMode: boolean; } //# sourceMappingURL=interfaces.d.ts.map