55
66import { isEqual } from 'vs/base/common/resources' ;
77import { URI } from 'vs/base/common/uri' ;
8- import { Event } from 'vs/base/common/event' ;
8+ import { Emitter , Event } from 'vs/base/common/event' ;
99import { ResourceEdit , ResourceFileEdit , ResourceTextEdit } from 'vs/editor/browser/services/bulkEditService' ;
1010import { TextEdit } from 'vs/editor/common/languages' ;
1111import { IModelDeltaDecoration , ITextModel } from 'vs/editor/common/model' ;
@@ -357,6 +357,8 @@ export const IInlineChatSessionService = createDecorator<IInlineChatSessionServi
357357export interface IInlineChatSessionService {
358358 _serviceBrand : undefined ;
359359
360+ onWillStartSession : Event < URI > ;
361+
360362 createSession ( editor : IActiveCodeEditor , options : { editMode : EditMode ; wholeRange ?: IRange } , token : CancellationToken ) : Promise < Session | undefined > ;
361363
362364 getSession ( editor : ICodeEditor , uri : URI ) : Session | undefined ;
@@ -379,6 +381,9 @@ export class InlineChatSessionService implements IInlineChatSessionService {
379381
380382 declare _serviceBrand : undefined ;
381383
384+ private readonly _onWillStartSession = new Emitter < URI > ( ) ;
385+ readonly onWillStartSession : Event < URI > = this . _onWillStartSession . event ;
386+
382387 private readonly _sessions = new Map < string , SessionData > ( ) ;
383388 private readonly _keyComputers = new Map < string , ISessionKeyComputer > ( ) ;
384389 private _recordings : Recording [ ] = [ ] ;
@@ -391,6 +396,12 @@ export class InlineChatSessionService implements IInlineChatSessionService {
391396 @ILogService private readonly _logService : ILogService ,
392397 ) { }
393398
399+ dispose ( ) {
400+ this . _onWillStartSession . dispose ( ) ;
401+ this . _sessions . forEach ( x => x . store . dispose ( ) ) ;
402+ this . _sessions . clear ( ) ;
403+ }
404+
394405
395406 async createSession ( editor : IActiveCodeEditor , options : { editMode : EditMode ; wholeRange ?: Range } , token : CancellationToken ) : Promise < Session | undefined > {
396407
@@ -400,6 +411,8 @@ export class InlineChatSessionService implements IInlineChatSessionService {
400411 return undefined ;
401412 }
402413
414+ this . _onWillStartSession . fire ( editor . getModel ( ) . uri ) ;
415+
403416 const textModel = editor . getModel ( ) ;
404417 const selection = editor . getSelection ( ) ;
405418 let raw : IInlineChatSession | undefined | null ;
0 commit comments