diff --git a/ena-planner/ena-planner.js b/ena-planner/ena-planner.js index 37da073..c0c28c7 100644 --- a/ena-planner/ena-planner.js +++ b/ena-planner/ena-planner.js @@ -1274,6 +1274,10 @@ async function runPlanningOnce(rawUserInput, silent = false, options = {}) { function getSendTextarea() { return document.getElementById('send_textarea'); } function getSendButton() { return document.getElementById('send_but') || document.getElementById('send_button'); } +function isTrivialPlannerInput(text) { + return _bmeRuntime?.isTrivialUserInput?.(text)?.trivial === true; +} + function shouldInterceptNow() { const s = ensureSettings(); if (!s.enabled || state.isPlanning) return false; @@ -1281,6 +1285,7 @@ function shouldInterceptNow() { if (!ta) return false; const txt = String(ta.value ?? '').trim(); if (!txt) return false; + if (isTrivialPlannerInput(txt)) return false; if (state.bypassNextSend) return false; if (s.skipIfPlotPresent && / `scripts/extensions/third-party/${MODULE_NAME}`, + isTrivialUserInput, preparePlannerRecallHandoff, runPlannerRecallForEna, }); diff --git a/tests/trivial-user-input.mjs b/tests/trivial-user-input.mjs index 8a4ad4d..ba8402f 100644 --- a/tests/trivial-user-input.mjs +++ b/tests/trivial-user-input.mjs @@ -89,6 +89,28 @@ async function testUnderMinTokensSkipsRecallAndExtraction() { assert.equal(harness.result.getCurrentGenerationTrivialSkip(), null); } +async function testEmptyInputSkipsPriorHistoryFallback() { + const harness = await createGenerationRecallHarness(); + harness.chat = [{ is_user: true, mes: "older real user message" }]; + harness.__sendTextareaValue = " "; + + const startResult = harness.result.onGenerationStarted("normal", {}, false); + assert.equal(startResult, null); + assert.equal( + harness.result.getCurrentGenerationTrivialSkip()?.reason, + "empty", + ); + + await harness.result.onGenerationAfterCommands("normal", {}, false); + assert.equal(harness.runRecallCalls.length, 0); + + const beforeCombine = await harness.result.onBeforeCombinePrompts(); + assert.deepEqual(beforeCombine, { + skipped: true, + reason: "trivial:empty", + }); +} + async function testNormalInputStillRecalls() { const harness = await createGenerationRecallHarness(); harness.chat = []; @@ -263,6 +285,7 @@ await Promise.resolve(); testIsTrivialUserInputTable(); await testSlashCommandSkipsRecallAndExtraction(); await testUnderMinTokensSkipsRecallAndExtraction(); +await testEmptyInputSkipsPriorHistoryFallback(); await testNormalInputStillRecalls(); await testSentinelBlocksHistoryFallback(); await testAfterCommandsTrivialSentinelMarksExtractionBypass();