diff --git a/src/vs/workbench/contrib/chat/browser/chat.ts b/src/vs/workbench/contrib/chat/browser/chat.ts index 6d15c37c9d3..014af019e00 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.ts @@ -19,6 +19,7 @@ import { ChatAgentLocation, IChatAgentCommand, IChatAgentData } from 'vs/workben import { IChatRequestVariableEntry, IChatResponseModel } from 'vs/workbench/contrib/chat/common/chatModel'; import { IParsedChatRequest } from 'vs/workbench/contrib/chat/common/chatParserTypes'; import { CHAT_PROVIDER_ID } from 'vs/workbench/contrib/chat/common/chatParticipantContribTypes'; +import { IChatLocationData } from 'vs/workbench/contrib/chat/common/chatService'; import { IChatRequestViewModel, IChatResponseViewModel, IChatViewModel, IChatWelcomeMessageViewModel } from 'vs/workbench/contrib/chat/common/chatViewModel'; import { IViewsService } from 'vs/workbench/services/views/common/viewsService'; @@ -151,6 +152,7 @@ export interface IChatWidget { lastSelectedAgent: IChatAgentData | undefined; readonly scopedContextKeyService: IContextKeyService; + getLocationData(): IChatLocationData | undefined; getContrib(id: string): T | undefined; reveal(item: ChatTreeItem): void; focus(item: ChatTreeItem): void; diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index bbf1fa0d2a9..3c7f3459676 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -261,6 +261,9 @@ export class ChatWidget extends Disposable implements IChatWidget { return null; })); } + getLocationData(): IChatLocationData | undefined { + return this._location.resolveData?.(); + } private _lastSelectedAgent: IChatAgentData | undefined; set lastSelectedAgent(agent: IChatAgentData | undefined) { @@ -474,7 +477,9 @@ export class ChatWidget extends Disposable implements IChatWidget { this._register(this.renderer.onDidClickRerunWithAgentOrCommandDetection(item => { const request = this.chatService.getSession(item.sessionId)?.getRequests().find(candidate => candidate.id === item.requestId); if (request) { - this.chatService.resendRequest(request, { noCommandDetection: true, attempt: request.attempt + 1, location: this.location }).catch(e => this.logService.error('FAILED to rerun request', e)); + this.chatService.resendRequest(request, { + noCommandDetection: true, attempt: request.attempt + 1, location: this.location, locationData: this._location.resolveData?.(), + }).catch(e => this.logService.error('FAILED to rerun request', e)); } })); diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts index a2a5973ef1a..918e5b0e4ff 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts @@ -343,7 +343,7 @@ export class RerunAction extends AbstractInlineChatAction { const lastRequest = model?.getRequests().at(-1); if (lastRequest) { - await chatService.resendRequest(lastRequest, { noCommandDetection: false, attempt: lastRequest.attempt + 1, location: ctrl.chatWidget.location }); + await chatService.resendRequest(lastRequest, { noCommandDetection: false, attempt: lastRequest.attempt + 1, location: ctrl.chatWidget.location, locationData: ctrl.chatWidget.getLocationData() }); } } }