@@ -103,7 +103,7 @@ type ChatTerminalClassification = {
103
103
comment : 'Provides insight into the usage of Chat features.' ;
104
104
} ;
105
105
106
- const maxPersistedSessions = 20 ;
106
+ const maxPersistedSessions = 25 ;
107
107
108
108
export class ChatService extends Disposable implements IChatService {
109
109
declare _serviceBrand : undefined ;
@@ -147,7 +147,9 @@ export class ChatService extends Disposable implements IChatService {
147
147
let allSessions : ( ChatModel | ISerializableChatData ) [ ] = Array . from ( this . _sessionModels . values ( ) )
148
148
. filter ( session => session . getRequests ( ) . length > 0 ) ;
149
149
allSessions = allSessions . concat (
150
- Object . values ( this . _persistedSessions ) . filter ( session => session . requests . length ) ) ;
150
+ Object . values ( this . _persistedSessions )
151
+ . filter ( session => ! this . _sessionModels . has ( session . sessionId ) )
152
+ . filter ( session => session . requests . length ) ) ;
151
153
allSessions . sort ( ( a , b ) => ( b . creationDate ?? 0 ) - ( a . creationDate ?? 0 ) ) ;
152
154
allSessions = allSessions . slice ( 0 , maxPersistedSessions ) ;
153
155
this . trace ( 'onWillSaveState' , `Persisting ${ allSessions . length } sessions` ) ;
@@ -219,12 +221,18 @@ export class ChatService extends Disposable implements IChatService {
219
221
const sessions = Object . values ( this . _persistedSessions ) ;
220
222
sessions . sort ( ( a , b ) => ( b . creationDate ?? 0 ) - ( a . creationDate ?? 0 ) ) ;
221
223
222
- return sessions . map ( item => {
223
- return < IChatDetail > {
224
- sessionId : item . sessionId ,
225
- title : item . requests [ 0 ] ?. message || '' ,
226
- } ;
227
- } ) ;
224
+ return sessions
225
+ . filter ( session => ! this . _sessionModels . has ( session . sessionId ) )
226
+ . map ( item => {
227
+ return < IChatDetail > {
228
+ sessionId : item . sessionId ,
229
+ title : item . requests [ 0 ] ?. message || '' ,
230
+ } ;
231
+ } ) ;
232
+ }
233
+
234
+ removeHistoryEntry ( sessionId : string ) : void {
235
+ delete this . _persistedSessions [ sessionId ] ;
228
236
}
229
237
230
238
startSession ( providerId : string , token : CancellationToken ) : ChatModel {
@@ -267,11 +275,6 @@ export class ChatService extends Disposable implements IChatService {
267
275
}
268
276
269
277
if ( ! session ) {
270
- if ( sessionHistory ) {
271
- // sessionHistory was not used, so store it for later
272
- this . _persistedSessions [ sessionHistory . sessionId ] = sessionHistory ;
273
- }
274
-
275
278
this . trace ( 'startSession' , 'Provider returned no session' ) ;
276
279
return undefined ;
277
280
}
@@ -301,7 +304,6 @@ export class ChatService extends Disposable implements IChatService {
301
304
return undefined ;
302
305
}
303
306
304
- delete this . _persistedSessions [ sessionId ] ;
305
307
return this . _startSession ( sessionData . providerId , sessionData , CancellationToken . None ) ;
306
308
}
307
309
0 commit comments