Allow running generate interceptors on quiet prompts

This commit is contained in:
Cohee
2025-01-03 01:10:14 +02:00
parent 68437ed81c
commit 2f5f9a437d
4 changed files with 22 additions and 7 deletions

View File

@ -3764,9 +3764,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
// Determine token limit
let this_max_context = getMaxContextSize();
if (!dryRun && type !== 'quiet') {
if (!dryRun) {
console.debug('Running extension interceptors');
const aborted = await runGenerationInterceptors(coreChat, this_max_context);
const aborted = await runGenerationInterceptors(coreChat, this_max_context, type);
if (aborted) {
console.debug('Generation aborted by extension interceptors');

View File

@ -1209,9 +1209,10 @@ async function autoUpdateExtensions(forceAll) {
* Runs the generate interceptors for all extensions.
* @param {any[]} chat Chat array
* @param {number} contextSize Context size
* @param {string} type Generation type
* @returns {Promise<boolean>} True if generation should be aborted
*/
export async function runGenerationInterceptors(chat, contextSize) {
export async function runGenerationInterceptors(chat, contextSize, type) {
let aborted = false;
let exitImmediately = false;
@ -1224,7 +1225,7 @@ export async function runGenerationInterceptors(chat, contextSize) {
const interceptorKey = manifest.generate_interceptor;
if (typeof globalThis[interceptorKey] === 'function') {
try {
await globalThis[interceptorKey](chat, contextSize, abort);
await globalThis[interceptorKey](chat, contextSize, abort, type);
} catch (e) {
console.error(`Failed running interceptor for ${manifest.display_name}`, e);
}

View File

@ -330,7 +330,18 @@ const defaultSettings = {
const writePromptFieldsDebounced = debounce(writePromptFields, debounce_timeout.relaxed);
function processTriggers(chat, _, abort) {
/**
* Generate interceptor for interactive mode triggers.
* @param {any[]} chat Chat messages
* @param {number} _ Context size (unused)
* @param {function(boolean): void} abort Abort generation function
* @param {string} type Type of the generation
*/
function processTriggers(chat, _, abort, type) {
if (type === 'quiet') {
return;
}
if (extension_settings.sd.function_tool && ToolManager.isToolCallingSupported()) {
return;
}

View File

@ -594,8 +594,11 @@ async function vectorizeFile(fileText, fileName, collectionId, chunkSize, overla
/**
* Removes the most relevant messages from the chat and displays them in the extension prompt
* @param {object[]} chat Array of chat messages
* @param {number} _contextSize Context size (unused)
* @param {function} _abort Abort function (unused)
* @param {string} type Generation type
*/
async function rearrangeChat(chat) {
async function rearrangeChat(chat, _contextSize, _abort, type) {
try {
// Clear the extension prompt
setExtensionPrompt(EXTENSION_PROMPT_TAG, '', settings.position, settings.depth, settings.include_wi);
@ -609,7 +612,7 @@ async function rearrangeChat(chat) {
await activateWorldInfo(chat);
}
if (!settings.enabled_chats) {
if (!settings.enabled_chats || type === 'quiet') {
return;
}