using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.AI; using PiiRedaction.Core.Abstractions; using PiiRedaction.Core.Configuration; using PiiRedaction.Core.Detection; using PiiRedaction.Core.Redaction; using PiiRedaction.Core.Sanitization; using PiiRedaction.Infrastructure.Llm; using PiiRedaction.Infrastructure.Onnx; namespace PiiRedaction.TestHarness.Wpf.DependencyInjection; public static class ServiceCollectionExtensions { public static IServiceCollection AddPiiRedactionServices(this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration.GetSection(PiiRedactionOptions.SectionName)); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(provider => new CompositePiiDetector( [ provider.GetRequiredService(), provider.GetRequiredService(), provider.GetRequiredService() ])); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); return services; } }