Skip to content

Commit 2f4b354

Browse files
authored
chat - fix bad setup disposable handling (microsoft#271308)
* chat - fix bad setup disposable handling * run without setup when anonymous
1 parent a2067fe commit 2f4b354

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

.github/CODENOTIFY

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,7 @@ src/vs/workbench/electron-browser/** @bpasero
9999
# Workbench Contributions
100100
src/vs/workbench/contrib/authentication/** @TylerLeonhardt
101101
src/vs/workbench/contrib/files/** @bpasero
102-
src/vs/workbench/contrib/chat/browser/chatListRenderer.ts @roblourens @bpasero
103-
src/vs/workbench/contrib/chat/browser/chatInputPart.ts @bpasero
104-
src/vs/workbench/contrib/chat/browser/chatWidget.ts @bpasero
102+
src/vs/workbench/contrib/chat/browser/chatListRenderer.ts @roblourens
105103
src/vs/workbench/contrib/chat/browser/chatSetup.ts @bpasero
106104
src/vs/workbench/contrib/chat/browser/chatStatus.ts @bpasero
107105
src/vs/workbench/contrib/localization/** @TylerLeonhardt

src/vs/workbench/contrib/chat/browser/chatSetup.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,16 @@ class SetupAgent extends Disposable implements IChatAgentImplementation {
249249
}
250250

251251
private async doInvoke(request: IChatAgentRequest, progress: (part: IChatProgress) => void, chatService: IChatService, languageModelsService: ILanguageModelsService, chatWidgetService: IChatWidgetService, chatAgentService: IChatAgentService, languageModelToolsService: ILanguageModelToolsService): Promise<IChatAgentResult> {
252-
if (!this.context.state.installed || this.context.state.disabled || this.context.state.untrusted || this.context.state.entitlement === ChatEntitlement.Available || this.context.state.entitlement === ChatEntitlement.Unknown) {
252+
if (
253+
!this.context.state.installed || // Extension not installed: run setup to install
254+
this.context.state.disabled || // Extension disabled: run setup to enable
255+
this.context.state.untrusted || // Workspace untrusted: run setup to ask for trust
256+
this.context.state.entitlement === ChatEntitlement.Available || // Entitlement available: run setup to sign up
257+
(
258+
this.context.state.entitlement === ChatEntitlement.Unknown && // Entitlement unknown: run setup to sign in / sign up
259+
!this.chatEntitlementService.anonymous // unless anonymous access is enabled
260+
)
261+
) {
253262
return this.doInvokeWithSetup(request, progress, chatService, languageModelsService, chatWidgetService, chatAgentService, languageModelToolsService);
254263
}
255264

@@ -925,12 +934,15 @@ export class ChatSetupContribution extends Disposable implements IWorkbenchContr
925934
return; // TODO@bpasero eventually remove this when we figured out extension activation issues
926935
}
927936

937+
const defaultAgentDisposables = markAsSingleton(new MutableDisposable()); // prevents flicker on window reload
938+
const vscodeAgentDisposables = markAsSingleton(new MutableDisposable());
939+
940+
const renameProviderDisposables = markAsSingleton(new MutableDisposable());
941+
928942
const updateRegistration = () => {
929943

930944
// Agent + Tools
931945
{
932-
const defaultAgentDisposables = markAsSingleton(new MutableDisposable()); // prevents flicker on window reload
933-
const vscodeAgentDisposables = markAsSingleton(new MutableDisposable());
934946
if (!context.state.hidden && !context.state.disabled) {
935947

936948
// Default Agents (always, even if installed to allow for speedy requests right on startup)
@@ -979,8 +991,6 @@ export class ChatSetupContribution extends Disposable implements IWorkbenchContr
979991

980992
// Rename Provider
981993
{
982-
const renameProviderDisposables = markAsSingleton(new MutableDisposable());
983-
984994
if (!context.state.installed && !context.state.hidden && !context.state.disabled) {
985995
if (!renameProviderDisposables.value) {
986996
renameProviderDisposables.value = DefaultNewSymbolNamesProvider.registerProvider(this.instantiationService, context, controller);

0 commit comments

Comments
 (0)