ezllm 0.0.49 → 0.0.51

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 (33) hide show
  1. package/dist/cli.js +22 -23
  2. package/dist/daemon.js +14 -15
  3. package/dist/plugin-host.js +3 -3
  4. package/dist/server.js +59 -58
  5. package/dist/web-ui/assets/{DashboardView-CNsnnzad.css → DashboardView-CrDoH6I9.css} +1 -1
  6. package/dist/web-ui/assets/{DashboardView--YRv0pdB.js → DashboardView-bM9PqDiJ.js} +2 -2
  7. package/dist/web-ui/assets/LayoutView-C_LbQR7r.css +1 -0
  8. package/dist/web-ui/assets/LayoutView-CnpMPvtX.js +1 -0
  9. package/dist/web-ui/assets/{LoginView-DyiYIltJ.js → LoginView-CAMVAyqQ.js} +1 -1
  10. package/dist/web-ui/assets/{LogsView-BlO9eUXV.js → LogsView-HFN9O54e.js} +1 -1
  11. package/dist/web-ui/assets/{ManagedServicesView-DalOm5fB.js → ManagedServicesView-BUUPqj4x.js} +1 -1
  12. package/dist/web-ui/assets/{PluginsView-CMjFrpCT.js → PluginsView-a2QVnO1e.js} +1 -1
  13. package/dist/web-ui/assets/ProvidersView-B9lw6njY.css +1 -0
  14. package/dist/web-ui/assets/{ProvidersView-PlwErhJU.js → ProvidersView-BKyDkKE1.js} +9 -9
  15. package/dist/web-ui/assets/{SettingsView-Dl-dHm8U.js → SettingsView-CNcoc3UN.js} +1 -1
  16. package/dist/web-ui/assets/{SetupView-BblW5D0m.js → SetupView-CWmlLn1Y.js} +1 -1
  17. package/dist/web-ui/assets/{config-DRb_7Qvh.js → config-xKRJvzmN.js} +1 -1
  18. package/dist/web-ui/assets/{index-BviWrBv1.js → index-BPFg2Vwy.js} +1 -1
  19. package/dist/web-ui/assets/{message-BgUNwRuF.js → message-BCzerIAw.js} +1 -1
  20. package/dist/web-ui/assets/{pluginProviders-CMNUPYaO.js → pluginProviders-D3aFIsze.js} +1 -1
  21. package/dist/web-ui/assets/{providers-fXKPM_nK.js → providers-A7mAhs_N.js} +1 -1
  22. package/dist/web-ui/assets/{router-Cpy-sU_q.js → router-B4JKSClW.js} +2 -2
  23. package/dist/web-ui/assets/{useCopyToast-DreqvPDI.js → useCopyToast-DtJhxffK.js} +1 -1
  24. package/dist/web-ui/assets/useManagerApi-Dfa7oUgw.js +1 -0
  25. package/dist/web-ui/assets/{useQuickRangeFilter-D2Epk9Kj.js → useQuickRangeFilter-BrncYqWD.js} +1 -1
  26. package/dist/web-ui/assets/useToast-C4AY3_4n.js +1 -0
  27. package/dist/web-ui/index.html +3 -3
  28. package/package.json +1 -1
  29. package/dist/web-ui/assets/LayoutView-3OpEgcEH.js +0 -1
  30. package/dist/web-ui/assets/LayoutView-cQeiOjLU.css +0 -1
  31. package/dist/web-ui/assets/ProvidersView-DZs-NofB.css +0 -1
  32. package/dist/web-ui/assets/useManagerApi-DBsdJZgc.js +0 -1
  33. package/dist/web-ui/assets/useToast-BpZaUS2s.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-Cpy-sU_q.js";import{m as O}from"./message-BgUNwRuF.js";import{t as k}from"./index-BviWrBv1.js";import{n as A,t as j}from"./useManagerApi-DBsdJZgc.js";import{t as M}from"./config-DRb_7Qvh.js";import{t as N}from"./useToast-BpZaUS2s.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}
