mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Yoink reasoning placeholder from being saved
This commit is contained in:
@ -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;
|
||||||
|
Reference in New Issue
Block a user