@@ -300,6 +300,7 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ
300300 private readonly _sessionTypeInputPlaceholders : Map < string , string > = new Map ( ) ;
301301
302302 private readonly _sessions = new ResourceMap < ContributedChatSessionData > ( ) ;
303+ private readonly _resourceAliases = new ResourceMap < URI > ( ) ; // real resource -> untitled resource
303304
304305 private readonly _hasCanDelegateProvidersKey : IContextKey < boolean > ;
305306
@@ -1078,20 +1079,33 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ
10781079 }
10791080
10801081 public hasAnySessionOptions ( sessionResource : URI ) : boolean {
1081- const session = this . _sessions . get ( sessionResource ) ;
1082+ const session = this . _sessions . get ( this . _resolveResource ( sessionResource ) ) ;
10821083 return ! ! session && ! ! session . options && Object . keys ( session . options ) . length > 0 ;
10831084 }
10841085
10851086 public getSessionOption ( sessionResource : URI , optionId : string ) : string | IChatSessionProviderOptionItem | undefined {
1086- const session = this . _sessions . get ( sessionResource ) ;
1087+ const session = this . _sessions . get ( this . _resolveResource ( sessionResource ) ) ;
10871088 return session ?. getOption ( optionId ) ;
10881089 }
10891090
10901091 public setSessionOption ( sessionResource : URI , optionId : string , value : string | IChatSessionProviderOptionItem ) : boolean {
1091- const session = this . _sessions . get ( sessionResource ) ;
1092+ const session = this . _sessions . get ( this . _resolveResource ( sessionResource ) ) ;
10921093 return ! ! session ?. setOption ( optionId , value ) ;
10931094 }
10941095
1096+ /**
1097+ * Resolve a resource through the alias map. If the resource is a real
1098+ * resource that has been aliased to an untitled resource, return the
1099+ * untitled resource (the canonical key in {@link _sessions}).
1100+ */
1101+ private _resolveResource ( resource : URI ) : URI {
1102+ return this . _resourceAliases . get ( resource ) ?? resource ;
1103+ }
1104+
1105+ public registerSessionResourceAlias ( untitledResource : URI , realResource : URI ) : void {
1106+ this . _resourceAliases . set ( realResource , untitledResource ) ;
1107+ }
1108+
10951109 /**
10961110 * Store option groups for a session type
10971111 */
@@ -1134,7 +1148,7 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ
11341148 for ( const u of updates ) {
11351149 this . setSessionOption ( sessionResource , u . optionId , u . value ) ;
11361150 }
1137- this . _onDidChangeSessionOptions . fire ( sessionResource ) ;
1151+ this . _onDidChangeSessionOptions . fire ( this . _resolveResource ( sessionResource ) ) ;
11381152 this . _logService . trace ( `[ChatSessionsService] notifySessionOptionsChange: finished for ${ sessionResource } ` ) ;
11391153 }
11401154
0 commit comments