on main help sign in
fix(agent): drain queued messages after manual session summarize
61f49b2Kieran Klukas
internal/agent/agent.go+18−1
@@ -732,7 +732,24 @@ func (a *sessionAgent) Summarize(ctx context.Context, sessionID string, opts fan
732 currentSession.CompletionTokens = usage.OutputTokens
732 currentSession.CompletionTokens = usage.OutputTokens
733 currentSession.PromptTokens = 0
733 currentSession.PromptTokens = 0
734 _, err = a.sessions.Save(genCtx, currentSession)
734 _, err = a.sessions.Save(genCtx, currentSession)
735+ if err != nil {
735− return err
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
736}
753}
737
754
738func (a *sessionAgent) getCacheControlOptions() fantasy.ProviderOptions {
755func (a *sessionAgent) getCacheControlOptions() fantasy.ProviderOptions {