namespace StellaOps.AdvisoryAI.Remediation; /// /// Version resolution result. /// public sealed record VersionResolutionResult { /// /// Current version. /// public required string CurrentVersion { get; init; } /// /// Recommended upgrade version. /// public required string RecommendedVersion { get; init; } /// /// Latest available version. /// public required string LatestVersion { get; init; } /// /// Whether upgrade path is safe. /// public required bool IsSafe { get; init; } /// /// Breaking changes detected. /// public required IReadOnlyList BreakingChanges { get; init; } /// /// Vulnerabilities fixed by upgrade. /// public required IReadOnlyList VulnerabilitiesFixed { get; init; } /// /// New vulnerabilities introduced (rare but possible). /// public required IReadOnlyList NewVulnerabilities { get; init; } /// /// Upgrade type (patch, minor, major). /// public required string UpgradeType { get; init; } /// /// Confidence in the resolution (0.0-1.0). /// public required double Confidence { get; init; } } /// /// Service for resolving package versions and validating upgrade paths. /// Sprint: SPRINT_20251226_016_AI_remedy_autopilot /// Task: REMEDY-04 /// public interface IPackageVersionResolver { /// /// Resolve upgrade path for a package. /// /// Package URL. /// Vulnerability to fix. /// Cancellation token. /// Version resolution result. Task ResolveUpgradePathAsync( string purl, string targetVulnerability, CancellationToken cancellationToken = default); /// /// Check if a specific version is available. /// /// Package URL with version. /// Cancellation token. /// True if version exists. Task IsVersionAvailableAsync(string purl, CancellationToken cancellationToken = default); /// /// Get all available versions for a package. /// /// Package URL (without version). /// Cancellation token. /// List of available versions. Task> GetAvailableVersionsAsync(string purl, CancellationToken cancellationToken = default); }