Files
ST-Amily2-Chat-Optimisation…/core/lore.js
2025-08-21 10:57:14 +08:00

2 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const _0x29db3e=_0x8a8a;(function(_0x599257,_0x50eadb){const _0x11bf04=_0x8a8a,_0x241936=_0x599257();while(!![]){try{const _0x48cf40=parseInt(_0x11bf04(0x125))/0x1+-parseInt(_0x11bf04(0xfb))/0x2+-parseInt(_0x11bf04(0x15c))/0x3*(-parseInt(_0x11bf04(0x13f))/0x4)+parseInt(_0x11bf04(0x152))/0x5+-parseInt(_0x11bf04(0x168))/0x6*(parseInt(_0x11bf04(0x117))/0x7)+parseInt(_0x11bf04(0x106))/0x8+-parseInt(_0x11bf04(0x11f))/0x9;if(_0x48cf40===_0x50eadb)break;else _0x241936['push'](_0x241936['shift']());}catch(_0x55ef46){_0x241936['push'](_0x241936['shift']());}}}(_0x1a2f,0x544bc));function _0x1a2f(){const _0x58e3f5=['worldbookEnabled','target','extensions','split','sourceAiMessageTimestamp','find','[剧情优化大师]\x20世界书内容\x20(','content','[Amily2-国史馆]\x20户籍管理处在长时间等待后仍无法确定户籍。','[史官司]\x20总结已遵旨写入《','always','primary','3190345UmzgOu','manual','type','\x27\x20失败!','\x20chars)\x20超出限制\x20(','worldbookCharLimit','总结写入总耗时','Amily2档案-','summary','enabledWorldbookEntries','6ApmIdb','includes','uid','mes','selectedWorldbooks','emit','time','bookName','已创建并写入新档案《','length','char-',':checked','230034whBoVr','Amily2号','settings','[Amily2-国史馆]\x20接到一份残缺的待办文书写入任务已中止。','comment','entries','[条目:\x20','收到未知的写入指令:\x20\x22','Amily2号-国史馆','exclude_recursion','181968triqRd','unknown_chat_timeout','values','[Amily2号-工部]\x20《','toLowerCase','characterId','join','[Amily2-国史馆]\x20钦差大臣在整合\x20\x27','#amily2_opt_worldbook_char_limit','constant','input[name=\x22amily2_opt_worldbook_source\x22]:checked','836200XMtGju','data','无标题','activationMode','\x27\x20检索时发生错误:','groupEnd','error','push','上下文错误','character_main','无法加载世界书《','chat_filename','filter','toLocaleTimeString','substring','[Amily2号-工部]\x20正在广播事件:\x20','isArray','28vQqALr','replace','getLorebookEntries','success','worldbookSource','keywords','1.\x20','【Amily2号自动档案】\x0a此卷宗由Amily2号优化助手自动生成并维护记录核心事件脉络。\x0a---\x0a','3629934hXZZEM','》文件。','avatar','trim','warn','[Amily2号-工部]\x20“圣谕广播”式刷新失败:','33318xbfcFq','val','Amily2号无法触发UI刷新。','send_date','chat','map','getCharLorebooks','[Amily2号-逆时寻踪]\x20裁决:\x20源消息已被修改或删除遵旨废黜过时总结。','[剧情优化大师]\x20TavernHelper\x20API\x20或\x20context\x20未提供无法获取世界书内容。','后台写入总结时发生错误。','CHARACTER_PAGE_LOADED','[Amily2号-写入失败]\x20写入流程发生意外错误:','#amily2_opt_selected_worldbooks','#amily2_plot_optimization_panel','》注入前端数据模型。','disable','Amily2号无法确定当前聊天身份世界书功能将受影响。','角色未绑定主世界书,总结写入任务已中止。','depth','add','\x0a\x0a---\x0a\x0a','核心事件系统缺失','some','[Amily2-国史馆]\x20钦差大臣在\x20\x27','\x27\x20时发生错误:','warning','434060cMYkzm','world','log','#amily2_opt_worldbook_entry_list_container\x20input[type=\x22checkbox\x22]','all','[剧情优化大师]\x20处理世界书逻辑时出错:','\x20chars),将被截断。'];_0x1a2f=function(){return _0x58e3f5;};return _0x1a2f();}import{getContext}from'/scripts/extensions.js';import{characters,eventSource,event_types}from'/script.js';import{loadWorldInfo,createNewWorldInfo,createWorldInfoEntry,saveWorldInfo,world_names}from'/scripts/world-info.js';export const LOREBOOK_PREFIX=_0x29db3e(0x159);export const DEDICATED_LOREBOOK_NAME=_0x29db3e(0xf9);export const INTRODUCTORY_TEXT=_0x29db3e(0x11e);export async function getChatIdentifier(){const _0x832e1b=_0x29db3e;let _0x35f666=0x0;const _0x56cade=0x32,_0x1fa48b=0x64;while(_0x35f666<_0x56cade){try{const _0x5ed5fa=getContext();if(_0x5ed5fa&&_0x5ed5fa[_0x832e1b(0x100)]){const _0x1bce50=characters[_0x5ed5fa[_0x832e1b(0x100)]];if(_0x1bce50&&_0x1bce50[_0x832e1b(0x121)])return _0x832e1b(0x166)+_0x1bce50[_0x832e1b(0x121)][_0x832e1b(0x118)](/\.(png|webp|jpg|jpeg|gif)$/,'');return _0x832e1b(0x166)+_0x5ed5fa[_0x832e1b(0x100)];}if(_0x5ed5fa&&_0x5ed5fa[_0x832e1b(0x111)]){const _0x5b5e0c=_0x5ed5fa[_0x832e1b(0x111)][_0x832e1b(0x149)](/[\\/]/)['pop']();return _0x5b5e0c[_0x832e1b(0x118)](/\.jsonl?$/,'');}}catch(_0x37de56){console['warn']('[Amily2-户籍管理处]\x20等待上下文时发生轻微错误\x20(尝试次数\x20'+(_0x35f666+0x1)+'):',_0x37de56['message']);}await new Promise(_0x3697df=>setTimeout(_0x3697df,_0x1fa48b)),_0x35f666++;}return console[_0x832e1b(0x10c)](_0x832e1b(0x14e)),toastr[_0x832e1b(0x13e)](_0x832e1b(0x135),_0x832e1b(0x10e)),_0x832e1b(0xfc);}export async function findLatestSummaryLore(_0x3e41d2,_0x4498a0){const _0x247fee=_0x29db3e;try{const _0x1434b1=await loadWorldInfo(_0x3e41d2);if(!_0x1434b1||!_0x1434b1[_0x247fee(0x16d)])return null;const _0x7ad615=Object[_0x247fee(0xfd)](_0x1434b1[_0x247fee(0x16d)]),_0xa67429=''+LOREBOOK_PREFIX+_0x4498a0;return _0x7ad615[_0x247fee(0x14b)](_0x58586b=>_0x58586b[_0x247fee(0x16c)]===_0xa67429&&!_0x58586b[_0x247fee(0x134)])||null;}catch(_0x14d6a9){return console[_0x247fee(0x10c)](_0x247fee(0x13c)+_0x3e41d2+_0x247fee(0x10a),_0x14d6a9),null;}}export async function getCombinedWorldbookContent(_0xdec026){const _0x552f74=_0x29db3e;if(!_0xdec026)return'';try{const _0x15e22b=await loadWorldInfo(_0xdec026);if(!_0x15e22b||!_0x15e22b[_0x552f74(0x16d)])return'';const _0x3d9755=Object[_0x552f74(0xfd)](_0x15e22b[_0x552f74(0x16d)])[_0x552f74(0x112)](_0x5427d3=>!_0x5427d3[_0x552f74(0x134)])[_0x552f74(0x12a)](_0x3c8b69=>_0x552f74(0x16e)+(_0x3c8b69[_0x552f74(0x16c)]||_0x552f74(0x108))+']\x0a'+_0x3c8b69[_0x552f74(0x14d)]);return _0x3d9755[_0x552f74(0x101)](_0x552f74(0x139));}catch(_0x181031){return console[_0x552f74(0x10c)](_0x552f74(0x102)+_0xdec026+_0x552f74(0x13d),_0x181031),toastr[_0x552f74(0x10c)]('读取世界书\x20\x27'+_0xdec026+_0x552f74(0x155),'档案整合错误'),'';}}async function refreshWorldbookListOnly(_0x23e38f=null){const _0x3cfa72=_0x29db3e;console[_0x3cfa72(0x141)]('[Amily2号-工部-v1.3]\x20执行“圣谕广播”式UI更新...');try{_0x23e38f&&(Array[_0x3cfa72(0x116)](world_names)&&!world_names[_0x3cfa72(0x15d)](_0x23e38f)?(world_names[_0x3cfa72(0x10d)](_0x23e38f),world_names['sort'](),console[_0x3cfa72(0x141)]('[Amily2号-工部]\x20已将《'+_0x23e38f+_0x3cfa72(0x133))):console[_0x3cfa72(0x141)](_0x3cfa72(0xfe)+_0x23e38f+'》已存在于数据模型中,跳过注入。')),eventSource&&typeof eventSource[_0x3cfa72(0x161)]==='function'&&event_types[_0x3cfa72(0x12f)]?(console[_0x3cfa72(0x141)](_0x3cfa72(0x115)+event_types['CHARACTER_PAGE_LOADED']),eventSource[_0x3cfa72(0x161)](event_types[_0x3cfa72(0x12f)]),console[_0x3cfa72(0x141)]('[Amily2号-工部]\x20“character_page_loaded”事件已广播UI应已响应刷新。')):(console[_0x3cfa72(0x10c)]('[Amily2号]\x20致命错误:\x20eventSource\x20或\x20event_types.CHARACTER_PAGE_LOADED\x20未找到。无法广播刷新事件。'),toastr['error'](_0x3cfa72(0x127),_0x3cfa72(0x13a)));}catch(_0x2c070b){console[_0x3cfa72(0x10c)](_0x3cfa72(0x124),_0x2c070b);}}export async function writeSummaryToLorebook(_0x46e3d3){const _0x15c3f9=_0x29db3e;if(!_0x46e3d3||!_0x46e3d3[_0x15c3f9(0x15a)]||!_0x46e3d3['sourceAiMessageTimestamp']||!_0x46e3d3[_0x15c3f9(0x16a)]){console['warn'](_0x15c3f9(0x16b),_0x46e3d3);return;}const _0x29c304=getContext(),_0x2cd445=_0x29c304[_0x15c3f9(0x129)];let _0x31a4a2=![],_0x2772e2=null;for(let _0x519220=_0x2cd445[_0x15c3f9(0x165)]-0x2;_0x519220>=0x0;_0x519220--){if(!_0x2cd445[_0x519220]['is_user']){_0x2772e2=_0x2cd445[_0x519220];break;}}_0x2772e2&&_0x2772e2[_0x15c3f9(0x128)]===_0x46e3d3[_0x15c3f9(0x14a)]&&(_0x31a4a2=!![]);if(!_0x31a4a2){console['log'](_0x15c3f9(0x12c));return;}const {summary:_0x3df9ff,settings:_0x5779b7}=_0x46e3d3;console['groupCollapsed']('[Amily2号-存档任务-v21.0\x20最终圣旨版]\x20'+new Date()[_0x15c3f9(0x113)]()),console[_0x15c3f9(0x162)](_0x15c3f9(0x158));try{const _0xbdf82a=await getChatIdentifier(),_0x28166d=characters[_0x29c304[_0x15c3f9(0x100)]];let _0x42adaf=null,_0x1496e3=![];switch(_0x5779b7[_0x15c3f9(0x147)]){case _0x15c3f9(0x10f):_0x42adaf=_0x28166d?.[_0x15c3f9(0x107)]?.[_0x15c3f9(0x148)]?.[_0x15c3f9(0x140)];if(!_0x42adaf){toastr[_0x15c3f9(0x13e)](_0x15c3f9(0x136),'Amily2号'),console[_0x15c3f9(0x10b)]();return;}break;case'dedicated':_0x42adaf=DEDICATED_LOREBOOK_NAME+'-'+_0xbdf82a;break;default:toastr[_0x15c3f9(0x10c)](_0x15c3f9(0x16f)+_0x5779b7[_0x15c3f9(0x147)]+'\x22','Amily2号'),console[_0x15c3f9(0x10b)]();return;}!world_names[_0x15c3f9(0x15d)](_0x42adaf)&&(await createNewWorldInfo(_0x42adaf),_0x1496e3=!![]);const _0x4c09b1=''+LOREBOOK_PREFIX+_0xbdf82a,_0x160839=await loadWorldInfo(_0x42adaf);if(!_0x160839){toastr[_0x15c3f9(0x10c)](_0x15c3f9(0x110)+_0x42adaf+'》','Amily2号'),console[_0x15c3f9(0x10b)]();return;}const _0x5bbe51=Object[_0x15c3f9(0xfd)](_0x160839[_0x15c3f9(0x16d)])[_0x15c3f9(0x14b)](_0x3cf629=>_0x3cf629['comment']===_0x4c09b1&&!_0x3cf629[_0x15c3f9(0x134)]);if(_0x5bbe51){const _0x45146b=_0x5bbe51[_0x15c3f9(0x14d)]['replace'](INTRODUCTORY_TEXT,'')[_0x15c3f9(0x122)](),_0xdf1bb6=_0x45146b?_0x45146b[_0x15c3f9(0x149)]('\x0a'):[],_0x532ecc=_0xdf1bb6[_0x15c3f9(0x165)]+0x1;_0x5bbe51[_0x15c3f9(0x14d)]+='\x0a'+_0x532ecc+'.\x20'+_0x3df9ff;}else{const _0x17ca00={'before_char':0x0,'after_char':0x1,'before_an':0x2,'after_an':0x3,'at_depth':0x4},_0x567c62=_0x5779b7[_0x15c3f9(0x11c)][_0x15c3f9(0x149)](',')['map'](_0x5a9a96=>_0x5a9a96[_0x15c3f9(0x122)]())[_0x15c3f9(0x112)](Boolean),_0x541219=_0x5779b7[_0x15c3f9(0x109)]===_0x15c3f9(0x150),_0x131e4f=createWorldInfoEntry(_0x42adaf,_0x160839);Object['assign'](_0x131e4f,{'comment':_0x4c09b1,'content':INTRODUCTORY_TEXT+_0x15c3f9(0x11d)+_0x3df9ff,'key':_0x567c62,'constant':_0x541219,'position':_0x17ca00[_0x5779b7['insertionPosition']]??0x4,'depth':_0x5779b7[_0x15c3f9(0x137)],'disable':![]});}await saveWorldInfo(_0x42adaf,_0x160839,!![]),console['log'](_0x15c3f9(0x14f)+_0x42adaf+_0x15c3f9(0x120)),_0x1496e3&&(await refreshWorldbookListOnly(_0x42adaf),toastr[_0x15c3f9(0x11a)](_0x15c3f9(0x164)+_0x42adaf+'》!','Amily2号'));}catch(_0x43d8cc){console[_0x15c3f9(0x10c)](_0x15c3f9(0x130),_0x43d8cc),toastr[_0x15c3f9(0x10c)](_0x15c3f9(0x12e),_0x15c3f9(0x169));}finally{console['timeEnd']('总结写入总耗时'),console['groupEnd']();}}function _0x8a8a(_0x1a2181,_0x3c5264){const _0x1a2f5b=_0x1a2f();return _0x8a8a=function(_0x8a8ac1,_0x3f416a){_0x8a8ac1=_0x8a8ac1-0xf9;let _0x2e3dc2=_0x1a2f5b[_0x8a8ac1];return _0x2e3dc2;},_0x8a8a(_0x1a2181,_0x3c5264);}export async function getPlotOptimizedWorldbookContent(_0x1dd3db,_0x39da81){const _0x8aa659=_0x29db3e,_0x1be78d=$(_0x8aa659(0x132));let _0x2db7bc={};if(_0x1be78d['length']>0x0){_0x2db7bc[_0x8aa659(0x146)]=_0x1be78d[_0x8aa659(0x14b)]('#amily2_opt_worldbook_enabled')['is'](_0x8aa659(0x167)),_0x2db7bc['worldbookSource']=_0x1be78d[_0x8aa659(0x14b)](_0x8aa659(0x105))[_0x8aa659(0x126)]()||'character',_0x2db7bc[_0x8aa659(0x160)]=_0x1be78d['find'](_0x8aa659(0x131))[_0x8aa659(0x126)]()||[],_0x2db7bc['worldbookCharLimit']=parseInt(_0x1be78d[_0x8aa659(0x14b)](_0x8aa659(0x103))[_0x8aa659(0x126)](),0xa)||0xea60;let _0x2088ba={};_0x1be78d[_0x8aa659(0x14b)](_0x8aa659(0x142))['each'](function(){const _0x5498d1=_0x8aa659;if($(this)['is'](':checked')){const _0x1105b7=$(this)[_0x5498d1(0x107)]('book'),_0x34b8c7=parseInt($(this)['data'](_0x5498d1(0x15e)));!_0x2088ba[_0x1105b7]&&(_0x2088ba[_0x1105b7]=[]),_0x2088ba[_0x1105b7][_0x5498d1(0x10d)](_0x34b8c7);}}),_0x2db7bc[_0x8aa659(0x15b)]=_0x2088ba;}else console[_0x8aa659(0x123)]('[剧情优化大师]\x20未找到设置面板世界书功能将回退到使用已保存的设置。'),_0x2db7bc={'worldbookEnabled':_0x39da81[_0x8aa659(0x146)],'worldbookSource':_0x39da81[_0x8aa659(0x11b)],'selectedWorldbooks':_0x39da81[_0x8aa659(0x160)],'worldbookCharLimit':_0x39da81['worldbookCharLimit'],'enabledWorldbookEntries':_0x39da81[_0x8aa659(0x15b)]};if(!_0x2db7bc[_0x8aa659(0x146)])return'';if(!window['TavernHelper']?.[_0x8aa659(0x119)]||!_0x1dd3db)return console[_0x8aa659(0x123)](_0x8aa659(0x12d)),'';try{let _0x4a12e1=[];if(_0x2db7bc[_0x8aa659(0x11b)]===_0x8aa659(0x153)){_0x4a12e1=_0x2db7bc[_0x8aa659(0x160)];if(_0x4a12e1[_0x8aa659(0x165)]===0x0)return'';}else{const _0x11b682=await window['TavernHelper'][_0x8aa659(0x12b)]({'type':_0x8aa659(0x143)});if(_0x11b682[_0x8aa659(0x151)])_0x4a12e1['push'](_0x11b682[_0x8aa659(0x151)]);if(_0x11b682['additional']?.['length'])_0x4a12e1[_0x8aa659(0x10d)](..._0x11b682['additional']);if(_0x4a12e1[_0x8aa659(0x165)]===0x0)return'';}let _0x462b4d=[];for(const _0x47acfe of _0x4a12e1){if(_0x47acfe){const _0x48cd5a=await window['TavernHelper'][_0x8aa659(0x119)](_0x47acfe);_0x48cd5a?.[_0x8aa659(0x165)]&&_0x48cd5a['forEach'](_0x3c7824=>_0x462b4d['push']({..._0x3c7824,'bookName':_0x47acfe}));}}if(_0x462b4d[_0x8aa659(0x165)]===0x0)return'';const _0x56ed61=_0x2db7bc[_0x8aa659(0x15b)]||{},_0x28b4dc=_0x462b4d['filter'](_0x285546=>{const _0x1f46bc=_0x8aa659;if(!_0x285546['enabled'])return![];const _0x13add6=_0x56ed61[_0x285546[_0x1f46bc(0x163)]];return _0x13add6?_0x13add6[_0x1f46bc(0x15d)](_0x285546['uid']):![];});if(_0x28b4dc[_0x8aa659(0x165)]===0x0)return'';const _0xf09378=_0x1dd3db[_0x8aa659(0x129)]['map'](_0x2df629=>_0x2df629[_0x8aa659(0x15f)])[_0x8aa659(0x101)]('\x0a')[_0x8aa659(0xff)](),_0xe27eda=_0x41ff9e=>[...new Set([..._0x41ff9e['key']||[],..._0x41ff9e['keys']||[]])]['map'](_0x1e08ec=>_0x1e08ec[_0x8aa659(0xff)]()),_0x25e8ba=_0x28b4dc[_0x8aa659(0x112)](_0x282fc0=>_0x282fc0[_0x8aa659(0x154)]==='constant');let _0x2f130b=_0x28b4dc[_0x8aa659(0x112)](_0x3bb603=>_0x3bb603['type']!==_0x8aa659(0x104));const _0x290233=new Set([..._0x25e8ba]);while(!![]){let _0x472b49=![];const _0x11f26c=Array['from'](_0x290233)[_0x8aa659(0x112)](_0x3c7856=>!_0x3c7856['prevent_recursion'])[_0x8aa659(0x12a)](_0x61527c=>_0x61527c[_0x8aa659(0x14d)])[_0x8aa659(0x101)]('\x0a')[_0x8aa659(0xff)](),_0x1ecccc=_0xf09378+'\x0a'+_0x11f26c,_0xb5ebdb=[];for(const _0x4c75f0 of _0x2f130b){const _0x1b54ee=_0xe27eda(_0x4c75f0);let _0x118940=_0x1b54ee[_0x8aa659(0x165)]>0x0&&_0x1b54ee[_0x8aa659(0x13b)](_0x4b33e7=>_0x4c75f0[_0x8aa659(0xfa)]?_0xf09378[_0x8aa659(0x15d)](_0x4b33e7):_0x1ecccc[_0x8aa659(0x15d)](_0x4b33e7));_0x118940?(_0x290233[_0x8aa659(0x138)](_0x4c75f0),_0x472b49=!![]):_0xb5ebdb[_0x8aa659(0x10d)](_0x4c75f0);}if(!_0x472b49)break;_0x2f130b=_0xb5ebdb;}const _0xadab9b=Array['from'](_0x290233)['map'](_0x322478=>_0x322478[_0x8aa659(0x14d)])[_0x8aa659(0x112)](Boolean);if(_0xadab9b[_0x8aa659(0x165)]===0x0)return'';const _0x31b577=_0xadab9b[_0x8aa659(0x101)](_0x8aa659(0x139)),_0x3cd49b=_0x2db7bc[_0x8aa659(0x157)];if(_0x31b577['length']>_0x3cd49b)return console[_0x8aa659(0x141)](_0x8aa659(0x14c)+_0x31b577[_0x8aa659(0x165)]+_0x8aa659(0x156)+_0x3cd49b+_0x8aa659(0x145)),_0x31b577[_0x8aa659(0x114)](0x0,_0x3cd49b);return _0x31b577;}catch(_0xb014f5){return console[_0x8aa659(0x10c)](_0x8aa659(0x144),_0xb014f5),'';}}