using Microsoft.Extensions.Logging; using StellaOps.TaskRunner.Core.Execution; using StellaOps.TaskRunner.Core.Planning; namespace StellaOps.TaskRunner.Infrastructure.Execution; public sealed class LoggingPackRunArtifactUploader : IPackRunArtifactUploader { private readonly ILogger _logger; public LoggingPackRunArtifactUploader(ILogger logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public Task UploadAsync( PackRunExecutionContext context, PackRunState state, IReadOnlyList outputs, CancellationToken cancellationToken) { if (outputs.Count == 0) { return Task.CompletedTask; } foreach (var output in outputs) { var path = output.Path?.Value?.ToString() ?? "(dynamic)"; _logger.LogInformation( "Pack run {RunId} scheduled artifact upload for output {Output} (type={Type}, path={Path}).", context.RunId, output.Name, output.Type, path); } return Task.CompletedTask; } }