using ConsoleLogStreaming.Contracts; using ConsoleLogStreaming.Core; using ConsoleLogStreaming.Core.DependencyInjection; using ConsoleLogStreaming.Core.Options; using ConsoleLogStreaming.SignalR; using ConsoleLogStreaming.SignalR.DependencyInjection; 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.AddConsoleLogStreamingHost(options => { ElsaConsoleLogOptions.ConfigureDefaults(options); configureOptions?.Invoke(options); }); services.AddConsoleLogStreamingSignalR(options => options.HubPath = EndpointRouteBuilderExtensions.HubRoute); services.TryAddSingleton(); services.TryAddSingleton(); return services; } }