Refuse lead tools that would restart an interrupted or errored agent
This commit is contained in:
@@ -881,7 +881,7 @@ func (m *Manager) pump(l *live) {
|
||||
}
|
||||
}
|
||||
m.endMergeTurn(l.id, true)
|
||||
next, _, err := m.store.EndTurn(ctx, l.id, agentActor, map[string]any{"error": "agent process exited mid-turn"}, nil, false, false)
|
||||
next, _, err := m.store.EndTurn(ctx, l.id, agentActor, map[string]any{"error": "agent process exited mid-turn", "stopped": true}, nil, false, false)
|
||||
if err != nil {
|
||||
slog.Error("record session exit", "session", l.id, "err", err)
|
||||
}
|
||||
@@ -1186,8 +1186,12 @@ func (m *Manager) turnEnded(ctx context.Context, l *live, res endResult) error {
|
||||
unlock()
|
||||
|
||||
held := len(l.subagents) > 0 || interrupted
|
||||
var state map[string]any
|
||||
if interrupted || res.isError {
|
||||
state = map[string]any{"stopped": true}
|
||||
}
|
||||
turn := m.event(l, agentActor, "turn.ended", payload)
|
||||
next, finalizeBy, err := m.store.EndTurn(ctx, l.id, agentActor, nil, &turn, review && !held, finished && !handoff)
|
||||
next, finalizeBy, err := m.store.EndTurn(ctx, l.id, agentActor, state, &turn, review && !held, finished && !handoff)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user