mirror of
https://github.com/SilenceLurker/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 17:05:50 +00:00
2 lines
13 KiB
JavaScript
2 lines
13 KiB
JavaScript
const _0x2f75db=_0x3115;(function(_0x1a0f98,_0x213af6){const _0x388e90=_0x3115,_0x332bcd=_0x1a0f98();while(!![]){try{const _0x17d70f=parseInt(_0x388e90(0xef))/0x1*(parseInt(_0x388e90(0x10e))/0x2)+-parseInt(_0x388e90(0xaa))/0x3+parseInt(_0x388e90(0xd6))/0x4+-parseInt(_0x388e90(0xf6))/0x5*(parseInt(_0x388e90(0x109))/0x6)+parseInt(_0x388e90(0xa5))/0x7*(-parseInt(_0x388e90(0x114))/0x8)+parseInt(_0x388e90(0xd0))/0x9+parseInt(_0x388e90(0xec))/0xa;if(_0x17d70f===_0x213af6)break;else _0x332bcd['push'](_0x332bcd['shift']());}catch(_0xdd3b40){_0x332bcd['push'](_0x332bcd['shift']());}}}(_0x380d,0x1faad));import{extension_settings,getContext}from'/scripts/extensions.js';import{characters}from'/script.js';import{world_names}from'/scripts/world-info.js';import{extensionName}from'../utils/settings.js';import{extractContentByTag,replaceContentByTag,extractFullTagBlock}from'../utils/tagProcessor.js';import{getCombinedWorldbookContent,findLatestSummaryLore,DEDICATED_LOREBOOK_NAME,getChatIdentifier}from'./lore.js';function _0x380d(){const _0x126c6e=['pathname','<i\x20class=\x22fas\x20fa-sync-alt\x22></i>\x20刷新模型','success','replace','[Amily2号-使节团]\x20第\x20','[Amily2号-外交部]\x20已派遣使者前往云端获取最新情报...','name','\x20位使节成功带回\x20','warn','#amily2_model','/chat/completions','Bearer\x20','[Amily2号-外交部]\x20情报已成功获取并解析。','\x20位使节任务失败:','<i\x20class=\x22fas\x20fa-spinner\x20fa-spin\x22></i>\x20加载中','cors','/v1','系统错误','split','API\x20Key无效','application/json','love.qinyan.xyz','length','AMILY2_LOCK_MODEL_FETCHING','未知的模型列表格式','Google','2133333ZXKMgw','Key\x20...','message','similarity','endsWith','任务排队中','28684KXcLVT','location','sort','[Amily2号-外交部]\x20紧急军情:外交任务失败!','#amily2_refresh_models','上次任务尚未完成,请稍后再试。','Authorization','[Amily2号-使节团]\x20全局错误:','error','[Amily2号-使节团]\x20使用\x20Google\x20API\x20Key:\x20...','generativelanguage.googleapis.com','status','[Amily2号-使节团]\x20派遣第\x20','https://raw.githubusercontent.com/Wx-2025/ST-Amily2-Chat-Optimisation/refs/heads/main/amily2_update_info.json','disabled','ai.google.dev','/v1/','toLowerCase','substring','GET','已启用手动模式,请直接输入模型ID。','ChatCompletionService','1707760lyaYMo','模型获取失败:\x20','string','205177LJYfYj','Amily2-ChatPlugin','statusText','[Amily2号-外交部]\x20API\x20类型:\x20','OpenAI\x20兼容','任务成功','html','1025IkCWBp','push','未知的\x20Google\x20模型列表格式','[Amily2号-使节团]\x20最终带回\x20','远方服务器响应异常,状态:\x20','log','#amily2_api_key','aiplatform.googleapis.com','外交任务失败','所有使节团任务完成,找到\x20','hostname','trim','模式切换','\x20失败:\x20','val','/v1beta/models','Origin','X-Custom-Proxy','href','3786nUwaFl','prop','\x20个Key)','models','stringify','2OXwiEV','join','所有使节均未能完成任务。详情请见控制台(F12)。','\x20个模型!','<option>','/v1beta/projects/locations/global/models','48MCVaZt','isArray','info','localeCompare','[Amily2号-使节团]\x20上次任务尚未完成,本次任务取消。','正在轮换使节团获取模型...','data','\x20个模型\x20(使用第\x20','陛下,您提供的\x20API\x20Key\x20无效或为空。','append','includes','\x20个\x20Google\x20模型\x20(使用第\x20','178885yOFYPT','search','map','<无法提取错误正文>','[Amily2号-使节团]\x20失败详情汇总:\x0a','623301nlAIhd','json','empty','omit','slice','filter',')\x20...','手动模式已启用','#amily2_api_url','no-store','/openai','API返回错误:\x20'];_0x380d=function(){return _0x126c6e;};return _0x380d();}import{checkAndFixWithAPI as _0x515e2a}from'./summarizer.js';import{isGoogleEndpoint,convertToGoogleRequest,parseGoogleResponse,buildGoogleApiUrl}from'../core/utils/googleAdapter.js';function _0x3115(_0x254222,_0x41867c){const _0x380d01=_0x380d();return _0x3115=function(_0x3115cd,_0x4dfd1f){_0x3115cd=_0x3115cd-0xa1;let _0x3923ff=_0x380d01[_0x3115cd];return _0x3923ff;},_0x3115(_0x254222,_0x41867c);}import{intelligentPoll,createGooglePollingTask,progressTracker}from'../core/utils/pollingManager.js';let ChatCompletionService=undefined;try{const module=await import('/scripts/custom-request.js');ChatCompletionService=module[_0x2f75db(0xeb)],console[_0x2f75db(0xfb)]('[Amily2号-外交部]\x20已成功召唤“皇家信使”(ChatCompletionService)。');}catch(_0x36ccf4){console['warn']('[Amily2号-外交部]\x20未能召唤“皇家信使”,部分高级功能(如Claw代理)将受限。请考虑更新SillyTavern版本。',_0x36ccf4);}const UPDATE_CHECK_URL=_0x2f75db(0xe3);export async function checkForUpdates(){const _0x34426=_0x2f75db;if(!UPDATE_CHECK_URL||UPDATE_CHECK_URL[_0x34426(0xa3)]('YourUsername'))return console[_0x34426(0xfb)]('[Amily2号-外交部]\x20任务取消:陛下尚未配置情报来源URL。'),null;try{console[_0x34426(0xfb)](_0x34426(0xbb));const _0x5d775d=await fetch(UPDATE_CHECK_URL,{'method':'GET','cache':_0x34426(0xb3),'mode':_0x34426(0xc5)});if(!_0x5d775d['ok'])throw new Error(_0x34426(0xfa)+_0x5d775d['status']);const _0x20ca3f=await _0x5d775d[_0x34426(0xab)]();return console[_0x34426(0xfb)](_0x34426(0xc2)),_0x20ca3f;}catch(_0x2cf4e5){return console[_0x34426(0xde)](_0x34426(0xd9),_0x2cf4e5),null;}}let isFetchingModels=![];export async function fetchSupportedModels(){const _0x52670a=_0x2f75db,_0x5699e5=extension_settings[extensionName];if(_0x5699e5&&_0x5699e5['forceProxyForCustomApi']){console['log']('[Amily2号-使节团]\x20已启用“皇家密道”模式,跳过模型列表获取。请手动输入模型ID并保存。'),toastr['info'](_0x52670a(0xea),_0x52670a(0x102));const _0x38dfa7=$('#amily2_model');return _0x38dfa7['empty']()['append']($('<option>',{'value':'','text':_0x52670a(0xb1)})),[];}if(window[_0x52670a(0xcd)])return console[_0x52670a(0xbe)](_0x52670a(0x118)),toastr[_0x52670a(0x116)](_0x52670a(0xdb),_0x52670a(0xd5)),[];window[_0x52670a(0xcd)]=!![];try{const _0x526956=$(_0x52670a(0xb2))[_0x52670a(0x104)]()['trim'](),_0x4e2ebc=$(_0x52670a(0xfc))[_0x52670a(0x104)]()[_0x52670a(0x101)](),_0x181961=$(_0x52670a(0xda)),_0x339964=$(_0x52670a(0xbf));if(!_0x526956||!_0x4e2ebc)return toastr['error']('陛下,请先赐予\x20API\x20地址与至少一枚\x20API\x20Key。','配置缺失'),[];_0x181961[_0x52670a(0x10a)]('disabled',!![])[_0x52670a(0xf5)](_0x52670a(0xc4)),_0x339964['empty']()[_0x52670a(0xa2)]($(_0x52670a(0x112),{'value':'','text':_0x52670a(0x119)}));const _0x51fae5=_0x4e2ebc[_0x52670a(0xc8)](',')[_0x52670a(0xa7)](_0x14c4b0=>_0x14c4b0['trim']())['filter'](Boolean);if(_0x51fae5[_0x52670a(0xcc)]===0x0)return toastr[_0x52670a(0xde)](_0x52670a(0xa1),'API\x20Key无效'),_0x339964[_0x52670a(0xac)]()[_0x52670a(0xa2)]($(_0x52670a(0x112),{'value':'','text':_0x52670a(0xc9)})),[];const _0x123a0a=[];let _0x53b2af=[];for(let _0x567fba=0x0;_0x567fba<_0x51fae5['length'];_0x567fba++){const _0x11dcb4=_0x51fae5[_0x567fba];console[_0x52670a(0xfb)](_0x52670a(0xe2)+(_0x567fba+0x1)+'/'+_0x51fae5[_0x52670a(0xcc)]+'\x20位使节\x20(Key:\x20...'+_0x11dcb4[_0x52670a(0xae)](-0x4)+_0x52670a(0xb0));try{let _0x434b65;const _0x4a0d33=new URL(_0x526956),_0x2970ce=isGoogleEndpoint(_0x526956);if(_0x2970ce){if(_0x4a0d33[_0x52670a(0x100)][_0x52670a(0xa3)](_0x52670a(0xe0))||_0x4a0d33['hostname'][_0x52670a(0xa3)]('ai.google.dev'))_0x4a0d33[_0x52670a(0xb6)]=_0x52670a(0x105);else{if(_0x4a0d33[_0x52670a(0x100)][_0x52670a(0xa3)](_0x52670a(0xfd)))_0x4a0d33[_0x52670a(0xb6)]=_0x52670a(0x113);else throw new Error('无法识别的\x20Google\x20API\x20端点');}_0x434b65=_0x4a0d33['href'];}else{let _0x2fe015=_0x4a0d33[_0x52670a(0xb6)];if(_0x2fe015[_0x52670a(0xe7)]()[_0x52670a(0xa3)](_0x52670a(0xb4)))_0x2fe015=_0x2fe015['replace'](/\/$/,'');else{if(_0x2fe015['endsWith']('/v1/chat/completions'))_0x2fe015=_0x2fe015[_0x52670a(0xe8)](0x0,_0x2fe015['length']-_0x52670a(0xc0)[_0x52670a(0xcc)]);else{if(_0x2fe015[_0x52670a(0xd4)](_0x52670a(0xe6)))_0x2fe015=_0x2fe015['slice'](0x0,-0x1);else!_0x2fe015[_0x52670a(0xd4)](_0x52670a(0xc6))&&(_0x2fe015=_0x2fe015[_0x52670a(0xb9)](/\/$/,'')+'/v1');}}_0x4a0d33[_0x52670a(0xb6)]=_0x2fe015[_0x52670a(0xb9)](/\/$/,'')+'/models',_0x434b65=_0x4a0d33[_0x52670a(0x108)];}console[_0x52670a(0xfb)]('[Amily2号-外交部]\x20使节团尝试使用地址:\x20'+_0x434b65),console[_0x52670a(0xfb)](_0x52670a(0xf2)+(_0x2970ce?_0x52670a(0xcf):_0x52670a(0xf3)));const _0x31c730={'Content-Type':'application/json','Accept':_0x52670a(0xca)};if(_0x2970ce){console[_0x52670a(0xfb)](_0x52670a(0xdf)+_0x11dcb4[_0x52670a(0xae)](-0x4));if(_0x4a0d33['hostname'][_0x52670a(0xa3)](_0x52670a(0xe0))||_0x4a0d33[_0x52670a(0x100)][_0x52670a(0xa3)](_0x52670a(0xe5)))_0x31c730['X-goog-api-key']=_0x11dcb4;else _0x4a0d33[_0x52670a(0x100)]['includes']('aiplatform.googleapis.com')&&(_0x31c730[_0x52670a(0xdc)]='Bearer\x20'+_0x11dcb4);}else _0x31c730[_0x52670a(0xdc)]=_0x52670a(0xc1)+_0x11dcb4;_0x434b65['includes'](_0x52670a(0xcb))&&(_0x31c730[_0x52670a(0x107)]=_0x52670a(0xf0),_0x31c730[_0x52670a(0x106)]=window[_0x52670a(0xd7)]['origin']);const _0x5eee5d=await fetch(_0x434b65,{'method':_0x52670a(0xe9),'headers':_0x31c730,'mode':'cors','credentials':_0x52670a(0xad)});if(!_0x5eee5d['ok']){let _0x16d898='';try{const _0x32f085=await _0x5eee5d[_0x52670a(0xab)]();_0x16d898=JSON[_0x52670a(0x10d)](_0x32f085,null,0x2);}catch{try{_0x16d898=await _0x5eee5d['text']();}catch(_0x5960fe){_0x16d898=_0x52670a(0xa8);}}throw new Error(_0x52670a(0xb5)+_0x5eee5d[_0x52670a(0xe1)]+'\x20'+_0x5eee5d[_0x52670a(0xf1)]+'\x0a'+_0x16d898);}const _0x2c805e=await _0x5eee5d[_0x52670a(0xab)]();let _0x29118a=[];if(_0x2970ce){if(_0x2c805e[_0x52670a(0x10c)]&&Array['isArray'](_0x2c805e['models']))_0x29118a=_0x2c805e[_0x52670a(0x10c)][_0x52670a(0xa7)](_0x3e11f2=>_0x3e11f2[_0x52670a(0xbc)]);else{if(_0x2c805e[_0x52670a(0x11a)]&&Array[_0x52670a(0x115)](_0x2c805e[_0x52670a(0x11a)]))_0x29118a=_0x2c805e['data']['map'](_0x6c28da=>_0x6c28da[_0x52670a(0xbc)]||_0x6c28da['id']);else{if(Array[_0x52670a(0x115)](_0x2c805e))_0x29118a=_0x2c805e[_0x52670a(0xa7)](_0x39f04c=>_0x39f04c[_0x52670a(0xbc)]);else throw new Error(_0x52670a(0xf8));}}}else{if(Array[_0x52670a(0x115)](_0x2c805e))_0x29118a=_0x2c805e[_0x52670a(0xa7)](_0x2be950=>_0x2be950['id']||_0x2be950);else{if(_0x2c805e[_0x52670a(0x11a)]&&Array[_0x52670a(0x115)](_0x2c805e[_0x52670a(0x11a)]))_0x29118a=_0x2c805e[_0x52670a(0x11a)][_0x52670a(0xa7)](_0xab3fff=>_0xab3fff['id']);else{if(_0x2c805e[_0x52670a(0x10c)]&&Array['isArray'](_0x2c805e[_0x52670a(0x10c)]))_0x29118a=_0x2c805e[_0x52670a(0x10c)]['map'](_0x414051=>_0x414051['id']);else throw new Error(_0x52670a(0xce));}}}const _0x4dbd18=_0x29118a['filter'](_0x1fc893=>typeof _0x1fc893===_0x52670a(0xee))[_0x52670a(0xaf)](_0x48efda=>!_0x48efda[_0x52670a(0xe7)]()[_0x52670a(0xa3)]('embed'))['filter'](_0x4408ab=>!_0x4408ab['toLowerCase']()[_0x52670a(0xa3)](_0x52670a(0xa6)))[_0x52670a(0xaf)](_0xf9d206=>!_0xf9d206[_0x52670a(0xe7)]()[_0x52670a(0xa3)](_0x52670a(0xd3)))[_0x52670a(0xaf)](_0x7f6f58=>!_0x7f6f58[_0x52670a(0xe7)]()[_0x52670a(0xa3)]('audio'))[_0x52670a(0xaf)](_0x58d0ca=>!_0x58d0ca[_0x52670a(0xe7)]()['includes']('code'))[_0x52670a(0xaf)](_0x59e401=>!_0x59e401[_0x52670a(0xe7)]()[_0x52670a(0xa3)]('whisper'));_0x4dbd18[_0x52670a(0xd8)]((_0xb5456,_0x2f4a90)=>_0xb5456[_0x52670a(0x117)](_0x2f4a90)),console['log']('[Amily2号-使节团]\x20第\x20'+(_0x567fba+0x1)+_0x52670a(0xbd)+_0x4dbd18['length']+_0x52670a(0x111)),_0x53b2af=[...new Set([..._0x53b2af,..._0x4dbd18])],_0x53b2af[_0x52670a(0xd8)]();_0x2970ce?toastr[_0x52670a(0xb8)]('成功获取\x20'+_0x4dbd18[_0x52670a(0xcc)]+_0x52670a(0xa4)+(_0x567fba+0x1)+_0x52670a(0x10b),_0x52670a(0xf4)):toastr[_0x52670a(0xb8)]('成功获取\x20'+_0x4dbd18[_0x52670a(0xcc)]+_0x52670a(0x11b)+(_0x567fba+0x1)+'\x20个Key)','任务成功');break;}catch(_0x5c4bab){const _0x53b54c=_0x52670a(0xd1)+_0x11dcb4[_0x52670a(0xae)](-0x4)+_0x52670a(0x103)+_0x5c4bab[_0x52670a(0xd2)];console[_0x52670a(0xde)](_0x52670a(0xba)+(_0x567fba+0x1)+_0x52670a(0xc3),_0x5c4bab),_0x123a0a[_0x52670a(0xf7)](_0x53b54c);}}if(_0x53b2af[_0x52670a(0xcc)]>0x0)return console['log'](_0x52670a(0xf9)+_0x53b2af[_0x52670a(0xcc)]+'\x20个可用模型'),toastr[_0x52670a(0x116)](_0x52670a(0xff)+_0x53b2af['length']+'\x20个可用模型','任务总结'),_0x53b2af;return toastr[_0x52670a(0xde)](_0x52670a(0x110),_0x52670a(0xfe)),console['error'](_0x52670a(0xa9)+_0x123a0a[_0x52670a(0x10f)]('\x0a')),[];}catch(_0x339731){return console[_0x52670a(0xde)](_0x52670a(0xdd),_0x339731),toastr[_0x52670a(0xde)](_0x52670a(0xed)+_0x339731['message'],_0x52670a(0xc7)),[];}finally{window[_0x52670a(0xcd)]=![];const _0x39032e=$(_0x52670a(0xda));_0x39032e['prop'](_0x52670a(0xe4),![])[_0x52670a(0xf5)](_0x52670a(0xb7));}}export async function checkAndFixWithAPI(_0x3dbbfa,_0x54de4c){return await _0x515e2a(_0x3dbbfa,_0x54de4c);}
|