Files
Sybil-2/server/tests/agent-mention.test.ts
T
Sybil Agent 5d738f897b
TestFlight / Build and upload (push) Successful in 1m57s
Add inline persistent Agent mentions
2026-10-29 18:28:52 -07:00

65 lines
2.7 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import { containsSybilMention, filterAgentAsideMessages } from "../src/agent-mention.js";
test("recognizes literal case-insensitive Sybil tokens outside email, code, and quoted content", () => {
for (const value of ["@sybil help", "Please, @SyBiL!", "(@sybil)", "@sybil.", "🙂 @sybil help"]) {
assert.equal(containsSybilMention(value), true, value);
}
for (const value of [
"name@sybil.com",
"name@sybil",
"`@sybil`",
"Use ``@sybil`` here",
"```text\n@sybil\n```",
"~~~swift\n@sybil\n~~~",
" @sybil",
"> @sybil please",
"Quoted:\n> @sybil please",
"Quoted:\n> pasted text\ncontinued @sybil",
"\\@sybil",
]) {
assert.equal(containsSybilMention(value), false, value);
}
});
test("filters only server-marked Agent asides from ordinary provider context", () => {
const stored = [
{ id: "u1", role: "user", content: "before", metadata: null },
{ id: "u2", role: "user", content: "@sybil look at this", metadata: { agentAside: true } },
{ id: "a2", role: "assistant", content: "Agent reply", metadata: { agentAside: true } },
{ id: "u3", role: "user", content: "after", metadata: null },
];
const incoming = stored.map(({ id, role, content }) => ({ id, role, content }));
const filtered = filterAgentAsideMessages(incoming, stored, (left, right) =>
left.role === right.role && left.content === right.content);
assert.deepEqual(filtered.map(message => message.id), ["u1", "u3"]);
assert.equal(stored.length, 4, "filtering leaves visible persisted transcript rows intact");
});
test("only canonical stored metadata marks an aside", () => {
const stored = [
{ id: "normal", role: "user", content: "@sybil is quoted text", metadata: null },
{ id: "aside", role: "assistant", content: "Agent reply", metadata: { agentAside: true } },
];
const incoming = [
{ id: "normal", role: "user", content: "@sybil is quoted text", metadata: { agentAside: true } },
{ id: "aside", role: "assistant", content: "Agent reply", metadata: { agentAside: false } },
];
const filtered = filterAgentAsideMessages(incoming, stored, (left, right) =>
left.role === right.role && left.content === right.content);
assert.deepEqual(filtered.map(message => message.id), ["normal"]);
});
test("keeps messages whose IDs do not identify a matching canonical row", () => {
const stored = [{ id: "aside", role: "user", content: "@sybil", metadata: { agentAside: true } }];
const incoming = [{ id: "aside", role: "user", content: "ordinary text" }];
const filtered = filterAgentAsideMessages(incoming, stored, (left, right) =>
left.role === right.role && left.content === right.content);
assert.deepEqual(filtered, incoming);
});