Merge origin/master into fix/issue-1255

- findMentionedAgents: keep normalizeAgentMentionToken + extractAgentMentionIds
- decode @mention tokens with entities.decodeHTMLStrict (full HTML entities)
- Add entities dependency; expand unit tests for Greptile follow-ups

Made-with: Cursor
This commit is contained in:
amit221 2026-03-24 10:03:15 +02:00
commit 53f0988006
334 changed files with 98279 additions and 9577 deletions

View file

@ -2,15 +2,15 @@ import { describe, expect, it } from "vitest";
import { normalizeAgentMentionToken } from "../services/issues.ts";
describe("normalizeAgentMentionToken", () => {
it("strips hex numeric entities such as space ( )", () => {
it("decodes hex numeric entities such as space ( )", () => {
expect(normalizeAgentMentionToken("Baba ")).toBe("Baba");
});
it("strips decimal numeric entities", () => {
it("decodes decimal numeric entities", () => {
expect(normalizeAgentMentionToken("Baba ")).toBe("Baba");
});
it("strips common named entities", () => {
it("decodes common named whitespace entities", () => {
expect(normalizeAgentMentionToken("Baba ")).toBe("Baba");
});
@ -19,11 +19,19 @@ describe("normalizeAgentMentionToken", () => {
expect(normalizeAgentMentionToken("M&M")).toBe("M&M");
});
it("decodes named entities mid-token (e.g. copyright) for full HTML named coverage", () => {
expect(normalizeAgentMentionToken("Agent©Name")).toBe("Agent©Name");
});
it("leaves unknown semicolon-terminated named references unchanged", () => {
expect(normalizeAgentMentionToken("Baba&notarealentity;")).toBe("Baba&notarealentity;");
});
it("returns plain names unchanged", () => {
expect(normalizeAgentMentionToken("Baba")).toBe("Baba");
});
it("trims after stripping entities", () => {
it("trims after decoding entities", () => {
expect(normalizeAgentMentionToken("Baba  ")).toBe("Baba");
});
});