mirror of
https://github.com/SilenceLurker/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 14:45:51 +00:00
2 lines
60 KiB
JavaScript
2 lines
60 KiB
JavaScript
const _0x21a297=_0x5b60;(function(_0x561168,_0x463e6f){const _0x3db2eb=_0x5b60,_0x146df9=_0x561168();while(!![]){try{const _0xba88d0=parseInt(_0x3db2eb(0x1c2))/0x1*(-parseInt(_0x3db2eb(0x22b))/0x2)+parseInt(_0x3db2eb(0x245))/0x3*(-parseInt(_0x3db2eb(0x1b8))/0x4)+parseInt(_0x3db2eb(0x1e1))/0x5*(parseInt(_0x3db2eb(0x25b))/0x6)+parseInt(_0x3db2eb(0x23e))/0x7+-parseInt(_0x3db2eb(0x24f))/0x8+-parseInt(_0x3db2eb(0x1d4))/0x9*(-parseInt(_0x3db2eb(0x208))/0xa)+-parseInt(_0x3db2eb(0x1e3))/0xb*(-parseInt(_0x3db2eb(0x1a3))/0xc);if(_0xba88d0===_0x463e6f)break;else _0x146df9['push'](_0x146df9['shift']());}catch(_0x2b8379){_0x146df9['push'](_0x146df9['shift']());}}}(_0x56b0,0xeb75a));import{getContext,extension_settings}from'/scripts/extensions.js';import{saveChat,saveSettingsDebounced}from'/script.js';import{log}from'./logger.js';import{fillWithSecondaryApi}from'./secondary-filler.js';import{getChatPiece,saveChatDebounced}from'../../utils/utils.js';import{extensionName}from'../../utils/settings.js';import{DEFAULT_AI_RULE_TEMPLATE,DEFAULT_AI_FLOW_TEMPLATE}from'./settings.js';import{renderTables}from'../../ui/table-bindings.js';import{updateOrInsertTableInChat}from'../../ui/message-table-renderer.js';const TABLE_DATA_KEY='amily2_tables_data';let currentTablesState=null,highlightedCells=new Set(),updatedTables=new Set();function dispatchTableUpdate(_0x4242ac){const _0x2bd260=_0x5b60,_0x349a5d=extension_settings[extensionName]||{};if(_0x349a5d[_0x2bd260(0x194)]===![])return;if(!currentTablesState||!currentTablesState[_0x4242ac])return;const _0xe55a76=currentTablesState[_0x4242ac];let _0x502f7c='database';if(_0xe55a76[_0x2bd260(0x1bc)][_0x2bd260(0x260)]('时空')||_0xe55a76[_0x2bd260(0x1bc)][_0x2bd260(0x260)]('世界钟'))_0x502f7c='anchor';if(_0xe55a76[_0x2bd260(0x1bc)][_0x2bd260(0x260)]('日志')||_0xe55a76[_0x2bd260(0x1bc)]['includes'](_0x2bd260(0x1f7)))_0x502f7c=_0x2bd260(0x28e);const _0x50fb24=new CustomEvent(_0x2bd260(0x217),{'detail':{'tableName':_0xe55a76['name'],'data':_0xe55a76['rows'],'headers':_0xe55a76[_0x2bd260(0x19d)],'rowStatuses':_0xe55a76[_0x2bd260(0x27f)]||[],'role':_0x502f7c}});document['dispatchEvent'](_0x50fb24),log(_0x2bd260(0x2a1)+_0xe55a76[_0x2bd260(0x1bc)],_0x2bd260(0x1c0));}function dispatchAllTablesUpdate(){const _0x368685=_0x5b60;if(!currentTablesState)return;log(_0x368685(0x22d),_0x368685(0x1c0)),currentTablesState[_0x368685(0x214)]((_0x3a8c94,_0x166d21)=>{dispatchTableUpdate(_0x166d21);});}export function addHighlight(_0x6006cd,_0x4e7fca,_0x4c627f){const _0x277947=_0x5b60,_0x36682f=_0x6006cd+'-'+_0x4e7fca+'-'+_0x4c627f;highlightedCells[_0x277947(0x261)](_0x36682f);}export function getHighlights(){return highlightedCells;}export function clearHighlights(){const _0x470d09=_0x5b60;highlightedCells[_0x470d09(0x242)]>0x0&&(highlightedCells[_0x470d09(0x1f0)](),log(_0x470d09(0x28a),'info'));}export function getUpdatedTables(){return updatedTables;}export function clearUpdatedTables(){const _0x4aced8=_0x5b60;updatedTables['size']>0x0&&(updatedTables[_0x4aced8(0x1f0)](),log(_0x4aced8(0x257),'info'));}export function setMemoryState(_0xd96c4a){currentTablesState=_0xd96c4a;}export function loadMemoryState(_0x2abeb6){const _0x8f2571=_0x5b60;if(!_0x2abeb6)return;setMemoryState(_0x2abeb6),renderTables(),updateOrInsertTableInChat(),log(_0x8f2571(0x1b1),_0x8f2571(0x1c0));}export function saveMemoryState(){const _0x171057=_0x5b60,_0x157c17=getContext();if(_0x157c17[_0x171057(0x298)]&&_0x157c17['chat'][_0x171057(0x1ca)]>0x0){const _0x388ce3=_0x157c17[_0x171057(0x298)][_0x157c17[_0x171057(0x298)][_0x171057(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x388ce3))return!![];}return![];}export function getMemoryState(){return currentTablesState;}const defaultTemplate={'tables':[{'name':'时空栏','headers':['日期','时段','时间','地点','此地角色'],'note':'【核心作用】此表格用于精确追踪故事发生的即时时空背景,确保时间与空间的连续性。它应该始终只包含一行,代表当前的“镜头”位置。\x0a【字段详解】\x0a-\x20日期:\x20格式为\x27YYYY-MM-DD\x27。若日期未知,请根据上下文合理推断或设定一个初始日期,如\x27大夏3年-9月-10日\x27。\x0a-\x20时段:\x20严格遵循规定(凌晨:0-5时;早晨:5-8时;上午:8-11时;中午:11-13时;下午:13-16时;傍晚:16-19时;晚上:19-24时)。\x0a-\x20时间:\x20格式为\x27HH:MM\x27。若时间未知,可根据时段估算,如\x2708:30\x27。\x0a-\x20地点:\x20描述当前场景发生的具体位置,应尽可能精确,例如\x27XX街的咖啡馆\x27而非\x27城里\x27。\x0a-\x20此地角色:\x20列出当前场景中所有在场且参与互动的主要角色,用\x27/\x27分隔。','rule_add':'【触发条件】当故事开始,且此表格为空时,必须立即根据初始场景创建第一行。','rule_delete':'【触发条件】任何时候,如果此表格的行数超过一行,必须删除旧的行,只保留最新、最准确的一行。','rule_update':_0x21a297(0x268),'charLimitRules':{},'rowLimitRule':0x1,'rows':[]},{'name':_0x21a297(0x201),'headers':[_0x21a297(0x1a4),'外貌','身形','衣着','性格','身份','职业',_0x21a297(0x1c9),'爱好','住所',_0x21a297(0x1f8)],'note':_0x21a297(0x19a),'rule_add':_0x21a297(0x1af),'rule_delete':_0x21a297(0x241),'rule_update':_0x21a297(0x21b),'charLimitRules':{'10':0x1e},'rowLimitRule':0x0,'rows':[]},{'name':_0x21a297(0x1cd),'headers':['主动方','被动方','关系','详情'],'columnWidths':[],'note':_0x21a297(0x237),'rule_add':_0x21a297(0x22f),'rule_delete':'【触发条件】当两个NPC之间的关系彻底断绝且不再影响剧情,或者其中一方彻底消失/死亡时,可以删除。','rule_update':_0x21a297(0x1ba),'charLimitRules':{},'rowLimitRule':0x0,'rows':[],'rowStatuses':[]},{'name':_0x21a297(0x27d),'headers':['任务名','类型','详情','状态',_0x21a297(0x240),'地点','开始时间/结束时间','结果'],'note':'【核心作用】追踪故事中的主要情节线、目标和挑战。只记录对剧情发展有重大影响的“任务”,忽略日常琐事。\x0a【字段详解】\x0a-\x20任务名:\x20任务的简洁概括,如\x27寻找失落的神器\x27。\x0a-\x20类型:\x20任务的分类,如\x27主线\x27、\x27支线\x27、\x27个人\x27、\x27约定\x27。\x0a-\x20详情:\x20对任务目标和背景的简要描述。\x0a-\x20状态:\x20任务的当前进展,如\x27未开始\x27、\x27进行中\x27、\x27已完成\x27、\x27已失败\x27、\x27已取消\x27。\x0a-\x20执行者:\x20负责完成此任务的角色名。\x0a-\x20地点:\x20任务关键环节发生的地点。\x0a-\x20开始时间/结束时间:\x20记录任务的起止时间,格式\x27YYYY-MM-DD\x27,若未结束则结束时间留空。\x0a-\x20结果:\x20任务完成或失败后的最终结果。','rule_add':'【触发条件】当以下情况发生时,应添加新行:\x0a1.\x20角色接下一个明确的、有目标的委托或命令。\x0a2.\x20角色们达成一个具体的、需要在未来执行的约定。\x0a3.\x20角色为自己设定一个长期的、关键性的目标。','rule_delete':'【触发条件】当任务列表超过10行时,优先删除最早的、已经“已完成”且与当前剧情关联度最低的任务。如果存在内容完全重复的任务,应删除。','rule_update':_0x21a297(0x249),'charLimitRules':{},'rowLimitRule':0xa,'rows':[]},{'name':'物品栏','headers':[_0x21a297(0x1f5),'类型','详情','状态','拥有者',_0x21a297(0x225)],'note':_0x21a297(0x285),'rule_add':_0x21a297(0x1bd),'rule_delete':_0x21a297(0x267),'rule_update':_0x21a297(0x273),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':'技能栏','headers':[_0x21a297(0x287),'技能效果'],'note':_0x21a297(0x28c),'rule_add':'【触发条件】当<user>在故事中首次成功施展或习得一个全新的、表格中未记录的技能时,必须添加。','rule_delete':_0x21a297(0x253),'rule_update':_0x21a297(0x1ce),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x21a297(0x1d0),'headers':['类型',_0x21a297(0x23f)],'note':_0x21a297(0x26d),'rule_add':_0x21a297(0x269),'rule_delete':_0x21a297(0x27c),'rule_update':_0x21a297(0x28d),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]}]};function _0x5b60(_0x12134b,_0x5b54da){_0x12134b=_0x12134b-0x194;const _0x56b099=_0x56b0();let _0x5b6006=_0x56b099[_0x12134b];return _0x5b6006;}function getDefaultTables(){const _0x4b7851=_0x21a297;log(_0x4b7851(0x1ff),_0x4b7851(0x1c0));const _0x4fbd55=JSON['parse'](JSON[_0x4b7851(0x1e2)](defaultTemplate['tables']));return _0x4fbd55[_0x4b7851(0x214)](_0x8fc7f9=>{const _0x505c87=_0x4b7851;_0x8fc7f9[_0x505c87(0x29e)]={'columnIndex':-0x1,'limit':0x0},_0x8fc7f9[_0x505c87(0x247)]=0x0,_0x8fc7f9[_0x505c87(0x29d)]=[];}),_0x4fbd55;}export function loadTables(_0x114c62=-0x1){const _0x2b4f08=_0x21a297,_0xa9028c=getContext();if(_0xa9028c&&_0xa9028c['chat']&&_0xa9028c['chat']['length']>0x0){const _0x46f203=_0x114c62===-0x1?_0xa9028c['chat'][_0x2b4f08(0x1ca)]-0x1:_0x114c62-0x1;for(let _0x2eca65=_0x46f203;_0x2eca65>=0x0;_0x2eca65--){const _0x8e88c3=_0xa9028c['chat'][_0x2eca65];if(_0x8e88c3['extra']&&_0x8e88c3['extra'][TABLE_DATA_KEY]){log(_0x2b4f08(0x244)+_0x2eca65+_0x2b4f08(0x255),'info');let _0x23f03d=JSON[_0x2b4f08(0x265)](JSON[_0x2b4f08(0x1e2)](_0x8e88c3[_0x2b4f08(0x230)][TABLE_DATA_KEY]));return _0x23f03d[_0x2b4f08(0x214)](_0x172227=>{const _0xbe2910=_0x2b4f08;if(_0x172227['note']===undefined)_0x172227[_0xbe2910(0x1b5)]='无';if(_0x172227[_0xbe2910(0x25d)]===undefined)_0x172227[_0xbe2910(0x25d)]='允许';if(_0x172227['rule_delete']===undefined)_0x172227[_0xbe2910(0x238)]='允许';if(_0x172227[_0xbe2910(0x21c)]===undefined)_0x172227[_0xbe2910(0x21c)]='允许';_0x172227['charLimitRule']&&!_0x172227[_0xbe2910(0x21e)]&&(_0x172227[_0xbe2910(0x21e)]={},_0x172227[_0xbe2910(0x29e)]['columnIndex']!==-0x1&&_0x172227[_0xbe2910(0x29e)][_0xbe2910(0x1cb)]>0x0&&(_0x172227[_0xbe2910(0x21e)][_0x172227[_0xbe2910(0x29e)][_0xbe2910(0x256)]]=_0x172227[_0xbe2910(0x29e)][_0xbe2910(0x1cb)]));delete _0x172227[_0xbe2910(0x29e)];if(_0x172227[_0xbe2910(0x247)]===undefined)_0x172227[_0xbe2910(0x247)]=0x0;if(_0x172227['columnWidths']===undefined)_0x172227[_0xbe2910(0x29d)]=[];!_0x172227[_0xbe2910(0x27f)]&&(_0x172227[_0xbe2910(0x27f)]=Array(_0x172227[_0xbe2910(0x23d)][_0xbe2910(0x1ca)])[_0xbe2910(0x1ef)](_0xbe2910(0x1c6)));}),currentTablesState=_0x23f03d,dispatchAllTablesUpdate(),currentTablesState;}}}if(extension_settings[extensionName]?.[_0x2b4f08(0x1df)]){log(_0x2b4f08(0x1db),_0x2b4f08(0x1c0));try{const _0x58f211=extension_settings[extensionName][_0x2b4f08(0x1df)];return currentTablesState=JSON[_0x2b4f08(0x265)](JSON[_0x2b4f08(0x1e2)](_0x58f211[_0x2b4f08(0x24b)])),_0x58f211[_0x2b4f08(0x1eb)]!==undefined&&saveBatchFillerRuleTemplate(_0x58f211[_0x2b4f08(0x1eb)]),_0x58f211[_0x2b4f08(0x27e)]!==undefined&&saveBatchFillerFlowTemplate(_0x58f211[_0x2b4f08(0x27e)]),dispatchAllTablesUpdate(),currentTablesState;}catch(_0x337d8){log(_0x2b4f08(0x236)+_0x337d8['message'],_0x2b4f08(0x27a));}}return log(_0x2b4f08(0x27b),'info'),currentTablesState=getDefaultTables(),dispatchAllTablesUpdate(),currentTablesState;}export function saveStateToMessage(_0x39e4f5,_0x3ba74b){const _0x18c182=_0x21a297;if(!_0x39e4f5||!_0x3ba74b)return log('缺少状态或目标消息,无法保存。',_0x18c182(0x27a)),![];return!_0x3ba74b[_0x18c182(0x230)]&&(_0x3ba74b[_0x18c182(0x230)]={}),_0x3ba74b[_0x18c182(0x230)][TABLE_DATA_KEY]=JSON[_0x18c182(0x265)](JSON[_0x18c182(0x1e2)](_0x39e4f5)),log(_0x18c182(0x2a0)+_0x3ba74b[_0x18c182(0x1b0)][_0x18c182(0x20b)](0x0,0x14)+'...]',_0x18c182(0x1c0)),!![];}export function saveTables(_0x265e02=_0x21a297(0x209)){const _0x356dfd=_0x21a297;return log('UI操作\x20\x22'+_0x265e02+_0x356dfd(0x1d9),_0x356dfd(0x1c0)),!![];}export function deleteColumn(_0xd81ade,_0x460fd3){const _0x1b4851=_0x21a297,_0x5766fe=getMemoryState();if(!_0x5766fe[_0xd81ade]||_0x460fd3<0x0||_0x460fd3>=_0x5766fe[_0xd81ade][_0x1b4851(0x19d)][_0x1b4851(0x1ca)]){log(_0x1b4851(0x19c)+_0xd81ade+_0x1b4851(0x1ea)+_0x460fd3+'\x20的列。',_0x1b4851(0x27a));return;}_0x5766fe[_0xd81ade][_0x1b4851(0x19d)][_0x1b4851(0x272)](_0x460fd3,0x1),_0x5766fe[_0xd81ade]['rows'][_0x1b4851(0x214)](_0x5fd450=>{const _0x2d0a44=_0x1b4851;_0x5fd450[_0x2d0a44(0x1ca)]>_0x460fd3&&_0x5fd450['splice'](_0x460fd3,0x1);}),_0x5766fe[_0xd81ade][_0x1b4851(0x29d)]&&_0x5766fe[_0xd81ade][_0x1b4851(0x29d)]['length']>_0x460fd3&&_0x5766fe[_0xd81ade][_0x1b4851(0x29d)][_0x1b4851(0x272)](_0x460fd3,0x1),log('成功删除了表格\x20'+_0xd81ade+'\x20的第\x20'+(_0x460fd3+0x1)+_0x1b4851(0x1f4),_0x1b4851(0x1d8)),saveTables(_0x5766fe),dispatchTableUpdate(_0xd81ade);}export function moveRow(_0x1e64ba,_0x567f32,_0x2de730){const _0x3e3e25=_0x21a297,_0x756180=getMemoryState(),_0x28b474=_0x756180[_0x1e64ba];if(!_0x28b474||_0x567f32<0x0||_0x567f32>=_0x28b474[_0x3e3e25(0x23d)]['length'])return;const _0x3dea32=_0x2de730==='up'?_0x567f32-0x1:_0x567f32+0x1;if(_0x3dea32<0x0||_0x3dea32>=_0x28b474['rows'][_0x3e3e25(0x1ca)])return;const [_0x7be99b]=_0x28b474[_0x3e3e25(0x23d)][_0x3e3e25(0x272)](_0x567f32,0x1);_0x28b474[_0x3e3e25(0x23d)][_0x3e3e25(0x272)](_0x3dea32,0x0,_0x7be99b);if(_0x28b474[_0x3e3e25(0x27f)]&&_0x28b474[_0x3e3e25(0x27f)]['length']===_0x28b474[_0x3e3e25(0x23d)][_0x3e3e25(0x1ca)]+0x1){const [_0x2c9b9f]=_0x28b474[_0x3e3e25(0x27f)][_0x3e3e25(0x272)](_0x567f32,0x1);_0x28b474[_0x3e3e25(0x27f)][_0x3e3e25(0x272)](_0x3dea32,0x0,_0x2c9b9f);}log('成功将表格\x20'+_0x1e64ba+_0x3e3e25(0x1b6)+(_0x567f32+0x1)+'\x20行移动到第\x20'+(_0x3dea32+0x1)+_0x3e3e25(0x1aa),'success'),saveTables(_0x756180),dispatchTableUpdate(_0x1e64ba);}export function insertRow(_0x11a8e9,_0x261e36,_0x3507fd='below'){const _0x6077cc=_0x21a297,_0x26577c=getMemoryState(),_0x29f4a7=_0x26577c[_0x11a8e9];if(!_0x29f4a7){log('插入行失败:找不到索引为\x20'+_0x11a8e9+'\x20的表格。',_0x6077cc(0x27a));return;}let _0x4823c1;typeof _0x261e36===_0x6077cc(0x1fb)?_0x4823c1=_0x3507fd==='above'?_0x261e36:_0x261e36+0x1:_0x4823c1=_0x29f4a7['rows'][_0x6077cc(0x1ca)];if(_0x4823c1<0x0)_0x4823c1=0x0;if(_0x4823c1>_0x29f4a7[_0x6077cc(0x23d)][_0x6077cc(0x1ca)])_0x4823c1=_0x29f4a7[_0x6077cc(0x23d)][_0x6077cc(0x1ca)];const _0x536a46=new Array(_0x29f4a7[_0x6077cc(0x19d)]['length'])[_0x6077cc(0x1ef)]('');if(typeof _0x261e36===_0x6077cc(0x28b)&&_0x261e36!==null)for(const _0x14c613 in _0x261e36){const _0x4ac5e3=parseInt(_0x14c613,0xa);!isNaN(_0x4ac5e3)&&_0x4ac5e3<_0x536a46[_0x6077cc(0x1ca)]&&(_0x536a46[_0x4ac5e3]=_0x261e36[_0x14c613],addHighlight(_0x11a8e9,_0x4823c1,_0x4ac5e3));}_0x29f4a7[_0x6077cc(0x23d)]['splice'](_0x4823c1,0x0,_0x536a46);if(!_0x29f4a7[_0x6077cc(0x27f)])_0x29f4a7['rowStatuses']=Array(_0x29f4a7[_0x6077cc(0x23d)][_0x6077cc(0x1ca)])[_0x6077cc(0x1ef)](_0x6077cc(0x1c6));_0x29f4a7[_0x6077cc(0x27f)][_0x6077cc(0x272)](_0x4823c1,0x0,_0x6077cc(0x1c6)),updatedTables[_0x6077cc(0x261)](_0x11a8e9),dispatchTableUpdate(_0x11a8e9),log('成功在表格\x20'+_0x29f4a7[_0x6077cc(0x1bc)]+_0x6077cc(0x1ed)+_0x11a8e9+_0x6077cc(0x1c5)+(_0x4823c1+0x1)+_0x6077cc(0x1d1),_0x6077cc(0x1d8));const _0x1574a3=getContext();if(_0x1574a3[_0x6077cc(0x298)]&&_0x1574a3[_0x6077cc(0x298)][_0x6077cc(0x1ca)]>0x0){const _0x1c7290=_0x1574a3[_0x6077cc(0x298)][_0x1574a3[_0x6077cc(0x298)]['length']-0x1];if(saveStateToMessage(_0x26577c,_0x1c7290)){saveChat();return;}}saveChatDebounced();}export function addRow(_0xf56408){const _0x8f195c=_0x21a297;if(!currentTablesState||!currentTablesState[_0xf56408])return;const _0x3cbd54=currentTablesState[_0xf56408],_0x20c316=_0x3cbd54[_0x8f195c(0x19d)][_0x8f195c(0x1ca)],_0xecf627=Array(_0x20c316)[_0x8f195c(0x1ef)]('');_0x3cbd54[_0x8f195c(0x23d)][_0x8f195c(0x1f1)](_0xecf627);if(!_0x3cbd54['rowStatuses'])_0x3cbd54[_0x8f195c(0x27f)]=Array(_0x3cbd54[_0x8f195c(0x23d)][_0x8f195c(0x1ca)])['fill'](_0x8f195c(0x1c6));_0x3cbd54['rowStatuses'][_0x8f195c(0x1f1)](_0x8f195c(0x1c6)),updatedTables[_0x8f195c(0x261)](_0xf56408),dispatchTableUpdate(_0xf56408);const _0x4bd6a6=_0x8f195c(0x1e7)+_0x3cbd54['name']+']\x20新增了一行。';log(_0x4bd6a6,_0x8f195c(0x1c0));const _0x3018c3=getContext();if(_0x3018c3[_0x8f195c(0x298)]&&_0x3018c3[_0x8f195c(0x298)][_0x8f195c(0x1ca)]>0x0){const _0x3dfa6a=_0x3018c3[_0x8f195c(0x298)][_0x3018c3[_0x8f195c(0x298)][_0x8f195c(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x3dfa6a)){saveChat();return;}}saveChatDebounced();}export function addColumn(_0x22d4a0){const _0x49ef05=_0x21a297;if(!currentTablesState||!currentTablesState[_0x22d4a0])return;const _0x1172d2=currentTablesState[_0x22d4a0],_0x4c329b='新列\x20'+(_0x1172d2[_0x49ef05(0x19d)][_0x49ef05(0x1ca)]+0x1);_0x1172d2['headers'][_0x49ef05(0x1f1)](_0x4c329b),_0x1172d2['rows'][_0x49ef05(0x214)](_0x5f4743=>_0x5f4743[_0x49ef05(0x1f1)](''));if(!_0x1172d2[_0x49ef05(0x29d)])_0x1172d2[_0x49ef05(0x29d)]=[];_0x1172d2['columnWidths'][_0x49ef05(0x1f1)](null);const _0x147be3='表格\x20['+_0x1172d2[_0x49ef05(0x1bc)]+_0x49ef05(0x222);log(_0x147be3,_0x49ef05(0x1c0));const _0xaf447b=getContext();if(_0xaf447b[_0x49ef05(0x298)]&&_0xaf447b[_0x49ef05(0x298)][_0x49ef05(0x1ca)]>0x0){const _0x437d07=_0xaf447b[_0x49ef05(0x298)][_0xaf447b[_0x49ef05(0x298)][_0x49ef05(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x437d07)){saveChat();return;}}saveChatDebounced();}export function updateHeader(_0x4baddd,_0x37e2a1,_0x27bc9f){const _0x4b23c1=_0x21a297;if(!currentTablesState||!currentTablesState[_0x4baddd]||currentTablesState[_0x4baddd][_0x4b23c1(0x19d)][_0x37e2a1]===undefined)return;const _0x6fef2e=currentTablesState[_0x4baddd]['name'],_0x483c21=currentTablesState[_0x4baddd][_0x4b23c1(0x19d)][_0x37e2a1];currentTablesState[_0x4baddd][_0x4b23c1(0x19d)][_0x37e2a1]=_0x27bc9f;const _0x41990f=_0x4b23c1(0x1e7)+_0x6fef2e+']\x20的表头“'+_0x483c21+'”已更新为“'+_0x27bc9f+'”。';log(_0x41990f,_0x4b23c1(0x1c0));const _0x4568d8=getContext();if(_0x4568d8[_0x4b23c1(0x298)]&&_0x4568d8[_0x4b23c1(0x298)][_0x4b23c1(0x1ca)]>0x0){const _0x508152=_0x4568d8[_0x4b23c1(0x298)][_0x4568d8[_0x4b23c1(0x298)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x508152)){saveChat();return;}}saveChatDebounced();}export async function deleteRow(_0x233517,_0x3c5924){const _0x5a4747=_0x21a297,_0x24f5b4=currentTablesState?.[_0x233517];if(!_0x24f5b4||!_0x24f5b4[_0x5a4747(0x23d)][_0x3c5924])return;!_0x24f5b4[_0x5a4747(0x27f)]&&(_0x24f5b4[_0x5a4747(0x27f)]=Array(_0x24f5b4[_0x5a4747(0x23d)][_0x5a4747(0x1ca)])[_0x5a4747(0x1ef)]('normal'));_0x24f5b4[_0x5a4747(0x27f)][_0x3c5924]='pending-deletion',updatedTables['add'](_0x233517);const _0x5b8336=_0x5a4747(0x1e7)+_0x24f5b4[_0x5a4747(0x1bc)]+_0x5a4747(0x297)+(_0x3c5924+0x1)+_0x5a4747(0x210);log(_0x5b8336,_0x5a4747(0x1c0));const _0x587e46=getContext();if(_0x587e46[_0x5a4747(0x298)]?.[_0x5a4747(0x1ca)]>0x0){const _0x5664a1=_0x587e46[_0x5a4747(0x298)][_0x587e46[_0x5a4747(0x298)][_0x5a4747(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x5664a1)){await saveChat(),renderTables(),dispatchTableUpdate(_0x233517);return;}}await saveChatDebounced(),renderTables(),dispatchTableUpdate(_0x233517);}export async function restoreRow(_0x331011,_0x286d63){const _0x4d3b3f=_0x21a297,_0x23b2ee=currentTablesState?.[_0x331011];if(!_0x23b2ee||!_0x23b2ee[_0x4d3b3f(0x23d)][_0x286d63]||!_0x23b2ee[_0x4d3b3f(0x27f)])return;_0x23b2ee[_0x4d3b3f(0x27f)][_0x286d63]='normal',updatedTables[_0x4d3b3f(0x261)](_0x331011);const _0x20f55a=_0x4d3b3f(0x1e7)+_0x23b2ee[_0x4d3b3f(0x1bc)]+_0x4d3b3f(0x297)+(_0x286d63+0x1)+_0x4d3b3f(0x218);log(_0x20f55a,'info');const _0x9ca402=getContext();if(_0x9ca402[_0x4d3b3f(0x298)]?.[_0x4d3b3f(0x1ca)]>0x0){const _0x305d1b=_0x9ca402[_0x4d3b3f(0x298)][_0x9ca402[_0x4d3b3f(0x298)][_0x4d3b3f(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x305d1b)){await saveChat(),renderTables(),dispatchTableUpdate(_0x331011);return;}}await saveChatDebounced(),renderTables(),dispatchTableUpdate(_0x331011);}export function commitPendingDeletions(){const _0xd57dd=_0x21a297;if(!currentTablesState)return![];let _0x59059d=0x0;currentTablesState[_0xd57dd(0x214)]((_0x17652a,_0xef15b0)=>{const _0x2d3b0f=_0xd57dd;if(!_0x17652a['rowStatuses']||_0x17652a[_0x2d3b0f(0x27f)][_0x2d3b0f(0x1ca)]===0x0)return;let _0x27d03a=![];for(let _0x405565=_0x17652a[_0x2d3b0f(0x23d)][_0x2d3b0f(0x1ca)]-0x1;_0x405565>=0x0;_0x405565--){_0x17652a[_0x2d3b0f(0x27f)][_0x405565]==='pending-deletion'&&(_0x17652a['rows'][_0x2d3b0f(0x272)](_0x405565,0x1),_0x17652a[_0x2d3b0f(0x27f)][_0x2d3b0f(0x272)](_0x405565,0x1),_0x59059d++,_0x27d03a=!![]);}_0x27d03a&&updatedTables[_0x2d3b0f(0x261)](_0xef15b0);});if(_0x59059d>0x0)return log(_0xd57dd(0x1b7)+_0x59059d+_0xd57dd(0x1aa),_0xd57dd(0x1c0)),updatedTables[_0xd57dd(0x242)]>0x0&&updatedTables[_0xd57dd(0x214)](_0xba952b=>{dispatchTableUpdate(_0xba952b);}),!![];return![];}export function insertColumn(_0x37272e,_0xeaf8f8,_0x4db62e){const _0x4f73fe=_0x21a297;if(!currentTablesState||!currentTablesState[_0x37272e])return;const _0xa35ad6=currentTablesState[_0x37272e],_0x1cf995=_0x4db62e===_0x4f73fe(0x29a)?_0xeaf8f8:_0xeaf8f8+0x1,_0x6e2bef='新列';_0xa35ad6[_0x4f73fe(0x19d)][_0x4f73fe(0x272)](_0x1cf995,0x0,_0x6e2bef),_0xa35ad6['rows']['forEach'](_0x567f5d=>_0x567f5d[_0x4f73fe(0x272)](_0x1cf995,0x0,''));if(!_0xa35ad6[_0x4f73fe(0x29d)])_0xa35ad6[_0x4f73fe(0x29d)]=[];_0xa35ad6[_0x4f73fe(0x29d)]['splice'](_0x1cf995,0x0,null);const _0xfd60c1=_0x4f73fe(0x1e7)+_0xa35ad6[_0x4f73fe(0x1bc)]+_0x4f73fe(0x258)+(_0xeaf8f8+0x1)+_0x4f73fe(0x207)+(_0x4db62e===_0x4f73fe(0x29a)?'左侧':'右侧')+_0x4f73fe(0x198);log(_0xfd60c1,_0x4f73fe(0x1c0));const _0x339799=getContext();if(_0x339799['chat']&&_0x339799[_0x4f73fe(0x298)][_0x4f73fe(0x1ca)]>0x0){const _0x4f1fb7=_0x339799[_0x4f73fe(0x298)][_0x339799['chat'][_0x4f73fe(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x4f1fb7)){saveChat();return;}}saveChatDebounced();}export function moveColumn(_0x51bfb7,_0x3f0326,_0x1885c1){const _0x59712b=_0x21a297;if(!currentTablesState||!currentTablesState[_0x51bfb7])return;const _0x25d0a1=currentTablesState[_0x51bfb7],_0x53ef10=_0x25d0a1['headers'],_0x267a9d=_0x25d0a1['rows'],_0x32944f=_0x1885c1==='left'?_0x3f0326-0x1:_0x3f0326+0x1;if(_0x32944f<0x0||_0x32944f>=_0x53ef10[_0x59712b(0x1ca)]){log(_0x59712b(0x1d6)+_0x3f0326+_0x59712b(0x20d),_0x59712b(0x25c));return;}const [_0x3b9941]=_0x53ef10[_0x59712b(0x272)](_0x3f0326,0x1);_0x53ef10[_0x59712b(0x272)](_0x32944f,0x0,_0x3b9941),_0x267a9d[_0x59712b(0x214)](_0x3f1455=>{const _0x40edd9=_0x59712b,[_0x300774]=_0x3f1455[_0x40edd9(0x272)](_0x3f0326,0x1);_0x3f1455['splice'](_0x32944f,0x0,_0x300774);});if(_0x25d0a1[_0x59712b(0x29d)]&&_0x25d0a1[_0x59712b(0x29d)]['length']>_0x3f0326){const [_0x1232a2]=_0x25d0a1[_0x59712b(0x29d)][_0x59712b(0x272)](_0x3f0326,0x1);_0x25d0a1['columnWidths'][_0x59712b(0x272)](_0x32944f,0x0,_0x1232a2);}const _0x2a600b=_0x59712b(0x1e7)+_0x25d0a1[_0x59712b(0x1bc)]+_0x59712b(0x1a9)+_0x3b9941+_0x59712b(0x235)+(_0x1885c1==='left'?'左':'右')+_0x59712b(0x250);log(_0x2a600b,'info');const _0x2efa5f=getContext();if(_0x2efa5f[_0x59712b(0x298)]&&_0x2efa5f['chat']['length']>0x0){const _0x4fabd6=_0x2efa5f[_0x59712b(0x298)][_0x2efa5f[_0x59712b(0x298)][_0x59712b(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x4fabd6)){saveChat();return;}}saveChatDebounced();}export function deleteTable(_0x4d03f7){const _0xbea129=_0x21a297;if(!currentTablesState||!currentTablesState[_0x4d03f7])return;const _0x2ff3cc=currentTablesState[_0x4d03f7]['name'];currentTablesState[_0xbea129(0x272)](_0x4d03f7,0x1);const _0x253327=_0xbea129(0x1e7)+_0x2ff3cc+']\x20已被成功废黜。';log(_0x253327,_0xbea129(0x1d8));const _0x29750f=getContext();if(_0x29750f[_0xbea129(0x298)]&&_0x29750f[_0xbea129(0x298)][_0xbea129(0x1ca)]>0x0){const _0x1f63a2=_0x29750f[_0xbea129(0x298)][_0x29750f[_0xbea129(0x298)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x1f63a2)){saveChat(),log(_0xbea129(0x1a0),'success');return;}}log(_0xbea129(0x263),_0xbea129(0x27a)),saveChatDebounced();}export function addTable(_0x507a63){const _0x28f5e2=_0x21a297;if(!_0x507a63||!_0x507a63[_0x28f5e2(0x202)]()){log('无法创建表格:名称不能为空。','error'),toastr[_0x28f5e2(0x27a)]('表格名称不能为空。',_0x28f5e2(0x295));return;}!currentTablesState&&loadTables();if(currentTablesState['some'](_0x2cfbe2=>_0x2cfbe2[_0x28f5e2(0x1bc)]===_0x507a63[_0x28f5e2(0x202)]())){log('无法创建表格:名为\x20\x22'+_0x507a63+'\x22\x20的表格已存在。',_0x28f5e2(0x27a)),toastr['error'](_0x28f5e2(0x20c)+_0x507a63+_0x28f5e2(0x284),_0x28f5e2(0x295));return;}const _0x2560b8={'name':_0x507a63[_0x28f5e2(0x202)](),'headers':[_0x28f5e2(0x22c)],'rows':[],'rowStatuses':[],'columnWidths':[],'note':'这是一个新创建的表格。','rule_add':'允许','rule_delete':'允许','rule_update':'允许','charLimitRules':{},'rowLimitRule':0x0};currentTablesState[_0x28f5e2(0x1f1)](_0x2560b8);const _0x3beb1d=_0x28f5e2(0x26e)+_0x507a63['trim']()+']。';log(_0x3beb1d,_0x28f5e2(0x1d8));const _0x5f4254=getContext();if(_0x5f4254['chat']&&_0x5f4254[_0x28f5e2(0x298)][_0x28f5e2(0x1ca)]>0x0){const _0x4cd10b=_0x5f4254['chat'][_0x5f4254[_0x28f5e2(0x298)][_0x28f5e2(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x4cd10b)){saveChat(),log(_0x28f5e2(0x1dc),_0x28f5e2(0x1d8));return;}}log(_0x28f5e2(0x26b),_0x28f5e2(0x27a)),saveChatDebounced();}export function renameTable(_0x1d1aa7,_0x560bff){const _0x4cf39e=_0x21a297;if(!currentTablesState||!currentTablesState[_0x1d1aa7]){log(_0x4cf39e(0x1cf),_0x4cf39e(0x27a)),toastr[_0x4cf39e(0x27a)](_0x4cf39e(0x24c),_0x4cf39e(0x251));return;}const _0x527453=_0x560bff['trim']();if(!_0x527453){log(_0x4cf39e(0x203),'error'),toastr[_0x4cf39e(0x27a)](_0x4cf39e(0x293),'重命名失败');return;}if(currentTablesState[_0x4cf39e(0x252)]((_0x421c5e,_0x320c6d)=>_0x320c6d!==_0x1d1aa7&&_0x421c5e['name']===_0x527453)){log(_0x4cf39e(0x1a7)+_0x527453+_0x4cf39e(0x284),'error'),toastr[_0x4cf39e(0x27a)]('名为\x20\x22'+_0x527453+'\x22\x20的表格已存在。','重命名失败');return;}const _0x19c4f0=currentTablesState[_0x1d1aa7][_0x4cf39e(0x1bc)];currentTablesState[_0x1d1aa7]['name']=_0x527453,log(_0x4cf39e(0x1bf)+_0x19c4f0+_0x4cf39e(0x221)+_0x527453+'\x22。',_0x4cf39e(0x1d8));const _0x2302b1=getContext();if(_0x2302b1[_0x4cf39e(0x298)]&&_0x2302b1['chat'][_0x4cf39e(0x1ca)]>0x0){const _0xde2d76=_0x2302b1[_0x4cf39e(0x298)][_0x2302b1[_0x4cf39e(0x298)][_0x4cf39e(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0xde2d76)){saveChat();return;}}saveChatDebounced();}export function moveTable(_0x1a99ba,_0x3bba04){const _0x8fb6d2=_0x21a297;if(!currentTablesState||!currentTablesState[_0x1a99ba])return;const _0x38f417=_0x3bba04==='up'?_0x1a99ba-0x1:_0x1a99ba+0x1;if(_0x38f417<0x0||_0x38f417>=currentTablesState[_0x8fb6d2(0x1ca)]){log('无法移动表格:索引\x20'+_0x1a99ba+_0x8fb6d2(0x20d),'warn');return;}const _0x4477f4=currentTablesState[_0x1a99ba];currentTablesState[_0x1a99ba]=currentTablesState[_0x38f417],currentTablesState[_0x38f417]=_0x4477f4;const _0x547851=_0x8fb6d2(0x1e7)+_0x4477f4[_0x8fb6d2(0x1bc)]+']\x20的顺序已调整。';log(_0x547851,_0x8fb6d2(0x1d8));const _0x179f34=getContext();if(_0x179f34[_0x8fb6d2(0x298)]&&_0x179f34[_0x8fb6d2(0x298)][_0x8fb6d2(0x1ca)]>0x0){const _0x167ea6=_0x179f34[_0x8fb6d2(0x298)][_0x179f34['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x167ea6)){saveChat(),log('表格顺序调整后的状态已强制写入最新消息并立即保存。',_0x8fb6d2(0x1d8));return;}}log(_0x8fb6d2(0x291),_0x8fb6d2(0x27a)),saveChatDebounced();}export function updateTableRules(_0x485153,_0x35765f){const _0x3804ff=_0x21a297;if(!currentTablesState||!currentTablesState[_0x485153])return;const _0x5b89c1=currentTablesState[_0x485153];_0x5b89c1[_0x3804ff(0x1b5)]=_0x35765f[_0x3804ff(0x1b5)],_0x5b89c1['rule_add']=_0x35765f[_0x3804ff(0x25d)],_0x5b89c1[_0x3804ff(0x238)]=_0x35765f[_0x3804ff(0x238)],_0x5b89c1[_0x3804ff(0x21c)]=_0x35765f[_0x3804ff(0x21c)],_0x5b89c1[_0x3804ff(0x21e)]=_0x35765f[_0x3804ff(0x21e)],_0x5b89c1[_0x3804ff(0x247)]=_0x35765f[_0x3804ff(0x247)],delete _0x5b89c1[_0x3804ff(0x29e)];const _0x3279ee='表格\x20['+_0x5b89c1[_0x3804ff(0x1bc)]+_0x3804ff(0x226);log(_0x3279ee,_0x3804ff(0x1c0));const _0x5772d8=getContext();if(_0x5772d8[_0x3804ff(0x298)]&&_0x5772d8[_0x3804ff(0x298)]['length']>0x0){const _0x3ea9df=_0x5772d8[_0x3804ff(0x298)][_0x5772d8[_0x3804ff(0x298)][_0x3804ff(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x3ea9df)){saveChat();return;}}saveChatDebounced();}export function updateRow(_0x1d5868,_0x33714c,_0x4baa3e){const _0x19f10c=_0x21a297;if(!currentTablesState||!currentTablesState[_0x1d5868]){log(_0x19f10c(0x216)+_0x1d5868+_0x19f10c(0x239),'error');return;}const _0x48524e=currentTablesState[_0x1d5868];if(_0x33714c>=_0x48524e[_0x19f10c(0x23d)][_0x19f10c(0x1ca)]){log('AI指令意图更新不存在的行\x20(rowIndex:\x20'+_0x33714c+_0x19f10c(0x1ab)+_0x48524e[_0x19f10c(0x1bc)]+']\x20末尾新增一行。',_0x19f10c(0x25c)),insertRow(_0x1d5868,_0x4baa3e);return;}const _0x3b4e06=_0x48524e[_0x19f10c(0x23d)][_0x33714c];for(const _0xc984dc in _0x4baa3e){const _0x5e98c3=parseInt(_0xc984dc,0xa);_0x5e98c3<_0x3b4e06['length']&&(_0x3b4e06[_0x5e98c3]=_0x4baa3e[_0x5e98c3],addHighlight(_0x1d5868,_0x33714c,_0x5e98c3));}updatedTables[_0x19f10c(0x261)](_0x1d5868),dispatchTableUpdate(_0x1d5868);const _0x1d307b='AI\x20指令更新了表格\x20['+_0x48524e[_0x19f10c(0x1bc)]+_0x19f10c(0x297)+(_0x33714c+0x1)+_0x19f10c(0x1aa);log(_0x1d307b,_0x19f10c(0x1c0));const _0x379a99=getContext();if(_0x379a99[_0x19f10c(0x298)]&&_0x379a99['chat']['length']>0x0){const _0x2c79ab=_0x379a99[_0x19f10c(0x298)][_0x379a99[_0x19f10c(0x298)][_0x19f10c(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x2c79ab)){saveChat();return;}}saveChatDebounced();}export function clearAllTables(){const _0x2beeb7=_0x21a297;if(!currentTablesState){log(_0x2beeb7(0x259),_0x2beeb7(0x27a));return;}currentTablesState['forEach']((_0x48e158,_0x24b41e)=>{const _0x15b523=_0x2beeb7;_0x48e158[_0x15b523(0x23d)][_0x15b523(0x1ca)]>0x0&&updatedTables[_0x15b523(0x261)](_0x24b41e),_0x48e158[_0x15b523(0x23d)]=[],_0x48e158[_0x15b523(0x27f)]=[];}),log('所有表格的行数据已在内存中清空。',_0x2beeb7(0x25c)),dispatchAllTablesUpdate();const _0x44b945=getContext();if(_0x44b945[_0x2beeb7(0x298)]&&_0x44b945['chat'][_0x2beeb7(0x1ca)]>0x0){const _0x5a3e46=_0x44b945[_0x2beeb7(0x298)][_0x44b945[_0x2beeb7(0x298)][_0x2beeb7(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x5a3e46)){saveChat(),log(_0x2beeb7(0x223),_0x2beeb7(0x1d8)),toastr['success'](_0x2beeb7(0x266),'操作完成');return;}}log(_0x2beeb7(0x29c),_0x2beeb7(0x27a)),saveChatDebounced();}function _0x56b0(){const _0x1bf83b=['body','4566mojabb','toString','【清除全局预设】\x0a\x0a您确定要清除已设置的全局预设吗?\x0a\x0a清除后,新聊天将恢复使用扩展内置的默认表格模板。',')\x20的第\x20','normal','.json','【修改】:\x20','与<user>关系','length','limit','预设已成功导入并应用。','关系栏','【触发条件】当一个已知技能的效果发生进化、变异或被添加了新的限制/效果时(例如,技能升级),必须更新其“技能效果”描述。','重命名失败:表格不存在。','设定栏','\x20行位置插入了新行。','文件格式无效或缺少版本号/表格数据。','table_system_enabled','9gIPsAB','click','无法移动列:索引\x20','dispatchEvent','success','\x22\x20已更新内存状态。','getPrototypeOf','未在聊天记录中找到表格,正在加载全局预设...','新表格状态已强制写入最新消息并立即保存。','toISOString','Amily2-','global_table_preset','聊天记录不足,无法执行回退操作。','5toUPrV','stringify','1199dxCkSd','removeChild','readAsText',')字限制,请进行缩减。】','表格\x20[','pending-deletion','rowIndex','\x20中找不到索引为\x20','batchFillerRuleTemplate','injectionFlowTemplate','\x20(索引\x20','无法导出:当前表格状态为空。','fill','clear','push','revokeObjectURL','runner','\x20列。','物品名','confirm','Log','其他重要信息','\x20条消息加载表格状态...','导入成功','number','type','split','UI已更新以显示回退后的状态。','从预设模板生成默认表格...','【当前(','角色栏','trim','重命名失败:名称不能为空。','执行AI指令:\x20deleteRow(tableIndex=','纯净预设','\x0a*\x20','\x20列的','19154290paXXCt','未知操作','导入预设失败:\x20','substring','名为\x20\x22','\x20已在边界。','aiTemplate',')列,字符超出规定(','\x20行已标记为待删除。','【增加】:\x20',',\x20rowIndex=','amily2_ai_template','forEach','isArray','AI指令错误:尝试在不存在的表格索引\x20','AMILY2_TABLE_UPDATED','\x20行已恢复。','所有AI指令已成功执行完毕。','function','【触发条件】当角色的任何信息发生持久性或关键性变化时,必须更新对应单元格。例如:\x0a1.\x20外貌/身形/衣着发生永久性改变(如断肢、换上新装备)。\x0a2.\x20性格因重大事件而扭转。\x0a3.\x20身份或职业发生变更(如继承王位、被解雇)。\x0a4.\x20与<user>的关系发生根本性转变(如从敌人变为盟友)。','rule_update','slice','charLimitRules',')行(','version','\x22\x20已重命名为\x20\x22',']\x20新增了一列。','清空行数据后的状态已强制写入最新消息并立即保存。','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20insertRow,\x20deleteRow,\x20updateRow\x20}\x20=\x20runner;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','重要原因',']\x20的规则已更新。','全局预设已被清除。',',\x20data=','当前没有设置全局预设。','\x0a\x20\x20\x20\x20\x20\x20\x20\x20','30cbbFhr','新列\x201','[SuperMemory]\x20Dispatching\x20update\x20events\x20for\x20ALL\x20tables...','没有可导出的表格数据。','【触发条件】当两个NPC之间展现出明确的、非临时性的人际关系时,应添加新行。','extra','Amily2-Table-Preset-v3.0-separated_templates','href','onload','batch_filler_rule_template','”已向','加载全局预设失败:\x20','【核心作用】专门用于记录除主角<user>以外的角色之间的复杂人际关系网(NPC\x20to\x20NPC)。\x0a【字段详解】\x0a-\x20主动方:\x20关系的发起者或主体(例如\x27艾克\x27)。\x0a-\x20被动方:\x20关系的接收者或对象(例如\x27莉娜\x27)。\x0a-\x20关系:\x20用简短的词汇描述两者之间的关系本质,如\x27暗恋\x27、\x27世仇\x27、\x27师徒\x27。\x0a-\x20详情:\x20对这段关系的具体描述或背景补充。','rule_delete','\x20中操作。','用户取消了全局预设导入操作。','filter','预设已成功导入!','rows','986160vcPeLr','具体描述','执行者','【触发条件】当一个角色被确认永久性死亡(非假死或失踪),且其存在不再对后续剧情有直接影响时,可以删除该行。','size',')行,请结合剧情缩减至(','在第\x20','69kuQbmc','match','rowLimitRule','正在执行回退并重新填表...','【触发条件】当任务的“状态”发生任何变化时,必须更新。例如,从\x27进行中\x27变为\x27已完成\x27。当任务的“详情”或“结果”有新的关键信息补充时,也应更新。','填表完成','tables','表格不存在。','导入操作已取消。','未能保存回退状态,操作中止。','7987744exsxZb','移动。','重命名失败','some','【触发条件】如果发现表格中存在两个描述完全相同的重复技能,应删除其中一个。如果记录了非<user>的技能,应立即删除。','input','\x20条消息中找到基准表格数据。','columnIndex','已清除所有表格的更新标记。',']\x20在第\x20','无法清空:当前表格状态为空。',')超出规定(','9884670TxgEjn','warn','rule_add','操作已取消。','全局预设已成功导入并保存到扩展设置中。','includes','add','【删除】:\x20','无法找到可锚定的消息或保存失败,删除操作可能不会被持久化!','执行AI指令:\x20insertRow(tableIndex=','parse','所有表格的剧情内容已清空。','【触发条件】当一个物品被彻底摧毁、消耗完毕或永久失去其特殊意义时,可以删除。','【触发条件】当以下任一情况发生时,必须更新此行:\x0a1.\x20时间发生显著跳跃(例如,\x27几小时后\x27、\x27第二天\x27)。\x0a2.\x20角色从一个地点移动到另一个地点。\x0a3.\x20场景中关键角色的出入导致在场人员发生变化。','【触发条件】当<user>通过括号、旁白或其他明确的“第四面墙”方式,提出关于故事背景、规则或未来走向的指令时,必须记录于此。','已成功将回退后的状态保存至最新消息。','无法找到可锚定的消息或保存失败,新表格可能不会被持久化!','导入全局预设失败:\x20','【核心作用】此表格记录了来自<user>的、超越故事本身的“元指令”或世界观设定,拥有最高解释权。内容应被严格遵守,禁止AI自行修改。\x0a【字段详解】\x0a-\x20类型:\x20指令的分类,如\x27世界观设定\x27、\x27剧情走向要求\x27、\x27角色行为禁令\x27。\x0a-\x20具体描述:\x20完整、准确地记录<user>提出的具体要求。','已成功创建新表格:[','操作成功','】已开始下载。','无法回退:聊天记录不足。','splice','【触发条件】当物品的“状态”(如被损坏)、“拥有者”(如被转交或被盗)或“详情”(如发现了新功能)发生变化时,必须更新。','】已成功导出。','aiFlowTemplate','map','\x20条表格操作指令...','onchange','重新填表失败:\x20','error','未找到任何表格数据或全局预设,使用默认模板。','【触发条件】只能在<user>明确表示要移除或废弃某条设定时,才能删除对应行。','任务栏','batchFillerFlowTemplate','rowStatuses','---','aiRuleTemplate','Amily2-Table-Preset-v2.0-full','every','\x22\x20的表格已存在。','【核心作用】记录那些在故事中具有特殊功能、背景或情感价值的关键物品。普通物品不应记录。\x0a【字段详解】\x0a-\x20物品名:\x20物品的名称。\x0a-\x20类型:\x20物品的分类,如\x27武器\x27、\x27道具\x27、\x27信物\x27、\x27关键物品\x27。\x0a-\x20详情:\x20描述物品的外观、材质和已知功能。\x0a-\x20状态:\x20物品的当前状况,如\x27完好\x27、\x27破损\x27、\x27能量耗尽\x27。\x0a-\x20拥有者:\x20当前持有该物品的角色名。\x0a-\x20重要原因:\x20解释该物品为何重要,例如\x27是解开谜题的钥匙\x27或\x27是母亲的遗物\x27。','(该表当前内容为空)\x0a','技能名','导入失败:','回退状态保存失败,操作中止。','已清除所有单元格高亮标记。','object','【核心作用】专门用于记录主角<user>掌握的各种技能、魔法、被动能力或特殊专长。\x0a【字段详解】\x0a-\x20技能名:\x20技能的正式名称。\x0a-\x20技能效果:\x20清晰、简洁地描述该技能使用时产生的具体效果、消耗和限制条件。','【触发条件】只能在<user>明确表示要修改某条设定时,才能更新对应行的描述。','log','files','warning','无法找到可锚定的消息或保存失败,顺序调整可能不会被持久化!','执行失败','表格名称不能为空。','replace','创建失败','无需清除,当前未设置任何全局预设。',']\x20的第\x20','chat','join','left','\x20|\x20','无法找到可锚定的消息或保存失败,清空操作可能不会被持久化!','columnWidths','charLimitRule','AI返回内容为空,无法更新表格。','表格状态已准备写入消息\x20[','[SuperMemory]\x20Dispatched\x20update\x20event\x20for\x20','super_memory_enabled','导入的预设已强制写入最新消息并立即保存。','target','createElement','插入了新列。','createObjectURL','【核心作用】此表格是角色关系和状态的核心数据库,用于记录所有在故事中出现的重要角色的详细信息。\x0a【字段详解】\x0a-\x20角色名:\x20角色的唯一标识。\x0a-\x20外貌:\x20描述五官、发型、发色、肤色等面部特征。\x0a-\x20身形:\x20描述身高、体型、肌肉状况、特殊身体标记(如伤疤)等。\x0a-\x20衣着:\x20描述角色当前或标志性的穿着,包括服装、配饰等。\x0a-\x20性格:\x20概括角色的核心性格特质,使用1-3个关键词,如\x27勇敢/鲁莽/忠诚\x27。\x0a-\x20身份:\x20角色的社会背景或出身,如\x27贵族后裔\x27、\x27流浪者\x27。\x0a-\x20职业:\x20角色赖以谋生的工作或职责,如\x27佣兵\x27、\x27学者\x27。\x0a-\x20与<user>关系:\x20描述该角色与主角<user>之间的社会或情感关系,如\x27盟友\x27、\x27导师\x27、\x27敌人\x27。\x0a-\x20爱好:\x20角色的兴趣和消遣活动。\x0a-\x20住所:\x20角色的常住地。\x0a-\x20其他重要信息:\x20记录任何不属于以上类别但对角色至关重要的信息,如特殊能力、过去的经历等。','【全局预设导入】\x0a\x0a这将把选定的预设设置为所有新聊天的默认表格。\x0a\x0a此操作将覆盖任何已存在的全局预设,是否确定?','删除列失败:在表格\x20','headers','amily2-force-ui-reload','result','废黜表格后的状态已强制写入最新消息并立即保存。','全局预设已清除,新聊天将使用默认模板。','appendChild','9156RqXcwo','角色名','未能在上一楼找到可用的表格状态。','表格系统总开关已关闭,无法执行回退填表。','重命名失败:名为\x20\x22','message',']\x20的列“','\x20行。','),已智能转换为在表格\x20[','用户取消了导入操作。','表格系统总开关已关闭,跳过\x20<Amily2Edit>\x20标签处理。','Amily2-Table-Preset-v2.0-clean','【触发条件】当一个有名有姓的角色首次出现,并与<user>或当前剧情发生有意义的互动时,必须为其创建新的一行。','mes','[SuperMemory]\x20已从元数据恢复内存状态并刷新\x20UI。','accept','导入的表格数据格式不正确:\x20','导出成功','note','\x20的第\x20','已提交并永久删除了\x20','305308Jprtfb','\x20|\x0a','【触发条件】当两个NPC之间的关系性质发生转变(如从\x27盟友\x27变为\x27背叛者\x27)时,必须更新。','执行AI指令时发生错误:\x20','name','【触发条件】当一个物品被明确赋予了特殊意义(如被赠予、在关键事件中扮演重要角色)或展示出独特功能时,应为其创建条目。','未在AI返回内容中找到有效的\x20<Amily2Edit>\x20指令块。','表格\x20\x22','info'];_0x56b0=function(){return _0x1bf83b;};return _0x56b0();}function checkTableRules(_0x327ced){const _0x4783ec=_0x21a297;let _0x5684cd=[];_0x327ced['rowLimitRule']&&_0x327ced[_0x4783ec(0x247)]>0x0&&_0x327ced[_0x4783ec(0x23d)][_0x4783ec(0x1ca)]>_0x327ced['rowLimitRule']&&_0x5684cd[_0x4783ec(0x1f1)]('【当前('+_0x327ced[_0x4783ec(0x1bc)]+_0x4783ec(0x25a)+_0x327ced[_0x4783ec(0x247)]+_0x4783ec(0x243)+_0x327ced[_0x4783ec(0x247)]+')行以下,但切莫完全删除。】');const _0x12938b=_0x327ced['charLimitRules']||{};for(const _0x1dc057 in _0x12938b){const _0x25b01b=parseInt(_0x1dc057,0xa),_0x6c6955=_0x12938b[_0x25b01b];if(_0x6c6955>0x0&&_0x25b01b>=0x0&&_0x25b01b<_0x327ced[_0x4783ec(0x19d)]['length']){const _0x19029c=_0x327ced[_0x4783ec(0x19d)][_0x25b01b],_0x117631=[];_0x327ced[_0x4783ec(0x23d)]['forEach']((_0x99a28d,_0x5bbdff)=>{const _0xdfd7db=_0x4783ec;if(_0x327ced['rowStatuses']&&_0x327ced[_0xdfd7db(0x27f)][_0x5bbdff]===_0xdfd7db(0x1e8))return;const _0xa2e959=_0x99a28d[_0x25b01b]||'';_0xa2e959[_0xdfd7db(0x1ca)]>_0x6c6955&&_0x117631[_0xdfd7db(0x1f1)](_0x5bbdff);});if(_0x117631[_0x4783ec(0x1ca)]>0x0){const _0x3c91ca=_0x117631['join']('、');_0x5684cd[_0x4783ec(0x1f1)](_0x4783ec(0x200)+_0x327ced['name']+')第('+_0x3c91ca+_0x4783ec(0x21f)+_0x19029c+_0x4783ec(0x20f)+_0x6c6955+_0x4783ec(0x1e6));}}}return _0x5684cd[_0x4783ec(0x299)]('\x0a');}export function convertTablesToCsvString(){!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x549d28='';return currentTablesState['forEach']((_0x379946,_0x7f4883)=>{const _0x4e27a3=_0x5b60;_0x549d28+=_0x4e27a3(0x206)+_0x7f4883+':'+_0x379946[_0x4e27a3(0x1bc)]+'\x0a',_0x549d28+='【说明】:\x0a'+(_0x379946[_0x4e27a3(0x1b5)]||'无')+'\x0a';const _0x6d6341=_0x379946[_0x4e27a3(0x1bc)]['replace'](/\s/g,'')+'内容';_0x549d28+='<'+_0x6d6341+'>\x0a';const _0x502efe=[_0x4e27a3(0x1e9),..._0x379946[_0x4e27a3(0x19d)][_0x4e27a3(0x276)]((_0x22e365,_0x2514d6)=>_0x2514d6+':'+_0x22e365)];_0x549d28+='|\x20'+_0x502efe['join']('\x20|\x20')+_0x4e27a3(0x1b9),_0x549d28+='|'+_0x502efe['map'](()=>_0x4e27a3(0x280))[_0x4e27a3(0x299)]('|')+'|\x0a';const _0x34bf73=_0x379946[_0x4e27a3(0x23d)][_0x4e27a3(0x23b)]((_0x2b5a2f,_0x5584db)=>!_0x379946[_0x4e27a3(0x27f)]||_0x379946[_0x4e27a3(0x27f)][_0x5584db]!==_0x4e27a3(0x1e8));_0x34bf73[_0x4e27a3(0x1ca)]===0x0?_0x549d28+='(该表当前内容为空)\x0a':_0x379946['rows'][_0x4e27a3(0x214)]((_0x4ce1a8,_0x3bd52c)=>{const _0xafb6e7=_0x4e27a3;if(_0x379946[_0xafb6e7(0x27f)]&&_0x379946[_0xafb6e7(0x27f)][_0x3bd52c]===_0xafb6e7(0x1e8))return;if(Array['isArray'](_0x4ce1a8)){const _0x32d15f=_0x4ce1a8[_0xafb6e7(0x276)](_0x3ed010=>{const _0x26c942=_0x3ed010===null||_0x3ed010===undefined||_0x3ed010===''?'未知':String(_0x3ed010);return _0x26c942['replace'](/\|/g,'|');});_0x549d28+='|\x20'+_0x3bd52c+_0xafb6e7(0x29b)+_0x32d15f[_0xafb6e7(0x299)](_0xafb6e7(0x29b))+_0xafb6e7(0x1b9);}});const _0x546b12=checkTableRules(_0x379946);_0x546b12&&(_0x549d28+=_0x546b12+'\x0a'),_0x549d28+='</'+_0x6d6341+'>\x0a',_0x549d28+=_0x4e27a3(0x211)+(_0x379946['rule_add']||'允许')+'\x0a',_0x549d28+=_0x4e27a3(0x262)+(_0x379946['rule_delete']||'允许')+'\x0a',_0x549d28+=_0x4e27a3(0x1c8)+(_0x379946[_0x4e27a3(0x21c)]||'允许')+'\x0a',_0x7f4883<currentTablesState[_0x4e27a3(0x1ca)]-0x1&&(_0x549d28+='\x0a---\x0a');}),_0x549d28;}export function convertTablesToCsvStringForContentOnly(){const _0x155a16=_0x21a297,_0x43e6f6=getMemoryState();if(!_0x43e6f6||_0x43e6f6[_0x155a16(0x1ca)]===0x0)return'';let _0x410b0e='';return _0x43e6f6['forEach'](_0x1ab954=>{const _0x22e9d8=_0x155a16;_0x410b0e+='\x0a<'+_0x1ab954[_0x22e9d8(0x1bc)]+'>\x0a';const _0x23c88e='|\x20'+_0x1ab954[_0x22e9d8(0x19d)][_0x22e9d8(0x299)](_0x22e9d8(0x29b))+'\x20|';_0x410b0e+=_0x23c88e+'\x0a';const _0x285760='|'+_0x1ab954[_0x22e9d8(0x19d)][_0x22e9d8(0x276)](()=>_0x22e9d8(0x280))['join']('|')+'|';_0x410b0e+=_0x285760+'\x0a';const _0x1359f3=_0x1ab954[_0x22e9d8(0x23d)][_0x22e9d8(0x23b)]((_0x5be18a,_0x5ae474)=>!_0x1ab954[_0x22e9d8(0x27f)]||_0x1ab954['rowStatuses'][_0x5ae474]!=='pending-deletion');_0x1359f3[_0x22e9d8(0x1ca)]>0x0?_0x1359f3[_0x22e9d8(0x214)](_0x5ad805=>{const _0x243bef=_0x22e9d8;if(Array['isArray'](_0x5ad805)){const _0x4a4564=_0x5ad805[_0x243bef(0x276)](_0x42797b=>_0x42797b===null||_0x42797b===undefined||_0x42797b===''?'\x20':_0x42797b[_0x243bef(0x1c3)]()),_0x520b0b='|\x20'+_0x4a4564[_0x243bef(0x299)](_0x243bef(0x29b))+'\x20|';_0x410b0e+=_0x520b0b+'\x0a';}}):_0x410b0e+=_0x22e9d8(0x286),_0x410b0e+='</'+_0x1ab954[_0x22e9d8(0x1bc)]+'>\x0a';}),_0x410b0e['trim']();}loadTables();export function getBatchFillerRuleTemplate(){return extension_settings[extensionName]?.['batch_filler_rule_template']??DEFAULT_AI_RULE_TEMPLATE;}export function saveBatchFillerRuleTemplate(_0x20a164){const _0x53ad63=_0x21a297;extension_settings[extensionName][_0x53ad63(0x234)]=_0x20a164,saveSettingsDebounced();}export function getBatchFillerFlowTemplate(){return extension_settings[extensionName]?.['batch_filler_flow_template']??DEFAULT_AI_FLOW_TEMPLATE;}export function saveBatchFillerFlowTemplate(_0xcffb5e){extension_settings[extensionName]['batch_filler_flow_template']=_0xcffb5e,saveSettingsDebounced();}export function getAiFlowTemplateForInjection(){const _0x17f769=_0x21a297;return extension_settings[extensionName]?.[_0x17f769(0x213)]??DEFAULT_AI_FLOW_TEMPLATE;}export async function updateTableFromText(_0x578cc9){const _0x3ae291=_0x21a297,_0x499a94=extension_settings[extensionName];if(_0x499a94[_0x3ae291(0x1d3)]===![]){log(_0x3ae291(0x1ad),_0x3ae291(0x1c0));return;}if(!_0x578cc9){log(_0x3ae291(0x29f),_0x3ae291(0x25c));return;}const _0x3e4b3f=_0x578cc9[_0x3ae291(0x246)](/<Amily2Edit>([\s\S]*?)<\/Amily2Edit>/);if(!_0x3e4b3f||!_0x3e4b3f[0x1]){log(_0x3ae291(0x1be),_0x3ae291(0x25c));return;}let _0x8823a=_0x3e4b3f[0x1][_0x3ae291(0x294)](/<!--|-->/g,'')[_0x3ae291(0x202)]();if(!_0x8823a){log('AI指令块为空,无需执行任何操作。','info');return;}const _0x470610=_0x8823a[_0x3ae291(0x1fd)]('\x0a')[_0x3ae291(0x23b)](_0x5978f7=>_0x5978f7['trim']()!=='');log('准备执行从AI返回的\x20'+_0x470610[_0x3ae291(0x1ca)]+_0x3ae291(0x277),_0x3ae291(0x1c0));const _0x520255={'insertRow':(_0x40b262,_0xd7fed8)=>{const _0x17ec4=_0x3ae291;log(_0x17ec4(0x264)+_0x40b262+',\x20data='+JSON['stringify'](_0xd7fed8)+')',_0x17ec4(0x1c0)),insertRow(_0x40b262,_0xd7fed8);},'deleteRow':(_0x13a889,_0xc003d6)=>{const _0x3a14e1=_0x3ae291;log(_0x3a14e1(0x204)+_0x13a889+_0x3a14e1(0x212)+_0xc003d6+')',_0x3a14e1(0x1c0)),deleteRow(_0x13a889,_0xc003d6);},'updateRow':(_0x4cb3b2,_0x119dad,_0x354222)=>{const _0x5c04de=_0x3ae291;log('执行AI指令:\x20updateRow(tableIndex='+_0x4cb3b2+',\x20rowIndex='+_0x119dad+_0x5c04de(0x228)+JSON[_0x5c04de(0x1e2)](_0x354222)+')',_0x5c04de(0x1c0)),updateRow(_0x4cb3b2,_0x119dad,_0x354222);}};try{const _0x41ce4b=Object[_0x3ae291(0x1da)](async function(){})['constructor'],_0x5d2165=new _0x41ce4b(_0x3ae291(0x1f3),_0x3ae291(0x224)+_0x8823a+_0x3ae291(0x22a));await _0x5d2165(_0x520255),log(_0x3ae291(0x219),'success'),toastr[_0x3ae291(0x1d8)]('已根据AI的指示成功更新表格!',_0x3ae291(0x24a)),document[_0x3ae291(0x1d7)](new CustomEvent(_0x3ae291(0x19e)));}catch(_0x10f2cc){log(_0x3ae291(0x1bb)+_0x10f2cc[_0x3ae291(0x1a8)],_0x3ae291(0x27a)),toastr[_0x3ae291(0x27a)]('执行AI指令时出错:\x20'+_0x10f2cc[_0x3ae291(0x1a8)],_0x3ae291(0x292));}}export function saveAiTemplate(_0x3ea20d){const _0x4c7b21=_0x21a297;extension_settings[extensionName][_0x4c7b21(0x213)]=_0x3ea20d,saveSettingsDebounced();}export function getAiTemplate(){return getAiFlowTemplateForInjection();}function exportPresetBase(_0x5d9ab2=![]){const _0x30b2f9=_0x21a297;if(!currentTablesState){log(_0x30b2f9(0x1ee),_0x30b2f9(0x27a)),toastr[_0x30b2f9(0x27a)](_0x30b2f9(0x22e));return;}let _0x236023,_0x5dcd88,_0xf73e2f;_0x5d9ab2?(_0x236023=JSON[_0x30b2f9(0x265)](JSON[_0x30b2f9(0x1e2)](currentTablesState)),_0x5dcd88=_0x30b2f9(0x282),_0xf73e2f='完整备份'):(_0x236023=currentTablesState['map'](_0x2418e2=>({'name':_0x2418e2[_0x30b2f9(0x1bc)],'headers':_0x2418e2[_0x30b2f9(0x19d)],'columnWidths':_0x2418e2[_0x30b2f9(0x29d)]||[],'note':_0x2418e2['note'],'rule_add':_0x2418e2[_0x30b2f9(0x25d)],'rule_delete':_0x2418e2['rule_delete'],'rule_update':_0x2418e2['rule_update'],'charLimitRules':_0x2418e2[_0x30b2f9(0x21e)]||{},'rowLimitRule':_0x2418e2[_0x30b2f9(0x247)]||0x0,'rows':[],'rowStatuses':[]})),_0x5dcd88=_0x30b2f9(0x1ae),_0xf73e2f=_0x30b2f9(0x205));const _0x4f9817={'version':_0x30b2f9(0x231),'batchFillerRuleTemplate':getBatchFillerRuleTemplate(),'batchFillerFlowTemplate':getBatchFillerFlowTemplate(),'tables':_0x236023},_0x4a99f1=new Blob([JSON[_0x30b2f9(0x1e2)](_0x4f9817,null,0x2)],{'type':'application/json'}),_0x55d480=URL[_0x30b2f9(0x199)](_0x4a99f1),_0x1afa69=document[_0x30b2f9(0x197)]('a');_0x1afa69[_0x30b2f9(0x232)]=_0x55d480,_0x1afa69['download']=_0x30b2f9(0x1de)+_0xf73e2f+'-'+new Date()[_0x30b2f9(0x1dd)]()[_0x30b2f9(0x21d)](0x0,0xa)+'.json',document[_0x30b2f9(0x1c1)][_0x30b2f9(0x1a2)](_0x1afa69),_0x1afa69[_0x30b2f9(0x1d5)](),document[_0x30b2f9(0x1c1)][_0x30b2f9(0x1e4)](_0x1afa69),URL[_0x30b2f9(0x1f2)](_0x55d480),log('【'+_0xf73e2f+_0x30b2f9(0x274),_0x30b2f9(0x1d8)),toastr['success']('【'+_0xf73e2f+_0x30b2f9(0x270),_0x30b2f9(0x1b4));}export function exportPreset(){exportPresetBase(![]);}export function exportPresetFull(){exportPresetBase(!![]);}export function importPreset(_0x3140eb){const _0x58c18f=_0x21a297,_0x56e1b1=document['createElement'](_0x58c18f(0x254));_0x56e1b1[_0x58c18f(0x1fc)]='file',_0x56e1b1[_0x58c18f(0x1b2)]=_0x58c18f(0x1c7),_0x56e1b1[_0x58c18f(0x278)]=_0x505924=>{const _0x38eed8=_0x58c18f,_0x30613d=_0x505924[_0x38eed8(0x196)][_0x38eed8(0x28f)][0x0];if(!_0x30613d)return;const _0x38b8f7=new FileReader();_0x38b8f7[_0x38eed8(0x233)]=_0x47d917=>{const _0x4f96ee=_0x38eed8;try{const _0x12d5dd=JSON[_0x4f96ee(0x265)](_0x47d917['target']['result']);if(!_0x12d5dd[_0x4f96ee(0x220)]||!Array[_0x4f96ee(0x215)](_0x12d5dd[_0x4f96ee(0x24b)]))throw new Error(_0x4f96ee(0x1d2));const _0x236f88=window[_0x4f96ee(0x1f6)]('【警告】\x0a\x0a导入操作将完全覆盖您当前的AI指令模板和所有表格(包括结构和内容)。\x0a\x0a此操作不可逆,是否确定要继续?');if(!_0x236f88){log(_0x4f96ee(0x1ac),_0x4f96ee(0x1c0)),toastr[_0x4f96ee(0x1c0)](_0x4f96ee(0x24d));return;}if(_0x12d5dd['version']===_0x4f96ee(0x231))saveBatchFillerRuleTemplate(_0x12d5dd[_0x4f96ee(0x1eb)]||''),saveBatchFillerFlowTemplate(_0x12d5dd[_0x4f96ee(0x27e)]||''),saveAiTemplate(_0x12d5dd[_0x4f96ee(0x1ec)]||'');else{if(_0x12d5dd[_0x4f96ee(0x281)]!==undefined&&_0x12d5dd[_0x4f96ee(0x275)]!==undefined)saveBatchFillerRuleTemplate(_0x12d5dd[_0x4f96ee(0x281)]||''),saveBatchFillerFlowTemplate(_0x12d5dd[_0x4f96ee(0x275)]||''),saveAiTemplate(_0x12d5dd[_0x4f96ee(0x275)]||'');else _0x12d5dd[_0x4f96ee(0x20e)]?(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x12d5dd[_0x4f96ee(0x20e)]||''),saveAiTemplate(_0x12d5dd[_0x4f96ee(0x20e)]||'')):log('导入的预设中缺少指令模板字段,模板将不会被更新。','warn');}const _0x2ac730=_0x12d5dd[_0x4f96ee(0x24b)];_0x2ac730[_0x4f96ee(0x214)](_0x2e985a=>{const _0x4c917e=_0x4f96ee;if(_0x2e985a[_0x4c917e(0x1bc)]===undefined||_0x2e985a[_0x4c917e(0x19d)]===undefined||_0x2e985a['rows']===undefined)throw new Error(_0x4c917e(0x1b3)+JSON[_0x4c917e(0x1e2)](_0x2e985a));if(_0x2e985a[_0x4c917e(0x1b5)]===undefined)_0x2e985a[_0x4c917e(0x1b5)]='无';if(_0x2e985a[_0x4c917e(0x25d)]===undefined)_0x2e985a[_0x4c917e(0x25d)]='允许';if(_0x2e985a[_0x4c917e(0x238)]===undefined)_0x2e985a[_0x4c917e(0x238)]='允许';if(_0x2e985a['rule_update']===undefined)_0x2e985a[_0x4c917e(0x21c)]='允许';if(_0x2e985a[_0x4c917e(0x29e)]&&!_0x2e985a[_0x4c917e(0x21e)])_0x2e985a[_0x4c917e(0x21e)]={},_0x2e985a['charLimitRule'][_0x4c917e(0x256)]!==-0x1&&_0x2e985a[_0x4c917e(0x29e)][_0x4c917e(0x1cb)]>0x0&&(_0x2e985a[_0x4c917e(0x21e)][_0x2e985a['charLimitRule'][_0x4c917e(0x256)]]=_0x2e985a[_0x4c917e(0x29e)][_0x4c917e(0x1cb)]);else _0x2e985a['charLimitRules']===undefined&&(_0x2e985a[_0x4c917e(0x21e)]={});delete _0x2e985a[_0x4c917e(0x29e)],!_0x2e985a[_0x4c917e(0x27f)]&&(_0x2e985a['rowStatuses']=Array(_0x2e985a[_0x4c917e(0x23d)][_0x4c917e(0x1ca)])['fill'](_0x4c917e(0x1c6))),_0x2e985a[_0x4c917e(0x247)]===undefined&&(_0x2e985a[_0x4c917e(0x247)]=0x0),_0x2e985a[_0x4c917e(0x29d)]===undefined&&(_0x2e985a[_0x4c917e(0x29d)]=[]);}),setMemoryState(_0x2ac730),dispatchAllTablesUpdate();const _0x1fce84=getContext();if(_0x1fce84[_0x4f96ee(0x298)]&&_0x1fce84[_0x4f96ee(0x298)][_0x4f96ee(0x1ca)]>0x0){const _0x3a6211=_0x1fce84['chat'][_0x1fce84['chat'][_0x4f96ee(0x1ca)]-0x1];saveStateToMessage(getMemoryState(),_0x3a6211)&&(saveChat(),log(_0x4f96ee(0x195),_0x4f96ee(0x1d8)));}else saveChatDebounced();log(_0x4f96ee(0x1cc),_0x4f96ee(0x1d8)),toastr[_0x4f96ee(0x1d8)](_0x4f96ee(0x23c),_0x4f96ee(0x1fa)),typeof _0x3140eb===_0x4f96ee(0x21a)&&_0x3140eb();}catch(_0x58a0bb){log(_0x4f96ee(0x20a)+_0x58a0bb[_0x4f96ee(0x1a8)],_0x4f96ee(0x27a)),toastr[_0x4f96ee(0x27a)]('导入失败:'+_0x58a0bb['message'],'错误');}},_0x38b8f7['readAsText'](_0x30613d);},_0x56e1b1[_0x58c18f(0x1d5)]();}export async function rollbackState(){const _0x1a4f37=_0x21a297,_0x45a2a9=getContext();if(!_0x45a2a9||!_0x45a2a9['chat']||_0x45a2a9[_0x1a4f37(0x298)][_0x1a4f37(0x1ca)]<0x2)return log(_0x1a4f37(0x271),'warn'),toastr[_0x1a4f37(0x290)](_0x1a4f37(0x1e0)),![];const _0xbc98c7=_0x45a2a9[_0x1a4f37(0x298)],_0x4610d2=_0xbc98c7[_0x1a4f37(0x1ca)]-0x1,_0x4bfb2f=_0xbc98c7[_0x4610d2];log('正在尝试从第\x20'+(_0x4610d2-0x1)+_0x1a4f37(0x1f9),'info');const _0x23c966=loadTables(_0x4610d2);if(!_0x23c966)return log('未能在上一楼找到可用的表格状态,无法回退。',_0x1a4f37(0x27a)),toastr['error'](_0x1a4f37(0x1a5)),![];setMemoryState(_0x23c966);if(saveStateToMessage(_0x23c966,_0x4bfb2f))await saveChat(),log(_0x1a4f37(0x26a),'success');else return log(_0x1a4f37(0x289),_0x1a4f37(0x27a)),toastr['error'](_0x1a4f37(0x24e)),![];return renderTables(),updateOrInsertTableInChat(),log(_0x1a4f37(0x1fe),_0x1a4f37(0x1c0)),!![];}export async function rollbackAndRefill(){const _0x23cc9d=_0x21a297,_0x263230=extension_settings[extensionName];if(_0x263230['table_system_enabled']===![]){log('表格系统总开关已关闭,跳过回退填表。','info'),toastr['info'](_0x23cc9d(0x1a6));return;}toastr[_0x23cc9d(0x1c0)](_0x23cc9d(0x248));const _0x7683d=await rollbackState();if(!_0x7683d){toastr[_0x23cc9d(0x27a)]('状态回退失败,已中止操作。');return;}toastr['success']('状态回退成功,准备重新填表...');const _0x566b47=getContext(),_0x6f77a9=_0x566b47['chat'][_0x566b47[_0x23cc9d(0x298)][_0x23cc9d(0x1ca)]-0x1];try{await fillWithSecondaryApi(_0x6f77a9,!![]),log('回退并重新填表操作完成。','success');}catch(_0x3eef44){log('回退重填过程中发生错误:\x20'+_0x3eef44[_0x23cc9d(0x1a8)],_0x23cc9d(0x27a)),toastr['error'](_0x23cc9d(0x279)+_0x3eef44[_0x23cc9d(0x1a8)]);}}export function updateColumnWidth(_0x4ccb96,_0x557851,_0x16e5b4){const _0x27f8ca=_0x21a297;if(!currentTablesState||!currentTablesState[_0x4ccb96])return;const _0x1bb678=currentTablesState[_0x4ccb96];!_0x1bb678[_0x27f8ca(0x29d)]&&(_0x1bb678['columnWidths']=[]);while(_0x1bb678[_0x27f8ca(0x29d)][_0x27f8ca(0x1ca)]<_0x1bb678[_0x27f8ca(0x19d)][_0x27f8ca(0x1ca)]){_0x1bb678[_0x27f8ca(0x29d)][_0x27f8ca(0x1f1)](null);}_0x1bb678[_0x27f8ca(0x29d)][_0x557851]=_0x16e5b4;const _0x18b880=getContext();if(_0x18b880['chat']&&_0x18b880[_0x27f8ca(0x298)][_0x27f8ca(0x1ca)]>0x0){const _0x49aa7e=_0x18b880[_0x27f8ca(0x298)][_0x18b880[_0x27f8ca(0x298)][_0x27f8ca(0x1ca)]-0x1];if(saveStateToMessage(currentTablesState,_0x49aa7e)){saveChat();return;}}saveChatDebounced();}export function isCurrentTablesEmpty(){const _0x508de4=_0x21a297,_0xc7fee7=getMemoryState();if(!_0xc7fee7||_0xc7fee7[_0x508de4(0x1ca)]===0x0)return!![];return _0xc7fee7[_0x508de4(0x283)](_0x4796af=>!_0x4796af[_0x508de4(0x23d)]||_0x4796af['rows'][_0x508de4(0x1ca)]===0x0);}export function clearGlobalPreset(){const _0x1ff7d6=_0x21a297;if(extension_settings[extensionName]&&extension_settings[extensionName]['global_table_preset']){const _0x2eae5b=window[_0x1ff7d6(0x1f6)](_0x1ff7d6(0x1c4));_0x2eae5b?(delete extension_settings[extensionName][_0x1ff7d6(0x1df)],saveSettingsDebounced(),log(_0x1ff7d6(0x227),_0x1ff7d6(0x1d8)),toastr[_0x1ff7d6(0x1d8)](_0x1ff7d6(0x1a1),_0x1ff7d6(0x26f))):(log('用户取消了清除全局预设的操作。','info'),toastr[_0x1ff7d6(0x1c0)](_0x1ff7d6(0x25e)));}else log(_0x1ff7d6(0x296),_0x1ff7d6(0x1c0)),toastr[_0x1ff7d6(0x1c0)](_0x1ff7d6(0x229),'提示');}export function importGlobalPreset(_0xa93a5b){const _0x5a9e65=_0x21a297,_0x54de4d=document[_0x5a9e65(0x197)]('input');_0x54de4d[_0x5a9e65(0x1fc)]='file',_0x54de4d['accept']=_0x5a9e65(0x1c7),_0x54de4d[_0x5a9e65(0x278)]=_0x1ca44b=>{const _0x582d2a=_0x5a9e65,_0x4a4cc2=_0x1ca44b[_0x582d2a(0x196)]['files'][0x0];if(!_0x4a4cc2)return;const _0x3e4ced=new FileReader();_0x3e4ced[_0x582d2a(0x233)]=_0x4bb4d2=>{const _0x31dd6e=_0x582d2a;try{const _0x4a3e3d=JSON[_0x31dd6e(0x265)](_0x4bb4d2['target'][_0x31dd6e(0x19f)]);if(!_0x4a3e3d['version']||!Array[_0x31dd6e(0x215)](_0x4a3e3d['tables']))throw new Error(_0x31dd6e(0x1d2));const _0x54f614=window[_0x31dd6e(0x1f6)](_0x31dd6e(0x19b));if(!_0x54f614){log(_0x31dd6e(0x23a),_0x31dd6e(0x1c0)),toastr[_0x31dd6e(0x1c0)]('操作已取消。');return;}const _0x37ed04=_0x4a3e3d[_0x31dd6e(0x24b)]['map'](_0x218071=>({'name':_0x218071[_0x31dd6e(0x1bc)],'headers':_0x218071['headers'],'note':_0x218071[_0x31dd6e(0x1b5)],'rule_add':_0x218071[_0x31dd6e(0x25d)],'rule_delete':_0x218071['rule_delete'],'rule_update':_0x218071[_0x31dd6e(0x21c)],'rows':[]}));!extension_settings[extensionName]&&(extension_settings[extensionName]={});extension_settings[extensionName][_0x31dd6e(0x1df)]={'version':_0x4a3e3d[_0x31dd6e(0x220)],'tables':_0x37ed04,'batchFillerRuleTemplate':_0x4a3e3d[_0x31dd6e(0x1eb)],'batchFillerFlowTemplate':_0x4a3e3d['batchFillerFlowTemplate']},saveSettingsDebounced();if(_0x4a3e3d['version']===_0x31dd6e(0x231))saveBatchFillerRuleTemplate(_0x4a3e3d[_0x31dd6e(0x1eb)]||''),saveBatchFillerFlowTemplate(_0x4a3e3d['batchFillerFlowTemplate']||''),saveAiTemplate(_0x4a3e3d[_0x31dd6e(0x1ec)]||'');else{if(_0x4a3e3d['aiRuleTemplate']!==undefined&&_0x4a3e3d['aiFlowTemplate']!==undefined)saveBatchFillerRuleTemplate(_0x4a3e3d[_0x31dd6e(0x281)]||''),saveBatchFillerFlowTemplate(_0x4a3e3d['aiFlowTemplate']||''),saveAiTemplate(_0x4a3e3d[_0x31dd6e(0x275)]||'');else _0x4a3e3d[_0x31dd6e(0x20e)]&&(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x4a3e3d[_0x31dd6e(0x20e)]||''),saveAiTemplate(_0x4a3e3d['aiTemplate']||''));}log(_0x31dd6e(0x25f),_0x31dd6e(0x1d8)),toastr[_0x31dd6e(0x1d8)]('全局预设已设置!新聊天将默认使用此预设。','设置成功'),typeof _0xa93a5b==='function'&&_0xa93a5b();}catch(_0x33929c){log(_0x31dd6e(0x26c)+_0x33929c[_0x31dd6e(0x1a8)],_0x31dd6e(0x27a)),toastr[_0x31dd6e(0x27a)](_0x31dd6e(0x288)+_0x33929c[_0x31dd6e(0x1a8)],'错误');}},_0x3e4ced[_0x582d2a(0x1e5)](_0x4a4cc2);},_0x54de4d['click']();}
|