UNPKG

qraft

Version:

A powerful CLI tool to qraft structured project setups from GitHub template repositories

149 lines 5.51 kB
import { ChangeAnalysisResult, FileChangeAnalysis } from './changeAnalysis'; import { DirectoryComparison, ManifestConflictInfo } from './contentComparison'; import { DiffSummary, FileDiff } from './diffGenerator'; import { ManifestComparisonResult, ManifestManager } from './manifestManager'; export interface ConflictResolutionChoice { action: 'keep_existing' | 'use_new' | 'merge' | 'skip' | 'backup_and_replace'; reason?: string; backupPath?: string; } export interface ManifestConflictResolutionChoice { action: 'keep_existing' | 'use_new' | 'backup_and_replace' | 'skip' | 'manual_merge'; reason?: string; backupPath?: string; mergeStrategy?: 'field_by_field' | 'version_priority' | 'custom'; } export interface ConflictResolutionPlan { file: string; choice: ConflictResolutionChoice; analysis: FileChangeAnalysis; diff?: FileDiff | undefined; } export interface ManifestConflictResolutionPlan { conflictInfo: ManifestConflictInfo; choice: ManifestConflictResolutionChoice; manifestComparison?: ManifestComparisonResult; priority: 'low' | 'medium' | 'high' | 'critical'; } export interface ResolutionSession { id: string; timestamp: Date; totalConflicts: number; resolvedConflicts: number; plans: ConflictResolutionPlan[]; autoResolved: ConflictResolutionPlan[]; requiresManualReview: ConflictResolutionPlan[]; manifestConflicts: ManifestConflictResolutionPlan[]; manifestAutoResolved: ManifestConflictResolutionPlan[]; manifestRequiresReview: ManifestConflictResolutionPlan[]; } export interface ResolutionOptions { autoResolveLevel: 'none' | 'safe' | 'moderate' | 'aggressive'; createBackups: boolean; backupDirectory: string; interactiveMode: boolean; dryRun: boolean; } export interface ExecutionOptions { createBackups: boolean; backupDirectory?: string; dryRun?: boolean; } export interface ExecutionResult { success: boolean; message: string; action: string; backupPath?: string; requiresManualIntervention?: boolean; } export declare class ConflictResolution { private manifestManager; constructor(manifestManager?: ManifestManager); createResolutionSession(analysis: ChangeAnalysisResult, comparison: DirectoryComparison, diffSummary: DiffSummary, options: ResolutionOptions): ResolutionSession; private createResolutionPlan; private determineDefaultChoice; /** * Create a resolution plan for manifest conflicts * @param conflictInfo Manifest conflict information * @param manifestComparison Optional manifest comparison result * @param options Resolution options * @returns ManifestConflictResolutionPlan */ private createManifestResolutionPlan; /** * Get manifest manager instance for advanced operations * @returns ManifestManager instance */ getManifestManager(): ManifestManager; /** * Determine default choice for manifest conflicts * @param conflictInfo Manifest conflict information * @param options Resolution options * @returns ManifestConflictResolutionChoice */ private determineManifestDefaultChoice; /** * Get priority level for manifest conflicts * @param conflictInfo Manifest conflict information * @returns Priority level */ private getManifestConflictPriority; /** * Check if manifest conflict can be auto-resolved * @param plan Manifest resolution plan * @param options Resolution options * @returns boolean */ private canAutoResolveManifest; private canAutoResolve; resolveInteractively(session: ResolutionSession, onPrompt: (plan: ConflictResolutionPlan) => Promise<ConflictResolutionChoice>): Promise<ResolutionSession>; generateResolutionSummary(session: ResolutionSession): { text: string; actions: Record<string, number>; riskAssessment: string; }; validateResolutionPlan(plan: ConflictResolutionPlan): { valid: boolean; warnings: string[]; errors: string[]; }; generateBackupPath(originalPath: string, backupDir: string): string; applyResolutionPlan(plan: ConflictResolutionPlan, options: ResolutionOptions): Promise<{ success: boolean; message: string; backupCreated?: string; }>; private generateSessionId; getSessionStats(session: ResolutionSession): { total: number; autoResolved: number; manualReview: number; byAction: Record<string, number>; byRisk: Record<string, number>; manifestStats: { total: number; autoResolved: number; manualReview: number; byPriority: Record<string, number>; }; }; /** * Execute manifest conflict resolution * @param plan Manifest resolution plan * @param targetDirectory Target directory for manifest operations * @param options Execution options * @returns Promise<ExecutionResult> */ executeManifestResolution(plan: ManifestConflictResolutionPlan, targetDirectory: string): Promise<ExecutionResult>; /** * Validate manifest resolution plan * @param plan Manifest resolution plan * @returns Validation result */ validateManifestResolutionPlan(plan: ManifestConflictResolutionPlan): { valid: boolean; warnings: string[]; errors: string[]; }; } //# sourceMappingURL=conflictResolution.d.ts.map