Run discards on the state-driven coordinator
This commit is contained in:
@@ -61,7 +61,6 @@ type Manager struct {
|
||||
moveRefused map[string]bool
|
||||
startedTodo map[string]time.Time
|
||||
startRefused map[string]bool
|
||||
finishing map[string]bool
|
||||
handoffModel map[string]string
|
||||
mergeTurns map[string]mergeTurn
|
||||
landing map[string]landing
|
||||
@@ -167,7 +166,6 @@ func New(st *store.Store, worktreeRoot, leadRoot, handsRoot, codexHome, antigrav
|
||||
moveRefused: map[string]bool{},
|
||||
startedTodo: map[string]time.Time{},
|
||||
startRefused: map[string]bool{},
|
||||
finishing: map[string]bool{},
|
||||
handoffModel: map[string]string{},
|
||||
mergeTurns: map[string]mergeTurn{},
|
||||
landing: map[string]landing{},
|
||||
@@ -468,11 +466,6 @@ func (m *Manager) Recover(ctx context.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
err = m.recoverDiscards(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
go m.deliverAllLeads()
|
||||
go m.deliverAllQueued(context.Background())
|
||||
go m.coordinate()
|
||||
@@ -491,17 +484,8 @@ func (m *Manager) failResume(ctx context.Context, sess api.AgentSession, task ap
|
||||
if derr != nil {
|
||||
return derr
|
||||
}
|
||||
end, serr := m.store.EndTurn(ctx, sess.Id, "byre", map[string]any{"error": err.Error()}, nil, false, false, false)
|
||||
if serr != nil {
|
||||
return serr
|
||||
}
|
||||
switch end.Discard {
|
||||
case store.DiscardClosing:
|
||||
go m.finishDiscard(task.Id)
|
||||
case store.DiscardHeld:
|
||||
go m.startDiscard(task.Id)
|
||||
}
|
||||
return nil
|
||||
_, err = m.store.EndTurn(ctx, sess.Id, "byre", map[string]any{"error": err.Error()}, nil, false, false, false)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *Manager) logUndelivered(ctx context.Context, sessionID, reason string) {
|
||||
@@ -1012,12 +996,7 @@ func (m *Manager) pump(l *live) {
|
||||
m.finishReviewer(l, "the reviewer's process exited mid-turn")
|
||||
return
|
||||
}
|
||||
switch end.Discard {
|
||||
case store.DiscardClosing:
|
||||
m.finishDiscard(l.taskID)
|
||||
return
|
||||
case store.DiscardHeld:
|
||||
m.startDiscard(l.taskID)
|
||||
if end.Discard != store.DiscardNone {
|
||||
return
|
||||
}
|
||||
if l.owner == "" {
|
||||
@@ -1317,17 +1296,11 @@ func (m *Manager) turnEnded(ctx context.Context, l *live, res endResult) error {
|
||||
m.snapshotSoon(liveTarget(l), api.SnapshotTriggerTurnEnd, 0, review, false)
|
||||
}
|
||||
|
||||
switch end.Discard {
|
||||
case store.DiscardClosing:
|
||||
if end.Discard != store.DiscardNone {
|
||||
m.logUndelivered(ctx, l.id, "turn ended in discard")
|
||||
go m.finishDiscard(l.taskID)
|
||||
return nil
|
||||
case store.DiscardHeld:
|
||||
if stageFinished {
|
||||
if end.Discard == store.DiscardHeld && stageFinished {
|
||||
go m.advanceStage(l)
|
||||
return nil
|
||||
}
|
||||
go m.startDiscard(l.taskID)
|
||||
return nil
|
||||
}
|
||||
if handoff {
|
||||
@@ -1348,22 +1321,13 @@ func (m *Manager) turnEnded(ctx context.Context, l *live, res endResult) error {
|
||||
}
|
||||
|
||||
func (m *Manager) afterTurn(ctx context.Context, l *live) {
|
||||
discard, err := m.store.GetDiscard(ctx, l.taskID)
|
||||
if err != nil {
|
||||
slog.Error("read discard state", "task", l.taskID, "err", err)
|
||||
return
|
||||
}
|
||||
if discard.State == store.DiscardHeld {
|
||||
m.startDiscard(l.taskID)
|
||||
return
|
||||
}
|
||||
task, err := m.store.GetTask(ctx, l.taskID)
|
||||
if err != nil {
|
||||
slog.Error("read task after turn", "task", l.taskID, "err", err)
|
||||
return
|
||||
}
|
||||
if task.Merging {
|
||||
m.logUndelivered(ctx, l.id, "task is merging")
|
||||
if task.Merging || task.Discarding {
|
||||
m.logUndelivered(ctx, l.id, "task is merging or being discarded")
|
||||
return
|
||||
}
|
||||
m.deliverTeam(ctx, l)
|
||||
|
||||
Reference in New Issue
Block a user