@@ -1 +0,0 @@
1
- .auth-instructions[data-v-772ba69f]{margin:0 0 12px;line-height:1.7}.auth-actions[data-v-772ba69f]{margin-bottom:12px}.auth-hint[data-v-772ba69f]{color:#909399;margin:0;font-size:12px}.quota-block[data-v-7f19bc53]{background:#fafbfc;border:1px solid #f0f2f5;border-radius:6px;margin-bottom:4px;padding:8px 10px}.quota-header[data-v-7f19bc53]{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.quota-block-title[data-v-7f19bc53]{color:#303133;flex-shrink:0;font-size:13px;font-weight:600}.quota-header-stats[data-v-7f19bc53]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;min-width:0;display:flex}.quota-hint[data-v-7f19bc53]{color:#c0c4cc;font-size:12px}.quota-error[data-v-7f19bc53]{color:#f56c6c;word-break:break-all;margin-bottom:4px;font-size:12px}.quota-row[data-v-7f19bc53]{align-items:flex-start;gap:8px;padding:3px 0;display:flex}.quota-label[data-v-7f19bc53]{color:#909399;flex-shrink:0;width:72px;font-size:12px;line-height:18px}.quota-main[data-v-7f19bc53]{flex:1;min-width:0}.quota-main[data-v-7f19bc53] .el-progress{width:100%}.quota-main[data-v-7f19bc53] .el-progress-bar__outer{background-color:#f2f2f2}.quota-main[data-v-7f19bc53] .el-progress-bar__inner{align-items:center;display:flex}.quota-main[data-v-7f19bc53] .el-progress-bar__innerText{color:#303133;white-space:nowrap;margin:0 5px;font-size:12px;line-height:1}.quota-cap-null[data-v-7f19bc53]{color:#606266;font-size:12px}.provider-card[data-v-cfb952f3]{cursor:grab;min-width:0;transition:box-shadow .2s,border-color .2s}.provider-card[data-v-cfb952f3] .el-card__header{padding-bottom:10px}.provider-card[data-v-cfb952f3] .el-card__body{padding-top:12px}.provider-card[data-v-cfb952f3]:hover{border-color:var(--el-color-primary-light-5);box-shadow:var(--ez-card-shadow-hover)}.provider-card.dragging[data-v-cfb952f3]{cursor:grabbing}.provider-card.is-disabled[data-v-cfb952f3]{background:#fafafa}.provider-card.is-disabled .provider-name[data-v-cfb952f3]{color:#a8abb2}.provider-card.is-disabled[data-v-cfb952f3] .el-card__header{background:#fafafa}.card-header-right[data-v-cfb952f3]{flex-shrink:0;align-items:center;gap:10px;display:flex}.header-switch[data-v-cfb952f3]{cursor:auto;align-items:center;display:flex}.header-switch[data-v-cfb952f3] .el-switch{cursor:pointer}.card-header[data-v-cfb952f3]{justify-content:space-between;align-items:center;gap:12px;display:flex}.card-title[data-v-cfb952f3]{align-items:center;gap:8px;min-width:0;display:flex}.provider-name[data-v-cfb952f3]{color:#303133;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.plugin-auth-tag[data-v-cfb952f3]{cursor:pointer}.plugin-auth-tag[data-v-cfb952f3]:focus-visible,.model-tag[data-v-cfb952f3]:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.card-actions[data-v-cfb952f3]{cursor:auto;flex-shrink:0;gap:0;display:flex}.model-tags[data-v-cfb952f3]{flex-wrap:nowrap;gap:6px;margin-top:10px;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.model-tag[data-v-cfb952f3]{color:#606266;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:#f5f7fa;border:1px solid #0000;border-radius:999px;flex:none;align-items:center;max-width:100%;padding:3px 10px;font-size:12px;line-height:18px;transition:color .15s,background .15s;display:inline-flex;overflow:hidden}.model-tag[data-v-cfb952f3]:hover{color:#3b82f6;background:#eff6ff}.model-tag.ok[data-v-cfb952f3]{color:#16a34a;background:#f0fdf4}.model-tag.error[data-v-cfb952f3]{color:#dc2626;background:#fef2f2}.badge-mark[data-v-cfb952f3]{margin-left:3px}.card-footer[data-v-cfb952f3]{border-top:1px solid #f0f2f5;justify-content:space-between;align-items:center;margin-top:14px;padding-top:12px;display:flex}.model-count[data-v-cfb952f3]{color:#16a34a;cursor:pointer;border-radius:4px;font-size:13px;font-weight:500}.model-count[data-v-cfb952f3]:hover{text-decoration:underline}.drag-hint-icon[data-v-cfb952f3]{color:#c0c4cc;cursor:grab;flex-shrink:0}.drag-hint-icon[data-v-cfb952f3]:hover{color:#909399}.el-dropdown-menu__item.danger-item[data-v-cfb952f3]{color:var(--el-color-danger)}.el-dropdown-menu__item.danger-item[data-v-cfb952f3]:hover,.el-dropdown-menu__item.danger-item[data-v-cfb952f3]:focus{color:var(--el-color-danger);background-color:#fef2f2}.dropdown[data-v-cfb952f3]{margin-left:12px}.detail-body[data-v-08dfa117]{max-height:70vh;overflow-y:auto}.detail-head[data-v-08dfa117]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.detail-name[data-v-08dfa117]{font-size:14px;font-weight:600}.detail-pre[data-v-08dfa117]{color:#303133;white-space:pre-wrap;word-break:break-all;background:#f5f7fa;border:1px solid #e4e7ed;border-radius:6px;max-height:300px;margin:0;padding:12px;font-size:12px;line-height:1.6;overflow:auto}.protocol-help .help-intro[data-v-2248b61a]{color:#606266;margin-bottom:14px;font-size:13px}.protocol-help .help-item[data-v-2248b61a]{margin-bottom:12px}.protocol-help .help-title[data-v-2248b61a]{color:#303133;align-items:center;gap:8px;margin-bottom:4px;font-size:14px;font-weight:600;display:flex}.protocol-help .help-item p[data-v-2248b61a]{color:#606266;margin:0;font-size:13px;line-height:1.7}.protocol-help .help-table-note[data-v-2248b61a]{margin-bottom:8px}.protocol-help .help-table[data-v-2248b61a]{width:100%}.name-cell[data-v-f89c0c7a]{align-items:center;gap:4px;display:flex}.col-help[data-v-f89c0c7a]{margin-right:2px}[data-v-f89c0c7a] .el-table__header .cell{white-space:nowrap}.col-help-icon[data-v-f89c0c7a]{color:var(--el-text-color-secondary);cursor:help;vertical-align:middle}.error-tag[data-v-f89c0c7a],.test-link[data-v-f89c0c7a]{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.test-link[data-v-f89c0c7a]{vertical-align:middle;display:inline-block}.model-select-wrap[data-v-4446feb1]{flex-shrink:0;width:400px}.col-help[data-v-4446feb1]{margin-right:4px}.dialog-body[data-v-559d2c1f]{max-height:80vh;padding-bottom:100px;overflow:hidden auto}.test-ok-text[data-v-559d2c1f]{color:#16a34a;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;max-width:140px;font-size:12px;display:inline-block;overflow:hidden}.test-fail-text[data-v-559d2c1f]{color:#dc2626;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;max-width:140px;font-size:12px;display:inline-block;overflow:hidden}.protocol-hint[data-v-559d2c1f]{line-height:1.8}.label-inline-toggle[data-v-559d2c1f]{align-items:center;gap:6px;margin-left:8px;display:inline-flex}.add-models-body[data-v-1b043ee6]{flex-direction:column;display:flex}.add-toolbar[data-v-1b043ee6]{align-items:center;gap:8px 12px;margin-bottom:8px;display:flex}.add-count[data-v-1b043ee6]{white-space:nowrap}.add-search[data-v-1b043ee6]{width:260px;margin-left:auto}.test-tag[data-v-1b043ee6]{text-overflow:ellipsis;white-space:nowrap;max-width:120px;overflow:hidden}.footer-hint[data-v-1b043ee6]{margin-right:12px}.models-dialog-body[data-v-4a2c5dfc]{flex-direction:column;height:calc(94vh - 100px);display:flex}.models-dialog-body[data-v-4a2c5dfc] .el-table{flex:1;min-height:0}.models-toolbar[data-v-4a2c5dfc]{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:8px;display:flex}.models-search[data-v-4a2c5dfc]{flex-shrink:0;width:280px}.models-filter-count[data-v-4a2c5dfc]{white-space:nowrap}.models-bulk-actions[data-v-4a2c5dfc]{gap:8px;margin-left:auto;display:flex}.quota-help[data-v-775466be]{background:#fff;height:70vh;overflow:hidden auto}.quota-help .help-intro[data-v-775466be]{color:#606266;margin-bottom:14px;font-size:13px;line-height:1.7}.quota-help .help-item[data-v-775466be]{margin-bottom:12px}.quota-help .help-title[data-v-775466be]{color:#303133;margin-bottom:4px;font-size:14px;font-weight:600}.quota-help .help-item p[data-v-775466be]{color:#606266;margin:0;font-size:13px;line-height:1.7}.quota-help .help-tip[data-v-775466be]{color:#909399!important;margin-top:4px!important}.quota-help .help-shot[data-v-775466be]{border:1px solid #dcdfe6;border-radius:6px;width:100%;margin:8px 0;display:block}.quota-help code[data-v-775466be]{background:#f5f7fa;border-radius:3px;padding:1px 4px;font-size:12px}.quota-help .help-table[data-v-775466be]{width:100%}.footer[data-v-775466be]{place-content:center;display:flex}.dialog-body[data-v-8066b35a]{min-height:70vh;overflow-y:auto}.muted-sm[data-v-8066b35a]{color:#909399;font-size:12px;line-height:1.6}.status-row[data-v-8066b35a]{margin-top:4px}.test-ok-text-full[data-v-8066b35a]{color:#16a34a;font-size:12px}.test-fail-text-full[data-v-8066b35a]{color:#dc2626;word-break:break-all;font-size:12px}.col-help-icon[data-v-8066b35a]{margin-left:4px}.ghost[data-v-6c999c70]{opacity:.4}.provider-tabs[data-v-6c999c70] .el-tabs__header{margin-bottom:20px}.provider-grid[data-v-6c999c70]{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}@media (width<=992px){.provider-grid[data-v-6c999c70]{grid-template-columns:1fr}}
@@ -1 +0,0 @@
1
- import{s as e}from"./router-Cpy-sU_q.js";var t=`/api/service`,n=`/api/harness`,r=`${t}/managed`,i=`${t}/plugins`,a={processes:()=>e.get(`${t}/processes`).then(e=>e.processes),update:()=>e.get(`${t}/update`),checkUpdate:()=>e.post(`${t}/update/check`),applyUpdate:()=>e.post(`${t}/update/apply`),managedServices:()=>e.get(r),createManagedService:t=>e.post(r,t),updateManagedService:(t,n)=>e.put(`${r}/${encodeURIComponent(t)}`,n),removeManagedService:t=>e.del(`${r}/${encodeURIComponent(t)}`),startManagedService:t=>e.post(`${r}/${encodeURIComponent(t)}/start`),stopManagedService:t=>e.post(`${r}/${encodeURIComponent(t)}/stop`),restartManagedService:t=>e.post(`${r}/${encodeURIComponent(t)}/restart`),plugins:()=>e.get(i),restartPlugins:()=>e.post(`${i}/restart`),harness:()=>e.get(n),setClaudeCode:t=>e.post(`${n}/claude-code`,{enabled:t}),setCodex:t=>e.post(`${n}/codex`,{enabled:t}),setDsh:t=>e.post(`${n}/dsh`,{enabled:t})};async function o(e){let{targetVersion:t,sinceAppliedAt:n,timeoutMs:r=6e5,pollMs:i=3e3,signal:o}=e,s=Date.now()+r;for(;;){if(o?.aborted||Date.now()>=s||(await new Promise(e=>setTimeout(e,i)),o?.aborted))return null;let e=null;try{e=await a.update()}catch{continue}let r=e.lastApply;if(r&&r.toVersion===t&&(r.appliedAt??0)>(n??0))return r;if(Date.now()>=s)return null}}export{o as n,a as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./message-BgUNwRuF.js";function t(){function t(t,n=`success`){e({message:t,type:n,duration:n===`warning`?8e3:3e3})}return{toast:t}}export{t};