using Microsoft.Extensions.Logging; using StellaOps.TaskRunner.Core.Execution; namespace StellaOps.TaskRunner.Infrastructure.Execution; public sealed class LoggingPackRunNotificationPublisher : IPackRunNotificationPublisher { private readonly ILogger logger; public LoggingPackRunNotificationPublisher(ILogger logger) { this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public Task PublishApprovalRequestedAsync(string runId, ApprovalNotification notification, CancellationToken cancellationToken) { logger.LogInformation( "Run {RunId}: approval {ApprovalId} requires grants {Grants}.", runId, notification.ApprovalId, string.Join(",", notification.RequiredGrants)); return Task.CompletedTask; } public Task PublishPolicyGatePendingAsync(string runId, PolicyGateNotification notification, CancellationToken cancellationToken) { logger.LogDebug( "Run {RunId}: policy gate {StepId} pending (parameters: {Parameters}).", runId, notification.StepId, string.Join(",", notification.Parameters.Select(p => p.Name))); return Task.CompletedTask; } }