fix(agent-permissions): word-boundary-match management keywords

This commit is contained in:
ZacharyZhang-NY committed 2026-04-16 23:03:47 -04:00
1 parent 5ce3c8ff76
commit 779a102ed7
1 file changed
+9 -2
+9 -2
View File
@@ -29,13 +29,20 @@ const MANAGEMENT_KEYWORDS = [
"lead",
];
/** Regex union for MANAGEMENT_KEYWORDS with `\b`-anchored matching so short
* tokens like "vp" or "cmo" do not false-match inside "vpc" or "economical". */
const MANAGEMENT_KEYWORD_PATTERN = new RegExp(
`\\b(?:${MANAGEMENT_KEYWORDS.map((k) => k.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b`,
"i",
);
export function hasManagementAuthority(agent: { role: string; title: string; department: string | null }) {
if (agent.department === "hr") {
return true;
}
const text = `${agent.role} ${agent.title}`.toLowerCase();
return MANAGEMENT_KEYWORDS.some((keyword) => text.includes(keyword));
const text = `${agent.role} ${agent.title}`;
return MANAGEMENT_KEYWORD_PATTERN.test(text);
}
function hasOrganizationPermission(db: AppDatabase, agentId: string) {