diff --git a/public/index.html b/public/index.html
index ef4822f6a..9dcf387b3 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2713,6 +2713,44 @@
(0 = disabled)
+
+
+
+
+ Min Activations
+
+
+
+ (0 = disabled) scan chronologically until min entries or token budget filled
+
+
+
+
+ Min Activations: Max Depth
+
+
+
+ (0 = chronological scan depth unlimited, token budget recommended if min is high)
+
+
+
+
diff --git a/public/scripts/world-info.js b/public/scripts/world-info.js
index 6148e09d8..ec990f763 100644
--- a/public/scripts/world-info.js
+++ b/public/scripts/world-info.js
@@ -12,6 +12,8 @@ export {
world_info,
world_info_budget,
world_info_depth,
+ world_info_min_activations,
+ world_info_min_activations_depth_max,
world_info_recursive,
world_info_overflow_alert,
world_info_case_sensitive,
@@ -66,6 +68,8 @@ export function getWorldInfoSettings() {
return {
world_info,
world_info_depth,
+ world_info_min_activations,
+ world_info_min_activations_depth_max,
world_info_budget,
world_info_recursive,
world_info_overflow_alert,
@@ -105,6 +109,10 @@ async function getWorldInfoPrompt(chat2, maxContext) {
function setWorldInfoSettings(settings, data) {
if (settings.world_info_depth !== undefined)
world_info_depth = Number(settings.world_info_depth);
+ if (settings.world_info_min_activations !== undefined)
+ world_info_min_activations = Number(settings.world_info_min_activations);
+ if (settings.world_info_min_activations_depth_max !== undefined)
+ world_info_min_activations_depth_max = Number(settings.world_info_min_activations_depth_max);
if (settings.world_info_budget !== undefined)
world_info_budget = Number(settings.world_info_budget);
if (settings.world_info_recursive !== undefined)
@@ -141,6 +149,12 @@ function setWorldInfoSettings(settings, data) {
$("#world_info_depth_counter").val(world_info_depth);
$("#world_info_depth").val(world_info_depth);
+ $("#world_info_min_activations_counter").val(world_info_min_activations);
+ $("#world_info_min_activations").val(world_info_min_activations);
+
+ $("#world_info_min_activations_depth_max_counter").val(world_info_min_activations_depth_max);
+ $("#world_info_min_activations_depth_max").val(world_info_min_activations_depth_max);
+
$("#world_info_budget_counter").val(world_info_budget);
$("#world_info_budget").val(world_info_budget);
@@ -1406,6 +1420,7 @@ async function checkWorldInfo(chat, maxContext) {
textToScan = transformString(textToScan);
let needsToScan = true;
+ let token_budget_overflowed = false;
let count = 0;
let allActivatedEntries = new Set();
let failedProbabilityChecks = new Set();
@@ -1535,6 +1550,7 @@ async function checkWorldInfo(chat, maxContext) {
toastr.warning(`World info budget reached after ${allActivatedEntries.size} entries.`, 'World Info');
}
needsToScan = false;
+ token_budget_overflowed = true;
break;
}
@@ -1559,9 +1575,16 @@ async function checkWorldInfo(chat, maxContext) {
}
// world_info_min_activations
- if (!needsToScan) {
+ if (!needsToScan && !token_budget_overflowed) {
if (world_info_min_activations > 0 && (allActivatedEntries.size < world_info_min_activations)) {
- if (minActivationMsgIndex <= world_info_min_activations_depth_max) {
+ let over_max = false
+ over_max = (
+ world_info_min_activations_depth_max > 0 &&
+ minActivationMsgIndex > world_info_min_activations_depth_max
+ ) || (
+ minActivationMsgIndex >= chat.length
+ )
+ if (!over_max) {
needsToScan = true
textToScan = transformString(chat.slice(minActivationMsgIndex, minActivationMsgIndex + 1).join(""));
minActivationMsgIndex += 1
@@ -2063,6 +2086,18 @@ jQuery(() => {
saveSettings();
});
+ $(document).on("input", "#world_info_min_activations", function () {
+ world_info_min_activations = Number($(this).val());
+ $("#world_info_min_activations_counter").val($(this).val());
+ saveSettings();
+ });
+
+ $(document).on("input", "#world_info_min_activations_depth_max", function () {
+ world_info_min_activations_depth_max = Number($(this).val());
+ $("#world_info_min_activations_depth_max_counter").val($(this).val());
+ saveSettings();
+ });
+
$(document).on("input", "#world_info_budget", function () {
world_info_budget = Number($(this).val());
$("#world_info_budget_counter").val($(this).val());