Skip to content

Commit

Permalink
fix: filter textEditGroup when annotating markdown content (#231375)
Browse files Browse the repository at this point in the history
  • Loading branch information
joyceerhl authored Oct 15, 2024
1 parent 08d6ef0 commit cf43084
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/vs/workbench/contrib/chat/common/annotations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ export type ContentRefData =
export function annotateSpecialMarkdownContent(response: ReadonlyArray<IChatProgressResponseContent>): IChatProgressRenderableResponseContent[] {
const result: IChatProgressRenderableResponseContent[] = [];
for (const item of response) {
const previousItem = result[result.length - 1];
const previousItem = result.filter(p => p.kind !== 'textEditGroup').at(-1);
const previousItemIndex = result.findIndex(p => p === previousItem);
if (item.kind === 'inlineReference') {
const location: ContentRefData = 'uri' in item.inlineReference
? item.inlineReference
Expand All @@ -44,28 +45,28 @@ export function annotateSpecialMarkdownContent(response: ReadonlyArray<IChatProg
const markdownText = `[${label}](${printUri.toString()})`;
if (previousItem?.kind === 'markdownContent') {
const merged = appendMarkdownString(previousItem.content, new MarkdownString(markdownText));
result[result.length - 1] = { content: merged, kind: 'markdownContent' };
result[previousItemIndex] = { content: merged, kind: 'markdownContent' };
} else {
result.push({ content: new MarkdownString(markdownText), kind: 'markdownContent' });
}
} else if (item.kind === 'markdownContent' && previousItem?.kind === 'markdownContent' && canMergeMarkdownStrings(previousItem.content, item.content)) {
const merged = appendMarkdownString(previousItem.content, item.content);
result[result.length - 1] = { content: merged, kind: 'markdownContent' };
result[previousItemIndex] = { content: merged, kind: 'markdownContent' };
} else if (item.kind === 'markdownVuln') {
const vulnText = encodeURIComponent(JSON.stringify(item.vulnerabilities));
const markdownText = `<vscode_annotation details='${vulnText}'>${item.content.value}</vscode_annotation>`;
if (previousItem?.kind === 'markdownContent') {
// Since this is inside a codeblock, it needs to be merged into the previous markdown content.
const merged = appendMarkdownString(previousItem.content, new MarkdownString(markdownText));
result[result.length - 1] = { content: merged, kind: 'markdownContent' };
result[previousItemIndex] = { content: merged, kind: 'markdownContent' };
} else {
result.push({ content: new MarkdownString(markdownText), kind: 'markdownContent' });
}
} else if (item.kind === 'codeblockUri') {
if (previousItem?.kind === 'markdownContent') {
const markdownText = `<vscode_codeblock_uri>${item.uri.toString()}</vscode_codeblock_uri>`;
const merged = appendMarkdownString(previousItem.content, new MarkdownString(markdownText));
result[result.length - 1] = { content: merged, kind: 'markdownContent' };
result[previousItemIndex] = { content: merged, kind: 'markdownContent' };
}
} else {
result.push(item);
Expand Down

0 comments on commit cf43084

Please sign in to comment.