Files
ST-Amily2-Chat-Optimisation…/core/api.js
2025-07-23 10:31:58 +08:00

2 lines
13 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 _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);}