Files
git.stella-ops.org/src/__Libraries/StellaOps.AdvisoryAI.Attestation/AiAttestationServiceExtensions.cs

59 lines
2.2 KiB
C#

// <copyright file="AiAttestationServiceExtensions.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using StellaOps.AdvisoryAI.Attestation.Storage;
namespace StellaOps.AdvisoryAI.Attestation;
/// <summary>
/// Extension methods for registering AI attestation services.
/// Sprint: SPRINT_20260109_011_001
/// </summary>
public static class AiAttestationServiceExtensions
{
/// <summary>
/// Adds AI attestation services to the service collection.
/// </summary>
/// <param name="services">The service collection.</param>
/// <returns>The service collection for chaining.</returns>
public static IServiceCollection AddAiAttestationServices(this IServiceCollection services)
{
services.TryAddSingleton(TimeProvider.System);
services.TryAddSingleton<IPromptTemplateRegistry, PromptTemplateRegistry>();
services.TryAddSingleton<IAiAttestationService, AiAttestationService>();
return services;
}
/// <summary>
/// Adds AI attestation services with a custom time provider.
/// </summary>
/// <param name="services">The service collection.</param>
/// <param name="timeProvider">The time provider to use.</param>
/// <returns>The service collection for chaining.</returns>
public static IServiceCollection AddAiAttestationServices(
this IServiceCollection services,
TimeProvider timeProvider)
{
services.AddSingleton(timeProvider);
services.TryAddSingleton<IPromptTemplateRegistry, PromptTemplateRegistry>();
services.TryAddSingleton<IAiAttestationService, AiAttestationService>();
return services;
}
/// <summary>
/// Adds in-memory attestation storage. Useful for testing and development.
/// </summary>
/// <param name="services">The service collection.</param>
/// <returns>The service collection for chaining.</returns>
public static IServiceCollection AddInMemoryAiAttestationStore(this IServiceCollection services)
{
services.TryAddSingleton<IAiAttestationStore, InMemoryAiAttestationStore>();
return services;
}
}