diff --git a/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts b/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts index 406f8a74ef2..84178d37800 100644 --- a/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts +++ b/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts @@ -45,7 +45,7 @@ export function truthfulTimelineAccount(input: { if (knownHuman.test(after) || knownWorker.test(after)) return true; if (!actor[1] && /^[a-z]+ing\b/.test(after)) return false; const word = /^[\p{L}]+/u.exec(after)?.[0]?.toLowerCase(); - return !calendarWords.has(word ?? "") && (/^(?:(?:native|test)\s+)?(?:agent|worker|runner|system|automation|harness|CEO)\b/i.test(after) + return !calendarWords.has(word ?? "") && (/^(?:(?:another|other|different)\s+)?(?:(?:native|test)\s+)?(?:agent|worker|bot|runner|system|automation|harness|CEO)\b/i.test(after) || /^[A-Z][\p{L}'-]+\b/u.test(after)); }); if (byActors.some(actor => !knownHuman.test(text.slice(actor.index + actor[0].length)))) return []; diff --git a/tests/runner-e2e/chat-catalog-domains/internal-timeline-native-milestone.test.ts b/tests/runner-e2e/chat-catalog-domains/internal-timeline-native-milestone.test.ts index a9e2529a62e..91278a4bc7d 100644 --- a/tests/runner-e2e/chat-catalog-domains/internal-timeline-native-milestone.test.ts +++ b/tests/runner-e2e/chat-catalog-domains/internal-timeline-native-milestone.test.ts @@ -377,3 +377,9 @@ it.each([ const o = fixture(); o.reply = reply; expect(gradeWorkTimeline(o).passed).toBe(true); }); + +it.each(["another agent", "a bot"])("retains explicit nonhuman handoff attribution for %s", actor => { + const o = fixture(); + o.reply = o.reply.replace("Then a human reassigned the task to Riley.", `The task was reassigned to Riley by ${actor}.`); + expect(gradeWorkTimeline(o).passed).toBe(false); +});