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