fix(planning): attach agent tag to chained children for queue pickup

Worker queue picker requires the 'agent' tag — without it children created
through QueueSubtasksSequentiallyAsync sat in 'Queued' forever. Attach the
tag automatically when wiring up the chain.
This commit is contained in:
Mika Kuns
2026-04-27 10:16:24 +02:00
parent 10b2ca817b
commit 721c36a66b

View File

@@ -19,6 +19,7 @@ public sealed class PlanningChainCoordinator
?? throw new InvalidOperationException($"Task {parentTaskId} not found.");
var children = await ctx.Tasks
.Include(t => t.Tags)
.Where(t => t.ParentTaskId == parentTaskId)
.OrderBy(t => t.SortOrder).ThenBy(t => t.CreatedAt)
.ToListAsync(ct);
@@ -31,8 +32,14 @@ public sealed class PlanningChainCoordinator
throw new InvalidOperationException(
$"Child {bad.Id} is in status {bad.Status}; expected Manual or Planned.");
// Worker queue picker requires the "agent" tag — attach it so children are pickable.
var agentTag = await ctx.Tags.FirstOrDefaultAsync(t => t.Name == "agent", ct);
for (int i = 0; i < children.Count; i++)
{
children[i].Status = i == 0 ? TaskStatus.Queued : TaskStatus.Waiting;
if (agentTag is not null && !children[i].Tags.Any(t => t.Id == agentTag.Id))
children[i].Tags.Add(agentTag);
}
await ctx.SaveChangesAsync(ct);
}