mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Allow setting floating prompt for each chat. Add extensions management
This commit is contained in:
@ -2,8 +2,6 @@ import { getContext } from "../../extensions.js";
|
||||
export { MODULE_NAME };
|
||||
|
||||
const MODULE_NAME = '2_floating_prompt'; // <= Deliberate, for sorting lower than memory
|
||||
const PROMPT_KEY = 'extensions_floating_prompt';
|
||||
const INTERVAL_KEY = 'extensions_floating_interval';
|
||||
const UPDATE_INTERVAL = 1000;
|
||||
|
||||
let lastMessageNumber = null;
|
||||
@ -18,20 +16,29 @@ function onExtensionFloatingIntervalInput() {
|
||||
saveSettings();
|
||||
}
|
||||
|
||||
function getLocalStorageKeys() {
|
||||
const context = getContext();
|
||||
const keySuffix = context.groupId ? context.groupId : `${context.characters[context.characterId].name}_${context.chatId}`;
|
||||
return { prompt: `extensions_floating_prompt_${keySuffix}`, interval: `extensions_floating_interval_${keySuffix}` };
|
||||
}
|
||||
|
||||
function loadSettings() {
|
||||
const prompt = localStorage.getItem(PROMPT_KEY);
|
||||
const interval = localStorage.getItem(INTERVAL_KEY);
|
||||
const keys = getLocalStorageKeys();
|
||||
const prompt = localStorage.getItem(keys.prompt) ?? '';
|
||||
const interval = localStorage.getItem(keys.interval) ?? 0;
|
||||
$('#extension_floating_prompt').val(prompt).trigger('input');
|
||||
$('#extension_floating_interval').val(interval).trigger('input');
|
||||
}
|
||||
|
||||
function saveSettings() {
|
||||
localStorage.setItem(PROMPT_KEY, $('#extension_floating_prompt').val());
|
||||
localStorage.setItem(INTERVAL_KEY, $('#extension_floating_interval').val());
|
||||
const keys = getLocalStorageKeys();
|
||||
localStorage.setItem(keys.prompt, $('#extension_floating_prompt').val());
|
||||
localStorage.setItem(keys.interval, $('#extension_floating_interval').val());
|
||||
}
|
||||
|
||||
async function moduleWorker() {
|
||||
const context = getContext();
|
||||
loadSettings();
|
||||
|
||||
// take the count of messages
|
||||
lastMessageNumber = Array.isArray(context.chat) && context.chat.length ? context.chat.filter(m => m.is_user).length : 0;
|
||||
@ -41,7 +48,9 @@ async function moduleWorker() {
|
||||
return;
|
||||
}
|
||||
|
||||
const messagesTillInsertion = (lastMessageNumber % promptInsertionInterval);
|
||||
const messagesTillInsertion = lastMessageNumber >= promptInsertionInterval
|
||||
? (lastMessageNumber % promptInsertionInterval)
|
||||
: (promptInsertionInterval - lastMessageNumber);
|
||||
const shouldAddPrompt = messagesTillInsertion == 0;
|
||||
const prompt = shouldAddPrompt ? $('#extension_floating_prompt').val() : '';
|
||||
context.setExtensionPrompt(MODULE_NAME, prompt);
|
||||
@ -67,6 +76,5 @@ async function moduleWorker() {
|
||||
}
|
||||
|
||||
addExtensionsSettings();
|
||||
loadSettings();
|
||||
setInterval(moduleWorker, UPDATE_INTERVAL);
|
||||
})();
|
Reference in New Issue
Block a user