From 9eee3da0a0b4ef46893785a2dd1c4aed355d241f Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Tue, 3 Feb 2026 10:18:56 -0800 Subject: [PATCH 1/2] Reduce exposure of `IChatSessionItemProvider` We don't want consumers using this type --- .../browser/agentSessions/agentSessionsModel.ts | 4 ++-- .../agentSessions/localAgentSessionsProvider.ts | 4 ++-- .../chatSessions/chatSessions.contribution.ts | 16 ++++++++-------- .../contrib/chat/common/chatSessionsService.ts | 4 ++-- .../chat/test/common/mockChatSessionsService.ts | 6 +++--- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts index e7176d38ef6..9757d370d55 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts @@ -426,9 +426,9 @@ export class AgentSessionsModel extends Disposable implements IAgentSessionsMode private registerListeners(): void { // Sessions changes - this._register(this.chatSessionsService.onDidChangeItemsProviders(({ chatSessionType: provider }) => this.resolve(provider))); + this._register(this.chatSessionsService.onDidChangeItemsProviders(({ chatSessionType }) => this.resolve(chatSessionType))); this._register(this.chatSessionsService.onDidChangeAvailability(() => this.resolve(undefined))); - this._register(this.chatSessionsService.onDidChangeSessionItems(provider => this.resolve(provider))); + this._register(this.chatSessionsService.onDidChangeSessionItems(({ chatSessionType }) => this.resolve(chatSessionType))); // State this._register(this.storageService.onWillSaveState(() => { diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.ts index 985cc88e959..14bd1a005fc 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.ts @@ -52,8 +52,8 @@ export class LocalAgentsSessionsProvider extends Disposable implements IChatSess () => this._onDidChangeChatSessionItems.fire() )); - this._register(this.chatSessionsService.onDidChangeSessionItems(sessionType => { - if (sessionType === this.chatSessionType) { + this._register(this.chatSessionsService.onDidChangeSessionItems(({ chatSessionType }) => { + if (chatSessionType === this.chatSessionType) { this._onDidChange.fire(); } })); diff --git a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts index d67e1a23322..3bef1b718b9 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts @@ -259,11 +259,11 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ private readonly _alternativeIdMap: Map = new Map(); private readonly _contextKeys = new Set(); - private readonly _onDidChangeItemsProviders = this._register(new Emitter()); - readonly onDidChangeItemsProviders: Event = this._onDidChangeItemsProviders.event; + private readonly _onDidChangeItemsProviders = this._register(new Emitter<{ readonly chatSessionType: string }>()); + readonly onDidChangeItemsProviders = this._onDidChangeItemsProviders.event; - private readonly _onDidChangeSessionItems = this._register(new Emitter()); - readonly onDidChangeSessionItems: Event = this._onDidChangeSessionItems.event; + private readonly _onDidChangeSessionItems = this._register(new Emitter<{ readonly chatSessionType: string }>()); + readonly onDidChangeSessionItems = this._onDidChangeSessionItems.event; private readonly _onDidChangeAvailability = this._register(new Emitter()); readonly onDidChangeAvailability: Event = this._onDidChangeAvailability.event; @@ -339,7 +339,7 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ } })); - this._register(this.onDidChangeSessionItems(chatSessionType => { + this._register(this.onDidChangeSessionItems(({ chatSessionType }) => { this.updateInProgressStatus(chatSessionType).catch(error => { this._logService.warn(`Failed to update progress status for '${chatSessionType}':`, error); }); @@ -637,7 +637,7 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ this._onDidChangeItemsProviders.fire(provider); } for (const { contribution } of this._contributions.values()) { - this._onDidChangeSessionItems.fire(contribution.type); + this._onDidChangeSessionItems.fire({ chatSessionType: contribution.type }); } } this._updateHasCanDelegateProvidersContextKey(); @@ -828,7 +828,7 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ const disposables = new DisposableStore(); disposables.add(provider.onDidChangeChatSessionItems(() => { - this._onDidChangeSessionItems.fire(chatSessionType); + this._onDidChangeSessionItems.fire({ chatSessionType }); })); this.updateInProgressStatus(chatSessionType).catch(error => { @@ -1010,7 +1010,7 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ } public notifySessionItemsChanged(chatSessionType: string): void { - this._onDidChangeSessionItems.fire(chatSessionType); + this._onDidChangeSessionItems.fire({ chatSessionType }); } /** diff --git a/src/vs/workbench/contrib/chat/common/chatSessionsService.ts b/src/vs/workbench/contrib/chat/common/chatSessionsService.ts index ac53b31a898..871c9e3ade0 100644 --- a/src/vs/workbench/contrib/chat/common/chatSessionsService.ts +++ b/src/vs/workbench/contrib/chat/common/chatSessionsService.ts @@ -206,8 +206,8 @@ export interface IChatSessionsService { readonly _serviceBrand: undefined; // #region Chat session item provider support - readonly onDidChangeItemsProviders: Event; - readonly onDidChangeSessionItems: Event; + readonly onDidChangeItemsProviders: Event<{ readonly chatSessionType: string }>; + readonly onDidChangeSessionItems: Event<{ readonly chatSessionType: string }>; readonly onDidChangeAvailability: Event; readonly onDidChangeInProgress: Event; diff --git a/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts b/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts index 80e7de23580..cb62987521f 100644 --- a/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts +++ b/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts @@ -22,7 +22,7 @@ export class MockChatSessionsService implements IChatSessionsService { private readonly _onDidChangeItemsProviders = new Emitter(); readonly onDidChangeItemsProviders = this._onDidChangeItemsProviders.event; - private readonly _onDidChangeSessionItems = new Emitter(); + private readonly _onDidChangeSessionItems = new Emitter<{ readonly chatSessionType: string }>(); readonly onDidChangeSessionItems = this._onDidChangeSessionItems.event; private readonly _onDidChangeAvailability = new Emitter(); @@ -54,7 +54,7 @@ export class MockChatSessionsService implements IChatSessionsService { } fireDidChangeSessionItems(chatSessionType: string): void { - this._onDidChangeSessionItems.fire(chatSessionType); + this._onDidChangeSessionItems.fire({ chatSessionType }); } fireDidChangeAvailability(): void { @@ -168,7 +168,7 @@ export class MockChatSessionsService implements IChatSessionsService { } notifySessionItemsChanged(chatSessionType: string): void { - this._onDidChangeSessionItems.fire(chatSessionType); + this._onDidChangeSessionItems.fire({ chatSessionType }); } getSessionOption(sessionResource: URI, optionId: string): string | undefined { From 19f4d8d2efaecee244268ec181790b533deba9c4 Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Tue, 3 Feb 2026 10:32:54 -0800 Subject: [PATCH 2/2] Update MockChatSessionsService too --- .../contrib/chat/test/common/mockChatSessionsService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts b/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts index cb62987521f..73d80c7f11b 100644 --- a/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts +++ b/src/vs/workbench/contrib/chat/test/common/mockChatSessionsService.ts @@ -19,7 +19,7 @@ export class MockChatSessionsService implements IChatSessionsService { private readonly _onDidChangeSessionOptions = new Emitter(); readonly onDidChangeSessionOptions = this._onDidChangeSessionOptions.event; - private readonly _onDidChangeItemsProviders = new Emitter(); + private readonly _onDidChangeItemsProviders = new Emitter<{ readonly chatSessionType: string }>(); readonly onDidChangeItemsProviders = this._onDidChangeItemsProviders.event; private readonly _onDidChangeSessionItems = new Emitter<{ readonly chatSessionType: string }>();