using ConsoleLogStreaming.Core.DependencyInjection; using ConsoleLogStreaming.Core.Options; using CShells.Lifecycle; using Elsa.Diagnostics.ConsoleLogs.RealTime; using Elsa.Diagnostics.ConsoleLogs.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; namespace Elsa.Diagnostics.ConsoleLogs.Extensions; public static class ServiceCollectionExtensions { /// /// Registers shell-level console-log consumers and exposes the process-wide capture pipeline through DI. /// public static IServiceCollection AddConsoleLogsServices(this IServiceCollection services, Action? configureOptions = null) { services.AddConsoleLogContextServices(); services.AddConsoleLogStreaming(options => { ElsaConsoleLogOptions.ConfigureDefaults(options); configureOptions?.Invoke(options); }); services.AddSignalR(); services.DecorateConsoleLogProvider(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddScoped(); services.TryAddEnumerable(ServiceDescriptor.Scoped()); services.TryAddEnumerable(ServiceDescriptor.Scoped()); return services; } }