From 24ee90df1dda2b757d3b5ce4fdf7e70c2d74bad0 Mon Sep 17 00:00:00 2001 From: Wx-2025 <351320169@qq.com> Date: Sun, 7 Dec 2025 21:06:06 +0800 Subject: [PATCH] Update manager.js --- core/super-memory/manager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/super-memory/manager.js b/core/super-memory/manager.js index 61121a9..a59e662 100644 --- a/core/super-memory/manager.js +++ b/core/super-memory/manager.js @@ -1 +1 @@ -const _0x3afef2=_0x4c8c;(function(_0x1a6233,_0x9f4280){const _0xc7c65b=_0x4c8c,_0x4e3afa=_0x1a6233();while(!![]){try{const _0x51ffd8=-parseInt(_0xc7c65b(0x107))/0x1*(-parseInt(_0xc7c65b(0x102))/0x2)+parseInt(_0xc7c65b(0x101))/0x3+-parseInt(_0xc7c65b(0x10a))/0x4+-parseInt(_0xc7c65b(0x138))/0x5*(parseInt(_0xc7c65b(0xf8))/0x6)+-parseInt(_0xc7c65b(0x115))/0x7+-parseInt(_0xc7c65b(0xf7))/0x8+parseInt(_0xc7c65b(0x13e))/0x9;if(_0x51ffd8===_0x9f4280)break;else _0x4e3afa['push'](_0x4e3afa['shift']());}catch(_0x48ab68){_0x4e3afa['push'](_0x4e3afa['shift']());}}}(_0x4bf4,0x333ff));import{extension_settings,getContext}from'/scripts/extensions.js';import{extensionName}from'../../utils/settings.js';function _0x4c8c(_0x43ecaa,_0x58dfe8){_0x43ecaa=_0x43ecaa-0xf4;const _0x4bf46d=_0x4bf4();let _0x4c8ce2=_0x4bf46d[_0x43ecaa];return _0x4c8ce2;}import{amilyHelper}from'../tavern-helper/main.js';import{generateIndex}from'./smart-indexer.js';import{syncToLorebook,ensureMemoryBook,updateTransientHint,getMemoryBookName}from'./lorebook-bridge.js';import{getMemoryState,loadMemoryState,saveMemoryState}from'../table-system/manager.js';import{eventSource,event_types}from'/script.js';let isInitialized=![],updateQueue=[],isProcessing=![],lastChatId=null;const METADATA_KEY=_0x3afef2(0xfb);export async function initializeSuperMemory(){const _0x21dcb8=_0x3afef2,_0x5ca5bb=parseInt(localStorage[_0x21dcb8(0x100)](_0x21dcb8(0x122))||'0');if(_0x5ca5bb<0x2){console[_0x21dcb8(0x127)](_0x21dcb8(0x142));if(window['$'])$(_0x21dcb8(0x11a))[_0x21dcb8(0xf9)]('未授权')[_0x21dcb8(0x119)]('color','red');return;}const _0x491349=extension_settings[extensionName]||{};if(_0x491349[_0x21dcb8(0x135)]===![]){console[_0x21dcb8(0x105)](_0x21dcb8(0x121));if(window['$'])$(_0x21dcb8(0x11a))['text']('已禁用')[_0x21dcb8(0x119)](_0x21dcb8(0x117),_0x21dcb8(0x12b));return;}if(isInitialized){if(window['$'])$('#sm-system-status')['text']('运行中')[_0x21dcb8(0x119)](_0x21dcb8(0x117),'#4caf50');return;}console[_0x21dcb8(0x105)](_0x21dcb8(0x132));if(!amilyHelper){console[_0x21dcb8(0x140)]('[Amily2-SuperMemory]\x20致命错误:AmilyHelper\x20未就绪。');return;}document['addEventListener'](_0x21dcb8(0x12e),handleTableUpdate),eventSource['on'](event_types[_0x21dcb8(0x13d)],async()=>{const _0x2d2f04=_0x21dcb8,_0x5d7a32=extension_settings[extensionName]||{};if(_0x5d7a32[_0x2d2f04(0x135)]===![])return;console[_0x2d2f04(0x105)](_0x2d2f04(0x134)),await checkWorldBookStatus(),await tryRestoreStateFromMetadata(),await forceSyncAll();}),await checkWorldBookStatus(),await tryRestoreStateFromMetadata(),await forceSyncAll(),isInitialized=!![],console[_0x21dcb8(0x105)](_0x21dcb8(0x108)),window['$']&&$(_0x21dcb8(0x11a))[_0x21dcb8(0xf9)](_0x21dcb8(0x104))[_0x21dcb8(0x119)]('color',_0x21dcb8(0x116));}async function checkWorldBookStatus(){const _0x1678dc=_0x3afef2;try{await ensureMemoryBook();}catch(_0x477a4d){console[_0x1678dc(0x140)](_0x1678dc(0x11c),_0x477a4d);}}function handleTableUpdate(_0x55131f){const _0x6fbc9d=_0x3afef2,_0x500c8a=extension_settings[extensionName]||{};if(_0x500c8a['super_memory_enabled']===![])return;const {tableName:_0x190fca,data:_0x26a10d,role:_0x39be16,hint:_0x1d761d,headers:_0x2be12e,rowStatuses:_0x1aaac4}=_0x55131f[_0x6fbc9d(0x13f)];console[_0x6fbc9d(0x105)](_0x6fbc9d(0x109)+_0x190fca+_0x6fbc9d(0xf6)+_0x39be16+')'),updateQueue['push']({'tableName':_0x190fca,'data':_0x26a10d,'role':_0x39be16,'hint':_0x1d761d,'headers':_0x2be12e,'rowStatuses':_0x1aaac4}),processQueue();}async function processQueue(){const _0x3eebfe=_0x3afef2;if(isProcessing||updateQueue[_0x3eebfe(0x126)]===0x0)return;isProcessing=!![];try{while(updateQueue[_0x3eebfe(0x126)]>0x0){const _0xb39aa2=new Map(),_0x448f99=[...updateQueue];updateQueue[_0x3eebfe(0x126)]=0x0;for(const _0x3196f3 of _0x448f99){_0xb39aa2['set'](_0x3196f3['tableName'],_0x3196f3);}_0x448f99[_0x3eebfe(0x126)]>_0xb39aa2[_0x3eebfe(0x139)]&&console['log']('[Amily2-SuperMemory]\x20队列优化:\x20将\x20'+_0x448f99['length']+_0x3eebfe(0xfd)+_0xb39aa2['size']+'\x20个操作。');for(const _0x396388 of _0xb39aa2[_0x3eebfe(0xf5)]()){await processUpdateTask(_0x396388);}}await saveStateToMetadata();}catch(_0x2db94e){console[_0x3eebfe(0x140)]('[Amily2-SuperMemory]\x20处理更新队列失败:',_0x2db94e);}finally{isProcessing=![],updateQueue[_0x3eebfe(0x126)]>0x0&&processQueue();}}async function processUpdateTask(_0x3e5ab0){const _0x2baed3=_0x3afef2,{tableName:_0x31493f,data:_0x17b140,role:_0x1c6e31,hint:_0x5cd861,headers:_0x18eb17,rowStatuses:_0x6005c4}=_0x3e5ab0,_0x2ed81d=_0x17b140[_0x2baed3(0x12f)]((_0x386630,_0x504b3e)=>!_0x6005c4||_0x6005c4[_0x504b3e]!=='pending-deletion'),_0x48818d=generateIndex(_0x2ed81d,_0x1c6e31,_0x31493f),_0x59fdb7=getMemoryState(),_0x376252=_0x59fdb7[_0x2baed3(0x111)](_0xd85675=>_0xd85675[_0x2baed3(0x10e)]===_0x31493f),_0x19ed72=0x1f41+(_0x376252>=0x0?_0x376252:0x63);await syncToLorebook(_0x31493f,_0x17b140,_0x48818d,_0x1c6e31,_0x18eb17,_0x6005c4,_0x19ed72),_0x5cd861&&(console[_0x2baed3(0x105)]('[Amily2-SuperMemory]\x20应用主动记忆提示:\x20'+_0x5cd861),await updateTransientHint(_0x5cd861)),console[_0x2baed3(0x105)](_0x2baed3(0x10b)+_0x31493f),updateDashboardCounters();}async function saveStateToMetadata(){const _0x3a3f17=_0x3afef2,_0x2284b8=getContext();if(!_0x2284b8[_0x3a3f17(0x103)]||_0x2284b8[_0x3a3f17(0x103)][_0x3a3f17(0x126)]===0x0)return;const _0x33e5fc=_0x2284b8['chat'][_0x3a3f17(0x126)]-0x1,_0x19ea82=_0x2284b8[_0x3a3f17(0x103)][_0x33e5fc],_0x434295=getMemoryState();if(!_0x19ea82[_0x3a3f17(0x129)])_0x19ea82[_0x3a3f17(0x129)]={};_0x19ea82[_0x3a3f17(0x129)][METADATA_KEY]=JSON[_0x3a3f17(0x13c)](JSON[_0x3a3f17(0x110)](_0x434295)),_0x2284b8['saveChat']&&await _0x2284b8['saveChat'](),console['log'](_0x3a3f17(0xfc)+_0x33e5fc);}export async function tryRestoreStateFromMetadata(){const _0x20705d=_0x3afef2,_0x1e0746=getContext();if(!_0x1e0746[_0x20705d(0x103)]||_0x1e0746[_0x20705d(0x103)]['length']===0x0)return;let _0x47437a=null,_0x13cb12=-0x1;for(let _0x928d3b=_0x1e0746[_0x20705d(0x103)][_0x20705d(0x126)]-0x1;_0x928d3b>=0x0;_0x928d3b--){const _0x55ccab=_0x1e0746[_0x20705d(0x103)][_0x928d3b];if(_0x55ccab['metadata']&&_0x55ccab['metadata'][METADATA_KEY]){_0x47437a=_0x55ccab[_0x20705d(0x129)][METADATA_KEY],_0x13cb12=_0x928d3b;break;}}_0x47437a?(console[_0x20705d(0x105)](_0x20705d(0x118)+_0x13cb12+_0x20705d(0x10d)),typeof loadMemoryState==='function'?(loadMemoryState(_0x47437a),await forceSyncAll()):console[_0x20705d(0x127)](_0x20705d(0x137))):console[_0x20705d(0x105)]('[Amily2-SuperMemory]\x20未在聊天记录中发现历史状态,使用默认/当前状态。');}function _0x4bf4(){const _0x35271b=['gray','#sm-index-count','headers','AMILY2_TABLE_UPDATED','filter','rows','[Amily2-SuperMemory]\x20全量同步完成。','[Amily2-SuperMemory]\x20初始化核心管理器...','[Amily2-SuperMemory]\x20清空失败:','[Amily2-SuperMemory]\x20检测到聊天切换,正在刷新记忆状态...','super_memory_enabled','[Amily2-SuperMemory]\x20开始清空记忆...','[Amily2-SuperMemory]\x20table-system\x20缺少\x20loadMemoryState\x20方法,无法恢复状态。','359435WtaOaD','size','startsWith','database','parse','CHAT_CHANGED','3414897NnhASU','detail','error','some','[Amily2-SuperMemory]\x20权限不足\x20(Type\x20<\x202),拒绝初始化超级记忆系统。','\x20个详情','世界钟','values','\x20(Role:\x20','2226800UdHRAB','6olauGj','text','push','Amily2_Memory_Data','[Amily2-SuperMemory]\x20状态已保存至消息\x20#','\x20个事件合并为\x20','comment','includes','getItem','905613Nsfiaj','96EDBaDE','chat','运行中','log','[Amily2-SuperMemory]\x20没有可同步的表格数据。','3463DySWJV','[Amily2-SuperMemory]\x20核心管理器初始化完成。','[Amily2-SuperMemory]\x20检测到表格更新:\x20','68876GbkFtf','[Amily2-SuperMemory]\x20任务完成:\x20','rowStatuses','),正在恢复...','name','toastr','stringify','findIndex','uid','[Amily2-SuperMemory]\x20正在执行全量同步...','\x20条记忆数据','1891071TPziFk','#4caf50','color','[Amily2-SuperMemory]\x20发现历史状态\x20(Msg\x20#','css','#sm-system-status','anchor','[Amily2-SuperMemory]\x20检查世界书状态失败:','[Amily2]','已清空\x20','\x20个条目。','没有发现需要清空的Amily2记忆数据','[Amily2-SuperMemory]\x20功能已禁用\x20(super_memory_enabled\x20=\x20false)。','plugin_user_type','deleteLorebookEntries','success','reduce','length','warn','message','metadata','Log'];_0x4bf4=function(){return _0x35271b;};return _0x4bf4();}function updateDashboardCounters(){const _0x392a81=_0x3afef2,_0x32932f=getMemoryState();if(_0x32932f&&window['$']){$(_0x392a81(0x12c))[_0x392a81(0xf9)](_0x32932f['length']+'\x20个索引');const _0x54a0a3=_0x32932f[_0x392a81(0x125)]((_0x144e4b,_0x292939)=>_0x144e4b+(_0x292939[_0x392a81(0x130)]?_0x292939[_0x392a81(0x130)]['length']:0x0),0x0);$('#sm-detail-count')[_0x392a81(0xf9)](_0x54a0a3+_0x392a81(0x143));}}export async function forceSyncAll(){const _0x4b27b6=_0x3afef2;console[_0x4b27b6(0x105)](_0x4b27b6(0x113));const _0x217265=getMemoryState();if(!_0x217265||_0x217265[_0x4b27b6(0x126)]===0x0){console[_0x4b27b6(0x127)](_0x4b27b6(0x106));return;}for(const _0x50c222 of _0x217265){let _0x213372=_0x4b27b6(0x13b);if(_0x50c222['name'][_0x4b27b6(0xff)]('时空')||_0x50c222[_0x4b27b6(0x10e)][_0x4b27b6(0xff)](_0x4b27b6(0xf4)))_0x213372=_0x4b27b6(0x11b);if(_0x50c222[_0x4b27b6(0x10e)][_0x4b27b6(0xff)]('日志')||_0x50c222['name'][_0x4b27b6(0xff)](_0x4b27b6(0x12a)))_0x213372=_0x4b27b6(0x105);updateQueue[_0x4b27b6(0xfa)]({'tableName':_0x50c222['name'],'data':_0x50c222['rows'],'headers':_0x50c222[_0x4b27b6(0x12d)],'rowStatuses':_0x50c222[_0x4b27b6(0x10c)]||[],'role':_0x213372});}await processQueue(),console['log'](_0x4b27b6(0x131));}export async function purgeSuperMemory(){const _0x10b992=_0x3afef2;try{console[_0x10b992(0x105)](_0x10b992(0x136));const _0x85d6a6=getMemoryBookName(),_0x3e60eb=await amilyHelper['getLorebookEntries'](_0x85d6a6);if(!_0x3e60eb||_0x3e60eb[_0x10b992(0x126)]===0x0){console[_0x10b992(0x105)]('[Amily2-SuperMemory]\x20世界书为空,无需清理。');return;}const _0x39e4c1=[],_0xd03f6e=[_0x10b992(0x11d),'【Amily2'];for(const _0x599052 of _0x3e60eb){_0x599052[_0x10b992(0xfe)]&&_0xd03f6e[_0x10b992(0x141)](_0x16019e=>_0x599052[_0x10b992(0xfe)][_0x10b992(0x13a)](_0x16019e))&&_0x39e4c1['push'](_0x599052[_0x10b992(0x112)]);}if(_0x39e4c1[_0x10b992(0x126)]>0x0){await amilyHelper[_0x10b992(0x123)](_0x85d6a6,_0x39e4c1),console[_0x10b992(0x105)]('[Amily2-SuperMemory]\x20已清空\x20'+_0x39e4c1[_0x10b992(0x126)]+_0x10b992(0x11f));if(window[_0x10b992(0x10f)])toastr[_0x10b992(0x124)](_0x10b992(0x11e)+_0x39e4c1[_0x10b992(0x126)]+_0x10b992(0x114));}else{if(window[_0x10b992(0x10f)])toastr['info'](_0x10b992(0x120));}updateDashboardCounters();}catch(_0x3e6c8f){console[_0x10b992(0x140)](_0x10b992(0x133),_0x3e6c8f);if(window[_0x10b992(0x10f)])toastr[_0x10b992(0x140)]('清空失败:\x20'+_0x3e6c8f[_0x10b992(0x128)]);}} +(function(_0x394d3a,_0x48b7e4){const _0x7f35d2=_0x2c94,_0x1f43cd=_0x394d3a();while(!![]){try{const _0x2b61b1=parseInt(_0x7f35d2(0x136))/0x1*(-parseInt(_0x7f35d2(0x102))/0x2)+parseInt(_0x7f35d2(0x112))/0x3+parseInt(_0x7f35d2(0x150))/0x4+-parseInt(_0x7f35d2(0x139))/0x5+parseInt(_0x7f35d2(0x104))/0x6+parseInt(_0x7f35d2(0x141))/0x7+parseInt(_0x7f35d2(0x146))/0x8*(-parseInt(_0x7f35d2(0x13a))/0x9);if(_0x2b61b1===_0x48b7e4)break;else _0x1f43cd['push'](_0x1f43cd['shift']());}catch(_0x5da001){_0x1f43cd['push'](_0x1f43cd['shift']());}}}(_0x285f,0x7c9dc));function _0x285f(){const _0x522507=['some','世界钟','\x20个索引','push','4190032amfVWx','\x20条记忆数据','\x20个详情','includes','plugin_user_type','128mwrkso','getLorebookEntries','Log','toastr','[Amily2-SuperMemory]\x20没有可同步的表格数据。','\x20(Role:\x20','addEventListener','#sm-index-count','chat','error','1736332fROHBS','[Amily2-SuperMemory]\x20未在聊天记录中发现历史状态,使用默认/当前状态。','[Amily2-SuperMemory]\x20致命错误:AmilyHelper\x20未就绪。','getItem','[Amily2-SuperMemory]\x20权限不足\x20(Type\x20<\x202),拒绝初始化超级记忆系统。','1052806LfMSkP','set','4342836syKqoQ','已清空\x20','[Amily2]','startsWith','\x20个事件合并为\x20','已禁用','info','length','[Amily2-SuperMemory]\x20功能已禁用\x20(super_memory_enabled\x20=\x20false)。','[Amily2-SuperMemory]\x20队列优化:\x20将\x20','[Amily2-SuperMemory]\x20应用主动记忆提示:\x20','findIndex','name','text','1616835GZLHUW','[Amily2-SuperMemory]\x20世界书为空,无需清理。','headers','rowStatuses','deleteLorebookEntries','function','[Amily2-SuperMemory]\x20正在执行全量同步...','[Amily2-SuperMemory]\x20table-system\x20缺少\x20loadMemoryState\x20方法,无法恢复状态。','css','red','pending-deletion','[Amily2-SuperMemory]\x20清空失败:','comment','size','rows','stringify','CHAT_CHANGED','anchor','message','没有发现需要清空的Amily2记忆数据','运行中','#4caf50','[Amily2-SuperMemory]\x20检测到表格更新:\x20','metadata','super_memory_enabled','#sm-system-status','values','color','[Amily2-SuperMemory]\x20处理更新队列失败:','[Amily2-SuperMemory]\x20检测到聊天切换,正在刷新记忆状态...','success','log','[Amily2-SuperMemory]\x20任务完成:\x20','reduce','#sm-detail-count','uid','1VbWbFQ','tableName','saveChat','4983375QuohuO','147321qfvjtl','【Amily2','filter'];_0x285f=function(){return _0x522507;};return _0x285f();}function _0x2c94(_0x2be1ea,_0x481382){_0x2be1ea=_0x2be1ea-0x100;const _0x285f1c=_0x285f();let _0x2c944f=_0x285f1c[_0x2be1ea];return _0x2c944f;}import{extension_settings,getContext}from'/scripts/extensions.js';import{extensionName}from'../../utils/settings.js';import{amilyHelper}from'../tavern-helper/main.js';import{generateIndex}from'./smart-indexer.js';import{syncToLorebook,ensureMemoryBook,updateTransientHint,getMemoryBookName}from'./lorebook-bridge.js';import{getMemoryState,loadMemoryState,saveMemoryState}from'../table-system/manager.js';import{eventSource,event_types}from'/script.js';let isInitialized=![],updateQueue=[],isProcessing=![],lastChatId=null;const METADATA_KEY='Amily2_Memory_Data';export async function initializeSuperMemory(){const _0x21aec1=_0x2c94,_0x2d9b38=parseInt(localStorage[_0x21aec1(0x100)](_0x21aec1(0x145))||'0');if(_0x2d9b38<0x2){console['warn'](_0x21aec1(0x101));if(window['$'])$(_0x21aec1(0x12b))[_0x21aec1(0x111)]('未授权')['css'](_0x21aec1(0x12d),_0x21aec1(0x11b));return;}const _0x4ddb4e=extension_settings[extensionName]||{};if(_0x4ddb4e[_0x21aec1(0x12a)]===![]){console[_0x21aec1(0x131)](_0x21aec1(0x10c));if(window['$'])$(_0x21aec1(0x12b))[_0x21aec1(0x111)](_0x21aec1(0x109))[_0x21aec1(0x11a)](_0x21aec1(0x12d),'gray');return;}if(isInitialized){if(window['$'])$(_0x21aec1(0x12b))[_0x21aec1(0x111)](_0x21aec1(0x126))[_0x21aec1(0x11a)]('color',_0x21aec1(0x127));return;}console[_0x21aec1(0x131)]('[Amily2-SuperMemory]\x20初始化核心管理器...');if(!amilyHelper){console['error'](_0x21aec1(0x152));return;}document[_0x21aec1(0x14c)]('AMILY2_TABLE_UPDATED',handleTableUpdate),eventSource['on'](event_types[_0x21aec1(0x122)],async()=>{const _0xd1da9b=_0x21aec1,_0x45c940=extension_settings[extensionName]||{};if(_0x45c940[_0xd1da9b(0x12a)]===![])return;console[_0xd1da9b(0x131)](_0xd1da9b(0x12f)),await checkWorldBookStatus(),await tryRestoreStateFromMetadata(),await forceSyncAll();}),await checkWorldBookStatus(),await tryRestoreStateFromMetadata(),await forceSyncAll(),isInitialized=!![],console[_0x21aec1(0x131)]('[Amily2-SuperMemory]\x20核心管理器初始化完成。'),window['$']&&$('#sm-system-status')[_0x21aec1(0x111)](_0x21aec1(0x126))[_0x21aec1(0x11a)]('color',_0x21aec1(0x127));}async function checkWorldBookStatus(){const _0x1c3569=_0x2c94;try{await ensureMemoryBook();}catch(_0x25792b){console[_0x1c3569(0x14f)]('[Amily2-SuperMemory]\x20检查世界书状态失败:',_0x25792b);}}function handleTableUpdate(_0x237276){const _0x5a6a65=_0x2c94,_0x42e2f9=extension_settings[extensionName]||{};if(_0x42e2f9[_0x5a6a65(0x12a)]===![])return;const {tableName:_0x3ba038,data:_0x3f385d,role:_0x1fe4bb,hint:_0x43a11a,headers:_0x5759af,rowStatuses:_0x3d9625}=_0x237276['detail'];console[_0x5a6a65(0x131)](_0x5a6a65(0x128)+_0x3ba038+_0x5a6a65(0x14b)+_0x1fe4bb+')'),updateQueue[_0x5a6a65(0x140)]({'tableName':_0x3ba038,'data':_0x3f385d,'role':_0x1fe4bb,'hint':_0x43a11a,'headers':_0x5759af,'rowStatuses':_0x3d9625}),processQueue();}async function processQueue(){const _0x113ca8=_0x2c94;if(isProcessing||updateQueue[_0x113ca8(0x10b)]===0x0)return;isProcessing=!![];try{while(updateQueue[_0x113ca8(0x10b)]>0x0){const _0x50c396=new Map(),_0x1f140f=[...updateQueue];updateQueue[_0x113ca8(0x10b)]=0x0;for(const _0x363c7d of _0x1f140f){_0x50c396[_0x113ca8(0x103)](_0x363c7d[_0x113ca8(0x137)],_0x363c7d);}_0x1f140f['length']>_0x50c396['size']&&console[_0x113ca8(0x131)](_0x113ca8(0x10d)+_0x1f140f['length']+_0x113ca8(0x108)+_0x50c396[_0x113ca8(0x11f)]+'\x20个操作。');for(const _0x398c6c of _0x50c396[_0x113ca8(0x12c)]()){await processUpdateTask(_0x398c6c);}}await saveStateToMetadata();}catch(_0x338ae2){console['error'](_0x113ca8(0x12e),_0x338ae2);}finally{isProcessing=![],updateQueue[_0x113ca8(0x10b)]>0x0&&processQueue();}}async function processUpdateTask(_0x118e1c){const _0x402585=_0x2c94,{tableName:_0x22b1b8,data:_0x314cb7,role:_0x1d45a0,hint:_0x4e5fa0,headers:_0x3d658c,rowStatuses:_0x5a43cb}=_0x118e1c,_0x331bcf=_0x314cb7[_0x402585(0x13c)]((_0x20dfee,_0x5b05e5)=>!_0x5a43cb||_0x5a43cb[_0x5b05e5]!==_0x402585(0x11c)),_0x3c28fc=generateIndex(_0x331bcf,_0x3d658c,_0x1d45a0,_0x22b1b8),_0x5e4de3=getMemoryState(),_0x4c9329=_0x5e4de3[_0x402585(0x10f)](_0x2189cb=>_0x2189cb['name']===_0x22b1b8),_0x1158e2=0x1f41+(_0x4c9329>=0x0?_0x4c9329:0x63);await syncToLorebook(_0x22b1b8,_0x314cb7,_0x3c28fc,_0x1d45a0,_0x3d658c,_0x5a43cb,_0x1158e2),_0x4e5fa0&&(console['log'](_0x402585(0x10e)+_0x4e5fa0),await updateTransientHint(_0x4e5fa0)),console[_0x402585(0x131)](_0x402585(0x132)+_0x22b1b8),updateDashboardCounters();}async function saveStateToMetadata(){const _0x578620=_0x2c94,_0x46feae=getContext();if(!_0x46feae['chat']||_0x46feae[_0x578620(0x14e)][_0x578620(0x10b)]===0x0)return;const _0x35428d=_0x46feae[_0x578620(0x14e)][_0x578620(0x10b)]-0x1,_0x181347=_0x46feae[_0x578620(0x14e)][_0x35428d],_0x2602a8=getMemoryState();if(!_0x181347[_0x578620(0x129)])_0x181347[_0x578620(0x129)]={};_0x181347['metadata'][METADATA_KEY]=JSON['parse'](JSON[_0x578620(0x121)](_0x2602a8)),_0x46feae['saveChat']&&await _0x46feae[_0x578620(0x138)](),console[_0x578620(0x131)]('[Amily2-SuperMemory]\x20状态已保存至消息\x20#'+_0x35428d);}export async function tryRestoreStateFromMetadata(){const _0x4aa4b1=_0x2c94,_0x18c117=getContext();if(!_0x18c117[_0x4aa4b1(0x14e)]||_0x18c117[_0x4aa4b1(0x14e)][_0x4aa4b1(0x10b)]===0x0)return;let _0x4cac8b=null,_0x1480b5=-0x1;for(let _0x4681d3=_0x18c117[_0x4aa4b1(0x14e)][_0x4aa4b1(0x10b)]-0x1;_0x4681d3>=0x0;_0x4681d3--){const _0x3c81f=_0x18c117['chat'][_0x4681d3];if(_0x3c81f[_0x4aa4b1(0x129)]&&_0x3c81f['metadata'][METADATA_KEY]){_0x4cac8b=_0x3c81f[_0x4aa4b1(0x129)][METADATA_KEY],_0x1480b5=_0x4681d3;break;}}_0x4cac8b?(console[_0x4aa4b1(0x131)]('[Amily2-SuperMemory]\x20发现历史状态\x20(Msg\x20#'+_0x1480b5+'),正在恢复...'),typeof loadMemoryState===_0x4aa4b1(0x117)?(loadMemoryState(_0x4cac8b),await forceSyncAll()):console['warn'](_0x4aa4b1(0x119))):console[_0x4aa4b1(0x131)](_0x4aa4b1(0x151));}function updateDashboardCounters(){const _0x22ddad=_0x2c94,_0x42f8a8=getMemoryState();if(_0x42f8a8&&window['$']){$(_0x22ddad(0x14d))[_0x22ddad(0x111)](_0x42f8a8[_0x22ddad(0x10b)]+_0x22ddad(0x13f));const _0x4a4c85=_0x42f8a8[_0x22ddad(0x133)]((_0x4187d1,_0x11e94f)=>_0x4187d1+(_0x11e94f[_0x22ddad(0x120)]?_0x11e94f['rows'][_0x22ddad(0x10b)]:0x0),0x0);$(_0x22ddad(0x134))[_0x22ddad(0x111)](_0x4a4c85+_0x22ddad(0x143));}}export async function forceSyncAll(){const _0x15f5ce=_0x2c94;console[_0x15f5ce(0x131)](_0x15f5ce(0x118));const _0x5799ed=getMemoryState();if(!_0x5799ed||_0x5799ed[_0x15f5ce(0x10b)]===0x0){console['warn'](_0x15f5ce(0x14a));return;}for(const _0xe7572e of _0x5799ed){let _0x47a019='database';if(_0xe7572e['name'][_0x15f5ce(0x144)]('时空')||_0xe7572e[_0x15f5ce(0x110)][_0x15f5ce(0x144)](_0x15f5ce(0x13e)))_0x47a019=_0x15f5ce(0x123);if(_0xe7572e[_0x15f5ce(0x110)][_0x15f5ce(0x144)]('日志')||_0xe7572e['name'][_0x15f5ce(0x144)](_0x15f5ce(0x148)))_0x47a019='log';updateQueue[_0x15f5ce(0x140)]({'tableName':_0xe7572e[_0x15f5ce(0x110)],'data':_0xe7572e[_0x15f5ce(0x120)],'headers':_0xe7572e[_0x15f5ce(0x114)],'rowStatuses':_0xe7572e[_0x15f5ce(0x115)]||[],'role':_0x47a019});}await processQueue(),console[_0x15f5ce(0x131)]('[Amily2-SuperMemory]\x20全量同步完成。');}export async function purgeSuperMemory(){const _0x1aef44=_0x2c94;try{console[_0x1aef44(0x131)]('[Amily2-SuperMemory]\x20开始清空记忆...');const _0x55c843=getMemoryBookName(),_0x42f86c=await amilyHelper[_0x1aef44(0x147)](_0x55c843);if(!_0x42f86c||_0x42f86c[_0x1aef44(0x10b)]===0x0){console[_0x1aef44(0x131)](_0x1aef44(0x113));return;}const _0x1f68ac=[],_0x12abe1=[_0x1aef44(0x106),_0x1aef44(0x13b)];for(const _0x950aca of _0x42f86c){_0x950aca[_0x1aef44(0x11e)]&&_0x12abe1[_0x1aef44(0x13d)](_0x16a87e=>_0x950aca['comment'][_0x1aef44(0x107)](_0x16a87e))&&_0x1f68ac[_0x1aef44(0x140)](_0x950aca[_0x1aef44(0x135)]);}if(_0x1f68ac[_0x1aef44(0x10b)]>0x0){await amilyHelper[_0x1aef44(0x116)](_0x55c843,_0x1f68ac),console[_0x1aef44(0x131)]('[Amily2-SuperMemory]\x20已清空\x20'+_0x1f68ac['length']+'\x20个条目。');if(window[_0x1aef44(0x149)])toastr[_0x1aef44(0x130)](_0x1aef44(0x105)+_0x1f68ac[_0x1aef44(0x10b)]+_0x1aef44(0x142));}else{if(window[_0x1aef44(0x149)])toastr[_0x1aef44(0x10a)](_0x1aef44(0x125));}updateDashboardCounters();}catch(_0x1a556c){console['error'](_0x1aef44(0x11d),_0x1a556c);if(window[_0x1aef44(0x149)])toastr[_0x1aef44(0x14f)]('清空失败:\x20'+_0x1a556c[_0x1aef44(0x124)]);}}