@@ -375,6 +375,7 @@ class LocalSession extends Disposable {
375375
376376 setModeSnapshot ( mode : { readonly id : string ; readonly kind : ChatModeKind | undefined } | undefined ) : void {
377377 this . _mode = undefined ;
378+ // The sessions surface stores a concrete mode kind; local chats default to agent mode when input state has no kind.
378379 this . _modeObservable . set ( mode ? { id : mode . id , kind : mode . kind ?? ChatModeKind . Agent } : undefined , undefined ) ;
379380 }
380381
@@ -574,7 +575,7 @@ export class LocalChatSessionsProvider extends Disposable implements ISessionsPr
574575 lastMessageDate : stored . lastMessageDate ,
575576 timing : { created : stored . createdAt , lastRequestStarted : undefined , lastRequestEnded : stored . lastMessageDate } ,
576577 isActive : false ,
577- lastResponseState : 0 /* ResponseModelState.Complete */ ,
578+ lastResponseState : ResponseModelState . Complete ,
578579 workingDirectory,
579580 } ;
580581
@@ -902,29 +903,34 @@ export class LocalChatSessionsProvider extends Disposable implements ISessionsPr
902903 try {
903904 const model = modelRef . object ;
904905 const sourceWorkspace = primary . workspace . get ( ) ;
905- const workspace = sourceWorkspace ?? ( model . workingDirectory ? this . resolveWorkspace ( model . workingDirectory ) : undefined ) ;
906+ const modelWorkingDirectory = model . workingDirectory ;
907+ const workingDirectory = modelWorkingDirectory ?? sourceWorkspace ?. folders [ 0 ] ?. root ;
908+ const workspace = ( modelWorkingDirectory ? this . resolveWorkspace ( modelWorkingDirectory ) : undefined )
909+ ?? sourceWorkspace
910+ ?? ( workingDirectory ? this . resolveWorkspace ( workingDirectory ) : undefined ) ;
906911 if ( ! workspace ) {
907912 throw new Error ( `Cannot resolve workspace for forked chat ${ forkedChatUri . toString ( ) } ` ) ;
908913 }
909914
910- if ( ! model . workingDirectory && workspace . folders . length > 0 ) {
911- model . setWorkingDirectory ( workspace . folders [ 0 ] ?. root ) ;
915+ if ( ! model . workingDirectory && workingDirectory ) {
916+ model . setWorkingDirectory ( workingDirectory ) ;
912917 }
913918
914919 const timing = model . timing ;
915920 const lastUpdate = model . lastMessageDate || timing . lastRequestEnded || timing . lastRequestStarted || timing . created ;
921+ const requestInProgress = model . requestInProgress . get ( ) ;
916922 const detail : IChatDetail = {
917923 sessionResource : forkedChatUri ,
918924 title : model . title ,
919925 lastMessageDate : lastUpdate ,
920926 timing,
921- isActive : model . requestInProgress . get ( ) ,
922- lastResponseState : ResponseModelState . Complete ,
923- workingDirectory : workspace . folders [ 0 ] ?. root ,
927+ isActive : requestInProgress ,
928+ lastResponseState : requestInProgress ? ResponseModelState . Pending : ResponseModelState . Complete ,
929+ workingDirectory,
924930 } ;
925931
926932 const session = LocalSession . fromHistory ( detail , this . id , workspace , this . instantiationService ) ;
927- session . setStatus ( model . requestInProgress . get ( ) ? SessionStatus . InProgress : SessionStatus . Completed ) ;
933+ session . setStatus ( requestInProgress ? SessionStatus . InProgress : SessionStatus . Completed ) ;
928934 const inputState = model . inputModel . state . get ( ) ;
929935 session . setModelId ( inputState ?. selectedModel ?. identifier ) ;
930936 session . setModeSnapshot ( inputState ?. mode ) ;
0 commit comments