59 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|