Files
ST-Amily2-Chat-Optimisation/core/table-system/manager.js
2025-08-09 17:13:38 +08:00

1 line
31 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 _0x26d07d=_0x4c3b;(function(_0x31a92f,_0x533030){const _0x3ae2c6=_0x4c3b,_0x1435b3=_0x31a92f();while(!![]){try{const _0x77293b=-parseInt(_0x3ae2c6(0x243))/0x1*(parseInt(_0x3ae2c6(0x26c))/0x2)+parseInt(_0x3ae2c6(0x240))/0x3+parseInt(_0x3ae2c6(0x218))/0x4*(parseInt(_0x3ae2c6(0x1b9))/0x5)+-parseInt(_0x3ae2c6(0x1b0))/0x6+parseInt(_0x3ae2c6(0x262))/0x7+parseInt(_0x3ae2c6(0x232))/0x8*(parseInt(_0x3ae2c6(0x1f4))/0x9)+parseInt(_0x3ae2c6(0x1af))/0xa*(parseInt(_0x3ae2c6(0x23e))/0xb);if(_0x77293b===_0x533030)break;else _0x1435b3['push'](_0x1435b3['shift']());}catch(_0x37fe5d){_0x1435b3['push'](_0x1435b3['shift']());}}}(_0x1ea2,0x549aa));import{getContext,extension_settings}from'/scripts/extensions.js';import{saveChat,saveSettingsDebounced}from'/script.js';import{log}from'./logger.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';const TABLE_DATA_KEY=_0x26d07d(0x242);let currentTablesState=null;export function setMemoryState(_0x4c9c7e){currentTablesState=_0x4c9c7e;}export function getMemoryState(){return currentTablesState;}const defaultTemplate={'tables':[{'name':_0x26d07d(0x22f),'headers':['日期','时间',_0x26d07d(0x26f),'此地角色'],'note':_0x26d07d(0x1e1),'rule_add':_0x26d07d(0x207),'rule_delete':'当行数超过了1行时。','rule_update':'当日期、时间、地点、此地角色发生变化时。','rows':[]},{'name':_0x26d07d(0x209),'headers':[_0x26d07d(0x1e4),'身体特征','性格','职业','爱好',_0x26d07d(0x255),'住所',_0x26d07d(0x261)],'note':'·\x20角色天生或不易改变的特征csv表格思考本轮有否有其中的角色他应作出什么反应\x0a·\x20身体特征、性格要保持在三条及三条以内','rule_add':_0x26d07d(0x21b),'rule_delete':'允许','rule_update':_0x26d07d(0x257),'rows':[]},{'name':_0x26d07d(0x1db),'headers':[_0x26d07d(0x1e4),_0x26d07d(0x1f8),'对{{user}}态度(保持三条)'],'note':_0x26d07d(0x24c),'rule_add':_0x26d07d(0x264),'rule_delete':'·\x20当角色明确死亡时应删除。','rule_update':_0x26d07d(0x23f),'rows':[]},{'name':_0x26d07d(0x214),'headers':[_0x26d07d(0x1bf),'类型','详情','执行者','状态','结果',_0x26d07d(0x228),_0x26d07d(0x1ce)],'note':_0x26d07d(0x23b),'rule_add':'当{{user}}或者角色确定执行某一个重要事情时,或者收到某件重要事情的执行命令或任务时。','rule_delete':_0x26d07d(0x227),'rule_update':_0x26d07d(0x233),'rows':[]},{'name':_0x26d07d(0x24a),'headers':[_0x26d07d(0x229),_0x26d07d(0x20c),'持有者',_0x26d07d(0x268)],'note':_0x26d07d(0x20b),'rule_add':_0x26d07d(0x1e7),'rule_delete':_0x26d07d(0x201),'rule_update':_0x26d07d(0x22c),'rows':[]},{'name':_0x26d07d(0x249),'headers':['名字',_0x26d07d(0x1d7)],'note':'仅作为用户对你的提示,不允许你擅自修改。','rule_add':_0x26d07d(0x237),'rule_delete':_0x26d07d(0x1c1),'rule_update':_0x26d07d(0x248),'rows':[]}]};function getDefaultTables(){const _0x3baae3=_0x26d07d;return log(_0x3baae3(0x211),_0x3baae3(0x1f2)),JSON[_0x3baae3(0x208)](JSON['stringify'](defaultTemplate['tables']));}export function loadTables(_0x185809=-0x1){const _0x2f810c=_0x26d07d,_0xc4e85a=getContext();if(!_0xc4e85a||!_0xc4e85a[_0x2f810c(0x1e3)]||_0xc4e85a[_0x2f810c(0x1e3)]['length']===0x0)return currentTablesState=getDefaultTables(),currentTablesState;const _0x23aca3=_0x185809===-0x1?_0xc4e85a[_0x2f810c(0x1e3)][_0x2f810c(0x1ed)]-0x1:_0x185809-0x1;if(_0x23aca3<0x0)return currentTablesState=getDefaultTables(),currentTablesState;for(let _0xa90326=_0x23aca3;_0xa90326>=0x0;_0xa90326--){const _0x2ec69c=_0xc4e85a[_0x2f810c(0x1e3)][_0xa90326];if(_0x2ec69c[_0x2f810c(0x20f)]&&_0x2ec69c['extra'][TABLE_DATA_KEY]){log(_0x2f810c(0x203)+_0xa90326+_0x2f810c(0x1fb),_0x2f810c(0x1f2));let _0x56753a=JSON[_0x2f810c(0x208)](JSON['stringify'](_0x2ec69c[_0x2f810c(0x20f)][TABLE_DATA_KEY]));return _0x56753a[_0x2f810c(0x222)](_0xe6eb07=>{const _0x25dd43=_0x2f810c;if(_0xe6eb07[_0x25dd43(0x226)]===undefined)_0xe6eb07[_0x25dd43(0x226)]='无';if(_0xe6eb07[_0x25dd43(0x1c9)]===undefined)_0xe6eb07['rule_add']='允许';if(_0xe6eb07[_0x25dd43(0x1eb)]===undefined)_0xe6eb07[_0x25dd43(0x1eb)]='允许';if(_0xe6eb07[_0x25dd43(0x26b)]===undefined)_0xe6eb07[_0x25dd43(0x26b)]='允许';}),currentTablesState=_0x56753a,currentTablesState;}}return log(_0x2f810c(0x1d3),_0x2f810c(0x1f2)),currentTablesState=getDefaultTables(),currentTablesState;}export function saveStateToMessage(_0x44f62a,_0x2380a5){const _0x2c2d12=_0x26d07d;if(!_0x44f62a||!_0x2380a5)return log(_0x2c2d12(0x1f1),_0x2c2d12(0x244)),![];return!_0x2380a5[_0x2c2d12(0x20f)]&&(_0x2380a5[_0x2c2d12(0x20f)]={}),_0x2380a5[_0x2c2d12(0x20f)][TABLE_DATA_KEY]=JSON[_0x2c2d12(0x208)](JSON[_0x2c2d12(0x22d)](_0x44f62a)),log('表格状态已准备写入消息\x20['+_0x2380a5[_0x2c2d12(0x224)][_0x2c2d12(0x1d5)](0x0,0x14)+_0x2c2d12(0x1d2),_0x2c2d12(0x1f2)),!![];}function _0x4c3b(_0x2f81a9,_0x3f454b){const _0x1ea2cb=_0x1ea2();return _0x4c3b=function(_0x4c3b7f,_0x450458){_0x4c3b7f=_0x4c3b7f-0x1af;let _0x32ff66=_0x1ea2cb[_0x4c3b7f];return _0x32ff66;},_0x4c3b(_0x2f81a9,_0x3f454b);}export function saveTables(_0x4169a4=_0x26d07d(0x20a)){const _0xd0ab9a=_0x26d07d;return log(_0xd0ab9a(0x1ca)+_0x4169a4+_0xd0ab9a(0x24f),_0xd0ab9a(0x1f2)),!![];}export function updateCell(_0x82166d,_0xeb14a0,_0x2ebb29,_0x2203ee){const _0xffee0e=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x82166d]||!currentTablesState[_0x82166d][_0xffee0e(0x241)][_0xeb14a0])return;const _0xdfdb39=currentTablesState[_0x82166d]['name'],_0xbaa7cc=currentTablesState[_0x82166d][_0xffee0e(0x1b5)][_0x2ebb29];currentTablesState[_0x82166d]['rows'][_0xeb14a0][_0x2ebb29]=_0x2203ee;const _0x2d687f='表格\x20['+_0xdfdb39+_0xffee0e(0x265)+_0xbaa7cc+_0xffee0e(0x235)+(_0xeb14a0+0x1)+_0xffee0e(0x21f);log(_0x2d687f,_0xffee0e(0x1f2));const _0xb4f412=getContext();if(_0xb4f412[_0xffee0e(0x1e3)]&&_0xb4f412[_0xffee0e(0x1e3)][_0xffee0e(0x1ed)]>0x0){const _0x4b2b64=_0xb4f412[_0xffee0e(0x1e3)][_0xb4f412[_0xffee0e(0x1e3)][_0xffee0e(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0x4b2b64)){saveChat();return;}}saveChatDebounced();}export function addRow(_0x2036ac){const _0x5a22a7=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x2036ac])return;const _0x4bb221=currentTablesState[_0x2036ac],_0x3ca03b=_0x4bb221['headers'][_0x5a22a7(0x1ed)],_0x2dab2e=Array(_0x3ca03b)[_0x5a22a7(0x1b3)]('');_0x4bb221[_0x5a22a7(0x241)][_0x5a22a7(0x267)](_0x2dab2e);const _0x4cce54='表格\x20['+_0x4bb221['name']+_0x5a22a7(0x1d6);log(_0x4cce54,_0x5a22a7(0x1f2));const _0x1150e9=getContext();if(_0x1150e9['chat']&&_0x1150e9[_0x5a22a7(0x1e3)][_0x5a22a7(0x1ed)]>0x0){const _0x3470f1=_0x1150e9[_0x5a22a7(0x1e3)][_0x1150e9[_0x5a22a7(0x1e3)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x3470f1)){saveChat();return;}}saveChatDebounced();}export function addColumn(_0x5df3b3){const _0x5e4130=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x5df3b3])return;const _0x6c8052=currentTablesState[_0x5df3b3],_0x40b3aa='新列\x20'+(_0x6c8052['headers'][_0x5e4130(0x1ed)]+0x1);_0x6c8052[_0x5e4130(0x1b5)][_0x5e4130(0x267)](_0x40b3aa),_0x6c8052['rows'][_0x5e4130(0x222)](_0x420105=>_0x420105[_0x5e4130(0x267)](''));const _0x4938c0='表格\x20['+_0x6c8052[_0x5e4130(0x230)]+_0x5e4130(0x204);log(_0x4938c0,_0x5e4130(0x1f2));const _0x1b21b7=getContext();if(_0x1b21b7[_0x5e4130(0x1e3)]&&_0x1b21b7[_0x5e4130(0x1e3)][_0x5e4130(0x1ed)]>0x0){const _0x184881=_0x1b21b7[_0x5e4130(0x1e3)][_0x1b21b7[_0x5e4130(0x1e3)][_0x5e4130(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0x184881)){saveChat();return;}}saveChatDebounced();}export function updateHeader(_0x423a84,_0xbc21df,_0x5ecca8){const _0x297461=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x423a84]||currentTablesState[_0x423a84][_0x297461(0x1b5)][_0xbc21df]===undefined)return;const _0x53fa79=currentTablesState[_0x423a84][_0x297461(0x230)],_0x2e94ff=currentTablesState[_0x423a84][_0x297461(0x1b5)][_0xbc21df];currentTablesState[_0x423a84][_0x297461(0x1b5)][_0xbc21df]=_0x5ecca8;const _0x32a354=_0x297461(0x21e)+_0x53fa79+_0x297461(0x246)+_0x2e94ff+_0x297461(0x225)+_0x5ecca8+'”。';log(_0x32a354,_0x297461(0x1f2));const _0x4b2a66=getContext();if(_0x4b2a66[_0x297461(0x1e3)]&&_0x4b2a66[_0x297461(0x1e3)][_0x297461(0x1ed)]>0x0){const _0x3a4e17=_0x4b2a66[_0x297461(0x1e3)][_0x4b2a66[_0x297461(0x1e3)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x3a4e17)){saveChat();return;}}saveChatDebounced();}export async function deleteRow(_0x35afa5,_0x1a72cf){const _0x10ca1a=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x35afa5]||!currentTablesState[_0x35afa5][_0x10ca1a(0x241)][_0x1a72cf])return;const _0x3ee676=currentTablesState[_0x35afa5][_0x10ca1a(0x230)];currentTablesState[_0x35afa5]['rows'][_0x10ca1a(0x213)](_0x1a72cf,0x1);const _0x126d03=_0x10ca1a(0x21e)+_0x3ee676+']\x20的第\x20'+(_0x1a72cf+0x1)+_0x10ca1a(0x1fd);log(_0x126d03,'info');const _0x4187a2=getContext();if(_0x4187a2[_0x10ca1a(0x1e3)]&&_0x4187a2['chat'][_0x10ca1a(0x1ed)]>0x0){const _0x57b9d3=_0x4187a2[_0x10ca1a(0x1e3)][_0x4187a2['chat'][_0x10ca1a(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0x57b9d3)){await saveChat();return;}}await saveChatDebounced();}export function deleteColumn(_0x809e91,_0x588899){const _0x195636=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x809e91]||currentTablesState[_0x809e91][_0x195636(0x1b5)][_0x588899]===undefined)return;const _0x2a16a4=currentTablesState[_0x809e91][_0x195636(0x230)],_0x3ca75f=currentTablesState[_0x809e91][_0x195636(0x1b5)][_0x588899];currentTablesState[_0x809e91][_0x195636(0x1b5)][_0x195636(0x213)](_0x588899,0x1),currentTablesState[_0x809e91]['rows'][_0x195636(0x222)](_0x586387=>{const _0x159a71=_0x195636;_0x586387[_0x159a71(0x213)](_0x588899,0x1);});const _0x1ca68f=_0x195636(0x21e)+_0x2a16a4+']\x20的列“'+_0x3ca75f+_0x195636(0x20e);log(_0x1ca68f,_0x195636(0x1f2));const _0x3bdc4d=getContext();if(_0x3bdc4d[_0x195636(0x1e3)]&&_0x3bdc4d['chat'][_0x195636(0x1ed)]>0x0){const _0x5639b6=_0x3bdc4d[_0x195636(0x1e3)][_0x3bdc4d[_0x195636(0x1e3)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x5639b6)){saveChat();return;}}saveChatDebounced();}export function deleteTable(_0x1f8fb9){const _0x44d7d5=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x1f8fb9])return;const _0x107294=currentTablesState[_0x1f8fb9]['name'];currentTablesState[_0x44d7d5(0x213)](_0x1f8fb9,0x1);const _0x370c02=_0x44d7d5(0x21e)+_0x107294+_0x44d7d5(0x263);log(_0x370c02,_0x44d7d5(0x220));const _0xa410fe=getContext();if(_0xa410fe[_0x44d7d5(0x1e3)]&&_0xa410fe['chat'][_0x44d7d5(0x1ed)]>0x0){const _0xe1e9f1=_0xa410fe[_0x44d7d5(0x1e3)][_0xa410fe[_0x44d7d5(0x1e3)][_0x44d7d5(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0xe1e9f1)){saveChat(),log(_0x44d7d5(0x238),_0x44d7d5(0x220));return;}}log('无法找到可锚定的消息或保存失败,删除操作可能不会被持久化!','error'),saveChatDebounced();}export function addTable(_0xbf8af5){const _0x32db61=_0x26d07d;if(!_0xbf8af5||!_0xbf8af5[_0x32db61(0x1b2)]()){log(_0x32db61(0x22b),_0x32db61(0x244)),toastr['error'](_0x32db61(0x1e0),_0x32db61(0x217));return;}!currentTablesState&&loadTables();if(currentTablesState[_0x32db61(0x1da)](_0x104638=>_0x104638[_0x32db61(0x230)]===_0xbf8af5[_0x32db61(0x1b2)]())){log('无法创建表格:名为\x20\x22'+_0xbf8af5+'\x22\x20的表格已存在。',_0x32db61(0x244)),toastr['error'](_0x32db61(0x223)+_0xbf8af5+_0x32db61(0x215),_0x32db61(0x217));return;}const _0x307f50={'name':_0xbf8af5[_0x32db61(0x1b2)](),'headers':[_0x32db61(0x216)],'rows':[],'note':'这是一个新创建的表格。','rule_add':'允许','rule_delete':'允许','rule_update':'允许'};currentTablesState[_0x32db61(0x267)](_0x307f50);const _0x124159='已成功创建新表格:['+_0xbf8af5[_0x32db61(0x1b2)]()+']。';log(_0x124159,_0x32db61(0x220));const _0x472f2f=getContext();if(_0x472f2f['chat']&&_0x472f2f[_0x32db61(0x1e3)][_0x32db61(0x1ed)]>0x0){const _0x30044b=_0x472f2f['chat'][_0x472f2f['chat'][_0x32db61(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0x30044b)){saveChat(),log(_0x32db61(0x221),_0x32db61(0x220));return;}}log(_0x32db61(0x205),_0x32db61(0x244)),saveChatDebounced();}export function moveTable(_0x31d0b4,_0x24e6c7){const _0x251d15=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x31d0b4])return;const _0x292a6c=_0x24e6c7==='up'?_0x31d0b4-0x1:_0x31d0b4+0x1;if(_0x292a6c<0x0||_0x292a6c>=currentTablesState[_0x251d15(0x1ed)]){log(_0x251d15(0x21c)+_0x31d0b4+_0x251d15(0x1e5),_0x251d15(0x1dd));return;}const _0x1cc796=currentTablesState[_0x31d0b4];currentTablesState[_0x31d0b4]=currentTablesState[_0x292a6c],currentTablesState[_0x292a6c]=_0x1cc796;const _0x3aedd2=_0x251d15(0x21e)+_0x1cc796['name']+']\x20的顺序已调整。';log(_0x3aedd2,_0x251d15(0x220));const _0x29530f=getContext();if(_0x29530f[_0x251d15(0x1e3)]&&_0x29530f[_0x251d15(0x1e3)]['length']>0x0){const _0x2247a7=_0x29530f[_0x251d15(0x1e3)][_0x29530f['chat'][_0x251d15(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0x2247a7)){saveChat(),log(_0x251d15(0x1c4),_0x251d15(0x220));return;}}log(_0x251d15(0x1bc),_0x251d15(0x244)),saveChatDebounced();}export function updateTableRules(_0x569e69,_0x49fde8){const _0x3b9dea=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x569e69])return;const _0x4d729b=currentTablesState[_0x569e69];_0x4d729b['note']=_0x49fde8[_0x3b9dea(0x226)],_0x4d729b[_0x3b9dea(0x1c9)]=_0x49fde8['rule_add'],_0x4d729b[_0x3b9dea(0x1eb)]=_0x49fde8['rule_delete'],_0x4d729b[_0x3b9dea(0x26b)]=_0x49fde8[_0x3b9dea(0x26b)];const _0x586c80=_0x3b9dea(0x21e)+_0x4d729b[_0x3b9dea(0x230)]+']\x20的规则已更新。';log(_0x586c80,_0x3b9dea(0x1f2));const _0x257f38=getContext();if(_0x257f38[_0x3b9dea(0x1e3)]&&_0x257f38[_0x3b9dea(0x1e3)][_0x3b9dea(0x1ed)]>0x0){const _0x4217a1=_0x257f38[_0x3b9dea(0x1e3)][_0x257f38[_0x3b9dea(0x1e3)][_0x3b9dea(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0x4217a1)){saveChat();return;}}saveChatDebounced();}export function insertRow(_0x28188b,_0x205362){const _0x293638=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x28188b]){log(_0x293638(0x251)+_0x28188b+_0x293638(0x219),_0x293638(0x244));return;}const _0x165c2f=currentTablesState[_0x28188b],_0x163e02=_0x165c2f[_0x293638(0x1b5)][_0x293638(0x1ed)],_0x136893=Array(_0x163e02)[_0x293638(0x1b3)]('');for(const _0x78491c in _0x205362){parseInt(_0x78491c,0xa)<_0x163e02&&(_0x136893[_0x78491c]=_0x205362[_0x78491c]);}_0x165c2f[_0x293638(0x241)][_0x293638(0x267)](_0x136893);const _0x5475e2=_0x293638(0x25a)+_0x165c2f[_0x293638(0x230)]+_0x293638(0x259);log(_0x5475e2,'info');const _0x3fb80a=getContext();if(_0x3fb80a[_0x293638(0x1e3)]&&_0x3fb80a[_0x293638(0x1e3)][_0x293638(0x1ed)]>0x0){const _0x29a038=_0x3fb80a[_0x293638(0x1e3)][_0x3fb80a[_0x293638(0x1e3)][_0x293638(0x1ed)]-0x1];if(saveStateToMessage(currentTablesState,_0x29a038)){saveChat();return;}}saveChatDebounced();}export function updateRow(_0x38cb94,_0x205e48,_0x269fe6){const _0x33994e=_0x26d07d;if(!currentTablesState||!currentTablesState[_0x38cb94]){log(_0x33994e(0x251)+_0x38cb94+_0x33994e(0x1ea),_0x33994e(0x244));return;}const _0x32b800=currentTablesState[_0x38cb94];if(_0x205e48>=_0x32b800['rows'][_0x33994e(0x1ed)]){log(_0x33994e(0x25b)+_0x205e48+'),已智能转换为在表格\x20['+_0x32b800[_0x33994e(0x230)]+_0x33994e(0x212),_0x33994e(0x1dd)),insertRow(_0x38cb94,_0x269fe6);return;}const _0x2b810f=_0x32b800[_0x33994e(0x241)][_0x205e48];for(const _0x336711 in _0x269fe6){parseInt(_0x336711,0xa)<_0x2b810f[_0x33994e(0x1ed)]&&(_0x2b810f[_0x336711]=_0x269fe6[_0x336711]);}const _0x33bde2=_0x33994e(0x25e)+_0x32b800[_0x33994e(0x230)]+_0x33994e(0x1be)+(_0x205e48+0x1)+_0x33994e(0x1d0);log(_0x33bde2,_0x33994e(0x1f2));const _0x29bcc9=getContext();if(_0x29bcc9[_0x33994e(0x1e3)]&&_0x29bcc9[_0x33994e(0x1e3)][_0x33994e(0x1ed)]>0x0){const _0x451cd4=_0x29bcc9['chat'][_0x29bcc9[_0x33994e(0x1e3)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x451cd4)){saveChat();return;}}saveChatDebounced();}export function clearAllTables(){const _0x10965b=_0x26d07d;if(!currentTablesState){log(_0x10965b(0x252),_0x10965b(0x244));return;}currentTablesState[_0x10965b(0x222)](_0x5c63b9=>{_0x5c63b9['rows']=[];}),log('所有表格的行数据已在内存中清空。',_0x10965b(0x1dd));const _0x2056da=getContext();if(_0x2056da[_0x10965b(0x1e3)]&&_0x2056da[_0x10965b(0x1e3)][_0x10965b(0x1ed)]>0x0){const _0x4ce097=_0x2056da['chat'][_0x2056da[_0x10965b(0x1e3)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x4ce097)){saveChat(),log(_0x10965b(0x1ff),_0x10965b(0x220)),toastr[_0x10965b(0x220)](_0x10965b(0x260),_0x10965b(0x269));return;}}log(_0x10965b(0x24e),_0x10965b(0x244)),saveChatDebounced();}export function convertTablesToCsvString(){const _0x5e7279=_0x26d07d;!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x5e8bca='';return currentTablesState[_0x5e7279(0x222)]((_0x3370ed,_0x105e05)=>{const _0x31db35=_0x5e7279;_0x5e8bca+=_0x31db35(0x1f7)+_0x105e05+':'+_0x3370ed['name']+'\x0a',_0x5e8bca+=_0x31db35(0x1fa)+(_0x3370ed['note']||'无')+'\x0a';const _0x27730c=_0x3370ed[_0x31db35(0x230)][_0x31db35(0x250)](/\s/g,'')+'内容';_0x5e8bca+='<'+_0x27730c+'>\x0a';const _0x1de4a4=_0x3370ed[_0x31db35(0x1b5)]['map']((_0x1bc137,_0x3c4b22)=>_0x3c4b22+':'+_0x1bc137)['join'](',');_0x5e8bca+=_0x31db35(0x23a)+_0x1de4a4+'\x0a',_0x3370ed[_0x31db35(0x241)][_0x31db35(0x222)]((_0x258919,_0x10b7ed)=>{const _0x2dad8f=_0x31db35;if(Array['isArray'](_0x258919)){const _0xcabef=_0x258919[_0x2dad8f(0x25d)](_0x5f38f9=>{const _0x3b044e=_0x2dad8f;return _0x5f38f9===null||_0x5f38f9===undefined||_0x5f38f9===''?'无':_0x5f38f9[_0x3b044e(0x253)]();})[_0x2dad8f(0x1d1)](',');_0x5e8bca+=_0x10b7ed+','+_0xcabef+'\x0a';}}),_0x5e8bca+='</'+_0x27730c+'>\x0a',_0x5e8bca+=_0x31db35(0x25f)+(_0x3370ed[_0x31db35(0x1c9)]||'允许')+'\x0a',_0x5e8bca+=_0x31db35(0x231)+(_0x3370ed[_0x31db35(0x1eb)]||'允许')+'\x0a',_0x5e8bca+=_0x31db35(0x1c6)+(_0x3370ed['rule_update']||'允许')+'\x0a',_0x105e05<currentTablesState[_0x31db35(0x1ed)]-0x1&&(_0x5e8bca+='\x0a---\x0a');}),_0x5e8bca;}loadTables();export function getBatchFillerRuleTemplate(){const _0x4bb637=_0x26d07d;return extension_settings[extensionName]?.[_0x4bb637(0x1b4)]??DEFAULT_AI_RULE_TEMPLATE;}export function saveBatchFillerRuleTemplate(_0x1000b2){const _0x47320f=_0x26d07d;extension_settings[extensionName][_0x47320f(0x1b4)]=_0x1000b2,saveSettingsDebounced();}export function getBatchFillerFlowTemplate(){const _0x1396ac=_0x26d07d;return extension_settings[extensionName]?.[_0x1396ac(0x1ba)]??DEFAULT_AI_FLOW_TEMPLATE;}export function saveBatchFillerFlowTemplate(_0xf4113f){const _0x247086=_0x26d07d;extension_settings[extensionName][_0x247086(0x1ba)]=_0xf4113f,saveSettingsDebounced();}export function getAiFlowTemplateForInjection(){return extension_settings[extensionName]?.['amily2_ai_template']??DEFAULT_AI_FLOW_TEMPLATE;}export function updateTableFromText(_0x4b45b4){const _0x29d2bf=_0x26d07d;if(!_0x4b45b4){log('AI返回内容为空无法更新表格。','warn');return;}const _0x4ddde0=_0x4b45b4[_0x29d2bf(0x1e9)](/<Amily2Edit>([\s\S]*?)<\/Amily2Edit>/);if(!_0x4ddde0||!_0x4ddde0[0x1]){log(_0x29d2bf(0x1c8),_0x29d2bf(0x1dd));return;}let _0x4c0056=_0x4ddde0[0x1][_0x29d2bf(0x250)](/<!--|-->/g,'')[_0x29d2bf(0x1b2)]();if(!_0x4c0056){log(_0x29d2bf(0x1ec),_0x29d2bf(0x1f2));return;}const _0x216e75=_0x4c0056[_0x29d2bf(0x1b1)]('\x0a')['filter'](_0x15dd08=>_0x15dd08[_0x29d2bf(0x1b2)]()!=='');log(_0x29d2bf(0x1bd)+_0x216e75[_0x29d2bf(0x1ed)]+_0x29d2bf(0x1ef),_0x29d2bf(0x1f2));const _0x5b319f={'insertRow':(_0x4b9585,_0x368c20)=>{const _0x1b9394=_0x29d2bf;log(_0x1b9394(0x239)+_0x4b9585+_0x1b9394(0x20d)+JSON[_0x1b9394(0x22d)](_0x368c20)+')','info'),insertRow(_0x4b9585,_0x368c20);},'deleteRow':(_0x2d0e8a,_0x21a330)=>{const _0x95d1e0=_0x29d2bf;log(_0x95d1e0(0x202)+_0x2d0e8a+_0x95d1e0(0x256)+_0x21a330+')',_0x95d1e0(0x1f2)),deleteRow(_0x2d0e8a,_0x21a330);},'updateRow':(_0x4945ef,_0xcf91d3,_0x162365)=>{const _0x4ed902=_0x29d2bf;log(_0x4ed902(0x1b6)+_0x4945ef+',\x20rowIndex='+_0xcf91d3+_0x4ed902(0x20d)+JSON[_0x4ed902(0x22d)](_0x162365)+')','info'),updateRow(_0x4945ef,_0xcf91d3,_0x162365);}};try{const _0x1c241d=new Function(_0x29d2bf(0x26e),_0x29d2bf(0x22e)+_0x4c0056+_0x29d2bf(0x254));_0x1c241d(_0x5b319f),log(_0x29d2bf(0x1b7),'success'),toastr[_0x29d2bf(0x220)](_0x29d2bf(0x1df),_0x29d2bf(0x1c5)),saveChatDebounced();}catch(_0x34cf38){log(_0x29d2bf(0x258)+_0x34cf38[_0x29d2bf(0x21d)],'error'),toastr[_0x29d2bf(0x244)]('执行AI指令时出错:\x20'+_0x34cf38[_0x29d2bf(0x21d)],'执行失败');}}export function saveAiTemplate(_0xc7c062){const _0x26ef75=_0x26d07d;extension_settings[extensionName][_0x26ef75(0x1c0)]=_0xc7c062,saveSettingsDebounced();}export function getAiTemplate(){return getAiFlowTemplateForInjection();}function exportPresetBase(_0x32ab22=![]){const _0x5bb682=_0x26d07d;if(!currentTablesState){log('无法导出:当前表格状态为空。',_0x5bb682(0x244)),toastr['error'](_0x5bb682(0x1cd));return;}let _0x1b6a39,_0x21e964,_0x5c0746;_0x32ab22?(_0x1b6a39=JSON[_0x5bb682(0x208)](JSON['stringify'](currentTablesState)),_0x21e964=_0x5bb682(0x247),_0x5c0746=_0x5bb682(0x1cc)):(_0x1b6a39=currentTablesState[_0x5bb682(0x25d)](_0x1f6308=>({'name':_0x1f6308[_0x5bb682(0x230)],'headers':_0x1f6308['headers'],'note':_0x1f6308[_0x5bb682(0x226)],'rule_add':_0x1f6308[_0x5bb682(0x1c9)],'rule_delete':_0x1f6308[_0x5bb682(0x1eb)],'rule_update':_0x1f6308[_0x5bb682(0x26b)],'rows':[]})),_0x21e964=_0x5bb682(0x200),_0x5c0746=_0x5bb682(0x210));const _0x46ae07={'version':_0x5bb682(0x23c),'batchFillerRuleTemplate':getBatchFillerRuleTemplate(),'batchFillerFlowTemplate':getBatchFillerFlowTemplate(),'injectionFlowTemplate':getAiFlowTemplateForInjection(),'tables':_0x1b6a39},_0x55631b=new Blob([JSON[_0x5bb682(0x22d)](_0x46ae07,null,0x2)],{'type':'application/json'}),_0x5af8e6=URL[_0x5bb682(0x23d)](_0x55631b),_0x5b623a=document[_0x5bb682(0x1bb)]('a');_0x5b623a[_0x5bb682(0x1d8)]=_0x5af8e6,_0x5b623a['download']=_0x5bb682(0x1e2)+_0x5c0746+'-'+new Date()[_0x5bb682(0x1b8)]()[_0x5bb682(0x266)](0x0,0xa)+_0x5bb682(0x1c2),document[_0x5bb682(0x1fe)][_0x5bb682(0x206)](_0x5b623a),_0x5b623a[_0x5bb682(0x24b)](),document[_0x5bb682(0x1fe)]['removeChild'](_0x5b623a),URL['revokeObjectURL'](_0x5af8e6),log('【'+_0x5c0746+'】已成功导出。',_0x5bb682(0x220)),toastr[_0x5bb682(0x220)]('【'+_0x5c0746+_0x5bb682(0x22a),_0x5bb682(0x1f0));}export function exportPreset(){exportPresetBase(![]);}export function exportPresetFull(){exportPresetBase(!![]);}export function importPreset(_0x2fa89f){const _0x18cb6c=_0x26d07d,_0x5efaac=document['createElement']('input');_0x5efaac[_0x18cb6c(0x26a)]=_0x18cb6c(0x1c3),_0x5efaac[_0x18cb6c(0x1d4)]=_0x18cb6c(0x1c2),_0x5efaac[_0x18cb6c(0x234)]=_0x4015db=>{const _0x5bce8b=_0x18cb6c,_0x332a89=_0x4015db[_0x5bce8b(0x245)]['files'][0x0];if(!_0x332a89)return;const _0x3dbaea=new FileReader();_0x3dbaea['onload']=_0x246d5d=>{const _0x5adbc1=_0x5bce8b;try{const _0x2d5ec9=JSON[_0x5adbc1(0x208)](_0x246d5d[_0x5adbc1(0x245)][_0x5adbc1(0x236)]);if(!_0x2d5ec9[_0x5adbc1(0x21a)]||!Array['isArray'](_0x2d5ec9[_0x5adbc1(0x24d)]))throw new Error(_0x5adbc1(0x1ee));const _0x23caef=window['confirm'](_0x5adbc1(0x1f6));if(!_0x23caef){log(_0x5adbc1(0x1cb),_0x5adbc1(0x1f2)),toastr['info']('导入操作已取消。');return;}if(_0x2d5ec9['version']===_0x5adbc1(0x23c))saveBatchFillerRuleTemplate(_0x2d5ec9[_0x5adbc1(0x1f9)]),saveBatchFillerFlowTemplate(_0x2d5ec9[_0x5adbc1(0x1e8)]),saveAiTemplate(_0x2d5ec9['injectionFlowTemplate']);else{if(_0x2d5ec9[_0x5adbc1(0x26d)]!==undefined&&_0x2d5ec9[_0x5adbc1(0x1dc)]!==undefined)saveBatchFillerRuleTemplate(_0x2d5ec9[_0x5adbc1(0x26d)]),saveBatchFillerFlowTemplate(_0x2d5ec9[_0x5adbc1(0x1dc)]),saveAiTemplate(_0x2d5ec9['aiFlowTemplate']);else{if(_0x2d5ec9['aiTemplate'])saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x2d5ec9[_0x5adbc1(0x1e6)]),saveAiTemplate(_0x2d5ec9['aiTemplate']);else throw new Error(_0x5adbc1(0x1f5));}}const _0x177aec=_0x2d5ec9[_0x5adbc1(0x24d)];_0x177aec['forEach'](_0x5e3a68=>{const _0x250e15=_0x5adbc1;if(_0x5e3a68[_0x250e15(0x230)]===undefined||_0x5e3a68[_0x250e15(0x1b5)]===undefined||_0x5e3a68[_0x250e15(0x241)]===undefined)throw new Error(_0x250e15(0x25c)+JSON['stringify'](_0x5e3a68));if(_0x5e3a68[_0x250e15(0x226)]===undefined)_0x5e3a68[_0x250e15(0x226)]='无';if(_0x5e3a68[_0x250e15(0x1c9)]===undefined)_0x5e3a68[_0x250e15(0x1c9)]='允许';if(_0x5e3a68[_0x250e15(0x1eb)]===undefined)_0x5e3a68[_0x250e15(0x1eb)]='允许';if(_0x5e3a68['rule_update']===undefined)_0x5e3a68[_0x250e15(0x26b)]='允许';}),setMemoryState(_0x177aec);const _0x482018=getContext();if(_0x482018[_0x5adbc1(0x1e3)]&&_0x482018[_0x5adbc1(0x1e3)][_0x5adbc1(0x1ed)]>0x0){const _0x36deb7=_0x482018[_0x5adbc1(0x1e3)][_0x482018[_0x5adbc1(0x1e3)][_0x5adbc1(0x1ed)]-0x1];saveStateToMessage(getMemoryState(),_0x36deb7)&&(saveChat(),log(_0x5adbc1(0x1de),_0x5adbc1(0x220)));}else saveChatDebounced();log('预设已成功导入并应用。','success'),toastr['success'](_0x5adbc1(0x1c7),'导入成功'),typeof _0x2fa89f===_0x5adbc1(0x1d9)&&_0x2fa89f();}catch(_0x386b6f){log(_0x5adbc1(0x1cf)+_0x386b6f[_0x5adbc1(0x21d)],_0x5adbc1(0x244)),toastr[_0x5adbc1(0x244)](_0x5adbc1(0x1fc)+_0x386b6f[_0x5adbc1(0x21d)],'错误');}},_0x3dbaea[_0x5bce8b(0x1f3)](_0x332a89);},_0x5efaac['click']();}function _0x1ea2(){const _0x6847f8=['当日期、时间、地点、此地角色发生变化且1行都没有时。','parse','角色特征表格','未知操作','对某人很贵重或有特殊纪念意义的物品','物品描述',',\x20data=','”已删除。','extra','纯净预设','从预设模板生成默认表格...',']\x20末尾新增一行。','splice','“任务&命令&约定”表格','\x22\x20的表格已存在。','新列\x201','创建失败','744jrRRWB','\x20中插入行。','version','当本轮出现表中没有的新角色时,应插入','无法移动表格:索引\x20','message','表格\x20[','\x20行内容已更新。','success','新表格状态已强制写入最新消息并立即保存。','forEach','名为\x20\x22','mes','”已更新为“','note','冻结留存,不做任何删除操作。','开始时间','物品名称','】已开始下载。','无法创建表格:名称不能为空。','·\x20当物品发生变化时。\x0a·\x20当消耗品被使用却没有使用完时','stringify','\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','时空表格','name','【删除】:\x20','416264MBHKEM','·\x20当任务、约定有新的进展时\x0a·\x20任务或命令完成时\x0a·\x20任务命令或约定被取消时。','onchange','”列的第\x20','result','当用户以剧情外的身份对你进行提示时、或者以括号的方式提醒你时。','废黜表格后的状态已强制写入最新消息并立即保存。','执行AI指令:\x20insertRow(tableIndex=','rowIndex,','记录已完成/进展中的任务、约定。','Amily2-Table-Preset-v3.0-separated_templates','createObjectURL','141779qwQSls','·\x20当角色和{{user}}的交互不再符合原有的记录时。\x0a·\x20当角色和{{user}}的关系改变时。','724110ilYwfi','rows','amily2_tables_data','25OhQRkl','error','target',']\x20的表头“','Amily2-Table-Preset-v2.0-full','当用户以括号的方式要求你进行修改时。','玩家提示','重要物品表格','click','·\x20思考如果有角色和{{user}}互动,应什么态度\x0a·\x20角色对{{user}}的态度保持在最突出的三条及三条以内','tables','无法找到可锚定的消息或保存失败,清空操作可能不会被持久化!','\x22\x20已更新内存状态。','replace','AI指令错误尝试在不存在的表格索引\x20','无法清空:当前表格状态为空。','toString','\x0a\x20\x20\x20\x20\x20\x20\x20\x20','喜欢的人事物',',\x20rowIndex=','·\x20当角色的身体出现持久性变化时例如伤痕。\x0a·\x20当角色有新的爱好职业喜欢的事物时\x0a·\x20当角色更换住所时\x0a·\x20当角色提到重要信息时。','执行AI指令时发生错误:\x20',']\x20中插入了一行。','AI\x20指令在表格\x20[','AI指令意图更新不存在的行\x20(rowIndex:\x20','导入的表格数据格式不正确:\x20','map','AI\x20指令更新了表格\x20[','【增加】:\x20','所有表格的剧情内容已清空。','其他重要信息','1672244tUcYYQ',']\x20已被成功废黜。','·\x20当本轮出现表中没有的新角色时应新增。',']\x20中“','slice','push','重要原因','操作完成','type','rule_update','20766hryEMD','aiRuleTemplate','runner','地点(当前描写)','80PaKaqd','3815298zxCdqT','split','trim','fill','batch_filler_rule_template','headers','执行AI指令:\x20updateRow(tableIndex=','所有AI指令已成功执行完毕。','toISOString','6515nFVZAy','batch_filler_flow_template','createElement','无法找到可锚定的消息或保存失败,顺序调整可能不会被持久化!','准备执行从AI返回的\x20',']\x20的第\x20','任务名称','amily2_ai_template','除非用户要求,否则不允许删除。','.json','file','表格顺序调整后的状态已强制写入最新消息并立即保存。','填表完成','【修改】:\x20','预设已成功导入!','未在AI返回内容中找到有效的\x20<Amily2Edit>\x20指令块。','rule_add','UI操作\x20\x22','用户取消了导入操作。','完整备份','没有可导出的表格数据。','结束时间','导入预设失败:\x20','\x20行。','join','...]','未在聊天记录中找到表格数据,使用默认模板。','accept','substring',']\x20新增了一行。','重要提示','href','function','some','角色与{{user}}社交表格','aiFlowTemplate','warn','导入的预设已强制写入最新消息并立即保存。','已根据AI的指示成功更新表格','表格名称不能为空。','·\x20记录时空信息的表格应保持在一行\x0a·\x20日期一览记录当前的日期如几年几月几日\x0a·\x20时间一览记录当前时段但需注意不存在次日清晨若有次日清晨请自动更新日期且将时段更新为清晨','Amily2-','chat','角色名','\x20已在边界。','aiTemplate','·\x20当某人获得了贵重或有特殊意义的物品时\x0a·\x20当某个已有物品有了特殊意义时','batchFillerFlowTemplate','match','\x20中操作。','rule_delete','AI指令块为空无需执行任何操作。','length','文件格式无效或缺少版本号/表格数据。','\x20条表格操作指令...','导出成功','缺少状态或目标消息,无法保存。','info','readAsText','72ImVpKT','预设中缺少必要的指令模板字段。','【警告】\x0a\x0a导入操作将完全覆盖您当前的AI指令模板和所有表格包括结构和内容。\x0a\x0a此操作不可逆是否确定要继续','\x0a*\x20','对{{user}}关系','batchFillerRuleTemplate','【说明】:\x0a','\x20条消息中找到基准表格数据。','导入失败:','\x20行已删除。','body','清空行数据后的状态已强制写入最新消息并立即保存。','Amily2-Table-Preset-v2.0-clean','消耗性物品完全使用完,或一次性物品被使用后。','执行AI指令:\x20deleteRow(tableIndex=','在第\x20',']\x20新增了一列。','无法找到可锚定的消息或保存失败,新表格可能不会被持久化!','appendChild'];_0x1ea2=function(){return _0x6847f8;};return _0x1ea2();}