diff --git a/src/ClawdDotNet.App/AppHost.cs b/src/ClawdDotNet.App/AppHost.cs index 89d03e4..9e18bd0 100644 --- a/src/ClawdDotNet.App/AppHost.cs +++ b/src/ClawdDotNet.App/AppHost.cs @@ -666,7 +666,7 @@ public sealed class AppHost : IAsyncDisposable engine.LoadPersistedChats(); - var (scanner, staging, board) = BuildTaskboard( + var (scanner, staging, board, followUp) = BuildTaskboard( instance, taskRepository, engine, tools, stateStore, audit, stagingRepository, dauerfreigaben, stagingGate, cases, storage, loggerFactory, logger); @@ -737,6 +737,7 @@ public sealed class AppHost : IAsyncDisposable loggerFactory.CreateLogger("ClawdDotNet.Core.Audit")); auditArchive.Start(); host.AuditArchive = auditArchive; + host.FollowUp = followUp; host._shutdown.Add(auditArchive.DisposeAsync); // #698: what holds in a unit, set by its lead. @@ -877,7 +878,7 @@ public sealed class AppHost : IAsyncDisposable } } - private static (TaskScanner?, StagingService?, TaskboardService?) BuildTaskboard( + private static (TaskScanner?, StagingService?, TaskboardService?, Core.Tasks.TaskFollowUp?) BuildTaskboard( InstanceConfig instance, SqliteTaskRepository taskRepository, AgentEngine engine, @@ -897,7 +898,7 @@ public sealed class AppHost : IAsyncDisposable .FirstOrDefault(p => !string.IsNullOrWhiteSpace(p)); if (string.IsNullOrWhiteSpace(sharedWorkspace)) - return (null, null, null); + return (null, null, null, null); var board = new TaskboardService(taskRepository, Path.Combine(sharedWorkspace, "tasks")); @@ -943,7 +944,6 @@ public sealed class AppHost : IAsyncDisposable // #646: the board follows up on stalled, unblocked and waiting work. var followUp = new Core.Tasks.TaskFollowUp(board, taskRepository, audit, storage, () => instance.FollowUp, () => engine.OrganisationProvider?.Invoke(), loggerFactory.CreateLogger("ClawdDotNet.Core.Tasks.FollowUp")); - host.FollowUp = followUp; var scanner = new TaskScanner(taskRepository, dispatcher, loggerFactory, maxParallelRuns: instance.MaxParallelTaskRuns, @@ -1023,7 +1023,7 @@ public sealed class AppHost : IAsyncDisposable } }); - return (scanner, staging, board); + return (scanner, staging, board, followUp); } private async Task ConnectTelegramAsync(Callbacks callbacks, ILogger logger)