diff --git a/public/script.js b/public/script.js index 057c5b22d..716c9f86f 100644 --- a/public/script.js +++ b/public/script.js @@ -242,7 +242,7 @@ import { BulkEditOverlay, CharacterContextMenu } from './scripts/BulkEditOverlay import { loadFeatherlessModels, loadMancerModels, loadOllamaModels, loadTogetherAIModels, loadInfermaticAIModels, loadOpenRouterModels, loadVllmModels, loadAphroditeModels, loadDreamGenModels, initTextGenModels, loadTabbyModels } from './scripts/textgen-models.js'; import { appendFileContent, hasPendingFileAttachment, populateFileAttachment, decodeStyleTags, encodeStyleTags, isExternalMediaAllowed, getCurrentEntityId, preserveNeutralChat, restoreNeutralChat } from './scripts/chats.js'; import { initPresetManager } from './scripts/preset-manager.js'; -import { MacrosParser, evaluateMacros, getLastMessageId } from './scripts/macros.js'; +import { MacrosParser, evaluateMacros, getLastMessageId, initMacros } from './scripts/macros.js'; import { currentUser, setUserControls } from './scripts/user.js'; import { POPUP_RESULT, POPUP_TYPE, Popup, callGenericPopup, fixToastrForDialogs } from './scripts/popup.js'; import { renderTemplate, renderTemplateAsync } from './scripts/templates.js'; @@ -957,6 +957,7 @@ async function firstLoadInit() { initDynamicStyles(); initTags(); initBookmarks(); + initMacros(); await getUserAvatars(true, user_avatar); await getCharacters(); await getBackgrounds(); diff --git a/public/scripts/macros.js b/public/scripts/macros.js index 1efd42a14..0e4d7a8da 100644 --- a/public/scripts/macros.js +++ b/public/scripts/macros.js @@ -1,5 +1,5 @@ import { Handlebars, moment, seedrandom, droll } from '../lib.js'; -import { chat, chat_metadata, main_api, getMaxContextSize, getCurrentChatId, substituteParams } from '../script.js'; +import { chat, chat_metadata, main_api, getMaxContextSize, getCurrentChatId, substituteParams, eventSource, event_types } from '../script.js'; import { timestampToMoment, isDigitsOnly, getStringHash, escapeRegex, uuidv4 } from './utils.js'; import { textgenerationwebui_banned_in_macros } from './textgen-settings.js'; import { getInstructMacros } from './instruct-mode.js'; @@ -521,3 +521,22 @@ export function evaluateMacros(content, env, postProcessFn) { return content; } + +export function initMacros() { + function initLastGenerationType() { + let lastGenerationType = ''; + + MacrosParser.registerMacro('lastGenerationType', () => lastGenerationType); + + eventSource.on(event_types.GENERATION_STARTED, (type, _params, isDryRun) => { + if (isDryRun) return; + lastGenerationType = type || 'normal'; + }); + + eventSource.on(event_types.CHAT_CHANGED, () => { + lastGenerationType = ''; + }); + } + + initLastGenerationType(); +} diff --git a/public/scripts/templates/macros.html b/public/scripts/templates/macros.html index 6e96ae4fa..38f6dec0c 100644 --- a/public/scripts/templates/macros.html +++ b/public/scripts/templates/macros.html @@ -8,6 +8,7 @@