diff --git a/src/github/copilotRemoteAgent.ts b/src/github/copilotRemoteAgent.ts index 51a487cf5c..03fccb11b2 100644 --- a/src/github/copilotRemoteAgent.ts +++ b/src/github/copilotRemoteAgent.ts @@ -1152,6 +1152,22 @@ export class CopilotRemoteAgentManager extends Disposable { return new Promise((resolve, reject) => { const complete = async () => { + // Generate and add pull request reference link for the active response callback stream + try { + const prLinkUri = await toOpenPullRequestWebviewUri({ + owner: pullRequest.remote.owner, + repo: pullRequest.remote.repositoryName, + pullRequestNumber: pullRequest.number + }); + const referencePart = new vscode.ChatResponseReferencePart2( + prLinkUri, + new vscode.ThemeIcon('git-pull-request') + ); + stream.push(referencePart); + } catch (error) { + Logger.error(`Failed to generate pull request reference link in stream: ${error}`, CopilotRemoteAgentManager.ID); + } + const multiDiffPart = await this.getFileChangesMultiDiffPart(pullRequest); if (multiDiffPart) { stream.push(multiDiffPart); @@ -1340,7 +1356,7 @@ export class CopilotRemoteAgentManager extends Disposable { private async parseSessionLogsIntoResponseTurn(pullRequest: PullRequestModel, logs: string, session: SessionInfo): Promise { try { const logChunks = parseSessionLogs(logs); - const responseParts: Array = []; + const responseParts: Array = []; let currentResponseContent = ''; for (const chunk of logChunks) { @@ -1376,6 +1392,22 @@ export class CopilotRemoteAgentManager extends Disposable { responseParts.push(new vscode.ChatResponseMarkdownPart(currentResponseContent.trim())); } + // Generate and add pull request reference link for the last stream session (active response callback stream) + try { + const prLinkUri = await toOpenPullRequestWebviewUri({ + owner: pullRequest.remote.owner, + repo: pullRequest.remote.repositoryName, + pullRequestNumber: pullRequest.number + }); + const referencePart = new vscode.ChatResponseReferencePart2( + prLinkUri, + new vscode.ThemeIcon('git-pull-request') + ); + responseParts.push(referencePart); + } catch (error) { + Logger.error(`Failed to generate pull request reference link: ${error}`, CopilotRemoteAgentManager.ID); + } + if (session.state === 'completed') { const fileChangesPart = await this.getFileChangesMultiDiffPart(pullRequest); if (fileChangesPart) {