From 3e834663308f912ebc9165a9f571ea1b6f16c9c7 Mon Sep 17 00:00:00 2001 From: Hao19911125 <99091644+Hao19911125@users.noreply.github.com> Date: Mon, 6 Apr 2026 09:28:43 +0800 Subject: [PATCH] Add diagnostics in callLLMForJSON to track message assembly and regex cleaning Logs message counts and roles after buildJsonAttemptMessages and applyTaskFinalInputRegex to identify if user messages are lost during final assembly or regex cleaning stage. Co-Authored-By: Claude Opus 4.6 --- llm.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/llm.js b/llm.js index 0c8f406..d32054d 100644 --- a/llm.js +++ b/llm.js @@ -1583,10 +1583,43 @@ export async function callLLMForJSON({ additionalMessages, promptMessages, ); + { + const asmUser = assembledMessages.filter((m) => m?.role === "user"); + console.log( + `[ST-BME][prompt-diag] buildJsonAttemptMessages: ` + + `total=${assembledMessages.length}, user=${asmUser.length}, ` + + `roles=[${assembledMessages.map((m) => m?.role).join(",")}]`, + ); + for (const m of asmUser) { + console.log( + `[ST-BME][prompt-diag] assembled user: len=${String(m.content || "").length}, ` + + `preview="${String(m.content || "").slice(0, 80)}..."`, + ); + } + } const requestCleaning = applyTaskFinalInputRegex( taskType, assembledMessages, ); + { + const rcMsgs = Array.isArray(requestCleaning.messages) ? requestCleaning.messages : []; + const rcUser = rcMsgs.filter((m) => m?.role === "user"); + const dbg = requestCleaning.debug || {}; + console.log( + `[ST-BME][prompt-diag] applyTaskFinalInputRegex: ` + + `total=${rcMsgs.length}, user=${rcUser.length}, ` + + `changed=${dbg.changed}, applied=${dbg.applied}, ` + + `roles=[${rcMsgs.map((m) => m?.role).join(",")}]`, + ); + if (rcUser.length === 0 && assembledMessages.filter((m) => m?.role === "user").length > 0) { + console.warn( + `[ST-BME][prompt-diag] *** USER MESSAGES LOST during applyTaskFinalInputRegex! ***`, + ); + for (const rule of dbg.appliedRules || []) { + console.warn(`[ST-BME][prompt-diag] applied rule: ${JSON.stringify(rule)}`); + } + } + } const promptExecutionSnapshot = attachRequestCleaningToPromptExecution( promptExecutionSummary, requestCleaning.debug,