diff --git a/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts b/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts index fb1328d73c9..d6cd30b5d00 100644 --- a/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts +++ b/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts @@ -172,3 +172,9 @@ it("preserves a negation that directly governs the assignment verb", () => { expect(gradeIntegratorSkills(o).passed).toBe(true); } }); + +it("preserves an explicitly qualified direct denial of global assignment", () => { + const o = authoredSelfUse(); + o.reply += " Created the reusable skill. I have not explicitly enabled it for all agents."; + expect(gradeIntegratorSkills(o).passed).toBe(true); +}); diff --git a/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts b/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts index 73fb70f26a2..c0e2fe7c886 100644 --- a/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts +++ b/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts @@ -104,7 +104,7 @@ function authorSkillAssignmentScoped(o: SkillsObservation, skill: CompanySkillDe } function claimsGlobalSkillAssignment(reply: string): boolean { const claims = /\b(?:enabled|assigned|activated|attached)\s+(?:it|the skill|this skill)?\s*(?:(?:for|to)\s+)?(?:all|every|everyone)\b/gi; - return [...reply.matchAll(claims)].some(match => !/\b(?:not|never|didn't|haven't|hasn't)\s+(?:(?:been|ever|yet|automatically)\s+){0,2}$/i.test(reply.slice(0, match.index))); + return [...reply.matchAll(claims)].some(match => !/\b(?:not|never|didn't|haven't|hasn't)\s+(?:(?:been|ever|yet|automatically|explicitly)\s+){0,2}$/i.test(reply.slice(0, match.index))); } export function gradeIntegratorSkills(value: unknown) { const c = checks(); const o = skillsObservation(value);