11import { useCallback , useEffect , useRef , useState } from 'react'
22
3+ import { logger } from '../utils/logger'
4+
35import type { PendingImage } from '../state/chat-store'
46
57export type StreamStatus = 'idle' | 'waiting' | 'streaming'
@@ -54,14 +56,52 @@ export const useMessageQueue = (
5456 } , [ clearStreaming ] )
5557
5658 useEffect ( ( ) => {
57- if ( ! canProcessQueue || queuePaused ) return
58- if ( streamStatus !== 'idle' ) return
59- if ( streamMessageIdRef . current ) return
60- if ( isChainInProgressRef . current ) return
61- if ( activeAgentStreamsRef . current > 0 ) return
62-
6359 const queuedList = queuedMessagesRef . current
64- if ( queuedList . length === 0 ) return
60+ const queueLength = queuedList . length
61+
62+ if ( queueLength === 0 ) return
63+
64+ // Log why queue is blocked (only when there are messages waiting)
65+ if ( ! canProcessQueue || queuePaused ) {
66+ logger . debug (
67+ { queueLength, canProcessQueue, queuePaused } ,
68+ '[message-queue] Queue blocked: canProcessQueue or paused' ,
69+ )
70+ return
71+ }
72+ if ( streamStatus !== 'idle' ) {
73+ logger . debug (
74+ { queueLength, streamStatus } ,
75+ '[message-queue] Queue blocked: stream not idle' ,
76+ )
77+ return
78+ }
79+ if ( streamMessageIdRef . current ) {
80+ logger . debug (
81+ { queueLength, streamMessageId : streamMessageIdRef . current } ,
82+ '[message-queue] Queue blocked: streamMessageId set' ,
83+ )
84+ return
85+ }
86+ if ( isChainInProgressRef . current ) {
87+ logger . debug (
88+ { queueLength, isChainInProgress : isChainInProgressRef . current } ,
89+ '[message-queue] Queue blocked: chain in progress' ,
90+ )
91+ return
92+ }
93+ if ( activeAgentStreamsRef . current > 0 ) {
94+ logger . debug (
95+ { queueLength, activeAgentStreams : activeAgentStreamsRef . current } ,
96+ '[message-queue] Queue blocked: active agent streams' ,
97+ )
98+ return
99+ }
100+
101+ logger . info (
102+ { queueLength } ,
103+ '[message-queue] Processing next message from queue' ,
104+ )
65105
66106 const timeoutId = setTimeout ( ( ) => {
67107 const nextMessage = queuedList [ 0 ]
@@ -86,6 +126,10 @@ export const useMessageQueue = (
86126 const newQueue = [ ...queuedMessagesRef . current , queuedMessage ]
87127 queuedMessagesRef . current = newQueue
88128 setQueuedMessages ( newQueue )
129+ logger . info (
130+ { newQueueLength : newQueue . length , messageLength : message . length } ,
131+ '[message-queue] Message added to queue' ,
132+ )
89133 } , [ ] )
90134
91135 const pauseQueue = useCallback ( ( ) => {
0 commit comments