ezllm 0.0.48 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/server.js +62 -61
  2. package/dist/web-ui/assets/{DashboardView-CJOcLFY-.js → DashboardView-BJ73jw9G.js} +2 -2
  3. package/dist/web-ui/assets/{DashboardView-CNsnnzad.css → DashboardView-CrDoH6I9.css} +1 -1
  4. package/dist/web-ui/assets/LayoutView-CuX7RHKs.js +1 -0
  5. package/dist/web-ui/assets/LayoutView-b0pdxJLS.css +1 -0
  6. package/dist/web-ui/assets/{LoginView-Cp-a8Nds.js → LoginView-DW5V8P3m.js} +1 -1
  7. package/dist/web-ui/assets/{LogsView-C1ImQHJ6.js → LogsView-DrG_qFqR.js} +2 -2
  8. package/dist/web-ui/assets/{ManagedServicesView-DIMY-j18.js → ManagedServicesView-Dajk1OlI.js} +1 -1
  9. package/dist/web-ui/assets/{PluginsView-CqmYhJ6G.js → PluginsView-Bo7jtP57.js} +1 -1
  10. package/dist/web-ui/assets/ProvidersView-AoGdeGoV.js +14 -0
  11. package/dist/web-ui/assets/{ProvidersView-BwX8Y3kP.css → ProvidersView-DZs-NofB.css} +1 -1
  12. package/dist/web-ui/assets/{SettingsView-BbmPwJ-1.js → SettingsView-Bbn_XBX3.js} +1 -1
  13. package/dist/web-ui/assets/{SetupView-WCA8Jeug.js → SetupView-Co92DXfg.js} +1 -1
  14. package/dist/web-ui/assets/{config-BKCqJSgG.js → config-CVy3DdQo.js} +1 -1
  15. package/dist/web-ui/assets/index-Bpt0yCG7.js +49 -0
  16. package/dist/web-ui/assets/{message-Bqg-4z7y.js → message-7_77xsCe.js} +2 -2
  17. package/dist/web-ui/assets/pluginProviders-DFVS7pcs.js +1 -0
  18. package/dist/web-ui/assets/{providers-DRvT1zLg.js → providers-Dx3XtxJu.js} +1 -1
  19. package/dist/web-ui/assets/{router-CpkAp9dB.js → router-DOdUMO6P.js} +2 -2
  20. package/dist/web-ui/assets/{useCopyToast-DwJ3VhPN.js → useCopyToast-Dkb8g4uG.js} +1 -1
  21. package/dist/web-ui/assets/{useManagerApi-Cf88mNiu.js → useManagerApi-jm_MgzHV.js} +1 -1
  22. package/dist/web-ui/assets/{useQuickRangeFilter-BsOHHbog.js → useQuickRangeFilter-CC-fmdix.js} +1 -1
  23. package/dist/web-ui/assets/useToast-BxrPRTvE.js +1 -0
  24. package/dist/web-ui/index.html +3 -3
  25. package/package.json +1 -1
  26. package/dist/web-ui/assets/LayoutView-DH55aSBP.js +0 -1
  27. package/dist/web-ui/assets/LayoutView-cQeiOjLU.css +0 -1
  28. package/dist/web-ui/assets/ProvidersView-uCjHMlHd.js +0 -14
  29. package/dist/web-ui/assets/index-DNgY-btf.js +0 -49
  30. package/dist/web-ui/assets/pluginProviders-BGmYcLwJ.js +0 -1
  31. package/dist/web-ui/assets/useToast-IlI6ESuD.js +0 -1
