Yoink reasoning placeholder from being saved

This commit is contained in:
Wolfsblvt
2025-02-11 20:58:05 +01:00
parent 76bd2547e1
commit d60609716b

View File

@ -401,8 +401,7 @@ export class ReasoningHandler {
* Keeps track of the number of reasoning additions. * Keeps track of the number of reasoning additions.
*/ */
export class PromptReasoning { export class PromptReasoning {
static REASONING_PLACEHOLDER = '\u200B'; static REASONING_UI_PLACEHOLDER = '\u200B';
static REASONING_PLACEHOLDER_REGEX = new RegExp(`${PromptReasoning.REASONING_PLACEHOLDER}$`);
constructor() { constructor() {
this.counter = 0; this.counter = 0;
@ -433,8 +432,8 @@ export class PromptReasoning {
return content; return content;
} }
// No reasoning provided or a placeholder // No reasoning provided
if (!reasoning || reasoning === PromptReasoning.REASONING_PLACEHOLDER) { if (!reasoning) {
return content; return content;
} }
@ -518,7 +517,7 @@ function registerReasoningSlashCommands() {
const messageId = !isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : chat.length - 1; const messageId = !isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : chat.length - 1;
const message = chat[messageId]; const message = chat[messageId];
const reasoning = String(message?.extra?.reasoning ?? ''); const reasoning = String(message?.extra?.reasoning ?? '');
return reasoning.replace(PromptReasoning.REASONING_PLACEHOLDER_REGEX, ''); return reasoning;
}, },
})); }));
@ -645,7 +644,7 @@ function setReasoningEventHandlers() {
const textarea = document.createElement('textarea'); const textarea = document.createElement('textarea');
const reasoningBlock = messageBlock.find('.mes_reasoning'); const reasoningBlock = messageBlock.find('.mes_reasoning');
textarea.classList.add('reasoning_edit_textarea'); textarea.classList.add('reasoning_edit_textarea');
textarea.value = reasoning.replace(PromptReasoning.REASONING_PLACEHOLDER_REGEX, ''); textarea.value = reasoning;
$(textarea).insertBefore(reasoningBlock); $(textarea).insertBefore(reasoningBlock);
if (!CSS.supports('field-sizing', 'content')) { if (!CSS.supports('field-sizing', 'content')) {
@ -699,11 +698,17 @@ function setReasoningEventHandlers() {
const textarea = messageBlock.find('.reasoning_edit_textarea'); const textarea = messageBlock.find('.reasoning_edit_textarea');
textarea.remove(); textarea.remove();
// Make sure we remove the fake placeholder from the reasoning string
const text = messageBlock.find('.mes_reasoning').text();
if (text === PromptReasoning.REASONING_UI_PLACEHOLDER) {
messageBlock.find('.mes_reasoning').text('');
}
messageBlock.find('.mes_reasoning_edit_cancel:visible').trigger('click'); messageBlock.find('.mes_reasoning_edit_cancel:visible').trigger('click');
}); });
$(document).on('click', '.mes_edit_add_reasoning', async function () { $(document).on('click', '.mes_edit_add_reasoning', async function () {
const { message, messageId, messageBlock } = getMessageFromJquery(this); const { message, messageBlock } = getMessageFromJquery(this);
if (!message?.extra) { if (!message?.extra) {
return; return;
} }
@ -713,8 +718,9 @@ function setReasoningEventHandlers() {
return; return;
} }
message.extra.reasoning = PromptReasoning.REASONING_PLACEHOLDER; // To be able to edit, we need to "fake" content being there inside the reasoning string
updateMessageBlock(messageId, message, { rerenderMessage: false }); messageBlock.find('.mes_reasoning').text(PromptReasoning.REASONING_UI_PLACEHOLDER);
messageBlock.find('.mes_reasoning_edit').trigger('click'); messageBlock.find('.mes_reasoning_edit').trigger('click');
await saveChatConditional(); await saveChatConditional();
}); });
@ -742,7 +748,7 @@ function setReasoningEventHandlers() {
$(document).on('pointerup', '.mes_reasoning_copy', async function () { $(document).on('pointerup', '.mes_reasoning_copy', async function () {
const { message } = getMessageFromJquery(this); const { message } = getMessageFromJquery(this);
const reasoning = String(message?.extra?.reasoning ?? '').replace(PromptReasoning.REASONING_PLACEHOLDER_REGEX, ''); const reasoning = String(message?.extra?.reasoning ?? '');
if (!reasoning) { if (!reasoning) {
return; return;