@aaswe/codebase-ai
Version:
AI-Assisted Software Engineering (AASWE) - Rich codebase context for IDE LLMs
93 lines • 2.94 kB
TypeScript
/**
* Code Ingestion Service
* Main orchestrator for code ingestion, Git monitoring, and file watching
*/
import { EventEmitter } from 'events';
import { BaseAnalyzer } from '../ast-analyzer/BaseAnalyzer';
import { Repository, IngestionJob, WebhookPayload, IngestionConfig, IngestionMetrics } from './types';
export declare class CodeIngestionService extends EventEmitter {
private gitService;
private fileWatcher;
private jobQueue;
private astAnalyzer;
private config;
private metrics;
private isInitialized;
constructor(astAnalyzer: BaseAnalyzer, config?: Partial<IngestionConfig>);
/**
* Initialize the code ingestion service
*/
initialize(): Promise<void>;
/**
* Add a repository for monitoring and analysis
*/
addRepository(config: {
name: string;
path: string;
url?: string;
branch?: string;
enableWebhooks?: boolean;
enableFileWatcher?: boolean;
includePatterns?: string[];
excludePatterns?: string[];
languages?: string[];
}): Promise<Repository>;
/**
* Remove a repository from monitoring
*/
removeRepository(repositoryId: string): Promise<void>;
/**
* Process webhook payload from Git providers
*/
processWebhook(payload: WebhookPayload): Promise<void>;
/**
* Queue full repository analysis
*/
queueFullAnalysis(repositoryId: string, triggerType?: 'manual' | 'webhook' | 'file_watcher' | 'scheduled'): Promise<IngestionJob>;
/**
* Queue incremental analysis for specific files
*/
queueIncrementalAnalysis(repositoryId: string, commitHash?: string, changedFiles?: string[], triggerType?: 'manual' | 'webhook' | 'file_watcher' | 'scheduled'): Promise<IngestionJob>;
/**
* Queue TTL file synchronization
*/
queueTTLSync(repositoryId: string, ttlFilePath: string): Promise<IngestionJob>;
/**
* Get repository by ID
*/
getRepository(repositoryId: string): Repository | undefined;
/**
* Get all repositories
*/
getRepositories(): Repository[];
/**
* Get job by ID
*/
getJob(jobId: string): IngestionJob | undefined;
/**
* Get jobs for a repository
*/
getRepositoryJobs(repositoryId: string): IngestionJob[];
/**
* Get service metrics
*/
getMetrics(): IngestionMetrics;
/**
* Shutdown the service
*/
shutdown(): Promise<void>;
private setupEventHandlers;
private processJob;
private processFullAnalysis;
private processIncrementalAnalysis;
private processFileChange;
private processTTLSync;
private createAnalysisSummary;
private updateMetrics;
private parseTTLContent;
private storeTTLMetadata;
private calculateChecksum;
private ensureInitialized;
}
export default CodeIngestionService;
//# sourceMappingURL=CodeIngestionService.d.ts.map