@@ -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 {