@@ -52,7 +52,7 @@ const PlanPage: React.FC = () => {
5252 const [ wsConnected , setWsConnected ] = useState < boolean > ( false ) ;
5353 const [ streamingMessages , setStreamingMessages ] = useState < StreamingPlanUpdate [ ] > ( [ ] ) ;
5454 const [ streamingMessageBuffer , setStreamingMessageBuffer ] = useState < string > ( "" ) ;
55-
55+ const [ showBufferingText , setShowBufferingText ] = useState < boolean > ( false ) ;
5656 const [ agentMessages , setAgentMessages ] = useState < AgentMessageData [ ] > ( [ ] ) ;
5757
5858 // Plan approval state - track when plan is approved
@@ -62,10 +62,10 @@ const PlanPage: React.FC = () => {
6262
6363
6464
65- const processAgentMessage = useCallback ( ( agentMessageData : AgentMessageData , planData : ProcessedPlanData , is_final : boolean = false ) => {
65+ const processAgentMessage = useCallback ( ( agentMessageData : AgentMessageData , planData : ProcessedPlanData , is_final : boolean = false , streaming_message : string = '' ) => {
6666
6767 // Persist / forward to backend (fire-and-forget with logging)
68- const agentMessageResponse = PlanDataService . createAgentMessageResponse ( agentMessageData , planData , is_final ) ;
68+ const agentMessageResponse = PlanDataService . createAgentMessageResponse ( agentMessageData , planData , is_final , streaming_message ) ;
6969 console . log ( '📤 Persisting agent message:' , agentMessageResponse ) ;
7070 void apiService . sendAgentMessage ( agentMessageResponse )
7171 . then ( saved => {
@@ -82,9 +82,44 @@ const PlanPage: React.FC = () => {
8282 } , [ ] ) ;
8383
8484 const resetPlanVariables = useCallback ( ( ) => {
85-
86-
87- } , [ ] ) ;
85+ setInput ( "" ) ;
86+ setPlanData ( null ) ;
87+ setLoading ( true ) ;
88+ setSubmittingChatDisableInput ( true ) ;
89+ setErrorLoading ( false ) ;
90+ setClarificationMessage ( null ) ;
91+ setProcessingApproval ( false ) ;
92+ setPlanApprovalRequest ( null ) ;
93+ setReloadLeftList ( true ) ;
94+ setWaitingForPlan ( true ) ;
95+ setShowProcessingPlanSpinner ( false ) ;
96+ setShowApprovalButtons ( true ) ;
97+ setContinueWithWebsocketFlow ( false ) ;
98+ setWsConnected ( false ) ;
99+ setStreamingMessages ( [ ] ) ;
100+ setStreamingMessageBuffer ( "" ) ;
101+ setShowBufferingText ( false ) ;
102+ setAgentMessages ( [ ] ) ;
103+ } , [
104+ setInput ,
105+ setPlanData ,
106+ setLoading ,
107+ setSubmittingChatDisableInput ,
108+ setErrorLoading ,
109+ setClarificationMessage ,
110+ setProcessingApproval ,
111+ setPlanApprovalRequest ,
112+ setReloadLeftList ,
113+ setWaitingForPlan ,
114+ setShowProcessingPlanSpinner ,
115+ setShowApprovalButtons ,
116+ setContinueWithWebsocketFlow ,
117+ setWsConnected ,
118+ setStreamingMessages ,
119+ setStreamingMessageBuffer ,
120+ setShowBufferingText ,
121+ setAgentMessages
122+ ] ) ;
88123
89124 // Auto-scroll helper
90125 const scrollToBottom = useCallback ( ( ) => {
@@ -146,6 +181,7 @@ const PlanPage: React.FC = () => {
146181 //console.log('📋 Streaming Message', streamingMessage);
147182 // if is final true clear buffer and add final message to agent messages
148183 const line = PlanDataService . simplifyHumanClarification ( streamingMessage . data . content ) ;
184+ setShowBufferingText ( true ) ;
149185 setStreamingMessageBuffer ( prev => prev + line ) ;
150186 //scrollToBottom();
151187
@@ -175,7 +211,7 @@ const PlanPage: React.FC = () => {
175211 console . log ( '✅ Parsed clarification message:' , agentMessageData ) ;
176212 setClarificationMessage ( clarificationMessage . data as ParsedUserClarification | null ) ;
177213 setAgentMessages ( prev => [ ...prev , agentMessageData ] ) ;
178- setStreamingMessageBuffer ( "" ) ;
214+ setShowBufferingText ( false ) ;
179215 setShowProcessingPlanSpinner ( false ) ;
180216 setSubmittingChatDisableInput ( false ) ;
181217 scrollToBottom ( ) ;
@@ -221,7 +257,8 @@ const PlanPage: React.FC = () => {
221257 console . log ( '✅ Parsed final result message:' , agentMessageData ) ;
222258 // we ignore the terminated message
223259 if ( finalMessage ?. data ?. status === PlanStatus . COMPLETED ) {
224- setStreamingMessageBuffer ( "" ) ;
260+
261+ setShowBufferingText ( true ) ;
225262 setShowProcessingPlanSpinner ( false ) ;
226263 setAgentMessages ( prev => [ ...prev , agentMessageData ] ) ;
227264 scrollToBottom ( ) ;
@@ -232,14 +269,14 @@ const PlanPage: React.FC = () => {
232269 setPlanData ( { ...planData } ) ;
233270 }
234271
235- processAgentMessage ( agentMessageData , planData , is_final ) ;
272+ processAgentMessage ( agentMessageData , planData , is_final , streamingMessageBuffer ) ;
236273 }
237274
238275
239276 } ) ;
240277
241278 return ( ) => unsubscribe ( ) ;
242- } , [ scrollToBottom , planData , processAgentMessage ] ) ;
279+ } , [ scrollToBottom , planData , processAgentMessage , streamingMessageBuffer ] ) ;
243280
244281 //WebsocketMessageType.AGENT_MESSAGE
245282 useEffect ( ( ) => {
@@ -340,7 +377,7 @@ const PlanPage: React.FC = () => {
340377 const loadPlanData = useCallback (
341378 async ( useCache = true ) : Promise < ProcessedPlanData | null > => {
342379 if ( ! planId ) return null ;
343-
380+ resetPlanVariables ( ) ;
344381 setLoading ( true ) ;
345382 try {
346383
@@ -364,6 +401,10 @@ const PlanPage: React.FC = () => {
364401 if ( planResult ?. mplan ) {
365402 setPlanApprovalRequest ( planResult . mplan ) ;
366403 }
404+ if ( planResult ?. streaming_message && planResult . streaming_message . trim ( ) !== "" ) {
405+ setStreamingMessageBuffer ( planResult . streaming_message ) ;
406+ setShowBufferingText ( true ) ;
407+ }
367408 setPlanData ( planResult ) ;
368409 return planResult ;
369410 } catch ( err ) {
@@ -373,7 +414,7 @@ const PlanPage: React.FC = () => {
373414 setLoading ( false ) ;
374415 }
375416 } ,
376- [ planId , navigate ]
417+ [ planId , navigate , resetPlanVariables ]
377418 ) ;
378419
379420
@@ -595,6 +636,7 @@ const PlanPage: React.FC = () => {
595636 waitingForPlan = { waitingForPlan }
596637 messagesContainerRef = { messagesContainerRef }
597638 streamingMessageBuffer = { streamingMessageBuffer }
639+ showBufferingText = { showBufferingText }
598640 agentMessages = { agentMessages }
599641 showProcessingPlanSpinner = { showProcessingPlanSpinner }
600642 showApprovalButtons = { showApprovalButtons }
0 commit comments