mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-10 12:37:55 +01:00
test(activity): distinguish recorded person from other human actors
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
29487a08b0
commit
adde1ae0e9
2 files changed
+8
-1
No files matched your search
@@ -18,7 +18,12 @@ export function truthfulTimelineAccount(input: {
|
||||
const assignment = "\\b(?:reassign(?:ed|ment)?|assign(?:ed|ment)?|hand(?:ed)?(?:\\s+\\w+){0,4}\\s+(?:off|over)|handed|handoff)\\b";
|
||||
const target = `\\bto\\s+${escape(repairWorker)}\\b`;
|
||||
const handoffToRepairWorker = new RegExp(`${humanActor}[^.!?\\n]{0,100}${assignment}[^.!?\\n]{0,60}${target}|${assignment}[^.!?\\n]{0,60}${target}[^.!?\\n]{0,40}\\bby\\s+${humanActor}`, "i");
|
||||
const handoffs = clauses.filter(({ text }) => handoffToRepairWorker.test(text)
|
||||
const differentNamedPerson = (text: string) => {
|
||||
const namedRole = /^\s*(?:Then\s+)?([A-Z][\p{L}'-]+(?:\s+[A-Z][\p{L}'-]+)*)\s*,?\s*(?:the\s+)?(?:human|person|user|operator)\b/u.exec(text);
|
||||
return !!namedRole && !["The", "A", "An", input.personName].some(name => name?.toLowerCase() === namedRole[1]!.toLowerCase())
|
||||
|| /\b(?:another|different|other)\s+(?:human|person|user|operator)\b/i.test(text);
|
||||
};
|
||||
const handoffs = clauses.filter(({ text }) => handoffToRepairWorker.test(text) && !differentNamedPerson(text)
|
||||
&& !/\b(?:not|never|no)\b[^.!?]{0,50}\b(?:reassign|assign|hand|handoff)/i.test(text));
|
||||
const repairs = clauses.filter(({ text }) => mentions(text, repairWorker)
|
||||
&& /\b(?:repair(?:ed)?|fix(?:ed)?|label)\b/i.test(text)
|
||||
|
||||
@@ -87,6 +87,8 @@ it.each([
|
||||
"Today (UTC): The human reassigned the task to Riley. Morgan's verification failed and work paused. Riley repaired the label and the check passed.",
|
||||
"Today (UTC): Morgan's verification failed and work paused. The human reassigned the task to Morgan, and Riley repaired the label and the check passed.",
|
||||
"Today (UTC): Morgan's verification failed and work paused. Jordan reassigned the task to Riley. Riley repaired the label and the check passed.",
|
||||
"Today (UTC): Morgan's verification failed and work paused. Jordan the human reassigned the task to Riley. Riley repaired the label and the check passed.",
|
||||
"Today (UTC): Morgan's verification failed and work paused. Another person reassigned the task to Riley. Riley repaired the label and the check passed.",
|
||||
"Today (UTC): Morgan's native run failed and work paused. The human reassigned the task to Riley. Riley repaired the label and the check passed.",
|
||||
])("rejects missing, wrong or unordered consequential actors: %s", reply => {
|
||||
const o = fixture(); o.reply = reply; expect(gradeWorkTimeline(o).passed).toBe(false);
|
||||
|
||||
Reference in new issue
Block a user