diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts index 9927868c3b4..7955eea2369 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts @@ -104,7 +104,7 @@ export class StartSessionAction extends Action2 { }); } - private _runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, ..._args: unknown[]) { + private async _runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, ...args: unknown[]) { const ctrl = InlineChatController.get(editor); if (!ctrl) { @@ -116,11 +116,14 @@ export class StartSessionAction extends Action2 { } let options: InlineChatRunOptions | undefined; - const arg = _args[0]; + const arg = args[0]; if (arg && InlineChatRunOptions.isInlineChatRunOptions(arg)) { options = arg; } - return InlineChatController.get(editor)?.run({ ...options }); + const task = InlineChatController.get(editor)?.run({ ...options }); + if (options?.blockOnResponse) { + await task; + } } } diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts index 33ade4193ee..b1f7074e30b 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts @@ -101,6 +101,7 @@ export abstract class InlineChatRunOptions { existingSession?: Session; position?: IPosition; modelSelector?: ILanguageModelChatSelector; + blockOnResponse?: boolean; static isInlineChatRunOptions(options: unknown): options is InlineChatRunOptions { @@ -108,7 +109,7 @@ export abstract class InlineChatRunOptions { return false; } - const { initialSelection, initialRange, message, autoSend, position, existingSession, attachments, modelSelector } = options; + const { initialSelection, initialRange, message, autoSend, position, existingSession, attachments, modelSelector, blockOnResponse } = options; if ( typeof message !== 'undefined' && typeof message !== 'string' || typeof autoSend !== 'undefined' && typeof autoSend !== 'boolean' @@ -118,6 +119,7 @@ export abstract class InlineChatRunOptions { || typeof existingSession !== 'undefined' && !(existingSession instanceof Session) || typeof attachments !== 'undefined' && (!Array.isArray(attachments) || !attachments.every(item => item instanceof URI)) || typeof modelSelector !== 'undefined' && !isILanguageModelChatSelector(modelSelector) + || typeof blockOnResponse !== 'undefined' && typeof blockOnResponse !== 'boolean' ) { return false; }