Files
mai-bot/dashboard/dist/assets/pack-api-NsQx-ed4.js

6 lines
5.6 KiB
JavaScript

import{x as u}from"./index-CuOHsLf7.js";const m="https://maibot-plugin-stats.maibot-webui.workers.dev";async function y(e){const s=new URLSearchParams;e?.status&&s.set("status",e.status),e?.page&&s.set("page",e.page.toString()),e?.page_size&&s.set("page_size",e.page_size.toString()),e?.search&&s.set("search",e.search),e?.sort_by&&s.set("sort_by",e.sort_by),e?.sort_order&&s.set("sort_order",e.sort_order);const t=await fetch(`${m}/pack?${s.toString()}`);if(!t.ok)throw new Error(`获取 Pack 列表失败: ${t.status}`);return t.json()}async function v(e){const s=await fetch(`${m}/pack/${e}`);if(!s.ok)throw new Error(`获取 Pack 失败: ${s.status}`);const t=await s.json();if(!t.success)throw new Error(t.error||"获取 Pack 失败");return t.pack}async function P(e){const t=await(await fetch(`${m}/pack`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).json();if(!t.success)throw new Error(t.error||"创建 Pack 失败");return t}async function $(e,s){await fetch(`${m}/pack/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pack_id:e,user_id:s})})}async function b(e,s){const r=await(await fetch(`${m}/pack/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pack_id:e,user_id:s})})).json();if(!r.success)throw new Error(r.error||"点赞失败");return{likes:r.likes,liked:r.liked}}async function C(e,s){return(await(await fetch(`${m}/pack/like/check?pack_id=${e}&user_id=${s}`)).json()).liked||!1}async function S(e){const s=await u("/api/webui/config/model");if(!s.ok)throw new Error("获取当前模型配置失败");const t=await s.json(),r=t.config||t;console.log("=== Pack Conflict Detection ==="),console.log("Pack providers:",e.providers),console.log("Local providers:",r.api_providers);const a={existing_providers:[],new_providers:[],conflicting_models:[]},p=r.api_providers||[];for(const i of e.providers){console.log(`
Checking pack provider: ${i.name}`),console.log(` Pack URL: ${i.base_url}`),console.log(` Normalized: ${k(i.base_url)}`);const c=p.filter(o=>{const l=k(o.base_url),d=k(i.base_url);return console.log(` Comparing with local "${o.name}": ${o.base_url}`),console.log(` Local normalized: ${l}`),console.log(` Match: ${l===d}`),l===d});c.length>0?(console.log(` ✓ Matched with ${c.length} local provider(s):`,c.map(o=>o.name).join(", ")),a.existing_providers.push({pack_provider:i,local_providers:c.map(o=>({name:o.name,base_url:o.base_url}))})):(console.log(" ✗ No match found - will need API key"),a.new_providers.push(i))}const n=r.models||[];console.log(`
=== Model Conflict Detection ===`);for(const i of e.models){const c=n.find(o=>o.name===i.name);c&&(console.log(`Model conflict: ${i.name}`),a.conflicting_models.push({pack_model:i.name,local_model:c.name}))}return console.log(`
=== Detection Summary ===`),console.log(`Existing providers: ${a.existing_providers.length}`),console.log(`New providers: ${a.new_providers.length}`),console.log(`Conflicting models: ${a.conflicting_models.length}`),console.log(`===========================
`),a}async function x(e,s,t,r){const a=await u("/api/webui/config/model");if(!a.ok)throw new Error("获取当前模型配置失败");const p=await a.json(),n=p.config||p;if(s.apply_providers){const c=s.selected_providers?e.providers.filter(o=>s.selected_providers.includes(o.name)):e.providers;for(const o of c){if(t[o.name])continue;const l=r[o.name];if(!l)throw new Error(`提供商 "${o.name}" 缺少 API Key`);const d={...o,api_key:l},f=n.api_providers.findIndex(g=>g.name===o.name);f>=0?n.api_providers[f]=d:n.api_providers.push(d)}}if(s.apply_models){const c=s.selected_models?e.models.filter(o=>s.selected_models.includes(o.name)):e.models;for(const o of c){const l=t[o.api_provider]||o.api_provider,d={...o,api_provider:l},f=n.models.findIndex(g=>g.name===o.name);f>=0?n.models[f]=d:n.models.push(d)}}if(s.apply_task_config){const c=s.selected_tasks||Object.keys(e.task_config);for(const o of c){const l=e.task_config[o];if(!l)continue;const d=new Set(s.selected_models||e.models.map(_=>_.name)),f=l.model_list.filter(_=>d.has(_));if(f.length===0)continue;const g={...l,model_list:f};if(s.task_mode==="replace")n.model_task_config[o]=g;else{const _=n.model_task_config[o];if(_){const w=[...new Set([..._.model_list,...f])];n.model_task_config[o]={..._,model_list:w}}else n.model_task_config[o]=g}}}if(!(await u("/api/webui/config/model",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).ok)throw new Error("保存配置失败")}async function j(e){const s=await u("/api/webui/config/model");if(!s.ok)throw new Error("获取当前模型配置失败");const t=await s.json();if(!t.success||!t.config)throw new Error("获取配置失败");const r=t.config;let a=(r.api_providers||[]).map(o=>({name:o.name,base_url:o.base_url,client_type:o.client_type,max_retry:o.max_retry,timeout:o.timeout,retry_interval:o.retry_interval}));e.selectedProviders&&(a=a.filter(o=>e.selectedProviders.includes(o.name)));let p=r.models||[];e.selectedModels&&(p=p.filter(o=>e.selectedModels.includes(o.name)));const n={},i=r.model_task_config||{},c=e.selectedTasks||Object.keys(i);for(const o of c)i[o]&&(n[o]=i[o]);return{providers:a,models:p,task_config:n}}function k(e){try{const s=new URL(e);return`${s.protocol}//${s.host}${s.pathname}`.replace(/\/$/,"").toLowerCase()}catch{return e.toLowerCase().replace(/\/$/,"")}}function E(){const e="maibot_pack_user_id";let s=localStorage.getItem(e);return s||(s="pack_user_"+Math.random().toString(36).substring(2,15),localStorage.setItem(e,s)),s}export{C as a,v as b,P as c,S as d,j as e,x as f,E as g,y as l,$ as r,b as t};