Move lead delivery and the Merge & continue hold onto the coordinator
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user