mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
World Info: Add scanning with AN
Add support for adding extension prompts into WI scanning. Doing this required adding a method to get extension prompts by name. Now, AN and depth prompts can be added to world info scanning. However, since scanning just looks for keys in the chatlog, append the extension prompts on the top of scanned text. Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
@ -4580,6 +4580,11 @@
|
|||||||
Tokens: <span id="extension_floating_prompt_token_counter">0</span>
|
Tokens: <span id="extension_floating_prompt_token_counter">0</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<label class="checkbox_label" for="extension_floating_allow_wi_scan">
|
||||||
|
<input id="extension_floating_allow_wi_scan" type="checkbox" />
|
||||||
|
<span data-i18n="Include in World Info Scanning">Include in World Info Scanning</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
<div class="floating_prompt_radio_group">
|
<div class="floating_prompt_radio_group">
|
||||||
<label>
|
<label>
|
||||||
<input type="radio" name="extension_floating_position" value="2" />
|
<input type="radio" name="extension_floating_position" value="2" />
|
||||||
|
@ -212,6 +212,7 @@ export {
|
|||||||
saveChat,
|
saveChat,
|
||||||
messageFormatting,
|
messageFormatting,
|
||||||
getExtensionPrompt,
|
getExtensionPrompt,
|
||||||
|
getExtensionPromptByName,
|
||||||
showSwipeButtons,
|
showSwipeButtons,
|
||||||
hideSwipeButtons,
|
hideSwipeButtons,
|
||||||
changeMainAPI,
|
changeMainAPI,
|
||||||
@ -2069,6 +2070,15 @@ function getAllExtensionPrompts() {
|
|||||||
return value.length ? substituteParams(value) : '';
|
return value.length ? substituteParams(value) : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wrapper to fetch extension prompts by module name
|
||||||
|
function getExtensionPromptByName(moduleName) {
|
||||||
|
if (moduleName) {
|
||||||
|
return substituteParams(extension_prompts[moduleName]?.value);
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function getExtensionPrompt(position = 0, depth = undefined, separator = "\n") {
|
function getExtensionPrompt(position = 0, depth = undefined, separator = "\n") {
|
||||||
let extension_prompt = Object.keys(extension_prompts)
|
let extension_prompt = Object.keys(extension_prompts)
|
||||||
.sort()
|
.sort()
|
||||||
|
@ -235,6 +235,7 @@ function loadSettings() {
|
|||||||
chat_metadata[metadata_keys.depth] = chat_metadata[metadata_keys.depth] ?? extension_settings.note.defaultDepth ?? DEFAULT_DEPTH;
|
chat_metadata[metadata_keys.depth] = chat_metadata[metadata_keys.depth] ?? extension_settings.note.defaultDepth ?? DEFAULT_DEPTH;
|
||||||
$('#extension_floating_prompt').val(chat_metadata[metadata_keys.prompt]);
|
$('#extension_floating_prompt').val(chat_metadata[metadata_keys.prompt]);
|
||||||
$('#extension_floating_interval').val(chat_metadata[metadata_keys.interval]);
|
$('#extension_floating_interval').val(chat_metadata[metadata_keys.interval]);
|
||||||
|
$('#extension_floating_allow_wi_scan').prop('checked', extension_settings.note.allowWIScan ?? false);
|
||||||
$('#extension_floating_depth').val(chat_metadata[metadata_keys.depth]);
|
$('#extension_floating_depth').val(chat_metadata[metadata_keys.depth]);
|
||||||
$(`input[name="extension_floating_position"][value="${chat_metadata[metadata_keys.position]}"]`).prop('checked', true);
|
$(`input[name="extension_floating_position"][value="${chat_metadata[metadata_keys.position]}"]`).prop('checked', true);
|
||||||
|
|
||||||
@ -389,6 +390,11 @@ function onChatChanged() {
|
|||||||
$('#extension_floating_default_token_counter').text(tokenCounter3);
|
$('#extension_floating_default_token_counter').text(tokenCounter3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onAllowWIScanCheckboxChanged() {
|
||||||
|
extension_settings.note.allowWIScan = !!$(this).prop('checked');
|
||||||
|
updateSettings();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inject author's note options and setup event listeners.
|
* Inject author's note options and setup event listeners.
|
||||||
*/
|
*/
|
||||||
@ -402,6 +408,7 @@ export function initAuthorsNote() {
|
|||||||
$('#extension_floating_default').on('input', onExtensionFloatingDefaultInput);
|
$('#extension_floating_default').on('input', onExtensionFloatingDefaultInput);
|
||||||
$('#extension_default_depth').on('input', onDefaultDepthInput);
|
$('#extension_default_depth').on('input', onDefaultDepthInput);
|
||||||
$('#extension_default_interval').on('input', onDefaultIntervalInput);
|
$('#extension_default_interval').on('input', onDefaultIntervalInput);
|
||||||
|
$('#extension_floating_allow_wi_scan').on('input', onAllowWIScanCheckboxChanged);
|
||||||
$('input[name="extension_floating_position"]').on('change', onExtensionFloatingPositionInput);
|
$('input[name="extension_floating_position"]').on('change', onExtensionFloatingPositionInput);
|
||||||
$('input[name="extension_default_position"]').on('change', onDefaultPositionInput);
|
$('input[name="extension_default_position"]').on('change', onDefaultPositionInput);
|
||||||
$('input[name="extension_floating_char_position"]').on('change', onExtensionFloatingCharPositionInput);
|
$('input[name="extension_floating_char_position"]').on('change', onExtensionFloatingCharPositionInput);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { saveSettings, callPopup, substituteParams, getRequestHeaders, chat_metadata, this_chid, characters, saveCharacterDebounced, menu_type, eventSource, event_types } from "../script.js";
|
import { saveSettings, callPopup, substituteParams, getRequestHeaders, chat_metadata, this_chid, characters, saveCharacterDebounced, menu_type, eventSource, event_types, getExtensionPrompt, MAX_INJECTION_DEPTH, extension_prompt_types, getExtensionPromptByName } from "../script.js";
|
||||||
import { download, debounce, initScrollHeight, resetScrollHeight, parseJsonFile, extractDataFromPng, getFileBuffer, getCharaFilename, getSortableDelay, escapeRegex, PAGINATION_TEMPLATE, navigation_option, waitUntilCondition } from "./utils.js";
|
import { download, debounce, initScrollHeight, resetScrollHeight, parseJsonFile, extractDataFromPng, getFileBuffer, getCharaFilename, getSortableDelay, escapeRegex, PAGINATION_TEMPLATE, navigation_option, waitUntilCondition } from "./utils.js";
|
||||||
import { getContext } from "./extensions.js";
|
import { extension_settings, getContext } from "./extensions.js";
|
||||||
import { NOTE_MODULE_NAME, metadata_keys, shouldWIAddPrompt } from "./authors-note.js";
|
import { NOTE_MODULE_NAME, metadata_keys, shouldWIAddPrompt } from "./authors-note.js";
|
||||||
import { registerSlashCommand } from "./slash-commands.js";
|
import { registerSlashCommand } from "./slash-commands.js";
|
||||||
import { getDeviceInfo } from "./RossAscends-mods.js";
|
import { getDeviceInfo } from "./RossAscends-mods.js";
|
||||||
@ -581,8 +581,8 @@ function getWorldEntry(name, data, entry) {
|
|||||||
data.entries[uid].selectiveLogic = !isNaN(value) ? value : 0;
|
data.entries[uid].selectiveLogic = !isNaN(value) ? value : 0;
|
||||||
setOriginalDataValue(data, uid, "selectiveLogic", data.entries[uid].selectiveLogic);
|
setOriginalDataValue(data, uid, "selectiveLogic", data.entries[uid].selectiveLogic);
|
||||||
saveWorldInfo(name, data);
|
saveWorldInfo(name, data);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
template
|
template
|
||||||
.find(`select[name="entryLogicType"] option[value=${entry.selectiveLogic}]`)
|
.find(`select[name="entryLogicType"] option[value=${entry.selectiveLogic}]`)
|
||||||
.prop("selected", true)
|
.prop("selected", true)
|
||||||
@ -1341,7 +1341,27 @@ async function getSortedEntries() {
|
|||||||
async function checkWorldInfo(chat, maxContext) {
|
async function checkWorldInfo(chat, maxContext) {
|
||||||
const context = getContext();
|
const context = getContext();
|
||||||
const messagesToLookBack = world_info_depth * 2 || 1;
|
const messagesToLookBack = world_info_depth * 2 || 1;
|
||||||
let textToScan = transformString(chat.slice(0, messagesToLookBack).join(""));
|
|
||||||
|
// Combine the chat
|
||||||
|
let textToScan = chat.slice(0, messagesToLookBack).join("");
|
||||||
|
|
||||||
|
// Add the depth or AN if enabled
|
||||||
|
// Put this code here since otherwise, the chat reference is modified
|
||||||
|
if (extension_settings.note.allowWIScan) {
|
||||||
|
let depthPrompt = getExtensionPromptByName("DEPTH_PROMPT")
|
||||||
|
if (depthPrompt) {
|
||||||
|
textToScan = `${depthPrompt}\n${textToScan}`
|
||||||
|
}
|
||||||
|
|
||||||
|
let anPrompt = getExtensionPromptByName(NOTE_MODULE_NAME);
|
||||||
|
if (anPrompt) {
|
||||||
|
textToScan = `${anPrompt}\n${textToScan}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transform the resulting string
|
||||||
|
textToScan = transformString(textToScan);
|
||||||
|
|
||||||
let needsToScan = true;
|
let needsToScan = true;
|
||||||
let count = 0;
|
let count = 0;
|
||||||
let allActivatedEntries = new Set();
|
let allActivatedEntries = new Set();
|
||||||
|
Reference in New Issue
Block a user