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);
}