Run reviews and nudges on the state-driven coordinator
This commit is contained in:
@@ -461,7 +461,7 @@ func (m *Manager) Recover(ctx context.Context) error {
|
||||
m.logUndelivered(ctx, sess.Id, "idle at startup")
|
||||
}
|
||||
|
||||
err = m.recoverReviews(ctx)
|
||||
err = m.store.ClearReviewRequests(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -471,13 +471,18 @@ func (m *Manager) Recover(ctx context.Context) error {
|
||||
go m.coordinate()
|
||||
m.poke()
|
||||
m.MarkFacts(allTasks)
|
||||
go m.recoverMergeAfterReviews(context.Background())
|
||||
go m.auditAll(context.Background())
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Manager) failResume(ctx context.Context, sess api.AgentSession, task api.Task, err error) error {
|
||||
slog.Error("resume session", "session", sess.Id, "err", err)
|
||||
if sess.Role == api.Reviewer {
|
||||
r, rerr := m.store.ReviewBySession(ctx, sess.Id)
|
||||
if rerr == nil {
|
||||
m.failReview(ctx, r.Id, "byre restarted and couldn't resume the reviewer: "+err.Error())
|
||||
}
|
||||
}
|
||||
m.endMergeTurn(sess.Id, true)
|
||||
m.logUndelivered(ctx, sess.Id, "resume failed")
|
||||
derr := m.store.DropStageOutput(ctx, sess.Id)
|
||||
@@ -664,6 +669,10 @@ func (m *Manager) failStart(ctx context.Context, sessionID, actor string, err er
|
||||
cctx, cancel := context.WithTimeout(context.WithoutCancel(ctx), 10*time.Second)
|
||||
defer cancel()
|
||||
|
||||
r, rerr := m.store.ReviewBySession(cctx, sessionID)
|
||||
if rerr == nil {
|
||||
m.failReview(cctx, r.Id, "the reviewer didn't start: "+err.Error())
|
||||
}
|
||||
serr := m.store.SetSessionState(cctx, sessionID, api.AgentSessionStateIdle, actor, map[string]any{"error": err.Error()})
|
||||
if serr != nil {
|
||||
slog.Error("record failed start", "session", sessionID, "err", serr)
|
||||
@@ -981,6 +990,10 @@ func (m *Manager) pump(l *live) {
|
||||
}
|
||||
|
||||
m.logUndelivered(ctx, l.id, "agent process exited mid-turn")
|
||||
if l.reviewID != "" {
|
||||
m.finishReviewer(l, "the reviewer's process exited mid-turn")
|
||||
return
|
||||
}
|
||||
if l.stage != "" {
|
||||
err = m.store.DropStageOutput(ctx, l.id)
|
||||
if err != nil {
|
||||
@@ -992,10 +1005,6 @@ func (m *Manager) pump(l *live) {
|
||||
if err != nil {
|
||||
slog.Error("record session exit", "session", l.id, "err", err)
|
||||
}
|
||||
if l.reviewID != "" {
|
||||
m.finishReviewer(l, "the reviewer's process exited mid-turn")
|
||||
return
|
||||
}
|
||||
if end.Discard != store.DiscardNone {
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user