@@ -132,19 +132,38 @@ const PlanPage: React.FC = () => {
132132 // Persist / forward to backend (fire-and-forget with logging)
133133 const agentMessageResponse = PlanDataService . createAgentMessageResponse ( agentMessageData , planData , is_final , streaming_message ) ;
134134 console . log ( '📤 Persisting agent message:' , agentMessageResponse ) ;
135- void apiService . sendAgentMessage ( agentMessageResponse )
135+ const sendPromise = apiService . sendAgentMessage ( agentMessageResponse )
136136 . then ( saved => {
137137 console . log ( '[agent_message][persisted]' , {
138138 agent : agentMessageData . agent ,
139139 type : agentMessageData . agent_type ,
140140 ts : agentMessageData . timestamp
141141 } ) ;
142+
143+ // If this is a final message, refresh the task list after successful persistence
144+ if ( is_final ) {
145+ // Single refresh with a delay to ensure backend processing is complete
146+ setTimeout ( ( ) => {
147+ console . log ( '✅ Final message persisted, forcing task list refresh' ) ;
148+ setReloadLeftList ( true ) ;
149+ } , 1000 ) ;
150+ }
142151 } )
143152 . catch ( err => {
144153 console . warn ( '[agent_message][persist-failed]' , err ) ;
154+ // Even if persistence fails, still refresh the task list for final messages
155+ // The local plan data has been updated, so the UI should reflect that
156+ if ( is_final ) {
157+ setTimeout ( ( ) => {
158+ console . log ( '⚠️ Final message persistence failed, but still forcing task list refresh' ) ;
159+ setReloadLeftList ( true ) ;
160+ } , 1000 ) ;
161+ }
145162 } ) ;
146163
147- } , [ ] ) ;
164+ return sendPromise ;
165+
166+ } , [ setReloadLeftList ] ) ;
148167
149168 const resetPlanVariables = useCallback ( ( ) => {
150169 setInput ( "" ) ;
@@ -335,20 +354,17 @@ const PlanPage: React.FC = () => {
335354 setPlanData ( { ...planData } ) ;
336355 }
337356
357+ // Wait for the agent message to be processed and persisted
358+ // The processAgentMessage function will handle refreshing the task list
338359 processAgentMessage ( agentMessageData , planData , is_final , streamingMessageBuffer ) ;
339360
340- setTimeout ( ( ) => {
341- console . log ( '✅ Plan completed, refreshing left list' ) ;
342- setReloadLeftList ( true ) ;
343- } , 1000 ) ;
344-
345361 }
346362
347363
348364 } ) ;
349365
350366 return ( ) => unsubscribe ( ) ;
351- } , [ scrollToBottom , planData , processAgentMessage , streamingMessageBuffer , setSelectedTeam , setReloadLeftList ] ) ;
367+ } , [ scrollToBottom , planData , processAgentMessage , streamingMessageBuffer , setSelectedTeam ] ) ;
352368
353369 //WebsocketMessageType.AGENT_MESSAGE
354370 useEffect ( ( ) => {
0 commit comments