UNPKG

@aaswe/codebase-ai

Version:

AI-Assisted Software Engineering (AASWE) - Rich codebase context for IDE LLMs

167 lines 4.27 kB
/** * Code Ingestion Service Types * Defines interfaces and types for code ingestion, Git integration, and file monitoring */ export interface Repository { id: string; name: string; path: string; url?: string; branch: string; lastCommitHash?: string; lastAnalyzed?: Date; status: RepositoryStatus; config: RepositoryConfig; } export type RepositoryStatus = 'active' | 'inactive' | 'analyzing' | 'error'; export interface RepositoryConfig { includePatterns: string[]; excludePatterns: string[]; languages: string[]; enableWebhooks: boolean; enableFileWatcher: boolean; batchSize: number; analysisDepth: number; } export interface GitCommit { hash: string; author: string; email: string; message: string; timestamp: Date; files: GitFileChange[]; } export interface GitFileChange { path: string; status: 'added' | 'modified' | 'deleted' | 'renamed'; oldPath?: string; additions: number; deletions: number; } export interface FileWatchEvent { type: 'add' | 'change' | 'unlink' | 'addDir' | 'unlinkDir'; path: string; timestamp: Date; stats?: FileStats; } export interface FileStats { size: number; mtime: Date; isDirectory: boolean; isFile: boolean; } export interface IngestionJob { id: string; repositoryId: string; type: IngestionJobType; status: JobStatus; priority: JobPriority; createdAt: Date; startedAt?: Date; completedAt?: Date; progress: JobProgress; metadata: IngestionJobMetadata; error?: string; } export type IngestionJobType = 'full_analysis' | 'incremental_analysis' | 'file_change' | 'ttl_sync'; export type JobStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled'; export type JobPriority = 'low' | 'normal' | 'high' | 'critical'; export interface JobProgress { totalFiles: number; processedFiles: number; currentFile?: string; percentage: number; estimatedTimeRemaining?: number; } export interface IngestionJobMetadata { commitHash?: string; changedFiles?: string[]; triggerType: 'manual' | 'webhook' | 'file_watcher' | 'scheduled'; batchId?: string; } export interface WebhookPayload { repository: { id: string; name: string; url: string; branch: string; }; commits: GitCommit[]; pusher: { name: string; email: string; }; timestamp: Date; } export interface AnalysisResult { repositoryId: string; commitHash: string; files: FileAnalysisResult[]; summary: AnalysisSummary; timestamp: Date; } export interface FileAnalysisResult { path: string; language: string; size: number; linesOfCode: number; complexity: number; dependencies: string[]; exports: string[]; errors: string[]; ttlGenerated: boolean; ttlPath?: string; } export interface AnalysisSummary { totalFiles: number; languageBreakdown: Record<string, number>; complexityMetrics: { average: number; max: number; min: number; }; dependencyCount: number; errorCount: number; ttlFilesGenerated: number; } export interface TTLFileChange { repositoryId: string; filePath: string; changeType: 'created' | 'modified' | 'deleted'; timestamp: Date; fileStats?: FileStats; } export interface IngestionConfig { maxConcurrentJobs: number; batchSize: number; retryAttempts: number; retryDelay: number; webhookSecret?: string; fileWatcherDebounce: number; supportedLanguages: string[]; defaultExcludePatterns: string[]; } export interface IngestionMetrics { totalRepositories: number; activeJobs: number; completedJobs: number; failedJobs: number; averageProcessingTime: number; filesProcessedPerSecond: number; lastProcessingTime: Date; } export interface FileWatcherConfig { ignored: string[]; persistent: boolean; ignoreInitial: boolean; followSymlinks: boolean; depth: number; awaitWriteFinish: { stabilityThreshold: number; pollInterval: number; }; usePolling: boolean; interval: number; binaryInterval: number; } //# sourceMappingURL=types.d.ts.map