@@ -543,6 +543,9 @@ impl ChatContext {
543543 {
544544 Some ( mut prior) => {
545545 existing_conversation = true ;
546+ prior
547+ . reload_serialized_state ( Arc :: clone ( & ctx) , Some ( output. clone ( ) ) )
548+ . await ;
546549 input = Some ( input. unwrap_or ( "In a few words, summarize our conversation so far." . to_owned ( ) ) ) ;
547550 prior. tool_manager = tool_manager;
548551 prior
@@ -1315,14 +1318,6 @@ impl ChatContext {
13151318 // Otherwise continue with normal chat on 'n' or other responses
13161319 self . tool_use_status = ToolUseStatus :: Idle ;
13171320
1318- if self . interactive {
1319- queue ! ( self . output, style:: SetForegroundColor ( Color :: Magenta ) ) ?;
1320- queue ! ( self . output, style:: SetForegroundColor ( Color :: Reset ) ) ?;
1321- queue ! ( self . output, cursor:: Hide ) ?;
1322- execute ! ( self . output, style:: Print ( "\n " ) ) ?;
1323- self . spinner = Some ( Spinner :: new ( Spinners :: Dots , "Thinking..." . to_owned ( ) ) ) ;
1324- }
1325-
13261321 if pending_tool_index. is_some ( ) {
13271322 self . conversation_state . abandon_tool_use ( tool_uses, user_input) ;
13281323 } else {
@@ -1332,6 +1327,14 @@ impl ChatContext {
13321327 let conv_state = self . conversation_state . as_sendable_conversation_state ( true ) . await ;
13331328 self . send_tool_use_telemetry ( telemetry) . await ;
13341329
1330+ if self . interactive {
1331+ queue ! ( self . output, style:: SetForegroundColor ( Color :: Magenta ) ) ?;
1332+ queue ! ( self . output, style:: SetForegroundColor ( Color :: Reset ) ) ?;
1333+ queue ! ( self . output, cursor:: Hide ) ?;
1334+ execute ! ( self . output, style:: Print ( "\n " ) ) ?;
1335+ self . spinner = Some ( Spinner :: new ( Spinners :: Dots , "Thinking..." . to_owned ( ) ) ) ;
1336+ }
1337+
13351338 ChatState :: HandleResponseStream ( self . client . send_message ( conv_state) . await ?)
13361339 } ,
13371340 Command :: Execute { command } => {
@@ -2808,9 +2811,11 @@ impl ChatContext {
28082811 }
28092812
28102813 let contents = tri ! ( self . ctx. fs( ) . read_to_string( & path) . await ) ;
2811- let new_state: ConversationState = tri ! ( serde_json:: from_str( & contents) ) ;
2814+ let mut new_state: ConversationState = tri ! ( serde_json:: from_str( & contents) ) ;
2815+ new_state
2816+ . reload_serialized_state ( Arc :: clone ( & self . ctx ) , Some ( self . output . clone ( ) ) )
2817+ . await ;
28122818 self . conversation_state = new_state;
2813- self . conversation_state . updates = Some ( self . output . clone ( ) ) ;
28142819
28152820 execute ! (
28162821 self . output,
0 commit comments