using System; using System.Collections.Generic; using System.Linq; namespace MCPForUnity.Editor.Dependencies.Models { /// /// Result of a comprehensive dependency check /// [Serializable] public class DependencyCheckResult { /// /// List of all dependency statuses checked /// public List Dependencies { get; set; } /// /// Overall system readiness for MCP operations /// public bool IsSystemReady { get; set; } /// /// Whether all required dependencies are available /// public bool AllRequiredAvailable => Dependencies?.Where(d => d.IsRequired).All(d => d.IsAvailable) ?? false; /// /// Whether any optional dependencies are missing /// public bool HasMissingOptional => Dependencies?.Where(d => !d.IsRequired).Any(d => !d.IsAvailable) ?? false; /// /// Summary message about the dependency state /// public string Summary { get; set; } /// /// Recommended next steps for the user /// public List RecommendedActions { get; set; } /// /// Timestamp when this check was performed /// public DateTime CheckedAt { get; set; } public DependencyCheckResult() { Dependencies = new List(); RecommendedActions = new List(); CheckedAt = DateTime.UtcNow; } /// /// Get dependencies by availability status /// public List GetMissingDependencies() { return Dependencies?.Where(d => !d.IsAvailable).ToList() ?? new List(); } /// /// Get missing required dependencies /// public List GetMissingRequired() { return Dependencies?.Where(d => d.IsRequired && !d.IsAvailable).ToList() ?? new List(); } /// /// Generate a user-friendly summary of the dependency state /// public void GenerateSummary() { var missing = GetMissingDependencies(); var missingRequired = GetMissingRequired(); if (missing.Count == 0) { Summary = "All dependencies are available and ready."; IsSystemReady = true; } else if (missingRequired.Count == 0) { Summary = $"System is ready. {missing.Count} optional dependencies are missing."; IsSystemReady = true; } else { Summary = $"System is not ready. {missingRequired.Count} required dependencies are missing."; IsSystemReady = false; } } } }