diff --git a/core/events.js b/core/events.js index 00d5d19..73863b0 100644 --- a/core/events.js +++ b/core/events.js @@ -1,93 +1 @@ -import { getContext, extension_settings } from "/scripts/extensions.js"; -import { characters, saveChatConditional, reloadCurrentChat } from "/script.js"; -import { extensionName } from "../utils/settings.js"; -import { checkAndFixWithAPI } from "./api.js"; -import { writeSummaryToLorebook, getChatIdentifier } from "./lore.js"; -import { executeAutoHide } from './autoHideManager.js'; - -const pendingWriteData = { - summary: null, - targetLorebook: null, // (此条目很快将被新设定取代,但为兼容性暂时保留) - settings: null, // 【新增栏位】用以存放完整的史册律法。 - chatIdentifier: null, - sourceAiMessageTimestamp: null, -}; - -export async function onMessageReceived(data) { - const context = getContext(); - if ((data && data.is_user) || context.isWaitingForUserInput) { return; } - - const settings = extension_settings[extensionName]; - const chat = context.chat; - if (!chat || chat.length === 0) return; - - const latestMessage = chat[chat.length - 1]; - if (latestMessage.is_user) { return; } - - await executeAutoHide(); - - if (pendingWriteData.summary && pendingWriteData.settings) { - await writeSummaryToLorebook(pendingWriteData); - pendingWriteData.summary = null; - pendingWriteData.settings = null; - } - - if (!settings.enabled || (!settings.optimizationEnabled && !settings.summarizationEnabled) || !settings.apiUrl) { - return; - } - - if (chat.length < 2 || !chat[chat.length - 2].is_user) { - console.log("[Amily2号] 检测到消息并非AI对用户的直接回复,已跳过优化总结。"); - return; - } - - const contextCount = settings.contextMessages || 2; - const startIndex = Math.max(0, chat.length - 1 - contextCount); - const previousMessages = chat.slice(startIndex, chat.length - 1); - const result = await checkAndFixWithAPI(latestMessage, previousMessages); - - if (result) { - if (result.optimizedContent && result.optimizedContent !== latestMessage.mes && settings.optimizationEnabled) { - latestMessage.mes = result.optimizedContent; - await saveChatConditional(); - if (settings.optimizationMode === 'refresh') { - await reloadCurrentChat(); - } - } - - - if (result.summary && result.loreSettings && settings.summarizationEnabled) { - pendingWriteData.summary = result.summary; - pendingWriteData.settings = result.loreSettings; - pendingWriteData.sourceAiMessageTimestamp = latestMessage.send_date; - pendingWriteData.chatIdentifier = await getChatIdentifier(); - - if (settings.showOptimizationToast) { - let targetName = `独立中央档案(${result.loreSettings.target})`; - if (result.loreSettings.target === "character_main") { - const character = characters[context.characterId]; - targetName = character?.data?.extensions?.world || "未绑定的主世界书"; - } - toastr.info(`已优化并将总结:“${result.summary}” 备妥,待写入 “${targetName}”`, "Amily2号", { timeOut: 7000 }); - } - } - // ==================================================================== - } -} -export function onChatChanged() { - const context = getContext(); - const chat = context.chat; - if (!chat || chat.length === 0) { - pendingWriteData.summary = null; - pendingWriteData.settings = null; - return; - } - const latestMessage = chat[chat.length - 1]; - if (latestMessage.is_user && pendingWriteData.summary) { - console.log( - "[Amily2号-遗忘哨兵] 裁决:检测到AI回复已被陛下操作,遵旨废黜过时总结。", - ); - pendingWriteData.summary = null; - pendingWriteData.settings = null; - } -} +(function(_0x3bed9f,_0x3cefa0){const _0x527113=_0x3fe4,_0x2da2a3=_0x3bed9f();while(!![]){try{const _0x409366=parseInt(_0x527113(0x16c))/0x1+-parseInt(_0x527113(0x16d))/0x2*(-parseInt(_0x527113(0x15f))/0x3)+-parseInt(_0x527113(0x150))/0x4+-parseInt(_0x527113(0x153))/0x5*(-parseInt(_0x527113(0x15a))/0x6)+-parseInt(_0x527113(0x159))/0x7*(-parseInt(_0x527113(0x173))/0x8)+parseInt(_0x527113(0x165))/0x9*(-parseInt(_0x527113(0x166))/0xa)+parseInt(_0x527113(0x16a))/0xb;if(_0x409366===_0x3cefa0)break;else _0x2da2a3['push'](_0x2da2a3['shift']());}catch(_0x9b4397){_0x2da2a3['push'](_0x2da2a3['shift']());}}}(_0x115f,0x5337e));function _0x3fe4(_0x29090c,_0x226d14){const _0x115fb2=_0x115f();return _0x3fe4=function(_0x3fe407,_0x169403){_0x3fe407=_0x3fe407-0x14f;let _0x2977bc=_0x115fb2[_0x3fe407];return _0x2977bc;},_0x3fe4(_0x29090c,_0x226d14);}import{getContext,extension_settings}from'/scripts/extensions.js';import{characters,saveChatConditional,reloadCurrentChat}from'/script.js';import{extensionName}from'../utils/settings.js';import{checkAndFixWithAPI}from'./api.js';import{writeSummaryToLorebook,getChatIdentifier}from'./lore.js';import{executeAutoHide}from'./autoHideManager.js';import{checkAndTriggerAutoSummary}from'./historiographer.js';function _0x115f(){const _0x1a293c=['slice','data','target','showOptimizationToast','114793qMsOlc','6594SpqKJl','未绑定的主世界书','contextMessages','optimizationEnabled','sourceAiMessageTimestamp','45HxuICN','is_user','chat','enabled','loreSettings','character_main','36xCdXus','709570zvyatp','characterId','settings','apiUrl','2270774CqFsKE','length','256465jQniFm','3622yWYbgx','独立中央档案(','max','chatIdentifier','summary','”\x20备妥,待写入\x20“','40ZTgvpM','summarizationEnabled','extensions','[Amily2号]\x20检测到消息并非AI对用户的直接回复,已跳过优化总结。','1583044TYPWGZ','已优化并将总结:“','optimizedContent','2040SHnGZY','mes'];_0x115f=function(){return _0x1a293c;};return _0x115f();}const pendingWriteData={'summary':null,'targetLorebook':null,'settings':null,'chatIdentifier':null,'sourceAiMessageTimestamp':null};export async function onMessageReceived(_0x5e43b2){const _0x936e24=_0x3fe4,_0xd1d84b=getContext();if(_0x5e43b2&&_0x5e43b2[_0x936e24(0x160)]||_0xd1d84b['isWaitingForUserInput'])return;const _0x1434a8=extension_settings[extensionName],_0x1bdf6e=_0xd1d84b['chat'];if(!_0x1bdf6e||_0x1bdf6e[_0x936e24(0x16b)]===0x0)return;const _0x5361a9=_0x1bdf6e[_0x1bdf6e[_0x936e24(0x16b)]-0x1];if(_0x5361a9[_0x936e24(0x160)])return;await executeAutoHide(),await checkAndTriggerAutoSummary();pendingWriteData[_0x936e24(0x171)]&&pendingWriteData['settings']&&(await writeSummaryToLorebook(pendingWriteData),pendingWriteData[_0x936e24(0x171)]=null,pendingWriteData[_0x936e24(0x168)]=null);if(!_0x1434a8[_0x936e24(0x162)]||!_0x1434a8[_0x936e24(0x15d)]&&!_0x1434a8[_0x936e24(0x174)]||!_0x1434a8[_0x936e24(0x169)])return;if(_0x1bdf6e['length']<0x2||!_0x1bdf6e[_0x1bdf6e[_0x936e24(0x16b)]-0x2]['is_user']){console['log'](_0x936e24(0x14f));return;}const _0x153363=_0x1434a8[_0x936e24(0x15c)]||0x2,_0x5d261f=Math[_0x936e24(0x16f)](0x0,_0x1bdf6e[_0x936e24(0x16b)]-0x1-_0x153363),_0x38dc03=_0x1bdf6e[_0x936e24(0x155)](_0x5d261f,_0x1bdf6e[_0x936e24(0x16b)]-0x1),_0xa795b5=await checkAndFixWithAPI(_0x5361a9,_0x38dc03);if(_0xa795b5){_0xa795b5[_0x936e24(0x152)]&&_0xa795b5['optimizedContent']!==_0x5361a9['mes']&&_0x1434a8[_0x936e24(0x15d)]&&(_0x5361a9[_0x936e24(0x154)]=_0xa795b5['optimizedContent'],await saveChatConditional(),_0x1434a8['optimizationMode']==='refresh'&&await reloadCurrentChat());if(_0xa795b5['summary']&&_0xa795b5['loreSettings']&&_0x1434a8[_0x936e24(0x174)]){pendingWriteData[_0x936e24(0x171)]=_0xa795b5[_0x936e24(0x171)],pendingWriteData[_0x936e24(0x168)]=_0xa795b5[_0x936e24(0x163)],pendingWriteData[_0x936e24(0x15e)]=_0x5361a9['send_date'],pendingWriteData[_0x936e24(0x170)]=await getChatIdentifier();if(_0x1434a8[_0x936e24(0x158)]){let _0xa6ebe1=_0x936e24(0x16e)+_0xa795b5['loreSettings'][_0x936e24(0x157)]+')';if(_0xa795b5['loreSettings'][_0x936e24(0x157)]===_0x936e24(0x164)){const _0xc951a1=characters[_0xd1d84b[_0x936e24(0x167)]];_0xa6ebe1=_0xc951a1?.[_0x936e24(0x156)]?.[_0x936e24(0x175)]?.['world']||_0x936e24(0x15b);}toastr['info'](_0x936e24(0x151)+_0xa795b5[_0x936e24(0x171)]+_0x936e24(0x172)+_0xa6ebe1+'”','Amily2号',{'timeOut':0x1b58});}}}}export function onChatChanged(){const _0x33018b=_0x3fe4,_0x419281=getContext(),_0xa80fe0=_0x419281[_0x33018b(0x161)];if(!_0xa80fe0||_0xa80fe0['length']===0x0){pendingWriteData[_0x33018b(0x171)]=null,pendingWriteData['settings']=null;return;}const _0x2092a2=_0xa80fe0[_0xa80fe0[_0x33018b(0x16b)]-0x1];_0x2092a2[_0x33018b(0x160)]&&pendingWriteData[_0x33018b(0x171)]&&(console['log']('[Amily2号-遗忘哨兵]\x20裁决:检测到AI回复已被陛下操作,遵旨废黜过时总结。'),pendingWriteData[_0x33018b(0x171)]=null,pendingWriteData['settings']=null);}