Spaces:
Configuration error
Configuration error
| /** | |
| * knowledgeGapBlockN8.test.ts — N8: EN signal patterns in KNOWLEDGE_GAP_SIGNALS | |
| * | |
| * knowledgeGapBlock.ts aveva KNOWLEDGE_GAP_SIGNALS solo in italiano. | |
| * Se l'utente scrive in EN ("who is the current CEO?") nessun pattern matchava | |
| * e l'agente non veniva forzato a usare web_search prima di rispondere. | |
| * Fix: +9 pattern EN (temporal/version/price/person/statistics). | |
| */ | |
| import { describe, it, expect } from "vitest"; | |
| import { detectKnowledgeGap } from "@/lib/agentLoop/knowledgeGapBlock"; | |
| const CLS_GENERAL = { type: "general_qa", complexity: 5, isDirectAnswer: false }; | |
| const CLS_CODE = { type: "code_fix", complexity: 4, isDirectAnswer: false }; | |
| const CLS_RT = { type: "realtime_query", complexity: 5, isDirectAnswer: false }; | |
| // Query EN con gap di conoscenza — devono triggerare hasGap=true | |
| const EN_GAP_QUERIES = [ | |
| "who is the current CEO of Apple?", | |
| "who is the new prime minister of Italy?", | |
| "what is the latest version of Node.js?", | |
| "current version of Python?", | |
| "what is the current price of Tesla stock?", | |
| "how much does a MacBook Pro cost today?", | |
| "how many users does Instagram have?", | |
| "how many customers does Amazon have?", | |
| "recent statistics on remote work adoption", | |
| "latest report on climate change", | |
| "what happened recently with SpaceX?", | |
| "what is the market cap of Apple right now?", | |
| ]; | |
| // Query IT già presenti — no regression | |
| const IT_GAP_QUERIES = [ | |
| "chi e' il presidente attuale degli USA?", | |
| "quanto costa il Bitcoin oggi?", | |
| "quanti utenti ha TikTok?", | |
| "ultima versione di React?", | |
| "statistica recente sul lavoro da remoto", | |
| ]; | |
| // Query tecnica pura a bassa complessita' — skip | |
| const CODE_LOW = [ | |
| "fix this TypeScript error: cannot find module", | |
| "correggi questo errore di build webpack", | |
| ]; | |
| // realtime_query — gia' gestita, non deve aggiungere hint ridondante | |
| const REALTIME = [ | |
| "latest news about AI today", | |
| "notizie di oggi sull'intelligenza artificiale", | |
| ]; | |
| describe("N8: detectKnowledgeGap riconosce query EN", () => { | |
| it.each(EN_GAP_QUERIES)("EN gap query '%s' -> hasGap=true", (msg) => { | |
| const result = detectKnowledgeGap(msg, CLS_GENERAL); | |
| expect(result.hasGap).toBe(true); | |
| expect(result.hint).not.toBe(""); | |
| }); | |
| it.each(IT_GAP_QUERIES)("IT query '%s' -> hasGap=true (no regression)", (msg) => { | |
| const result = detectKnowledgeGap(msg, CLS_GENERAL); | |
| expect(result.hasGap).toBe(true); | |
| }); | |
| it.each(CODE_LOW)("code/build fix '%s' -> skip (bassa complessita')", (msg) => { | |
| const result = detectKnowledgeGap(msg, CLS_CODE); | |
| expect(result.hasGap).toBe(false); | |
| }); | |
| it.each(REALTIME)("realtime_query '%s' -> skip (gia' gestita)", (msg) => { | |
| const result = detectKnowledgeGap(msg, CLS_RT); | |
| expect(result.hasGap).toBe(false); | |
| }); | |
| it("N8-1: hint contiene [KNOWLEDGE GAP] tag", () => { | |
| const result = detectKnowledgeGap("who is the current CEO of Tesla?", CLS_GENERAL); | |
| expect(result.hint).toContain("[KNOWLEDGE GAP"); | |
| }); | |
| it("N8-2: null cls -> no gap", () => { | |
| expect(detectKnowledgeGap("who is the CEO?", null).hasGap).toBe(false); | |
| }); | |
| }); | |