Skip to content

Commit 3de617e

Browse files
authored
Rendering of PR card description (#7649)
Fixes #7638
1 parent 8c67fd8 commit 3de617e

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

src/github/copilotRemoteAgent.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as pathLib from 'path';
7+
import * as marked from 'marked';
78
import vscode from 'vscode';
89
import { parseSessionLogs, parseToolCallDetails, StrReplaceEditorToolData } from '../../common/sessionParsing';
910
import { COPILOT_ACCOUNTS } from '../common/comment';
@@ -26,7 +27,7 @@ import { CredentialStore } from './credentials';
2627
import { FolderRepositoryManager, ReposManagerState } from './folderRepositoryManager';
2728
import { GitHubRepository } from './githubRepository';
2829
import { GithubItemStateEnum } from './interface';
29-
import { issueMarkdown } from './markdownUtils';
30+
import { issueMarkdown, PlainTextRenderer } from './markdownUtils';
3031
import { PullRequestModel } from './pullRequestModel';
3132
import { chooseItem } from './quickPicks';
3233
import { RepositoriesManager } from './repositoriesManager';
@@ -493,10 +494,12 @@ export class CopilotRemoteAgentManager extends Disposable {
493494
}
494495

495496
if (pr && (_version && _version === 2)) { /* version 2 means caller knows how to render this */
497+
const plaintextBody = marked.parse(pr.body, { renderer: new PlainTextRenderer(), }).trim();
498+
496499
return {
497500
uri: webviewUri.toString(),
498501
title: pr.title,
499-
description: pr.body,
502+
description: plaintextBody,
500503
author: COPILOT_ACCOUNTS[pr.author.login].name,
501504
linkTag: `#${pr.number}`
502505
};

src/github/copilotRemoteAgent/chatSessionContentBuilder.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as nodePath from 'path';
7+
import * as marked from 'marked';
78
import vscode from 'vscode';
89
import { parseSessionLogs, parseToolCallDetails, StrReplaceEditorToolData } from '../../../common/sessionParsing';
910
import { COPILOT_SWE_AGENT } from '../../common/copilot';
@@ -13,6 +14,7 @@ import { toOpenPullRequestWebviewUri } from '../../common/uri';
1314
import { InMemFileChangeModel, RemoteFileChangeModel } from '../../view/fileChangeModel';
1415
import { AssistantDelta, Choice, ToolCall } from '../common';
1516
import { CopilotApi, SessionInfo } from '../copilotApi';
17+
import { PlainTextRenderer } from '../markdownUtils';
1618
import { PullRequestModel } from '../pullRequestModel';
1719

1820
export class ChatSessionContentBuilder {
@@ -57,7 +59,9 @@ export class ChatSessionContentBuilder {
5759
// if this is the first response, then also add the PR card
5860
if (history.length === 1) {
5961
const uri = await toOpenPullRequestWebviewUri({ owner: pullRequest.remote.owner, repo: pullRequest.remote.repositoryName, pullRequestNumber: pullRequest.number });
60-
const card = new vscode.ChatResponsePullRequestPart(uri, pullRequest.title, pullRequest.body, pullRequest.author.specialDisplayName ?? pullRequest.author.login, `#${pullRequest.number}`);
62+
const plaintextBody = marked.parse(pullRequest.body, { renderer: new PlainTextRenderer(), }).trim();
63+
64+
const card = new vscode.ChatResponsePullRequestPart(uri, pullRequest.title, plaintextBody, pullRequest.author.specialDisplayName ?? pullRequest.author.login, `#${pullRequest.number}`);
6165
const cardTurn = new vscode.ChatResponseTurn2([card], {}, COPILOT_SWE_AGENT);
6266
history.push(cardTurn);
6367
}

src/lm/tools/copilotRemoteAgentTool.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
6+
import * as marked from 'marked';
77
import * as vscode from 'vscode';
88
import { COPILOT_ACCOUNTS } from '../../common/comment';
99
import { ITelemetry } from '../../common/telemetry';
1010
import { toOpenPullRequestWebviewUri } from '../../common/uri';
1111
import { CopilotRemoteAgentManager } from '../../github/copilotRemoteAgent';
1212
import { FolderRepositoryManager } from '../../github/folderRepositoryManager';
13+
import { PlainTextRenderer } from '../../github/markdownUtils';
1314

1415
export interface CopilotRemoteAgentToolParameters {
1516
// The LLM is inconsistent in providing repo information.
@@ -121,10 +122,11 @@ export class CopilotRemoteAgentTool implements vscode.LanguageModelTool<CopilotR
121122
let lmResult: (vscode.LanguageModelTextPart | vscode.LanguageModelDataPart)[] = [new vscode.LanguageModelTextPart(result.llmDetails)];
122123
const pr = await targetRepo.fm.resolvePullRequest(targetRepo.owner, targetRepo.repo, result.number);
123124
if (pr) {
125+
const plaintextBody = marked.parse(pr.body, { renderer: new PlainTextRenderer(), }).trim();
124126
const preferredRendering = {
125127
uri: (await toOpenPullRequestWebviewUri({ owner: pr.githubRepository.remote.owner, repo: pr.githubRepository.remote.repositoryName, pullRequestNumber: pr.number })).toString(),
126128
title: pr.title,
127-
description: pr.body,
129+
description: plaintextBody,
128130
author: COPILOT_ACCOUNTS[pr.author.login].name,
129131
linkTag: `#${pr.number}`
130132
};

0 commit comments

Comments
 (0)