mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	WI-to-AN for real this time.
This commit is contained in:
		| @@ -2915,7 +2915,12 @@ | |||||||
|                                 </div> |                                 </div> | ||||||
|                                 <div> |                                 <div> | ||||||
|                                     <label><input type="radio" name="position" value="2"> |                                     <label><input type="radio" name="position" value="2"> | ||||||
|                                         <span data-i18n="Author's Note">Author's Note</span> |                                         <span data-i18n="Author's Note">Author's Note Top</span> | ||||||
|  |                                     </label> | ||||||
|  |                                 </div> | ||||||
|  |                                 <div> | ||||||
|  |                                     <label><input type="radio" name="position" value="3"> | ||||||
|  |                                         <span data-i18n="Author's Note">Author's Note Bottom</span> | ||||||
|                                     </label> |                                     </label> | ||||||
|                                 </div> |                                 </div> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2012,10 +2012,11 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Extension added strings |         // Extension added strings | ||||||
|  |         //WI moved to top in order to allow it to hijack AN if necessary | ||||||
|  |         let { worldInfoString, worldInfoBefore, worldInfoAfter } = getWorldInfoPrompt(chat2); | ||||||
|         let allAnchors = getAllExtensionPrompts(); |         let allAnchors = getAllExtensionPrompts(); | ||||||
|         const afterScenarioAnchor = getExtensionPrompt(extension_prompt_types.AFTER_SCENARIO); |         const afterScenarioAnchor = getExtensionPrompt(extension_prompt_types.AFTER_SCENARIO); | ||||||
|         let zeroDepthAnchor = getExtensionPrompt(extension_prompt_types.IN_CHAT, 0, ' '); |         let zeroDepthAnchor = getExtensionPrompt(extension_prompt_types.IN_CHAT, 0, ' '); | ||||||
|         let { worldInfoString, worldInfoBefore, worldInfoAfter } = getWorldInfoPrompt(chat2); |  | ||||||
|  |  | ||||||
|         // Moved here to not overflow the Poe context with added prompt bits |         // Moved here to not overflow the Poe context with added prompt bits | ||||||
|         if (main_api == 'poe') { |         if (main_api == 'poe') { | ||||||
|   | |||||||
| @@ -51,6 +51,7 @@ const extension_settings = { | |||||||
|     note: { |     note: { | ||||||
|         default: '', |         default: '', | ||||||
|         chara: [], |         chara: [], | ||||||
|  |         wiAddition: [], | ||||||
|     }, |     }, | ||||||
|     caption: {}, |     caption: {}, | ||||||
|     expressions: {}, |     expressions: {}, | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ const DEFAULT_DEPTH = 4; | |||||||
| const DEFAULT_POSITION = 1; | const DEFAULT_POSITION = 1; | ||||||
| const DEFAULT_INTERVAL = 1; | const DEFAULT_INTERVAL = 1; | ||||||
|  |  | ||||||
| const metadata_keys = { | export const metadata_keys = { | ||||||
|     prompt: 'note_prompt', |     prompt: 'note_prompt', | ||||||
|     interval: 'note_interval', |     interval: 'note_interval', | ||||||
|     depth: 'note_depth', |     depth: 'note_depth', | ||||||
| @@ -283,7 +283,10 @@ function onChatChanged() { | |||||||
|     $('#extension_floating_default_token_counter').text(tokenCounter3); |     $('#extension_floating_default_token_counter').text(tokenCounter3); | ||||||
| } | } | ||||||
|  |  | ||||||
| (function () { | //for some reason exporting metadata_keys for WI usage caused this to throw errors | ||||||
|  | //"accessing eventSource before initialization" | ||||||
|  | //putting it on a 1ms Timeout solved this. | ||||||
|  | setTimeout(function () { | ||||||
|     function addExtensionsSettings() { |     function addExtensionsSettings() { | ||||||
|         const settingsHtml = ` |         const settingsHtml = ` | ||||||
|         <div id="floatingPrompt" class="drawer-content flexGap5"> |         <div id="floatingPrompt" class="drawer-content flexGap5"> | ||||||
| @@ -399,4 +402,4 @@ function onChatChanged() { | |||||||
|     registerSlashCommand('freq', setNoteIntervalCommand, ['interval'], "<span class='monospace'>(number)</span> – sets an author's note insertion frequency", 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); |     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); |     eventSource.on(event_types.CHAT_CHANGED, onChatChanged); | ||||||
| })(); | }, 1); | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| import { saveSettings, callPopup, substituteParams, getTokenCount, getRequestHeaders } from "../script.js"; | import { saveSettings, callPopup, substituteParams, getTokenCount, getRequestHeaders, chat_metadata } from "../script.js"; | ||||||
| import { download, debounce, delay, initScrollHeight, resetScrollHeight } from "./utils.js"; | import { download, debounce, delay, initScrollHeight, resetScrollHeight } from "./utils.js"; | ||||||
| import { getContext } from "./extensions.js"; | import { getContext } from "./extensions.js"; | ||||||
|  | import { metadata_keys } from "./extensions/floating-prompt/index.js"; | ||||||
|  |  | ||||||
| export { | export { | ||||||
|     world_info, |     world_info, | ||||||
| @@ -35,7 +36,9 @@ const saveSettingsDebounced = debounce(() => saveSettings(), 1000); | |||||||
| const world_info_position = { | const world_info_position = { | ||||||
|     before: 0, |     before: 0, | ||||||
|     after: 1, |     after: 1, | ||||||
|     authorsnote: 2, |     ANTop: 2, | ||||||
|  |     ANBottom: 3, | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| function getWorldInfoPrompt(chat2) { | function getWorldInfoPrompt(chat2) { | ||||||
| @@ -592,8 +595,11 @@ function checkWorldInfo(chat) { | |||||||
|         const newEntries = [...activatedNow] |         const newEntries = [...activatedNow] | ||||||
|             .map((x) => world_info_data.entries[x]) |             .map((x) => world_info_data.entries[x]) | ||||||
|             .sort((a, b) => sortedEntries.indexOf(a) - sortedEntries.indexOf(b)); |             .sort((a, b) => sortedEntries.indexOf(a) - sortedEntries.indexOf(b)); | ||||||
|  |         let ANInjectionTokens = 0; | ||||||
|         for (const entry of newEntries) { |         for (const entry of newEntries) { | ||||||
|  |             let ANWithWI; | ||||||
|  |  | ||||||
|  |             let originalAN = context.extensionPrompts['2_floating_prompt'].value; | ||||||
|             if (entry.position === world_info_position.after) { |             if (entry.position === world_info_position.after) { | ||||||
|                 worldInfoAfter = `${substituteParams( |                 worldInfoAfter = `${substituteParams( | ||||||
|                     entry.content |                     entry.content | ||||||
| @@ -602,14 +608,20 @@ function checkWorldInfo(chat) { | |||||||
|                 worldInfoBefore = `${substituteParams( |                 worldInfoBefore = `${substituteParams( | ||||||
|                     entry.content |                     entry.content | ||||||
|                 )}\n${worldInfoBefore}`; |                 )}\n${worldInfoBefore}`; | ||||||
|             } else { |  | ||||||
|                 let originalAN = context.extensionPrompts['2_floating_prompt'].value; |                 //WI must hijack AN to inject before the prompt is set. | ||||||
|                 let ANWithWI = originalAN + "\n" + entry.content; |             } else if (entry.position === world_info_position.ANBottom) { | ||||||
|                 context.extensionPrompts['2_floating_prompt'].value = ANWithWI; |                 ANWithWI = originalAN + "\n" + entry.content; | ||||||
|  |                 ANInjectionTokens = ANInjectionTokens + getTokenCount(ANWithWI) - getTokenCount(originalAN); | ||||||
|  |                 context.setExtensionPrompt('2_floating_prompt', ANWithWI, chat_metadata[metadata_keys.position], chat_metadata[metadata_keys.depth]); | ||||||
|  |             } else if (entry.position === world_info_position.ANTop) { | ||||||
|  |                 ANWithWI = entry.content + "\n" + originalAN; | ||||||
|  |                 ANInjectionTokens = ANInjectionTokens + getTokenCount(ANWithWI) - getTokenCount(originalAN); | ||||||
|  |                 context.setExtensionPrompt('2_floating_prompt', ANWithWI, chat_metadata[metadata_keys.position], chat_metadata[metadata_keys.depth]); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if ( |             if ( | ||||||
|                 getTokenCount(worldInfoBefore + worldInfoAfter) >= world_info_budget |                 (getTokenCount(worldInfoBefore + worldInfoAfter) + ANInjectionTokens) >= world_info_budget | ||||||
|             ) { |             ) { | ||||||
|                 needsToScan = false; |                 needsToScan = false; | ||||||
|                 break; |                 break; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user