namespace Launcher.Next.Core; public sealed record PilotPreparationRequest(PilotLocalConfiguration Configuration, ProductInstallation Product, PackageManifest Manifest, string ManifestHash, string PackageSourceRoot, string PilotRoot, string StartupScriptPath); public sealed record PilotPreparationResult(PilotLaunchPlan? Plan, PilotSafetyDecision SafetyDecision); public sealed record PilotExecutionRequest(PilotPreparationRequest Preparation, PilotLaunchPlan Plan, ExecutionPermit Permit); public sealed record PilotExecutionResult(bool Started, int? ProcessId, string? BlockCode, string? VersionDirectory, string? StartupScriptPath); public sealed record PilotRollbackRequest(string PilotRoot, string PackageId, string? ActivatedVersion, string StartupScriptPath, string? PreviousCurrentContent); public sealed record PilotRollbackResult(bool Completed, string? ErrorCode); public interface IPilotExecutionService { Task PrepareAsync(PilotPreparationRequest request, CancellationToken cancellationToken); Task ExecuteAsync(PilotExecutionRequest request, CancellationToken cancellationToken); Task RollbackAsync(PilotRollbackRequest request, CancellationToken cancellationToken); }