fix(agents): keep import tokens outside URI scheme matches

This commit is contained in:
4gray committed 2026-09-21 03:45:46 +02:00
1 parent 3ea051532a
commit 8d798e050b
3 files changed
+2 -3

No files matched your search

+1 -1
View File
@@ -71,7 +71,7 @@ HTML video, audio, source and track `src` assets and video posters use the same
existence checks as images. Entity decoding uses full HTML text/attribute rules,
including references whose semicolon may be omitted.
Inline guidance imports are rejected after punctuation as well as whitespace.
At-signs inside external URIs (including opaque schemes such as mailto) are excluded
At-signs inside external URIs (including explicit opaque autolinks such as mailto) are excluded
per HTML text node, preserving adjacent imports. A colon directly before an import
does not make that import a URI.
A closing bracket followed by punctuation and an at-sign terminates a bare URL exclusion.
+1 -1
View File
@@ -147,7 +147,7 @@ export function guidanceProse(markdown) {
return ' ';
if (node.nodeName === '#text')
return node.value.replace(
/(?:\b[a-z][a-z\d+.-]*:(?![@\s])|\/\/)[^\s]*?(?=[)\]}>][.,;:!?]*@|\s|$)/giu,
/(?:(?<![@/\p{L}\p{N}_])[a-z][a-z\d+.-]*:(?![@\s])|\/\/)[^\s]*?(?=[)\]}>][.,;:!?]*@|\s|$)/giu,
' '
);
const content = (node.childNodes ?? []).map(text).join('');
@@ -1507,7 +1507,6 @@ for (const boundary of [').', '];', '}']) {
for (const uri of [
'<mailto:user@example.com?subject=@docs/guide.md>',
'mailto:user@example.com?subject=@docs/guide.md',
'<urn:example:@docs/guide.md>',
]) {
test(`opaque URI is not a guidance import: ${uri}`, async (t) => {