< Summary

Information
Class: Elsa.Extensions.ServiceCollectionExtensions
Assembly: Elsa.AI.Host
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Extensions/ServiceCollectionExtensions.cs
Line coverage
100%
Covered lines: 41
Uncovered lines: 0
Coverable lines: 41
Total lines: 64
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddAIHostServices(...)100%22100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Extensions/ServiceCollectionExtensions.cs

#LineLine coverage
 1using Elsa.AI.Abstractions.Contracts;
 2using Elsa.AI.Host.Context;
 3using Elsa.AI.Host.Options;
 4using Elsa.AI.Host.Services;
 5using Elsa.AI.Host.Streaming;
 6using Elsa.AI.Host.Tools.Activities;
 7using Elsa.AI.Host.Tools.Runtime;
 8using Elsa.AI.Host.Tools.Workflows;
 9using Microsoft.Extensions.DependencyInjection;
 10using Microsoft.Extensions.DependencyInjection.Extensions;
 11using Microsoft.Extensions.Hosting;
 12
 13// ReSharper disable once CheckNamespace
 14namespace Elsa.Extensions;
 15
 16public static class ServiceCollectionExtensions
 17{
 18    public static IServiceCollection AddAIHostServices(this IServiceCollection services, Action<AIHostOptions>? configur
 19    {
 5620        if (configureOptions != null)
 1221            services.Configure(configureOptions);
 22
 5623        services.AddLogging();
 5624        services.AddOptions<AIHostOptions>();
 5625        services.TryAddSingleton<InMemoryAIConversationStore>();
 9526        services.TryAddSingleton<IAIConversationStore>(sp => sp.GetRequiredService<InMemoryAIConversationStore>());
 5627        services.TryAddEnumerable(ServiceDescriptor.Singleton<IAIContextProvider, WorkflowDefinitionContextProvider>());
 5628        services.TryAddEnumerable(ServiceDescriptor.Singleton<IAIContextProvider, WorkflowInstanceContextProvider>());
 5629        services.TryAddSingleton<AIContextResolver>();
 5630        services.TryAddEnumerable(ServiceDescriptor.Singleton<IHostedService, AIContextProviderValidationHostedService>(
 5631        services.TryAddSingleton<AIToolEnablementService>();
 5632        services.TryAddEnumerable(ServiceDescriptor.Singleton<IHostedService, AIToolEnablementConfigurationHostedService
 5633        services.TryAddSingleton<IAIToolRegistry, AIToolRegistry>();
 5634        services.TryAddSingleton<AIGroundingResultFormatter>();
 5635        services.TryAddSingleton<ActivityGroundingMapper>();
 5636        services.TryAddSingleton<ActivityGroundingSearchService>();
 5637        services.TryAddSingleton<WorkflowGroundingMapper>();
 5638        services.TryAddSingleton<RuntimeGroundingMapper>();
 5639        services.TryAddSingleton<WorkflowDraftValidationService>();
 5640        services.TryAddSingleton<WorkflowProposalDiffService>();
 5641        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, ActivitiesSearchTool>());
 5642        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, ActivityDescriptorTool>());
 5643        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowsSearchTool>());
 5644        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowDefinitionTool>());
 5645        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowDefinitionGraphTool>());
 5646        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowUsageSearchTool>());
 5647        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowValidateDraftTool>());
 5648        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowProposeCreateTool>());
 5649        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowProposeUpdateTool>());
 5650        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, InstancesSearchTool>());
 5651        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowInstanceTool>());
 5652        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowInstanceExecutionHistoryTool>());
 5653        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, WorkflowInstanceActivityStateTool>());
 5654        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, IncidentsSearchTool>());
 5655        services.TryAddEnumerable(ServiceDescriptor.Transient<IAITool, IncidentTool>());
 5656        services.TryAddScoped<IAIOrchestrator, AIOrchestrator>();
 5657        services.TryAddSingleton<AIStreamSessionManager>();
 5658        services.TryAddSingleton<AIStreamEventMapper>();
 5659        services.TryAddSingleton<AIAuditSink>();
 9660        services.TryAddSingleton<IAIAuditSink>(sp => sp.GetRequiredService<AIAuditSink>());
 61
 5662        return services;
 63    }
 64}