Reasoning: Support auto-parse for impersonation results (#4489)

6221c540e4f1c208ed534c1fa9affad32b28efdb

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
2 files changed, +27 -2Ignore whitespace
public/scripts/extensions/translate/index.js+4 -2
@@ -182,9 +182,11 @@ function isGeneratingSwipe(messageId) {
182182 return $(`#chat .mes[mesid="${messageId}"] .mes_text`).text() === '...';
183183}
184184
185185async function translateImpersonate(text) {
186+ const sendTextArea = $('#send_textarea');
187+ const text = sendTextArea.val().toString();
186188 const translatedText = await translate(text, extension_settings.translate.target_language);
187189 $('#send_textarea')sendTextArea.val(translatedText);
188190}
189191
190192/**
public/scripts/reasoning.js+23 -0
@@ -1348,6 +1348,29 @@ function registerReasoningAppEvents() {
13481348 for (const event of [event_types.GENERATION_STOPPED, event_types.GENERATION_ENDED, event_types.CHAT_CHANGED]) {
13491349 eventSource.on(event, () => PromptReasoning.clearLatest());
13501350 }
1351+
1352+ eventSource.makeFirst(event_types.IMPERSONATE_READY, async () => {
1353+ if (!power_user.reasoning.auto_parse) {
1354+ return;
1355+ }
1356+
1357+ const sendTextArea = /** @type {HTMLTextAreaElement} */ (document.getElementById('send_textarea'));
1358+
1359+ if (!sendTextArea) {
1360+ console.warn('[Reasoning] Send textarea not found');
1361+ return;
1362+ }
1363+
1364+ console.debug('[Reasoning] Auto-parsing reasoning block for impersonation');
1365+
1366+ if (!sendTextArea.value) {
1367+ console.debug('[Reasoning] Reasoning is empty, skipping');
1368+ return;
1369+ }
1370+
1371+ sendTextArea.value = removeReasoningFromString(sendTextArea.value);
1372+ sendTextArea.dispatchEvent(new Event('input', { bubbles: true }));
1373+ });
13511374}
13521375
13531376/**