using Agent.Core.Tasks; using Microsoft.Extensions.Hosting; using Agent.Core.Runtime; namespace Agent.Mcp; public sealed class QueuedTaskWorker(TaskRegistry registry, AgentRuntime runtime) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await foreach (Guid taskId in registry.ReadQueuedAsync(stoppingToken).ConfigureAwait(false)) { if (!registry.Transition(taskId, AgentTaskState.Planning, "planning")) continue; registry.Transition(taskId, AgentTaskState.Running, "ollama chat"); await runtime.ExecuteAsync(taskId, stoppingToken).ConfigureAwait(false); } } }