Extend impersonate/continue/regenerate with possible custom prompts

- Use custom prompt provided via slash command arguments (similar to /sysgen and others)
- Use written text from textbox, if the popout menu actions are clicked
This commit is contained in:
Wolfsblvt 2024-02-19 01:17:04 +01:00
parent 2e00a1baaf
commit 550d8483cc
2 changed files with 14 additions and 7 deletions

View File

@ -7864,9 +7864,9 @@ async function importFromURL(items, files) {
} }
} }
async function doImpersonate() { async function doImpersonate(_, prompt) {
$('#send_textarea').val(''); $('#send_textarea').val('');
$('#option_impersonate').trigger('click', { fromSlashCommand: true }); $('#option_impersonate').trigger('click', { fromSlashCommand: true, additionalPrompt: prompt });
} }
async function doDeleteChat() { async function doDeleteChat() {
@ -8682,6 +8682,13 @@ jQuery(async function () {
const fromSlashCommand = customData?.fromSlashCommand || false; const fromSlashCommand = customData?.fromSlashCommand || false;
var id = $(this).attr('id'); var id = $(this).attr('id');
// Check whether a custom prompt was provided via custom data (for example through a slash command), otherwise fall back and use the text from the textbox, if there is any
const additionalPrompt = (customData?.additionalPrompt && customData.additionalPrompt.trim()) || (String($('#send_textarea').val()).trim() || undefined);
const buildOrFillAdditionalArgs = (args = {}) => ({
...args,
...(additionalPrompt !== undefined && { quiet_prompt: additionalPrompt, quietToLoud: true }),
});
if (id == 'option_select_chat') { if (id == 'option_select_chat') {
if ((selected_group && !is_group_generating) || (this_chid !== undefined && !is_send_press) || fromSlashCommand) { if ((selected_group && !is_group_generating) || (this_chid !== undefined && !is_send_press) || fromSlashCommand) {
await displayPastChats(); await displayPastChats();
@ -8717,7 +8724,7 @@ jQuery(async function () {
} }
else { else {
is_send_press = true; is_send_press = true;
Generate('regenerate'); Generate('regenerate', buildOrFillAdditionalArgs());
} }
} }
} }
@ -8725,14 +8732,14 @@ jQuery(async function () {
else if (id == 'option_impersonate') { else if (id == 'option_impersonate') {
if (is_send_press == false || fromSlashCommand) { if (is_send_press == false || fromSlashCommand) {
is_send_press = true; is_send_press = true;
Generate('impersonate'); Generate('impersonate', buildOrFillAdditionalArgs());
} }
} }
else if (id == 'option_continue') { else if (id == 'option_continue') {
if (is_send_press == false || fromSlashCommand) { if (is_send_press == false || fromSlashCommand) {
is_send_press = true; is_send_press = true;
Generate('continue'); Generate('continue', buildOrFillAdditionalArgs());
} }
} }

View File

@ -1168,7 +1168,7 @@ async function openChat(id) {
await reloadCurrentChat(); await reloadCurrentChat();
} }
function continueChatCallback() { function continueChatCallback(_, prompt) {
setTimeout(async () => { setTimeout(async () => {
try { try {
await waitUntilCondition(() => !is_send_press && !is_group_generating, 10000, 100); await waitUntilCondition(() => !is_send_press && !is_group_generating, 10000, 100);
@ -1179,7 +1179,7 @@ function continueChatCallback() {
// Prevent infinite recursion // Prevent infinite recursion
$('#send_textarea').val('').trigger('input'); $('#send_textarea').val('').trigger('input');
$('#option_continue').trigger('click', { fromSlashCommand: true }); $('#option_continue').trigger('click', { fromSlashCommand: true, additionalPrompt: prompt });
}, 1); }, 1);
return ''; return '';