From 0ff4ff4667c6c74449e8e8dbc03fa62852e920b0 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Fri, 8 May 2026 15:47:18 +0530 Subject: [PATCH] fix(qa-lab): harden mock telegram prompt routing --- .../src/providers/mock-openai/server.test.ts | 93 +++++++++++++++++++ .../src/providers/mock-openai/server.ts | 11 ++- 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/extensions/qa-lab/src/providers/mock-openai/server.test.ts b/extensions/qa-lab/src/providers/mock-openai/server.test.ts index 26c3b06e2e5..c1a699a90c2 100644 --- a/extensions/qa-lab/src/providers/mock-openai/server.test.ts +++ b/extensions/qa-lab/src/providers/mock-openai/server.test.ts @@ -1853,6 +1853,99 @@ describe("qa mock openai server", () => { }); }); + it("lets the latest exact marker prompt beat stale Telegram session_status history", async () => { + const server = await startQaMockOpenAiServer({ + host: "127.0.0.1", + port: 0, + }); + cleanups.push(async () => { + await server.stop(); + }); + + const response = await fetch(`${server.baseUrl}/v1/responses`, { + method: "POST", + headers: { + "content-type": "application/json", + }, + body: JSON.stringify({ + stream: false, + input: [ + { + role: "user", + content: [ + { + type: "input_text", + text: "Telegram current session_status QA check. Call session_status with sessionKey set to current.", + }, + ], + }, + { + role: "user", + content: [ + { + type: "input_text", + text: "Telegram reply-chain marker QA. Reply exactly: QA-TELEGRAM-REPLY-CHAIN-OK", + }, + ], + }, + ], + }), + }); + + expect(response.status).toBe(200); + expect(await response.json()).toMatchObject({ + output: [ + { + content: [{ text: "QA-TELEGRAM-REPLY-CHAIN-OK" }], + }, + ], + }); + }); + + it("does not repeat stale Telegram session_status for later ordinary prompts", async () => { + const server = await startQaMockOpenAiServer({ + host: "127.0.0.1", + port: 0, + }); + cleanups.push(async () => { + await server.stop(); + }); + + const response = await fetch(`${server.baseUrl}/v1/responses`, { + method: "POST", + headers: { + "content-type": "application/json", + }, + body: JSON.stringify({ + stream: false, + input: [ + { + role: "user", + content: [ + { + type: "input_text", + text: "Telegram current session_status QA check. Call session_status with sessionKey set to current.", + }, + ], + }, + { + role: "user", + content: [ + { + type: "input_text", + text: "@sut Telegram QA mention routing check. Reply with a short acknowledgement.", + }, + ], + }, + ], + }), + }); + + expect(response.status).toBe(200); + const payload = await response.json(); + expect(JSON.stringify(payload)).not.toContain("QA-TELEGRAM-CURRENT-SESSION"); + }); + it("uses exact marker directives from request context when the latest user text is generic", async () => { const server = await startQaMockOpenAiServer({ host: "127.0.0.1", diff --git a/extensions/qa-lab/src/providers/mock-openai/server.ts b/extensions/qa-lab/src/providers/mock-openai/server.ts index c775b3127c0..c27bffdc0c2 100644 --- a/extensions/qa-lab/src/providers/mock-openai/server.ts +++ b/extensions/qa-lab/src/providers/mock-openai/server.ts @@ -1421,7 +1421,16 @@ async function buildResponsesPayload( exactMarkerDirective ?? exactReplyDirective ?? "QA-GROUP-FALLBACK-OK", ); } - if (QA_TELEGRAM_CURRENT_SESSION_STATUS_PROMPT_RE.test(allInputText)) { + if (/\bmarker\b/i.test(prompt) && exactReplyDirective) { + return buildAssistantEvents(exactReplyDirective); + } + if (/\bmarker\b/i.test(prompt) && exactMarkerDirective) { + return buildAssistantEvents(exactMarkerDirective); + } + const isTelegramCurrentSessionStatusTurn = + QA_TELEGRAM_CURRENT_SESSION_STATUS_PROMPT_RE.test(prompt) || + (Boolean(toolOutput) && QA_TELEGRAM_CURRENT_SESSION_STATUS_PROMPT_RE.test(allInputText)); + if (isTelegramCurrentSessionStatusTurn) { if (!toolOutput && hasDeclaredTool(body, "session_status")) { return buildToolCallEventsWithArgs("session_status", { sessionKey: "current" }); }