feat(runner): route standalone success with children to WaitingForChildren + enqueue them
This commit is contained in:
@@ -340,7 +340,29 @@ public sealed class TaskRunner
|
||||
await new TaskRepository(ctx).SetRoadblockCountAsync(task.Id, result.Blocks.Count, CancellationToken.None);
|
||||
}
|
||||
var reviewResult = ComposeReviewResult(result.ResultMarkdown, result.Blocks);
|
||||
if (task.ParentTaskId is null && task.PlanningPhase == PlanningPhase.None)
|
||||
bool isStandalone = task.ParentTaskId is null && task.PlanningPhase == PlanningPhase.None;
|
||||
|
||||
List<TaskEntity> pendingChildren = new();
|
||||
if (isStandalone)
|
||||
{
|
||||
using var ctx = _dbFactory.CreateDbContext();
|
||||
var children = await new TaskRepository(ctx).GetChildrenAsync(task.Id, CancellationToken.None);
|
||||
pendingChildren = children
|
||||
.Where(c => c.Status is TaskStatus.Idle or TaskStatus.Queued)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
if (isStandalone && pendingChildren.Count > 0)
|
||||
{
|
||||
await _state.SubmitForChildrenAsync(task.Id, finishedAt, reviewResult, CancellationToken.None);
|
||||
foreach (var child in pendingChildren)
|
||||
await _state.EnqueueAsync(child.Id, CancellationToken.None);
|
||||
await _broadcaster.WorkerLog(
|
||||
$"Finished \"{task.Title}\" (waiting on {pendingChildren.Count} improvement(s))",
|
||||
WorkerLogLevel.Success, DateTime.UtcNow);
|
||||
await _broadcaster.TaskFinished(slot, task.Id, "waiting_for_children", finishedAt);
|
||||
}
|
||||
else if (isStandalone)
|
||||
{
|
||||
await _state.SubmitForReviewAsync(task.Id, finishedAt, reviewResult, CancellationToken.None);
|
||||
await _broadcaster.WorkerLog($"Finished \"{task.Title}\" (waiting for review)", WorkerLogLevel.Success, DateTime.UtcNow);
|
||||
|
||||
Reference in New Issue
Block a user