diff --git a/extensions/copilot/src/extension/linkify/common/linkifier.ts b/extensions/copilot/src/extension/linkify/common/linkifier.ts index d8efc323a7f..7e4563abc46 100644 --- a/extensions/copilot/src/extension/linkify/common/linkifier.ts +++ b/extensions/copilot/src/extension/linkify/common/linkifier.ts @@ -264,6 +264,11 @@ export class Linkifier implements ILinkifier { return matched; } + // Strip fake content reference links generated by models + if (path.includes('_vscodecontentref_')) { + return text; + } + return /^\w+:/.test(path) ? matched : text; }); } diff --git a/extensions/copilot/src/extension/linkify/test/node/linkifier.spec.ts b/extensions/copilot/src/extension/linkify/test/node/linkifier.spec.ts index df1f2b6c17f..6af147c4af3 100644 --- a/extensions/copilot/src/extension/linkify/test/node/linkifier.spec.ts +++ b/extensions/copilot/src/extension/linkify/test/node/linkifier.spec.ts @@ -311,6 +311,19 @@ suite('Stateful Linkifier', () => { ]); }); + test(`Should de-linkify _vscodecontentref_ links`, async () => { + const linkifier = createTestLinkifierService().createLinkifier(emptyContext); + + const parts: string[] = [ + 'npx tsx [index.ts](http://_vscodecontentref_/1) eval [primer.eval.json](http://_vscodecontentref_/2) --repo .', + ]; + + const result = await runLinkifier(linkifier, parts); + assertPartsEqual(result, [ + 'npx tsx index.ts eval primer.eval.json --repo .' + ]); + }); + test(`Should not unlinkify text inside of code blocks`, async () => { const linkifier = createTestLinkifierService().createLinkifier(emptyContext);