Move lead delivery and the Merge & continue hold onto the coordinator

This commit is contained in:
Ian Gulliver
2026-10-21 13:59:37 -07:00
parent 1734057293
commit 5c50fa857f
16 changed files with 270 additions and 190 deletions
+5 -20
View File
@@ -58,7 +58,11 @@ func (m *Manager) Message(ctx context.Context, sessionID, actor, text, model, se
return api.AgentSession{}, false, err
}
}
held := sess.State == api.AgentSessionStateIdle && sess.Role == api.Implementer && (automatedActor(actor) && m.interrupted(sess.Id) || m.heldForLanding(sess.TaskId, sess.Id))
landing, err := m.store.HeldForLanding(ctx, sess.TaskId, sess.Id)
if err != nil {
return api.AgentSession{}, false, err
}
held := sess.State == api.AgentSessionStateIdle && sess.Role == api.Implementer && (automatedActor(actor) && m.interrupted(sess.Id) || landing)
if !held && (sess.State != api.AgentSessionStateRunning || sess.Role != api.Implementer) {
sess, err = m.Send(ctx, sessionID, actor, text, model, sendID, client, images...)
return sess, false, err
@@ -165,25 +169,6 @@ func (m *Manager) deliverQueued(ctx context.Context, sess api.AgentSession) (boo
return true, m.store.DeleteTaskInputs(ctx, []int64{in.ID})
}
func (m *Manager) deliverAllQueued(ctx context.Context) {
idle, err := m.store.SessionsInState(ctx, api.AgentSessionStateIdle)
if err != nil {
slog.Error("list idle sessions", "err", err)
return
}
for _, sess := range idle {
if sess.Role != api.Implementer {
continue
}
unlock := m.lockDelivery(sess.Id)
_, err = m.deliverQueued(ctx, sess)
unlock()
if err != nil {
slog.Error("deliver queued message", "session", sess.Id, "err", err)
}
}
}
type queued struct {
actor string
text string