mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 17:19:48 +01:00
If a mode has no tools specified, it should include all tools (#253843)
This commit is contained in:
committed by
GitHub
parent
0f58db7480
commit
908f0803ba
@@ -124,7 +124,7 @@ export class ChatSelectedTools extends Disposable {
|
||||
let currentMap = this._sessionStates.get(currentMode.id);
|
||||
let defaultEnablement = false;
|
||||
if (!currentMap && currentMode.kind === ChatModeKind.Agent && currentMode.customTools) {
|
||||
currentMap = this._toolsService.toToolAndToolSetEnablementMap(new Set(currentMode.customTools.read(r)));
|
||||
currentMap = this._toolsService.toToolAndToolSetEnablementMap(currentMode.customTools.read(r));
|
||||
}
|
||||
if (!currentMap) {
|
||||
currentMap = this._selectedTools.read(r);
|
||||
|
||||
@@ -1909,7 +1909,7 @@ export class ChatWidget extends Disposable implements IChatWidget {
|
||||
|
||||
// if not tools to enable are present, we are done
|
||||
if (tools !== undefined && this.input.currentModeKind === ChatModeKind.Agent) {
|
||||
const enablementMap = this.toolsService.toToolAndToolSetEnablementMap(new Set(tools));
|
||||
const enablementMap = this.toolsService.toToolAndToolSetEnablementMap(tools);
|
||||
this.input.selectedToolsModel.set(enablementMap, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -484,13 +484,19 @@ export class LanguageModelToolsService extends Disposable implements ILanguageMo
|
||||
return result;
|
||||
}
|
||||
|
||||
toToolAndToolSetEnablementMap(toolOrToolSetNames: Set<string>): Map<ToolSet | IToolData, boolean> {
|
||||
/**
|
||||
* Create a map that contains all tools and toolsets with their enablement state.
|
||||
* @param toolOrToolSetNames A list of tool or toolset names to check for enablement. If undefined, all tools and toolsets are enabled.
|
||||
* @returns A map of tool or toolset instances to their enablement state.
|
||||
*/
|
||||
toToolAndToolSetEnablementMap(enabledToolOrToolSetNames: readonly string[] | undefined): Map<ToolSet | IToolData, boolean> {
|
||||
const toolOrToolSetNames = enabledToolOrToolSetNames ? new Set(enabledToolOrToolSetNames) : undefined;
|
||||
const result = new Map<ToolSet | IToolData, boolean>();
|
||||
for (const tool of this._tools.values()) {
|
||||
result.set(tool.data, tool.data.toolReferenceName !== undefined && toolOrToolSetNames.has(tool.data.toolReferenceName));
|
||||
result.set(tool.data, tool.data.toolReferenceName !== undefined && (toolOrToolSetNames === undefined || toolOrToolSetNames.has(tool.data.toolReferenceName)));
|
||||
}
|
||||
for (const toolSet of this._toolSets) {
|
||||
result.set(toolSet, toolOrToolSetNames.has(toolSet.referenceName));
|
||||
result.set(toolSet, (toolOrToolSetNames === undefined || toolOrToolSetNames.has(toolSet.referenceName)));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ class PromptToolsCodeLensProvider extends Disposable implements CodeLensProvider
|
||||
|
||||
private async updateTools(model: ITextModel, tools: PromptToolsMetadata) {
|
||||
|
||||
const selectedToolsNow = tools.value ? this.languageModelToolsService.toToolAndToolSetEnablementMap(new Set(tools.value)) : new Map();
|
||||
const selectedToolsNow = tools.value ? this.languageModelToolsService.toToolAndToolSetEnablementMap(tools.value) : new Map();
|
||||
const newSelectedAfter = await this.instantiationService.invokeFunction(showToolsPicker, localize('placeholder', "Select tools"), undefined, selectedToolsNow);
|
||||
if (!newSelectedAfter) {
|
||||
return;
|
||||
|
||||
@@ -275,7 +275,7 @@ export interface ILanguageModelToolsService {
|
||||
resetToolAutoConfirmation(): void;
|
||||
cancelToolCallsForRequest(requestId: string): void;
|
||||
toToolEnablementMap(toolOrToolSetNames: Set<string>): Record<string, boolean>;
|
||||
toToolAndToolSetEnablementMap(toolOrToolSetNames: Set<string>): IToolAndToolSetEnablementMap;
|
||||
toToolAndToolSetEnablementMap(toolOrToolSetNames: readonly string[] | undefined): IToolAndToolSetEnablementMap;
|
||||
|
||||
readonly toolSets: IObservable<Iterable<ToolSet>>;
|
||||
getToolSet(id: string): ToolSet | undefined;
|
||||
|
||||
@@ -76,7 +76,7 @@ export class MockLanguageModelToolsService implements ILanguageModelToolsService
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
|
||||
toToolAndToolSetEnablementMap(toolOrToolSetNames: Set<string>): Map<ToolSet | IToolData, boolean> {
|
||||
toToolAndToolSetEnablementMap(toolOrToolSetNames: readonly string[] | undefined): Map<ToolSet | IToolData, boolean> {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user