diff --git a/public/script.js b/public/script.js index 1bcc779f8..7e73ae363 100644 --- a/public/script.js +++ b/public/script.js @@ -1146,15 +1146,17 @@ function messageFormatting(mes, ch_name, isSystem, isUser) { let regexPlacement; if (isUser) { regexPlacement = regex_placement.USER_INPUT; - } else if (ch_name === "System") { - regexPlacement = regex_placement.SYSTEM; } else if (ch_name !== name2) { - regexPlacement = regex_placement.SENDAS; + regexPlacement = regex_placement.SLASH_COMMAND; } else { regexPlacement = regex_placement.AI_OUTPUT; } - mes = getRegexedString(mes, regexPlacement, { isMarkdown: true }); + // Always override the character name + mes = getRegexedString(mes, regexPlacement, { + characterOverride: ch_name, + isMarkdown: true + }); } if (power_user.auto_fix_generated_markdown) { @@ -5047,25 +5049,24 @@ function updateMessage(div) { const mesBlock = div.closest(".mes_block"); let text = mesBlock.find(".edit_textarea").val(); const mes = chat[this_edit_mes_id]; + let regexPlacement; - if (mes.is_name && !mes.is_user && mes.name !== name2) { - regexPlacement = regex_placement.SENDAS; - } else if (mes.is_name && !mes.is_user) { - regexPlacement = regex_placement.AI_OUTPUT; - } else if (mes.is_name && mes.is_user) { + if (mes.is_name && mes.is_user) { regexPlacement = regex_placement.USER_INPUT; - } else if (mes.extra?.type === "narrator") { - regexPlacement = regex_placement.SYSTEM; + } else if (mes.is_name && mes.name === name2) { + regexPlacement = regex_placement.AI_OUTPUT; + } else if (mes.is_name && mes.name !== name2 || mes.extra?.type === "narrator") { + regexPlacement = regex_placement.SLASH_COMMAND; } + // Ignore character override if sent as system text = getRegexedString( - text, - regexPlacement, - { - characterOverride: regexPlacement === regex_placement.SENDAS ? mes.name : undefined - } + text, + regexPlacement, + { characterOverride: mes.extra?.type === "narrator" ? undefined : mes.name } ); + if (power_user.trim_spaces) { text = text.trim(); } diff --git a/public/scripts/extensions/regex/editor.html b/public/scripts/extensions/regex/editor.html index f692cf06c..0443790fd 100644 --- a/public/scripts/extensions/regex/editor.html +++ b/public/scripts/extensions/regex/editor.html @@ -72,13 +72,7 @@
-
-
-
diff --git a/public/scripts/extensions/regex/engine.js b/public/scripts/extensions/regex/engine.js index 426f4c0eb..cab687c90 100644 --- a/public/scripts/extensions/regex/engine.js +++ b/public/scripts/extensions/regex/engine.js @@ -11,8 +11,7 @@ const regex_placement = { MD_DISPLAY: 0, USER_INPUT: 1, AI_OUTPUT: 2, - SYSTEM: 3, - SENDAS: 4 + SLASH_COMMAND: 3 } const regex_replace_strategy = { diff --git a/public/scripts/extensions/regex/index.js b/public/scripts/extensions/regex/index.js index 6a5061516..cb84876ae 100644 --- a/public/scripts/extensions/regex/index.js +++ b/public/scripts/extensions/regex/index.js @@ -201,6 +201,16 @@ function migrateSettings() { performSave = true; } + + // Old system and sendas placement migration + // 4 - sendAs + if (script.placement.includes(4)) { + script.placement = script.placement.length === 1 ? + [regex_placement.SLASH_COMMAND] : + script.placement = script.placement.filter((e) => e !== 4); + + performSave = true; + } }); if (performSave) { diff --git a/public/scripts/slash-commands.js b/public/scripts/slash-commands.js index c4b01bbcc..3e53feb7b 100644 --- a/public/scripts/slash-commands.js +++ b/public/scripts/slash-commands.js @@ -61,6 +61,7 @@ class SlashCommandParser { } parse(text) { + const excludedFromRegex = ["sendas"] const firstSpace = text.indexOf(' '); const command = firstSpace !== -1 ? text.substring(1, firstSpace) : text.substring(1); const args = firstSpace !== -1 ? text.substring(firstSpace + 1) : ''; @@ -82,6 +83,14 @@ class SlashCommandParser { } unnamedArg = argsArray.slice(Object.keys(argObj).length).join(' '); + + // Excluded commands format in their own function + if (!excludedFromRegex.includes(command)) { + unnamedArg = getRegexedString( + unnamedArg, + regex_placement.SLASH_COMMAND + ); + } } if (this.commands[command]) { @@ -177,8 +186,11 @@ async function generateSystemMessage(_, prompt) { return; } + // Generate and regex the output if applicable toastr.info('Please wait', 'Generating...'); - const message = await generateQuietPrompt(prompt); + let message = await generateQuietPrompt(prompt); + message = getRegexedString(message, regex_placement.SLASH_COMMAND); + sendNarratorMessage(_, message); } @@ -242,7 +254,9 @@ async function sendMessageAs(_, text) { const name = parts.shift().trim(); let mesText = parts.join('\n').trim(); - mesText = getRegexedString(mesText, regex_placement.SENDAS, { characterOverride: name }); + + // Requires a regex check after the slash command is pushed to output + mesText = getRegexedString(mesText, regex_placement.SLASH_COMMAND, { characterOverride: name }); // Messages that do nothing but set bias will be hidden from the context const bias = extractMessageBias(mesText); @@ -286,8 +300,6 @@ async function sendNarratorMessage(_, text) { return; } - text = getRegexedString(text, regex_placement.SYSTEM); - const name = chat_metadata[NARRATOR_NAME_KEY] || NARRATOR_NAME_DEFAULT; // Messages that do nothing but set bias will be hidden from the context const bias = extractMessageBias(text);