don't restart after interrupt

This commit is contained in:
Ian Gulliver
2026-10-19 14:08:56 -07:00
parent 598ee788f8
commit b634d42dcf
6 changed files with 25 additions and 6 deletions
+14 -2
View File
@@ -47,7 +47,8 @@ func (m *Manager) Message(ctx context.Context, sessionID, actor, text, model str
if err != nil {
return api.AgentSession{}, false, err
}
if sess.State != api.AgentSessionStateRunning || sess.Role != api.Implementer {
held := sess.State == api.AgentSessionStateIdle && sess.Role == api.Implementer && automatedActor(actor) && m.interrupted(sess.Id)
if !held && (sess.State != api.AgentSessionStateRunning || sess.Role != api.Implementer) {
sess, err = m.Send(ctx, sessionID, actor, text, model, images...)
return sess, false, err
}
@@ -72,10 +73,21 @@ func (m *Manager) Message(ctx context.Context, sessionID, actor, text, model str
if err != nil {
return api.AgentSession{}, false, err
}
slog.Info("message queued", "session", sess.Id, "task", sess.TaskId, "actor", actor)
slog.Info("message queued", "session", sess.Id, "task", sess.TaskId, "actor", actor, "interrupted", held)
return sess, true, nil
}
func automatedActor(actor string) bool {
return actor == "byre" || actor == agentActor || actor == boardActor
}
func (m *Manager) interrupted(sessionID string) bool {
m.mu.Lock()
defer m.mu.Unlock()
l := m.live[sessionID]
return l != nil && l.interrupted
}
func (m *Manager) Withdraw(ctx context.Context, taskID string, inputID int64, actor string) error {
task, err := m.store.GetTask(ctx, taskID)
if err != nil {