on main help sign in
fix(agent): drain queued messages after manual session summarize
commit61f49b23ed3fa9bf3abc5677489068712b916b74 authorKieran Klukas <kieran@dunkirk.sh> dateTue 5 May 2026, 13:53 (5 months ago) parent0e039d0
1 file changed+18−1
internal/agent/agent.go+18−1
internal/agent/agent.go+18−1
@@ -732,7 +732,24 @@ func (a *sessionAgent) Summarize(ctx context.Context, sessionID string, opts fan
732732 currentSession.CompletionTokens = usage.OutputTokens
733733 currentSession.PromptTokens = 0
734734 _, err = a.sessions.Save(genCtx, currentSession)
735− return err
735+ if err != nil {
736+ return err
737+ }
738+
739+ // Release the active request before processing queued messages so that
740+ // Run() does not see the session as busy.
741+ a.activeRequests.Del(sessionID)
742+ cancel()
743+
744+ // Process any messages that were queued while summarizing.
745+ queuedMessages, ok := a.messageQueue.Get(sessionID)
746+ if !ok || len(queuedMessages) == 0 {
747+ return nil
748+ }
749+ firstQueuedMessage := queuedMessages[0]
750+ a.messageQueue.Set(sessionID, queuedMessages[1:])
751+ _, qErr := a.Run(ctx, firstQueuedMessage)
752+ return qErr
736753}
737754
738755func (a *sessionAgent) getCacheControlOptions() fantasy.ProviderOptions {