From e79664efe8794670bf1bbfe017491f82c98865e8 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 25 Feb 2026 16:53:34 +0100 Subject: [PATCH] add play button in prompt config dialog --- .../promptSyntax/pickers/promptFilePickers.ts | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.ts b/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.ts index 5113db79b5cfed..86d45f3584d54f 100644 --- a/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.ts +++ b/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.ts @@ -53,6 +53,7 @@ export interface ISelectOptions { readonly optionRename?: boolean; readonly optionCopy?: boolean; readonly optionVisibility?: boolean; + readonly optionRun?: boolean; } export interface ISelectPromptResult { @@ -322,6 +323,11 @@ const MAKE_INVISIBLE_BUTTON: IQuickInputButton = { iconClass: ThemeIcon.asClassName(Codicon.eye), }; +const RUN_IN_CHAT_BUTTON: IQuickInputButton = { + tooltip: localize('runInChat', "Run in Chat View"), + iconClass: ThemeIcon.asClassName(Codicon.play), +}; + export class PromptFilePickers { constructor( @IQuickInputService private readonly _quickInputService: IQuickInputService, @@ -424,6 +430,9 @@ export class PromptFilePickers { private async _createPromptPickItems(options: ISelectOptions, token: CancellationToken): Promise<(IPromptPickerQuickPickItem | IQuickPickSeparator)[]> { const buttons: IQuickInputButton[] = []; + if (options.type === PromptsType.prompt && options.optionRun !== false) { + buttons.push(RUN_IN_CHAT_BUTTON); + } if (options.optionEdit !== false) { buttons.push(EDIT_BUTTON); } @@ -480,6 +489,9 @@ export class PromptFilePickers { const exts = (await this._promptsService.listPromptFilesForStorage(options.type, PromptsStorage.extension, token)).filter(isExtensionPromptPath); if (exts.length) { const extButtons: IQuickInputButton[] = []; + if (options.type === PromptsType.prompt && options.optionRun !== false) { + extButtons.push(RUN_IN_CHAT_BUTTON); + } if (options.optionEdit !== false) { extButtons.push(EDIT_BUTTON); } @@ -596,6 +608,15 @@ export class PromptFilePickers { } const value = item.promptFileUri; + if (button === RUN_IN_CHAT_BUTTON) { + const commandId = quickPick.keyMods.ctrlCmd === true + ? 'workbench.action.chat.run-in-new-chat.prompt.current' + : 'workbench.action.chat.run.prompt.current'; + await this._commandService.executeCommand(commandId, value); + quickPick.hide(); + return false; + } + // `edit` button was pressed, open the prompt file in editor if (button === EDIT_BUTTON) { await this._openerService.open(value); @@ -686,7 +707,8 @@ export class PromptFilePickers { optionDelete: true, optionRename: true, optionCopy: true, - optionVisibility: false + optionVisibility: false, + optionRun: false }; try {