Second macro evaluation of WI for all positions

- The first macro evaluation occurs when the entry is activated.
- The second macro evaluation occurs after the regex replacement 
  * and only when the entry is before or after the char definition
this may cause confusion for users.
I'm not sure if this is the right thing to do, but it's one way I can think of to make all this make more sense.
This commit is contained in:
steve green
2024-09-19 10:16:42 +08:00
committed by GitHub
parent 83c3f6d1bf
commit 8edc999854

View File

@@ -4125,7 +4125,9 @@ export async function checkWorldInfo(chat, maxContext, isDryRun) {
// TODO (kingbri): Change to use WI Anchor positioning instead of separate top/bottom arrays // TODO (kingbri): Change to use WI Anchor positioning instead of separate top/bottom arrays
[...allActivatedEntries].sort(sortFn).forEach((entry) => { [...allActivatedEntries].sort(sortFn).forEach((entry) => {
const regexDepth = entry.position === world_info_position.atDepth ? (entry.depth ?? DEFAULT_DEPTH) : null; const regexDepth = entry.position === world_info_position.atDepth ? (entry.depth ?? DEFAULT_DEPTH) : null;
const content = getRegexedString(entry.content, regex_placement.WORLD_INFO, { depth: regexDepth, isMarkdown: false, isPrompt: true }); const content = substituteParams(
getRegexedString(entry.content, regex_placement.WORLD_INFO, { depth: regexDepth, isMarkdown: false, isPrompt: true })
);
if (!content) { if (!content) {
console.debug(`[WI] Entry ${entry.uid}`, 'skipped adding to prompt due to empty content', entry); console.debug(`[WI] Entry ${entry.uid}`, 'skipped adding to prompt due to empty content', entry);
@@ -4134,10 +4136,10 @@ export async function checkWorldInfo(chat, maxContext, isDryRun) {
switch (entry.position) { switch (entry.position) {
case world_info_position.before: case world_info_position.before:
WIBeforeEntries.unshift(substituteParams(content)); WIBeforeEntries.unshift(content);
break; break;
case world_info_position.after: case world_info_position.after:
WIAfterEntries.unshift(substituteParams(content)); WIAfterEntries.unshift(content);
break; break;
case world_info_position.EMTop: case world_info_position.EMTop:
EMEntries.unshift( EMEntries.unshift(