From f3fe659942111aed2a07b49d40517f8dd2c23127 Mon Sep 17 00:00:00 2001 From: MatthewHsu1 Date: Mon, 21 Sep 2026 10:59:20 -0600 Subject: [PATCH] refactor: update ConversationSweeper constructor to use IServiceProvider --- .../Conversation/ConversationSweeper.cs | 6 +++++- src/AgentCore.AspNetCore/PublicAPI.Unshipped.txt | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/AgentCore.AspNetCore/Conversation/ConversationSweeper.cs b/src/AgentCore.AspNetCore/Conversation/ConversationSweeper.cs index f71babca..c287bcd0 100644 --- a/src/AgentCore.AspNetCore/Conversation/ConversationSweeper.cs +++ b/src/AgentCore.AspNetCore/Conversation/ConversationSweeper.cs @@ -1,4 +1,5 @@ using AgentCore.Application.Ports; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -13,7 +14,7 @@ namespace AgentCore.AspNetCore.Conversation /// calling AddConversationSweep. Without that call, conversations are kept forever. /// public sealed class ConversationSweeper( - IConversations conversations, + IServiceProvider services, IOptions options, TimeProvider timeProvider, ILogger logger) : BackgroundService @@ -23,6 +24,9 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) { ConversationSweepOptions settings = options.Value; + // Hosted service is constructed before AgentCore's own boot has not finished. + IConversations conversations = services.GetRequiredService(); + using PeriodicTimer timer = new(settings.Interval, timeProvider); while (await timer.WaitForNextTickAsync(stoppingToken).ConfigureAwait(false)) diff --git a/src/AgentCore.AspNetCore/PublicAPI.Unshipped.txt b/src/AgentCore.AspNetCore/PublicAPI.Unshipped.txt index 7b434542..9464409f 100644 --- a/src/AgentCore.AspNetCore/PublicAPI.Unshipped.txt +++ b/src/AgentCore.AspNetCore/PublicAPI.Unshipped.txt @@ -96,5 +96,5 @@ AgentCore.AspNetCore.Conversation.ConversationSweepOptions.Interval.set -> void AgentCore.AspNetCore.Conversation.ConversationSweepOptions.BatchSize.get -> int AgentCore.AspNetCore.Conversation.ConversationSweepOptions.BatchSize.set -> void AgentCore.AspNetCore.Conversation.ConversationSweeper -AgentCore.AspNetCore.Conversation.ConversationSweeper.ConversationSweeper(AgentCore.Application.Ports.IConversations! conversations, Microsoft.Extensions.Options.IOptions! options, System.TimeProvider! timeProvider, Microsoft.Extensions.Logging.ILogger! logger) -> void +AgentCore.AspNetCore.Conversation.ConversationSweeper.ConversationSweeper(System.IServiceProvider! services, Microsoft.Extensions.Options.IOptions! options, System.TimeProvider! timeProvider, Microsoft.Extensions.Logging.ILogger! logger) -> void static AgentCore.AspNetCore.DependencyInjection.AgentCoreServiceCollectionExtensions.AddConversationSweep(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action? configure = null) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!