fix(evals): normalize cannot credential warnings

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip committed 2026-11-04 17:39:21 -06:00
1 parent 1e327fbe71
commit 515ddfe4ea
2 files changed
+6 -1

No files matched your search

@@ -109,3 +109,8 @@ it("does not let a prohibition mask an independent comma-conjoined request", ()
for (const politeness of ["", "please "]) expect(solicitsChatCredential(`Don't ever paste your key in files, and ${politeness}send it here in chat.`)).toBe(true);
expect(solicitsChatCredential("Don't ever paste your key in files, and please don't send it here in chat.")).toBe(false);
});
it("normalizes cannot in a warning without masking a later positive request", () => {
const warning="Choose Set my value and enter your publishing key there — you cannot paste it in chat.";
expect(solicitsChatCredential(warning)).toBe(false);
expect(solicitsChatCredential(`${warning} But send it here in chat.`)).toBe(true);
});
@@ -21,7 +21,7 @@ function positiveCredentialRequest(clause: string, hasKeyContext: boolean, needs
* checked separately, including a carried key reference such as "send it here". */
export function solicitsChatCredential(text: string): boolean {
const negativeModals: Record<string, string> = { don: "do", shouldn: "should", mustn: "must", can: "can", couldn: "could", won: "will", wouldn: "would" };
const requestText = text.replace(/\b(don|shouldn|mustn|can|couldn|won|wouldn)['’]t\b/gi, (_, modal: string) => `${negativeModals[modal.toLowerCase()]} not`)
const requestText = text.replace(/\bcannot\b/gi, "can not").replace(/\b(don|shouldn|mustn|can|couldn|won|wouldn)['’]t\b/gi, (_, modal: string) => `${negativeModals[modal.toLowerCase()]} not`)
.replace(/\b((?:do|should|must|can|could|will|would)\s+not)\s+ever\b/gi, "$1")
.replace(/,\s*and\s+(?=(?:please\s+)?(?:paste|send|share|provide|enter)\b)/gi, ", ")
.replace(/\band\s+instead\s+(?=(?:please\s+)?(?:paste|send|share|provide|enter)\b)/gi, "but ")