AUDIT / src /lib /__tests__ /intentParserDirectFix.test.ts
Arypulka98's picture
feat(audit): deploy full backend cluster node (part 2)
cc11e77 verified
Raw
History Blame Contribute Delete
5.34 kB
/**
* intentParserDirectFix.test.ts — S478 DIRECT-FIX: intentParser gate per domande definitorie
*
* Copertura (20 test):
* Gruppo A — Domande definitorie → null (no tool pre-exec, risposta LLM diretta)
* Gruppo B — Query live legittime → tool corretto (web_search, get_weather, ecc.)
* Gruppo C — Pattern edge-case: "chi è attuale/in carica" → live (politica)
* Gruppo D — Domande storiche brevi → null
*
* SESSIONE: S478 — DIRECT_RESPONSE_MODE
*/
import { describe, it, expect } from "vitest";
import { detectIntent } from "@/lib/agentLoop/intentParser";
// ─── Gruppo A: Domande definitorie → null ─────────────────────────────────────
describe("S478: detectIntent — domande definitorie → null (no tool pre-exec)", () => {
it("A-1. 'chi è Einstein?' → null (storico, LLM sa già)", () => {
expect(detectIntent("chi è Einstein?")).toBeNull();
});
it("A-2. 'chi era Napoleone?' → null (_isHistoricalPerson)", () => {
expect(detectIntent("chi era Napoleone?")).toBeNull();
});
it("A-3. 'cos'è il DNA?' → null (_isDefinitionalShort)", () => {
expect(detectIntent("cos'è il DNA?")).toBeNull();
});
it("A-4. 'cosa è il quantum computing?' → null", () => {
expect(detectIntent("cosa è il quantum computing?")).toBeNull();
});
it("A-5. 'cosa sono i quark?' → null", () => {
expect(detectIntent("cosa sono i quark?")).toBeNull();
});
it("A-6. 'what is machine learning?' → null (_isDefinitionalShort EN)", () => {
expect(detectIntent("what is machine learning?")).toBeNull();
});
it("A-7. 'what are neural networks?' → null", () => {
expect(detectIntent("what are neural networks?")).toBeNull();
});
it("A-8. 'who is Marie Curie?' → null", () => {
expect(detectIntent("who is Marie Curie?")).toBeNull();
});
it("A-9. 'who was Leonardo da Vinci?' → null (_isHistoricalPerson EN)", () => {
expect(detectIntent("who was Leonardo da Vinci?")).toBeNull();
});
it("A-10. 'dimmi chi è Darwin' → null (_isInlineDefinitional)", () => {
expect(detectIntent("dimmi chi è Darwin")).toBeNull();
});
it("A-11. 'sai chi è Tesla?' → null (_isInlineDefinitional)", () => {
expect(detectIntent("sai chi è Tesla?")).toBeNull();
});
it("A-12. 'mi spieghi chi è Platone?' → null", () => {
expect(detectIntent("mi spieghi chi è Platone?")).toBeNull();
});
});
// ─── Gruppo B: Query live → tool corretto ─────────────────────────────────────
describe("S478: detectIntent — query live → tool corretto (non bloccato)", () => {
it("B-1. 'meteo a Milano domani' → get_weather", () => {
const r = detectIntent("meteo a Milano domani");
expect(r?.tool).toBe("get_weather");
});
it("B-2. 'ultime notizie di oggi' → get_news", () => {
const r = detectIntent("ultime notizie di oggi");
expect(r?.tool).toBe("get_news");
});
it("B-3. 'quanto costa Bitcoin adesso?' → web_search o get_currency", () => {
const r = detectIntent("quanto costa Bitcoin adesso?");
expect(r).not.toBeNull();
expect(["web_search", "get_currency", "math_eval"]).toContain(r?.tool);
});
it("B-4. 'chi ha vinto la Champions ieri sera?' → web_search (live: partita)", () => {
const r = detectIntent("chi ha vinto la Champions ieri sera?");
expect(r?.tool).toBe("web_search");
});
it("B-5. 'cerca su internet le ultime su OpenAI' → web_search (meta-search)", () => {
const r = detectIntent("cerca su internet le ultime su OpenAI");
expect(r?.tool).toBe("web_search");
});
it("B-6. 'genera un'immagine di un tramonto sul mare' → generate_image", () => {
const r = detectIntent("genera un'immagine di un tramonto sul mare");
expect(r?.tool).toBe("generate_image");
});
});
// ─── Gruppo C: Edge case — "chi è attuale/in carica" → live ──────────────────
describe("S478: detectIntent — 'chi è attuale/in carica' = live, non bloccato", () => {
it("C-1. 'chi è il presidente degli USA adesso?' → web_search (live: adesso)", () => {
const r = detectIntent("chi è il presidente degli USA adesso?");
expect(r?.tool).toBe("web_search");
});
it("C-2. 'chi è il governo attuale italiano?' → web_search (live: governo + attuale)", () => {
const r = detectIntent("chi è il governo attuale italiano?");
expect(r?.tool).toBe("web_search");
});
it("C-3. 'chi è in carica come ministro?' → web_search (live: in carica)", () => {
const r = detectIntent("chi è in carica come ministro?");
expect(r?.tool).toBe("web_search");
});
});
// ─── Gruppo D: Math eval — non bloccato da guard definitorio ─────────────────
describe("S478: detectIntent — math eval non interferisce con guard", () => {
it("D-1. '123 * 456' → math_eval (non bloccato da _isDefinitionalShort)", () => {
const r = detectIntent("123 * 456");
expect(r?.tool).toBe("math_eval");
});
it("D-2. 'calcola sqrt(144)' → math_eval", () => {
const r = detectIntent("calcola sqrt(144)");
expect(r?.tool).toBe("math_eval");
});
});