Skip to content

Commit 14270fe

Browse files
authored
Safer fix for 239274 (microsoft#239511)
* Revert "fix config-context-key handling when config isn't known yet (microsoft#239294)" This reverts commit d231e6c. * Ensure agentModeDisallowed key always changes when setting is registered
1 parent a4815c3 commit 14270fe

File tree

5 files changed

+4
-18
lines changed

5 files changed

+4
-18
lines changed

src/vs/platform/contextkey/browser/contextKeyService.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ class ConfigAwareContextValuesContainer extends Context {
103103
private static readonly _keyPrefix = 'config.';
104104

105105
private readonly _values = TernarySearchTree.forConfigKeys<any>();
106-
private readonly _missed = TernarySearchTree.forConfigKeys<boolean>();
107106
private readonly _listener: IDisposable;
108107

109108
constructor(
@@ -118,10 +117,7 @@ class ConfigAwareContextValuesContainer extends Context {
118117
// new setting, reset everything
119118
const allKeys = Array.from(this._values, ([k]) => k);
120119
this._values.clear();
121-
emitter.fire(new CompositeContextKeyChangeEvent([
122-
new ArrayContextKeyChangeEvent(allKeys),
123-
new ArrayContextKeyChangeEvent(Array.from(this._missed, ([k]) => k))
124-
]));
120+
emitter.fire(new ArrayContextKeyChangeEvent(allKeys));
125121
} else {
126122
const changedKeys: string[] = [];
127123
for (const configKey of event.affectedKeys) {
@@ -176,11 +172,6 @@ class ConfigAwareContextValuesContainer extends Context {
176172
}
177173

178174
this._values.set(key, value);
179-
if (value === undefined) {
180-
this._missed.set(key, true);
181-
} else {
182-
this._missed.delete(key);
183-
}
184175
return value;
185176
}
186177

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ class ChatAgentSettingContribution implements IWorkbenchContribution {
242242
this.registerSetting();
243243
} else if (value === false) {
244244
this.deregisterSetting();
245-
expDisabledKey.set(true);
246245
}
246+
expDisabledKey.set(!value);
247247
});
248248
}
249249

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,7 @@ export class LanguageModelToolsService extends Disposable implements ILanguageMo
6767
this._tools.set(toolData.id, { data: toolData });
6868
this._onDidChangeToolsScheduler.schedule();
6969

70-
if (toolData.when) {
71-
this._contextKeyService.contextMatchesRules(toolData.when);
72-
toolData.when.keys().forEach(key => this._toolContextKeys.add(key));
73-
}
70+
toolData.when?.keys().forEach(key => this._toolContextKeys.add(key));
7471

7572
return toDisposable(() => {
7673
this._tools.delete(toolData.id);

src/vs/workbench/contrib/chat/common/chatAgents.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,6 @@ export class ChatAgentService extends Disposable implements IChatAgentService {
307307
this._agents.set(id, entry);
308308
this._updateAgentsContextKeys();
309309
this._updateContextKeys();
310-
this._agentIsEnabled(entry);
311-
312310
this._onDidChangeAgents.fire(undefined);
313311

314312
return toDisposable(() => {

src/vs/workbench/contrib/chat/common/chatContextKeys.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,6 @@ export namespace ChatContextKeys {
8383
export const Editing = {
8484
hasToolsAgent: new RawContextKey<boolean>('chatHasToolsAgent', false, { type: 'boolean', description: localize('chatEditingHasToolsAgent', "True when a tools agent is registered.") }),
8585
agentMode: new RawContextKey<boolean>('chatAgentMode', false, { type: 'boolean', description: localize('chatEditingAgentMode', "True when edits is in agent mode.") }),
86-
agentModeDisallowed: new RawContextKey<boolean>('chatAgentModeDisallowed', false, { type: 'boolean', description: localize('chatAgentModeDisallowed', "True when agent mode is not allowed.") }), // experiment-driven disablement
86+
agentModeDisallowed: new RawContextKey<boolean>('chatAgentModeDisallowed', undefined, { type: 'boolean', description: localize('chatAgentModeDisallowed', "True when agent mode is not allowed.") }), // experiment-driven disablement
8787
};
8888
}

0 commit comments

Comments
 (0)