Add {{lastGenerationType}} macro
| @@ -242,7 +242,7 @@ import { BulkEditOverlay, CharacterContextMenu } from './scripts/BulkEditOverlay | ||
| 242 | 242 | import { loadFeatherlessModels, loadMancerModels, loadOllamaModels, loadTogetherAIModels, loadInfermaticAIModels, loadOpenRouterModels, loadVllmModels, loadAphroditeModels, loadDreamGenModels, initTextGenModels, loadTabbyModels } from './scripts/textgen-models.js'; |
| 243 | 243 | import { appendFileContent, hasPendingFileAttachment, populateFileAttachment, decodeStyleTags, encodeStyleTags, isExternalMediaAllowed, getCurrentEntityId, preserveNeutralChat, restoreNeutralChat } from './scripts/chats.js'; |
| 244 | 244 | import { initPresetManager } from './scripts/preset-manager.js'; |
| 245 | 245 | import { MacrosParser, evaluateMacros, getLastMessageId, initMacros } from './scripts/macros.js'; |
| 246 | 246 | import { currentUser, setUserControls } from './scripts/user.js'; |
| 247 | 247 | import { POPUP_RESULT, POPUP_TYPE, Popup, callGenericPopup, fixToastrForDialogs } from './scripts/popup.js'; |
| 248 | 248 | import { renderTemplate, renderTemplateAsync } from './scripts/templates.js'; |
| @@ -957,6 +957,7 @@ async function firstLoadInit() { | ||
| 957 | 957 | initDynamicStyles(); |
| 958 | 958 | initTags(); |
| 959 | 959 | initBookmarks(); |
| 960 | + initMacros(); | |
| 960 | 961 | await getUserAvatars(true, user_avatar); |
| 961 | 962 | await getCharacters(); |
| 962 | 963 | await getBackgrounds(); |
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | import { Handlebars, moment, seedrandom, droll } from '../lib.js'; |
| 2 | 2 | import { chat, chat_metadata, main_api, getMaxContextSize, getCurrentChatId, substituteParams, eventSource, event_types } from '../script.js'; |
| 3 | 3 | import { timestampToMoment, isDigitsOnly, getStringHash, escapeRegex, uuidv4 } from './utils.js'; |
| 4 | 4 | import { textgenerationwebui_banned_in_macros } from './textgen-settings.js'; |
| 5 | 5 | import { getInstructMacros } from './instruct-mode.js'; |
| @@ -521,3 +521,22 @@ export function evaluateMacros(content, env, postProcessFn) { | ||
| 521 | 521 | |
| 522 | 522 | return content; |
| 523 | 523 | } |
| 524 | + | |
| 525 | +export function initMacros() { | |
| 526 | + function initLastGenerationType() { | |
| 527 | + let lastGenerationType = ''; | |
| 528 | + | |
| 529 | + MacrosParser.registerMacro('lastGenerationType', () => lastGenerationType); | |
| 530 | + | |
| 531 | + eventSource.on(event_types.GENERATION_STARTED, (type, _params, isDryRun) => { | |
| 532 | + if (isDryRun) return; | |
| 533 | + lastGenerationType = type || 'normal'; | |
| 534 | + }); | |
| 535 | + | |
| 536 | + eventSource.on(event_types.CHAT_CHANGED, () => { | |
| 537 | + lastGenerationType = ''; | |
| 538 | + }); | |
| 539 | + } | |
| 540 | + | |
| 541 | + initLastGenerationType(); | |
| 542 | +} | |
| @@ -8,6 +8,7 @@ | ||
| 8 | 8 | <li><tt>{{noop}}</tt> – <span data-i18n="help_macros_4">no operation, just an empty string.</span></li> |
| 9 | 9 | <li><tt>{{original}}</tt> – <span data-i18n="help_macros_5">global prompts defined in API settings. Only valid in Advanced Definitions prompt overrides.</span></li> |
| 10 | 10 | <li><tt>{{input}}</tt> – <span data-i18n="help_macros_6">the user input</span></li> |
| 11 | + <li><tt>{{lastGenerationType}}</tt> - <span>the type of the last queued generation request. Empty if no generations were performed yet or the active chat was switched. Possible values: "normal", "impersonate", "regenerate", "quiet", "swipe", "continue".</span></li> | |
| 11 | 12 | <li><tt>{{charPrompt}}</tt> – <span data-i18n="help_macros_7">the Character's Main Prompt override</span></li> |
| 12 | 13 | <li><tt>{{charInstruction}}</tt> – <span data-i18n="help_macros_8">the Character's Post-History Instructions override</span></li> |
| 13 | 14 | <li><tt>{{description}}</tt> – <span data-i18n="help_macros_9">the Character's Description</span></li> |