fix WI2AN insertions

This commit is contained in:
RossAscends
2023-06-20 17:59:01 +09:00
parent 9c28126ccd
commit 3b66310dd2
4 changed files with 80 additions and 61 deletions

View File

@ -18,6 +18,7 @@ const UPDATE_INTERVAL = 1000;
const DEFAULT_DEPTH = 4;
const DEFAULT_POSITION = 1;
const DEFAULT_INTERVAL = 1;
export var shouldWIAddPrompt = false;
export const metadata_keys = {
prompt: 'note_prompt',
@ -72,6 +73,12 @@ function setNotePositionCommand(_, text) {
toastr.info("Author's Note position updated");
}
function updateSettings() {
saveSettingsDebounced();
loadSettings();
setFloatingPrompt();
}
const setMainPromptTokenCounterDebounced = debounce((value) => $('#extension_floating_prompt_token_counter').text(getTokenCount(value)), 1000);
const setCharaPromptTokenCounterDebounced = debounce((value) => $('#extension_floating_chara_token_counter').text(getTokenCount(value)), 1000);
const setDefaultPromptTokenCounterDebounced = debounce((value) => $('#extension_floating_default_token_counter').text(getTokenCount(value)), 1000);
@ -79,12 +86,12 @@ const setDefaultPromptTokenCounterDebounced = debounce((value) => $('#extension_
async function onExtensionFloatingPromptInput() {
chat_metadata[metadata_keys.prompt] = $(this).val();
setMainPromptTokenCounterDebounced(chat_metadata[metadata_keys.prompt]);
saveMetadataDebounced();
updateSettings();
}
async function onExtensionFloatingIntervalInput() {
chat_metadata[metadata_keys.interval] = Number($(this).val());
saveMetadataDebounced();
updateSettings();
}
async function onExtensionFloatingDepthInput() {
@ -96,12 +103,12 @@ async function onExtensionFloatingDepthInput() {
}
chat_metadata[metadata_keys.depth] = value;
saveMetadataDebounced();
updateSettings();
}
async function onExtensionFloatingPositionInput(e) {
chat_metadata[metadata_keys.position] = e.target.value;
saveMetadataDebounced();
updateSettings();
}
function onExtensionFloatingCharaPromptInput() {
@ -147,7 +154,7 @@ function onExtensionFloatingCharaPromptInput() {
return;
}
saveSettingsDebounced();
updateSettings();
}
function onExtensionFloatingCharaCheckboxChanged() {
@ -157,14 +164,14 @@ function onExtensionFloatingCharaCheckboxChanged() {
if (charaNote) {
charaNote.useChara = value;
saveSettingsDebounced();
updateSettings();
}
}
function onExtensionFloatingDefaultInput() {
extension_settings.note.default = $(this).val();
setDefaultPromptTokenCounterDebounced(extension_settings.note.default);
saveSettingsDebounced();
updateSettings();
}
function loadSettings() {
@ -190,18 +197,23 @@ function loadSettings() {
$('#extension_floating_default').val(extension_settings.note.default);
}
async function moduleWorker() {
export function setFloatingPrompt() {
const context = getContext();
console.log(context.characterId, context.groupId)
if (!context.groupId && context.characterId === undefined) {
return;
}
loadSettings();
// take the count of messages
let lastMessageNumber = Array.isArray(context.chat) && context.chat.length ? context.chat.filter(m => m.is_user).length : 0;
console.debug(`
setFloatingPrompt entered
------
lastMessageNumber = ${lastMessageNumber}
metadata_keys.interval = ${chat_metadata[metadata_keys.interval]}
`)
// interval 1 should be inserted no matter what
if (chat_metadata[metadata_keys.interval] === 1) {
lastMessageNumber = 1;
@ -217,6 +229,8 @@ async function moduleWorker() {
? (lastMessageNumber % chat_metadata[metadata_keys.interval])
: (chat_metadata[metadata_keys.interval] - lastMessageNumber);
const shouldAddPrompt = messagesTillInsertion == 0;
shouldWIAddPrompt = shouldAddPrompt;
console.debug(shouldAddPrompt, messagesTillInsertion);
let prompt = shouldAddPrompt ? $('#extension_floating_prompt').val() : '';
if (shouldAddPrompt && extension_settings.note.chara && getContext().characterId) {
@ -227,7 +241,6 @@ async function moduleWorker() {
prompt = charaNote.prompt;
}
}
context.setExtensionPrompt(MODULE_NAME, prompt, chat_metadata[metadata_keys.position], chat_metadata[metadata_keys.depth]);
$('#extension_floating_counter').text(shouldAddPrompt ? '0' : messagesTillInsertion);
}
@ -266,6 +279,8 @@ function onANMenuItemClick() {
}
function onChatChanged() {
loadSettings();
setFloatingPrompt();
const context = getContext();
// Disable the chara note if in a group
@ -403,12 +418,9 @@ setTimeout(function () {
}
addExtensionsSettings();
const wrapper = new ModuleWorkerWrapper(moduleWorker);
setInterval(wrapper.update.bind(wrapper), UPDATE_INTERVAL);
registerSlashCommand('note', setNoteTextCommand, [], "<span class='monospace'>(text)</span> sets an author's note for the currently selected chat", true, true);
registerSlashCommand('depth', setNoteDepthCommand, [], "<span class='monospace'>(number)</span> sets an author's note depth for in-chat positioning", true, true);
registerSlashCommand('freq', setNoteIntervalCommand, ['interval'], "<span class='monospace'>(number)</span> sets an author's note insertion frequency", true, true);
registerSlashCommand('pos', setNotePositionCommand, ['position'], "(<span class='monospace'>chat</span> or <span class='monospace'>scenario</span>) sets an author's note position", true, true);
eventSource.on(event_types.CHAT_CHANGED, onChatChanged);
window['AuthorNote_generateInterceptor'] = moduleWorker;
}, 1);