Retry failed sends with their send_id until the server confirms them

This commit is contained in:
Ian Gulliver
2026-10-20 15:47:29 -07:00
parent 8fec4b9040
commit d096d604c9
9 changed files with 111 additions and 14 deletions
+21
View File
@@ -43,6 +43,11 @@ func (m *Manager) Message(ctx context.Context, sessionID, actor, text, model, se
unlock := m.lockDelivery(sessionID)
defer unlock()
prior, sent, err := m.priorSend(ctx, sendID)
if err != nil || sent {
return prior, false, err
}
sess, err := m.store.GetSession(ctx, sessionID)
if err != nil {
return api.AgentSession{}, false, err
@@ -83,6 +88,22 @@ func (m *Manager) Message(ctx context.Context, sessionID, actor, text, model, se
return sess, true, nil
}
func (m *Manager) priorSend(ctx context.Context, sendID string) (api.AgentSession, bool, error) {
if sendID == "" {
return api.AgentSession{}, false, nil
}
sessionID, found, err := m.store.SendSession(ctx, sendID)
if err != nil || !found || sessionID == "" {
return api.AgentSession{}, found, err
}
sess, err := m.store.GetSession(ctx, sessionID)
if err != nil {
return api.AgentSession{}, false, err
}
slog.Info("send already accepted", "session", sess.Id, "send", sendID)
return sess, true, nil
}
func automatedActor(actor string) bool {
return actor == "byre" || actor == agentActor || actor == boardActor
}