| | | 1 | | using Elsa.AI.Abstractions.Contracts; |
| | | 2 | | using Microsoft.Extensions.DependencyInjection; |
| | | 3 | | using Microsoft.Extensions.Hosting; |
| | | 4 | | using Microsoft.Extensions.Logging; |
| | | 5 | | |
| | | 6 | | namespace Elsa.AI.Host.Services; |
| | | 7 | | |
| | 2 | 8 | | public class AIContextProviderValidationHostedService( |
| | 2 | 9 | | IServiceScopeFactory scopeFactory, |
| | 2 | 10 | | ILogger<AIContextProviderValidationHostedService> logger) : IHostedService |
| | | 11 | | { |
| | | 12 | | public Task StartAsync(CancellationToken cancellationToken) |
| | | 13 | | { |
| | 2 | 14 | | using var scope = scopeFactory.CreateScope(); |
| | 2 | 15 | | var providers = scope.ServiceProvider.GetServices<IAIContextProvider>(); |
| | | 16 | | |
| | 18 | 17 | | foreach (var group in providers.GroupBy(x => x.Kind, StringComparer.OrdinalIgnoreCase).Where(x => x.Count() > 1) |
| | 2 | 18 | | logger.LogWarning( |
| | 2 | 19 | | "Multiple AI context providers are registered for kind {ContextKind}. The last non-placeholder provider |
| | 2 | 20 | | group.Key); |
| | | 21 | | |
| | 2 | 22 | | return Task.CompletedTask; |
| | 2 | 23 | | } |
| | | 24 | | |
| | 0 | 25 | | public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; |
| | | 26 | | } |