@@ -1 +0,0 @@
1
- import{A as e,Et as t,F as n,Ft as r,Gt as i,H as a,I as o,L as s,M as c,N as l,Q as u,T as d,at as f,d as p,gt as m,ht as h,i as g,j as _,k as v,l as y,n as b,o as x,ot as S,pn as C,tt as w,u as T,ut as E,yt as D}from"./router-CpkAp9dB.js";import{m as O}from"./message-Bqg-4z7y.js";import{t as k}from"./index-DNgY-btf.js";import{n as A,t as j}from"./useManagerApi-Cf88mNiu.js";import{t as M}from"./config-BKCqJSgG.js";import{t as N}from"./useToast-IlI6ESuD.js";import{t as P}from"./navVisibility-CPbwxq3d.js";function F(e){return`更新失败:${e}(更新未生效,服务仍在旧版本运行)`}a(),i(),D();var I={class:`check-body`},L={class:`version-summary`},R={class:`version-item`},z={class:`version-value`},B={class:`version-item version-item--latest`},V={class:`version-value`},H={class:`meta-row`},U={key:0,class:`meta-row meta-row--stack`},W={key:0,class:`meta-warn`},G={key:1},K={class:`npm-line`},q=`https://www.npmjs.com/package/ezllm`,J=p(s({__name:`UpdateCheckDialog`,props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:[`update:modelValue`],setup(r){let{toast:i}=N(),a=E(r,`modelValue`),s=t(!1),u=t(!1),p=t(null),y=t(null),b=v(()=>g.value?.buildSource===`local`),x=t(null),T=t(null),D=null,O=()=>D?.abort(),M=e=>new Date(e).toLocaleString(),P=v(()=>{let e=p.value?.lastApply;if(!e)return null;let t=e.appliedAt?M(e.appliedAt):``,n=`${e.fromVersion} → ${e.toVersion}${t?`(${t})`:``}`;return e.error?`${n}:${e.error}`:n}),J=v(()=>{let e=p.value;return e?.updating?e.pendingUpdate?`更新执行中:目标 ${e.pendingUpdate}`:`更新执行中`:null}),Y=e=>`https://www.npmjs.com/package/ezllm/v/${e}`,X=async()=>{y.value=null,x.value=null,T.value=null,s.value=!0;try{let e=await j.update();if(p.value=e,!e.supported)return;y.value=await j.checkUpdate()}catch(e){x.value=e.message||`检查更新失败`}finally{s.value=!1}},Z=async()=>{if(!y.value)return;let e=y.value.latestVersion;try{await k.confirm(`确定更新到 ${e}?服务会自动重启并在启动时安装新版本:重启期间管理台短暂不可访问(预计 1~3 分钟),完成后自动恢复。`,`立即更新`,{confirmButtonText:`立即更新`,cancelButtonText:`取消`,type:`warning`})}catch{return}u.value=!0;let t=new AbortController;D=t;try{let e=await j.update(),n=await j.applyUpdate();if(!n.updated){T.value=`已是最新版本 ${n.fromVersion}`,y.value={hasUpdate:!1,currentVersion:n.fromVersion,latestVersion:n.fromVersion,checkedAt:Date.now()};return}T.value=`正在重启服务并安装 ${n.toVersion}(预计 1~3 分钟):重启期间管理台短暂不可访问,完成后这里会自动显示结果。`;let r=await A({targetVersion:n.toVersion,sinceAppliedAt:e.lastApply?.appliedAt??null,signal:t.signal});if(t.signal.aborted)return;r&&!r.error?(i(`已更新到 ${r.toVersion}`,`success`),T.value=`已更新 ${r.fromVersion} → ${r.toVersion},服务已在新版本上运行。`,y.value={hasUpdate:!1,currentVersion:r.toVersion,latestVersion:r.toVersion,checkedAt:Date.now()}):r?.error?(i(`更新失败:${r.error}`,`error`),T.value=F(r.error)):T.value=`更新仍在进行(安装耗时较长):稍后刷新页面查看最新状态。`}catch(e){i(e.message||`更新失败`,`error`)}finally{if(u.value=!1,D===t&&(D=null),!t.signal.aborted)try{p.value=await j.update()}catch{}}};return(t,r)=>{let i=f(`el-alert`),g=f(`el-tag`),v=f(`el-link`),E=f(`el-button`),D=f(`el-dialog`),k=S(`loading`);return w(),_(D,{modelValue:a.value,"onUpdate:modelValue":r[1]||=e=>a.value=e,title:`检查更新`,width:`480px`,"close-on-click-modal":!u.value,onOpen:X,onClose:O},{footer:h(()=>[o(E,{onClick:r[0]||=e=>a.value=!1},{default:h(()=>[...r[12]||=[n(`关闭`,-1)]]),_:1}),y.value?.hasUpdate?(w(),_(E,{key:0,type:`primary`,loading:u.value,onClick:Z},{default:h(()=>[n(C(u.value?`更新中...`:`立即更新`),1)]),_:1},8,[`loading`])):c(``,!0)]),default:h(()=>[m((w(),l(`div`,I,[p.value&&!p.value.supported?(w(),_(i,{key:0,title:`当前为源码运行模式,更新功能不可用`,type:`info`,"show-icon":``,closable:!1},{default:h(()=>[...r[2]||=[e(`div`,{class:`alert-hint`},[n(` 仅通过 npx ezllm install 装配的实例支持更新检查。本地开发用仓库里的 `),e(`code`,null,`pnpm upgrade:local`),n(` 更新运行中的服务。 `)],-1)]]),_:1})):y.value?(w(),l(d,{key:1},[e(`div`,L,[e(`div`,R,[r[4]||=e(`span`,{class:`version-label`},`当前版本`,-1),e(`span`,z,C(y.value.currentVersion),1),b.value?(w(),_(g,{key:0,type:`warning`,size:`small`,"disable-transitions":``},{default:h(()=>[...r[3]||=[n(`本地构建`,-1)]]),_:1})):c(``,!0)]),r[6]||=e(`div`,{class:`version-divider`},null,-1),e(`div`,B,[r[5]||=e(`span`,{class:`version-label`},`最新版本`,-1),e(`span`,V,C(y.value.latestVersion),1),o(g,{type:y.value.hasUpdate?`warning`:`success`,size:`small`,"disable-transitions":``},{default:h(()=>[n(C(y.value.hasUpdate?`可更新`:`已是最新`),1)]),_:1},8,[`type`])])]),o(i,{title:y.value.hasUpdate?`发现新版本 ${y.value.latestVersion}(当前 ${y.value.currentVersion})`:`已是最新版本 ${y.value.currentVersion}`,type:y.value.hasUpdate?`warning`:`success`,"show-icon":``,closable:!1},null,8,[`title`,`type`]),e(`div`,H,[e(`span`,null,`检查时间:`+C(M(y.value.checkedAt)),1),y.value.hasUpdate?(w(),_(v,{key:0,type:`primary`,href:Y(y.value.latestVersion),target:`_blank`},{default:h(()=>[...r[7]||=[n(`在 npm 查看该版本`,-1)]]),_:1},8,[`href`])):c(``,!0)]),J.value||P.value?(w(),l(`div`,U,[J.value?(w(),l(`span`,W,C(J.value),1)):c(``,!0),P.value?(w(),l(`span`,G,`上次更新:`+C(P.value),1)):c(``,!0)])):c(``,!0)],64)):!s.value&&x.value?(w(),_(i,{key:2,title:x.value,type:`error`,"show-icon":``,closable:!1},{default:h(()=>[r[9]||=e(`div`,{class:`alert-hint`},`检查需访问 npm 源,可能是网络不可达或版本号解析失败;稍后重试即可。`,-1),o(E,{size:`small`,class:`mt-8`,onClick:X},{default:h(()=>[...r[8]||=[n(`重试`,-1)]]),_:1})]),_:1},8,[`title`])):c(``,!0),T.value?(w(),_(i,{key:3,title:T.value,type:`info`,"show-icon":``,closable:!1},null,8,[`title`])):c(``,!0),e(`div`,K,[r[11]||=n(` npm 包主页: `,-1),o(v,{type:`primary`,href:q,target:`_blank`},{default:h(()=>[...r[10]||=[n(`npmjs.com/package/ezllm`,-1)]]),_:1})])])),[[k,s.value]])]),_:1},8,[`modelValue`,`close-on-click-modal`])}}}),[[`__scopeId`,`data-v-fd3bfabc`]]);a(),i(),D();var Y={class:`layout`},X=[`title`],Z={key:0,class:`header-version-tag`},Q={class:`header-nav`},$={class:`header-actions`},ee={class:`user-chip`},te={class:`user-avatar`},ne={class:`user-name`},re={class:`main`},ie={class:`page`},ae=p(s({__name:`LayoutView`,setup(i){let a=y(),s=T(),d=M(),p=t(!1);u(()=>{b(),d.load().catch(()=>{})});let m=v(()=>P(d.config?.[`web-ui`])),S=v(()=>m.value.plugins),E=v(()=>m.value.managedServices),D=v(()=>g.value?.version||``),k=v(()=>g.value?.buildSource===`local`),A=v(()=>k.value?`本地构建版本(upgrade:local 产物)`:`当前运行版本`),j=v(()=>g.value?.authRequired!==!1),N=v(()=>{if(!j.value)return`免登录`;let e=localStorage.getItem(`webui_token`)||``;try{return atob(e).split(`:`)[0]||`用户`}catch{return`用户`}}),F=v(()=>{let e=a.path;return e===`/`?`/`:e.startsWith(`/providers`)?`/providers`:e.startsWith(`/managed-services`)?`/managed-services`:e.startsWith(`/plugins`)?`/plugins`:e.startsWith(`/settings`)?`/settings`:e.startsWith(`/logs`)?`/logs`:`/`}),I=e=>{e===`logout`&&(x(),s.push(`/login`)),e===`check-update`&&(p.value=!0)};return(t,i)=>{let a=f(`el-menu-item`),s=f(`el-menu`),u=f(`el-icon`),d=f(`el-dropdown-item`),m=f(`el-dropdown-menu`),g=f(`el-dropdown`),v=f(`el-header`),y=f(`router-view`);return w(),l(`div`,Y,[o(v,{class:`header`},{default:h(()=>[i[9]||=e(`div`,{class:`brand`},[e(`span`,{class:`brand-mark`},`EZ`),e(`h1`,null,`LLM`)],-1),D.value?(w(),l(`span`,{key:0,class:`header-version`,title:A.value},[n(` v`+C(D.value),1),k.value?(w(),l(`span`,Z,`本地构建`)):c(``,!0)],8,X)):c(``,!0),e(`nav`,Q,[o(s,{mode:`horizontal`,"default-active":F.value,ellipsis:!1,router:``,class:`header-menu`},{default:h(()=>[o(a,{index:`/`},{default:h(()=>[...i[1]||=[n(`首页`,-1)]]),_:1}),o(a,{index:`/providers`},{default:h(()=>[...i[2]||=[n(`供应商管理`,-1)]]),_:1}),E.value?(w(),_(a,{key:0,index:`/managed-services`},{default:h(()=>[...i[3]||=[n(`托管服务`,-1)]]),_:1})):c(``,!0),S.value?(w(),_(a,{key:1,index:`/plugins`},{default:h(()=>[...i[4]||=[n(`插件`,-1)]]),_:1})):c(``,!0),o(a,{index:`/logs`},{default:h(()=>[...i[5]||=[n(`日志`,-1)]]),_:1}),o(a,{index:`/settings`},{default:h(()=>[...i[6]||=[n(`设置`,-1)]]),_:1})]),_:1},8,[`default-active`])]),e(`div`,$,[o(g,{trigger:`click`,onCommand:I,class:`ml-12`},{dropdown:h(()=>[o(m,null,{default:h(()=>[o(d,{command:`check-update`},{default:h(()=>[...i[7]||=[n(`检查更新`,-1)]]),_:1}),j.value?(w(),_(d,{key:0,command:`logout`,divided:``},{default:h(()=>[...i[8]||=[n(`退出`,-1)]]),_:1})):c(``,!0)]),_:1})]),default:h(()=>[e(`div`,ee,[e(`span`,te,C(N.value.charAt(0).toUpperCase()),1),e(`span`,ne,C(N.value),1),o(u,{class:`el-icon--right`},{default:h(()=>[o(r(O))]),_:1})])]),_:1})])]),_:1}),e(`main`,re,[e(`div`,ie,[o(y)])]),o(J,{modelValue:p.value,"onUpdate:modelValue":i[0]||=e=>p.value=e},null,8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-563d42ed`]]);export{ae as default};
@@ -1 +0,0 @@
1
- .mt-8[data-v-fd3bfabc]{margin-top:8px}.check-body[data-v-fd3bfabc]{flex-direction:column;gap:12px;min-height:96px;display:flex}.alert-hint[data-v-fd3bfabc]{margin-top:4px;font-size:12px;line-height:1.6}.alert-hint code[data-v-fd3bfabc]{background:var(--el-fill-color-light);border-radius:4px;padding:1px 6px;font-size:12px}.version-summary[data-v-fd3bfabc]{background:var(--el-fill-color-lighter);border-radius:8px;grid-template-columns:1fr auto 1fr;align-items:center;padding:12px 16px;display:grid}.version-item[data-v-fd3bfabc]{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.version-item--latest[data-v-fd3bfabc]{text-align:right;align-items:flex-end}.version-label[data-v-fd3bfabc]{color:var(--el-text-color-secondary);font-size:12px}.version-value[data-v-fd3bfabc]{color:var(--el-text-color-primary);font-variant-numeric:tabular-nums;font-size:18px;font-weight:600;line-height:1.2}.version-divider[data-v-fd3bfabc]{background:var(--el-border-color-lighter);width:1px;height:36px;margin:0 16px}.meta-row[data-v-fd3bfabc]{color:var(--el-text-color-secondary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.meta-row--stack[data-v-fd3bfabc]{flex-direction:column;align-items:flex-start;gap:4px}.meta-warn[data-v-fd3bfabc]{color:var(--el-color-warning)}.npm-line[data-v-fd3bfabc]{color:var(--el-text-color-secondary);overflow-wrap:anywhere;font-size:12px}.user-chip[data-v-563d42ed]{cursor:pointer;border-radius:999px;outline:none;align-items:center;gap:8px;padding:4px 8px 4px 4px;transition:background .15s;display:flex}.user-chip[data-v-563d42ed]:hover{background:var(--el-fill-color-light)}.user-avatar[data-v-563d42ed]{color:#fff;background:linear-gradient(135deg,#4f8df9 0%,#2563eb 100%);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:600;display:inline-flex}.user-name[data-v-563d42ed]{color:var(--el-text-color-primary);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:13px;overflow:hidden}.user-chip .el-icon--right[data-v-563d42ed]{color:var(--el-text-color-secondary);font-size:12px}