llmxray 0.3.2 → 0.3.4

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 (44) hide show
  1. package/dist/assets/{AITrainingPage-CD-bWVvC.js → AITrainingPage-CyTi1NB2.js} +1 -1
  2. package/dist/assets/BenchmarkPage-BIja0Qas.js +31 -0
  3. package/dist/assets/ComparisonPage-CiIKqA9v.js +5 -0
  4. package/dist/assets/DashboardPage-DU_EOLw8.js +116 -0
  5. package/dist/assets/{EmbeddingsPage-DY0ClOT-.js → EmbeddingsPage-BczPU9IA.js} +1 -1
  6. package/dist/assets/{GoogleCallbackPage-CVk5U2In.js → GoogleCallbackPage-DfIvX7pT.js} +1 -1
  7. package/dist/assets/{JsonTreeNode-BQTLLZr8.js → JsonTreeNode-vpbOunXf.js} +1 -1
  8. package/dist/assets/{ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-CC-8ifev.js → ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-BQp6k-8Y.js} +1 -1
  9. package/dist/assets/{RAGPage-DrqXiDs6.js → RAGPage-DU70ttWt.js} +1 -1
  10. package/dist/assets/SessionPage-BE5NuuJh.js +15 -0
  11. package/dist/assets/{SettingsPage-RH-JaBkt.js → SettingsPage-Bi1yGVMe.js} +1 -1
  12. package/dist/assets/{StatusBadge.vue_vue_type_script_setup_true_lang-BoFt8y4m.js → StatusBadge.vue_vue_type_script_setup_true_lang-CgEd6dPQ.js} +1 -1
  13. package/dist/assets/{StorageGauge.vue_vue_type_style_index_0_lang-Cww3ylyV.js → StorageGauge.vue_vue_type_style_index_0_lang-CX8sufFI.js} +1 -1
  14. package/dist/assets/SystemPage-BiD-Nvc1.js +3 -0
  15. package/dist/assets/{TabBar.vue_vue_type_script_setup_true_lang-D1bxlZ11.js → TabBar.vue_vue_type_script_setup_true_lang-Dsu2LWVY.js} +1 -1
  16. package/dist/assets/{TokenStreamDisplay.vue_vue_type_script_setup_true_lang-DbN5kS19.js → TokenStreamDisplay.vue_vue_type_script_setup_true_lang-BDwyOr-9.js} +1 -1
  17. package/dist/assets/ToolWorkshopPage-Dhz1Sqv0.js +376 -0
  18. package/dist/assets/{agent-store-Bmti9EJM.js → agent-store-P3WGf428.js} +1 -1
  19. package/dist/assets/download-DuwLDzsW.js +1 -0
  20. package/dist/assets/download-WPaeALA4.js +2 -0
  21. package/dist/assets/{generate-service-BdGdFlEd.js → generate-service-C4gzEmXZ.js} +1 -1
  22. package/dist/assets/{google-auth-store-9fvZi3sc.js → google-auth-store-BE1EiKPv.js} +1 -1
  23. package/dist/assets/index-CG_7ZNQn.js +6 -0
  24. package/dist/assets/{index-Co0VhPSQ.js → index-Zf_dr6sG.js} +1 -1
  25. package/dist/assets/index-ny-QVb28.css +1 -0
  26. package/dist/assets/{metrics-store-CcJejDWm.js → metrics-store-CrcTLok0.js} +1 -1
  27. package/dist/assets/pencil-B_bOf0D7.js +1 -0
  28. package/dist/assets/{rag-store-D6-tUXow.js → rag-store-DbfHnbDe.js} +1 -1
  29. package/dist/assets/share-2-CUvRPpM2.js +1 -0
  30. package/dist/assets/{storage-store-C2BSRTMJ.js → storage-store-BpKORJyE.js} +1 -1
  31. package/dist/assets/{stream-handler-DcWLXVUd.js → stream-handler-DIbclxpH.js} +1 -1
  32. package/dist/assets/{tool-workshop-store-CvimeN9w.js → tool-workshop-store-DoTb4QN9.js} +1 -1
  33. package/dist/assets/{toolcall-store-DxrTJwPf.js → toolcall-store-CcnV5sSF.js} +1 -1
  34. package/dist/assets/{trash-2-CKMNSCOl.js → trash-2-Bm4yN75F.js} +1 -1
  35. package/dist/index.html +2 -2
  36. package/package.json +1 -1
  37. package/dist/assets/BenchmarkPage-bp73Urv7.js +0 -2
  38. package/dist/assets/ComparisonPage-BcSW8bNz.js +0 -4
  39. package/dist/assets/DashboardPage-BikhI-WR.js +0 -101
  40. package/dist/assets/SessionPage-BClm8k5v.js +0 -14
  41. package/dist/assets/SystemPage-Dl-w53Tz.js +0 -2
  42. package/dist/assets/ToolWorkshopPage-UupUHgP6.js +0 -376
  43. package/dist/assets/index-BQSbu0e6.css +0 -1
  44. package/dist/assets/index-DVVzacEJ.js +0 -6
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DVVzacEJ.js","assets/index-BQSbu0e6.css"])))=>i.map(i=>d[i]);
2
- import{c as U,b as A,e as r,f as t,t as e,u as l,i as u,F as _,k as g,l as D,a as $,j as o,A as N,B as G,R as H,p as Q,h as p,g as k,q as V,r as B,o as P,_ as M}from"./index-DVVzacEJ.js";import{u as J}from"./metrics-store-CcJejDWm.js";import{b as m}from"./format-BqVZ9rwM.js";import{u as K}from"./storage-store-C2BSRTMJ.js";import{_ as W}from"./StorageGauge.vue_vue_type_style_index_0_lang-Cww3ylyV.js";const X=U("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);async function Y(){try{const x=await fetch("/__system-info");return x.ok?await x.json():null}catch{return null}}const Z={class:"rounded-lg border border-border-default bg-surface p-3 space-y-2.5"},tt={class:"flex items-center justify-between"},et={class:"flex items-center gap-2"},st={class:"text-sm"},at={class:"text-xs font-medium text-text-primary"},ot={class:"flex items-center gap-2"},rt={class:"text-[10px] font-medium text-text-secondary"},nt=["title"],lt={key:0,class:"h-1.5 rounded-full bg-surface-overlay overflow-hidden"},dt={class:"flex h-full"},it=["title"],ct={key:1,class:"h-1.5 rounded-full bg-surface-overlay"},ut={class:"flex items-center justify-between text-[10px] text-text-muted"},mt={key:2,class:"space-y-1"},xt={class:"flex-1 text-text-muted"},pt={class:"text-text-muted"},yt={class:"text-text-secondary w-14 text-end"},_t={key:3,class:"text-[10px] text-text-muted italic"},ht=A({__name:"StorageBreakdownCard",props:{database:{}},emits:["clear"],setup(x,{emit:S}){const v=x,c=S,h=["#8b5cf6","#06b6d4","#f59e0b","#10b981","#f43f5e"],R=$(()=>v.database.stores.filter(y=>y.bytes>0).map((y,f)=>({name:y.name,bytes:y.bytes,color:h[f%h.length]})));return(y,f)=>(o(),r("div",Z,[t("div",tt,[t("div",et,[t("span",st,e(x.database.icon),1),t("span",at,e(x.database.label),1)]),t("div",ot,[t("span",rt,e(l(m)(x.database.totalBytes)),1),x.database.totalBytes>0?(o(),r("button",{key:0,class:"rounded px-1.5 py-0.5 text-[9px] text-text-muted hover:text-error hover:bg-error/10 transition-colors",title:y.$t("system.browserStorage.clearAll"),onClick:f[0]||(f[0]=i=>c("clear",x.database.id))},e(y.$t("common.actions.clear")),9,nt)):u("",!0)])]),x.database.totalBytes>0?(o(),r("div",lt,[t("div",dt,[(o(!0),r(_,null,g(R.value,i=>(o(),r("div",{key:i.name,class:"h-full transition-all duration-500 first:rounded-s-full last:rounded-e-full",style:D({width:`${i.bytes/x.database.totalBytes*100}%`,backgroundColor:i.color}),title:`${i.name}: ${l(m)(i.bytes)}`},null,12,it))),128))])])):(o(),r("div",ct)),t("div",ut,[t("span",null,e(x.database.recordCount.toLocaleString())+" records",1),t("span",null,e(x.database.type==="indexeddb"?"IndexedDB":"External"),1)]),x.database.stores.some(i=>i.count>0)?(o(),r("div",mt,[(o(!0),r(_,null,g(x.database.stores.filter(i=>i.count>0),(i,d)=>(o(),r("div",{key:i.name,class:"flex items-center gap-2 text-[10px]"},[t("span",{class:"h-2 w-2 shrink-0 rounded-full",style:D({backgroundColor:h[d%h.length]})},null,4),t("span",xt,e(i.name),1),t("span",pt,e(i.count),1),t("span",yt,e(l(m)(i.bytes)),1)]))),128))])):(o(),r("p",_t,e(y.$t("system.browserStorage.empty")),1))]))}}),ft={class:"max-w-4xl space-y-6"},vt={class:"flex items-center justify-between"},gt={class:"text-lg font-semibold text-text-primary"},bt={class:"text-xs text-text-muted mt-0.5"},$t={key:0,class:"flex flex-col items-center justify-center py-16 gap-4"},wt={class:"text-sm text-text-secondary"},Bt={class:"text-[10px] text-text-muted"},kt={key:1,class:"rounded-lg border border-border-default bg-surface-raised p-4 text-xs text-text-muted"},Mt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},St={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},zt={class:"text-sm font-medium text-text-primary flex items-center gap-2"},Ct={class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},Dt={class:"text-text-muted"},Rt={class:"text-text-primary"},Et={class:"text-text-muted"},It={class:"text-text-primary"},Lt={class:"text-text-muted"},Tt={class:"text-text-primary"},Vt={class:"text-text-muted"},Pt={class:"text-text-primary"},At={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},Ot={class:"text-sm font-medium text-text-primary flex items-center gap-2"},jt={class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},Ft={class:"text-text-muted"},qt={class:"text-text-primary"},Ut={class:"text-text-muted"},Nt={class:"text-text-primary"},Gt={class:"text-text-muted"},Ht={class:"text-text-primary"},Qt={class:"text-text-muted"},Jt={class:"text-text-primary"},Kt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Wt={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},Xt={class:"text-sm font-medium text-text-primary flex items-center gap-2"},Yt={class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},Zt={class:"text-text-muted"},te={class:"text-text-primary"},ee={class:"text-text-muted"},se={class:"text-text-primary"},ae={class:"text-text-muted"},oe={class:"text-text-primary"},re={class:"text-text-muted"},ne={class:"text-text-primary"},le={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},de={class:"text-sm font-medium text-text-primary flex items-center gap-2"},ie={class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},ce={class:"text-text-muted"},ue={class:"text-text-primary"},me={class:"text-text-muted"},xe={class:"text-text-primary"},pe={class:"text-text-muted"},ye={class:"text-text-primary"},_e={class:"h-2 rounded-full bg-surface-overlay overflow-hidden"},he={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},fe={class:"text-sm font-medium text-text-primary flex items-center gap-2"},ve={class:"text-text-muted"},ge={class:"text-text-primary"},be={class:"text-text-muted"},$e={class:"text-text-primary"},we={class:"text-text-muted"},Be={class:"text-text-primary"},ke={key:1,class:"col-span-2 border-b border-border-default/50 my-1"},Me={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},Se={class:"text-sm font-medium text-text-primary flex items-center gap-2"},ze={class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},Ce={class:"text-text-muted"},De={class:"text-text-primary"},Re={class:"text-text-muted"},Ee={class:"text-text-primary"},Ie={class:"text-text-muted"},Le={class:"text-text-primary"},Te={class:"text-text-muted"},Ve={class:"text-text-primary"},Pe={class:"h-2 rounded-full bg-surface-overlay overflow-hidden"},Ae={key:0,class:"border-b border-border-default/50"},Oe={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-4"},je={class:"flex items-center justify-between"},Fe={class:"text-sm font-medium text-text-primary flex items-center gap-2"},qe={class:"flex items-center gap-2"},Ue={key:2,class:"text-[10px] text-text-muted"},Ne={key:1,class:"grid grid-cols-1 md:grid-cols-2 gap-3"},Ge={key:2,class:"text-[9px] text-text-muted"},He={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Qe={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},Je={class:"text-sm font-medium text-text-primary flex items-center gap-2"},Ke={class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},We={class:"text-text-muted"},Xe={class:"flex items-center gap-1.5"},Ye={class:"text-text-muted"},Ze={class:"text-text-primary"},ts={class:"text-text-muted"},es={class:"text-text-primary"},ss={class:"text-text-muted"},as={class:"text-text-primary"},os={class:"text-text-muted"},rs={class:"text-text-primary"},ns={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},ls={class:"text-sm font-medium text-text-primary flex items-center gap-2"},ds={class:"text-[10px] text-text-muted font-normal"},is={key:0,class:"text-xs text-text-muted py-2"},cs={key:1,class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},us={class:"text-text-muted"},ms={class:"text-text-primary font-medium"},xs={class:"text-text-muted"},ps={class:"text-accent font-medium"},ys={class:"text-text-muted"},_s={class:"text-text-primary font-medium"},hs={class:"text-text-muted"},fs={class:"text-text-primary font-medium"},vs={key:2,class:"flex flex-wrap gap-1.5 pt-1"},gs={class:"text-[10px] text-text-muted me-1"},bs={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},$s={class:"text-sm font-medium text-text-primary flex items-center gap-2"},ws={key:0,class:"text-xs text-text-muted py-2"},Bs={key:1,class:"space-y-2"},ks={class:"flex gap-4 text-xs text-text-secondary"},Ms={key:0},Ss={class:"text-accent font-medium"},zs={key:1},Cs={class:"text-text-primary font-medium"},Ds={class:"text-text-primary font-medium"},Rs={class:"flex-1 min-w-0"},Es={class:"text-sm font-medium text-text-primary truncate"},Is={class:"text-xs text-text-muted"},Ls={class:"text-end text-xs space-y-0.5 shrink-0"},Ts={key:0},Vs={class:"text-text-muted"},Ps={class:"ms-1.5 text-accent font-medium"},As={key:1},Os={class:"text-text-muted"},js={class:"ms-1.5 text-text-primary font-medium"},Fs={class:"text-text-muted"},qs={class:"ms-1.5 text-text-secondary"},Us=["title"],Ns={class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},Gs={class:"text-sm font-medium text-text-primary flex items-center gap-2"},Hs={key:0,class:"text-xs text-text-muted py-2"},Qs={key:1,class:"overflow-x-auto"},Js={class:"w-full text-xs"},Ks={class:"border-b border-border-default text-text-muted"},Ws={class:"text-start py-1.5 pe-4 font-medium"},Xs={class:"text-start py-1.5 pe-4 font-medium"},Ys={class:"text-start py-1.5 pe-4 font-medium"},Zs={class:"text-start py-1.5 pe-4 font-medium"},ta={class:"text-end py-1.5 font-medium"},ea={class:"py-1.5 pe-4 text-text-primary font-medium"},sa={class:"py-1.5 pe-4 text-text-secondary"},aa={class:"py-1.5 pe-4 text-text-secondary"},oa={class:"py-1.5 pe-4 text-text-secondary"},ra={class:"py-1.5 text-end text-text-secondary"},ua=A({__name:"SystemPage",setup(x){const S=J(),v=N(),c=K(),h=B(null);async function R(s){if(h.value===s){const n={rag:()=>M(()=>import("./vector-db-ChAzHl5A.js"),[]).then(a=>a.vectorDB.clear()),conversations:()=>M(()=>import("./index-DVVzacEJ.js").then(a=>a.aq),__vite__mapDeps([0,1])).then(a=>a.conversationDB.clear()),benchmarks:()=>M(()=>import("./benchmark-db-D8D5Wf9h.js"),[]).then(a=>a.benchmarkDB.clear()),"message-memory":()=>M(()=>import("./message-memory-db-C3Ifhs2B.js"),[]).then(a=>a.messageMemoryDB.clear()),"canvas-ai":()=>M(()=>import("./canvas-ai-db-BolM-_G7.js"),[]).then(a=>a.canvasAiDB.clear())};try{await n[s]?.(),await c.refresh()}catch(a){console.error(`Failed to clear database ${s}:`,a)}h.value=null}else h.value=s,setTimeout(()=>{h.value===s&&(h.value=null)},3e3)}const y=B(null),f=B(!1),i=B([]),d=B(null),z=B(!0),O=$(()=>v.models.reduce((s,n)=>s+n.size,0)),E=$(()=>i.value.reduce((s,n)=>s+n.size_vram,0)),I=$(()=>i.value.reduce((s,n)=>s+(n.size-n.size_vram),0)),b=$(()=>S.aggregate),j=$(()=>{if(!d.value)return"";const s=d.value.cpu.maxClockMhz;return s>=1e3?`${(s/1e3).toFixed(2)} GHz`:`${s} MHz`}),C=$(()=>{if(!d.value)return 0;const{totalBytes:s,freeBytes:n}=d.value.memory;return s>0?Math.round((s-n)/s*100):0});let L=null;async function F(){try{y.value=await P.version(),f.value=!0}catch{f.value=!1,y.value=null}try{i.value=await P.ps()}catch{i.value=[]}}async function T(){await Promise.all([F(),Y().then(s=>{s&&(d.value=s)}),c.refreshIfStale(3e4)])}function q(s){const n=new Date(s).getTime()-Date.now();if(n<=0)return"expiring...";const a=Math.floor(n/6e4);return a<1?"< 1 min":a<60?`${a} min`:`${Math.floor(a/60)}h ${a%60}m`}return G(async()=>{z.value=!0,await T(),z.value=!1,v.models.length===0&&await v.fetchModels(),S.recalculateAggregate(),L=setInterval(T,5e3)}),H(()=>{L&&clearInterval(L)}),(s,n)=>(o(),r("div",ft,[t("div",vt,[t("div",null,[t("h2",gt,e(s.$t("system.title")),1),t("p",bt,e(s.$t("system.subtitle")),1)]),t("button",{class:"rounded-lg bg-surface-overlay px-3 py-1.5 text-xs text-text-secondary hover:bg-border-default transition-colors",onClick:T},e(s.$t("system.refresh")),1)]),z.value&&!d.value?(o(),r("div",$t,[Q(l(X),{class:"h-10 w-10 animate-spin text-accent"}),t("p",wt,e(s.$t("system.detecting")),1),t("p",Bt,e(s.$t("system.detectingDetail")),1)])):u("",!0),!z.value&&!d.value?(o(),r("div",kt,e(s.$t("system.unavailable")),1)):u("",!0),d.value?(o(),r(_,{key:2},[t("div",Mt,[t("div",St,[t("h3",zt,[n[1]||(n[1]=t("span",{class:"text-base"},"🖥",-1)),p(" "+e(s.$t("system.os.title")),1)]),t("div",Ct,[t("span",Dt,e(s.$t("system.os.os")),1),t("span",Rt,e(d.value.os.name),1),t("span",Et,e(s.$t("system.os.version")),1),t("span",It,e(d.value.os.version),1),t("span",Lt,e(s.$t("system.os.build")),1),t("span",Tt,e(d.value.os.build||"—"),1),t("span",Vt,e(s.$t("system.os.architecture")),1),t("span",Pt,e(d.value.os.arch),1)])]),t("div",At,[t("h3",Ot,[n[2]||(n[2]=t("span",{class:"text-base"},"💻",-1)),p(" "+e(s.$t("system.device.title")),1)]),t("div",jt,[t("span",Ft,e(s.$t("system.device.name")),1),t("span",qt,e(d.value.device.name),1),t("span",Ut,e(s.$t("system.device.manufacturer")),1),t("span",Nt,e(d.value.device.manufacturer||"—"),1),t("span",Gt,e(s.$t("system.device.model")),1),t("span",Ht,e(d.value.device.model||"—"),1),d.value.device.family?(o(),r(_,{key:0},[t("span",Qt,e(s.$t("system.device.family")),1),t("span",Jt,e(d.value.device.family),1)],64)):u("",!0)])])]),t("div",Kt,[t("div",Wt,[t("h3",Xt,[n[3]||(n[3]=t("span",{class:"text-base"},"⚙",-1)),p(" "+e(s.$t("system.cpu.title")),1)]),t("div",Yt,[t("span",Zt,e(s.$t("system.cpu.cpu")),1),t("span",te,e(d.value.cpu.name),1),t("span",ee,e(s.$t("system.cpu.physicalCores")),1),t("span",se,e(d.value.cpu.cores),1),t("span",ae,e(s.$t("system.cpu.logicalProcessors")),1),t("span",oe,e(d.value.cpu.logicalProcessors),1),t("span",re,e(s.$t("system.cpu.maxClock")),1),t("span",ne,e(j.value),1)])]),t("div",le,[t("h3",de,[n[4]||(n[4]=t("span",{class:"text-base"},"🧠",-1)),p(" "+e(s.$t("system.memory.title")),1)]),t("div",ie,[t("span",ce,e(s.$t("system.memory.totalRam")),1),t("span",ue,e(l(m)(d.value.memory.totalBytes)),1),t("span",me,e(s.$t("system.memory.available")),1),t("span",xe,e(l(m)(d.value.memory.freeBytes)),1),t("span",pe,e(s.$t("system.memory.inUse")),1),t("span",ye,e(l(m)(d.value.memory.totalBytes-d.value.memory.freeBytes))+" ("+e(C.value)+"%)",1)]),t("div",_e,[t("div",{class:k(["h-full rounded-full transition-all duration-500",C.value>85?"bg-error":C.value>60?"bg-warning":"bg-success"]),style:D({width:`${C.value}%`})},null,6)])])]),t("div",he,[t("h3",fe,[n[5]||(n[5]=t("span",{class:"text-base"},"🎮",-1)),p(" "+e(s.$t("system.gpu.title")),1)]),(o(!0),r(_,null,g(d.value.gpu,(a,w)=>(o(),r("div",{key:w,class:"grid grid-cols-[auto_1fr] gap-y-2 gap-x-4 text-xs"},[t("span",ve,e(s.$t("system.gpu.gpu"))+" "+e(d.value.gpu.length>1?w+1:""),1),t("span",ge,e(a.name),1),t("span",be,e(s.$t("system.gpu.adapterRam")),1),t("span",$e,e(a.adapterRamBytes>0?l(m)(a.adapterRamBytes):s.$t("system.gpu.sharedNotReported")),1),a.driverVersion?(o(),r(_,{key:0},[t("span",we,e(s.$t("system.gpu.driver")),1),t("span",Be,e(a.driverVersion),1)],64)):u("",!0),w<d.value.gpu.length-1?(o(),r("div",ke)):u("",!0)]))),128))]),t("div",Me,[t("h3",Se,[n[6]||(n[6]=t("span",{class:"text-base"},"💾",-1)),p(" "+e(s.$t("system.storage.title")),1)]),(o(!0),r(_,null,g(d.value.storage,(a,w)=>(o(),r("div",{key:w,class:"space-y-2"},[t("div",ze,[t("span",Ce,e(s.$t("system.storage.drive")),1),t("span",De,e(a.drive),1),t("span",Re,e(s.$t("system.storage.total")),1),t("span",Ee,e(l(m)(a.totalBytes)),1),t("span",Ie,e(s.$t("system.storage.free")),1),t("span",Le,e(l(m)(a.freeBytes)),1),t("span",Te,e(s.$t("system.storage.used")),1),t("span",Ve,e(l(m)(a.totalBytes-a.freeBytes))+" ("+e(a.totalBytes>0?Math.round((a.totalBytes-a.freeBytes)/a.totalBytes*100):0)+"%) ",1)]),t("div",Pe,[t("div",{class:k(["h-full rounded-full transition-all duration-500",a.totalBytes>0&&(a.totalBytes-a.freeBytes)/a.totalBytes>.85?"bg-error":(a.totalBytes-a.freeBytes)/a.totalBytes>.6?"bg-warning":"bg-success"]),style:D({width:`${a.totalBytes>0?(a.totalBytes-a.freeBytes)/a.totalBytes*100:0}%`})},null,6)]),w<d.value.storage.length-1?(o(),r("div",Ae)):u("",!0)]))),128))])],64)):u("",!0),t("div",Oe,[t("div",je,[t("h3",Fe,[n[7]||(n[7]=t("span",{class:"text-base"},"📀",-1)),p(" "+e(s.$t("system.browserStorage.title")),1)]),t("div",qe,[l(c).origin?(o(),r("span",{key:0,class:k(["rounded-full px-2 py-0.5 text-[9px]",l(c).origin.persisted?"bg-success/10 text-success":"bg-warning/10 text-warning"])},e(l(c).origin.persisted?s.$t("system.browserStorage.persistent"):s.$t("system.browserStorage.bestEffort")),3)):u("",!0),l(c).loading?(o(),r("span",Ue,e(s.$t("system.browserStorage.scanning")),1)):(o(),r("button",{key:1,class:"text-[10px] text-text-muted hover:text-text-primary transition-colors",onClick:n[0]||(n[0]=a=>l(c).refresh())},e(s.$t("system.refresh")),1))])]),l(c).origin?(o(),V(W,{key:0,used:l(c).origin.usage,total:l(c).origin.quota,label:s.$t("system.browserStorage.indexedDbQuota")},null,8,["used","total","label"])):u("",!0),l(c).databases.length>0?(o(),r("div",Ne,[(o(!0),r(_,null,g(l(c).databases,a=>(o(),V(ht,{key:a.id,database:a,onClear:R},null,8,["database"]))),128))])):u("",!0),l(c).databases.length>0?(o(),r("p",Ge,e(s.$t("system.browserStorage.totalRecords",{count:l(c).totalRecordCount.toLocaleString(),databases:l(c).databases.length})),1)):u("",!0)]),t("div",He,[t("div",Qe,[t("h3",Je,[n[8]||(n[8]=t("span",{class:"text-base"},"⚡",-1)),p(" "+e(s.$t("system.ollama.title")),1)]),t("div",Ke,[t("span",We,e(s.$t("system.ollama.status")),1),t("span",Xe,[t("span",{class:k(["inline-block h-2 w-2 rounded-full",f.value?"bg-success":"bg-error"])},null,2),t("span",{class:k(f.value?"text-success":"text-error")},e(f.value?s.$t("common.status.connected"):s.$t("common.status.disconnected")),3)]),t("span",Ye,e(s.$t("system.ollama.version")),1),t("span",Ze,e(y.value??"—"),1),t("span",ts,e(s.$t("system.ollama.installedModels")),1),t("span",es,e(l(v).models.length),1),t("span",ss,e(s.$t("system.ollama.totalModelStorage")),1),t("span",as,e(l(m)(O.value)),1),t("span",os,e(s.$t("system.ollama.modelsLoaded")),1),t("span",rs,e(i.value.length),1)])]),t("div",ns,[t("h3",ls,[n[9]||(n[9]=t("span",{class:"text-base"},"📊",-1)),p(" "+e(s.$t("system.inference.title"))+" ",1),t("span",ds,"("+e(s.$t("system.inference.thisSession"))+")",1)]),b.value.totalSessions===0?(o(),r("div",is,e(s.$t("system.inference.noSessions")),1)):(o(),r("div",cs,[t("span",us,e(s.$t("system.inference.sessions")),1),t("span",ms,e(b.value.totalSessions),1),t("span",xs,e(s.$t("system.inference.avgSpeed")),1),t("span",ps,e(b.value.avgTps.toFixed(1))+" tok/s",1),t("span",ys,e(s.$t("system.inference.tokensGenerated")),1),t("span",_s,e(b.value.totalTokensGenerated.toLocaleString()),1),t("span",hs,e(s.$t("system.inference.avgTtft")),1),t("span",fs,e(b.value.avgTtftMs.toFixed(0))+" ms",1)])),b.value.modelsUsed.length>0?(o(),r("div",vs,[t("span",gs,e(s.$t("system.inference.modelsUsed"))+":",1),(o(!0),r(_,null,g(b.value.modelsUsed,a=>(o(),r("span",{key:a,class:"rounded-full bg-surface-overlay px-2 py-0.5 text-[10px] text-text-secondary"},e(a),1))),128))])):u("",!0)])]),t("div",bs,[t("h3",$s,[n[10]||(n[10]=t("span",{class:"text-base"},"⚡",-1)),p(" "+e(s.$t("system.activeModels.title")),1)]),i.value.length===0?(o(),r("div",ws,e(s.$t("system.activeModels.noModels")),1)):(o(),r("div",Bs,[t("div",ks,[E.value>0?(o(),r("span",Ms,[p(e(s.$t("system.activeModels.vram"))+": ",1),t("span",Ss,e(l(m)(E.value)),1)])):u("",!0),I.value>0?(o(),r("span",zs,[p(e(s.$t("system.activeModels.ram"))+": ",1),t("span",Cs,e(l(m)(I.value)),1)])):u("",!0),t("span",null,[p(e(s.$t("system.activeModels.total"))+": ",1),t("span",Ds,e(l(m)(E.value+I.value)),1)])]),(o(!0),r(_,null,g(i.value,a=>(o(),r("div",{key:a.digest,class:"flex items-center gap-4 rounded-lg bg-surface px-4 py-3 border border-border-default"},[t("div",Rs,[t("p",Es,e(a.name),1),t("p",Is,e(a.details.parameter_size)+" · "+e(a.details.quantization_level)+" · "+e(a.details.family),1)]),t("div",Ls,[a.size_vram>0?(o(),r("p",Ts,[t("span",Vs,e(s.$t("system.activeModels.vram")),1),t("span",Ps,e(l(m)(a.size_vram)),1)])):u("",!0),a.size-a.size_vram>0?(o(),r("p",As,[t("span",Os,e(s.$t("system.activeModels.ram")),1),t("span",js,e(l(m)(a.size-a.size_vram)),1)])):u("",!0),t("p",null,[t("span",Fs,e(s.$t("system.activeModels.ctx")),1),t("span",qs,e(a.context_length.toLocaleString()),1)])]),t("div",{class:"text-xs text-text-muted shrink-0 w-16 text-end",title:a.expires_at},e(q(a.expires_at)),9,Us)]))),128))]))]),t("div",Ns,[t("h3",Gs,[n[11]||(n[11]=t("span",{class:"text-base"},"📦",-1)),p(" "+e(s.$t("system.installedModels.title")),1)]),l(v).models.length===0?(o(),r("div",Hs,e(s.$t("system.installedModels.noModels")),1)):(o(),r("div",Qs,[t("table",Js,[t("thead",null,[t("tr",Ks,[t("th",Ws,e(s.$t("system.installedModels.model")),1),t("th",Xs,e(s.$t("system.installedModels.family")),1),t("th",Ys,e(s.$t("system.installedModels.parameters")),1),t("th",Zs,e(s.$t("system.installedModels.quantization")),1),t("th",ta,e(s.$t("system.installedModels.size")),1)])]),t("tbody",null,[(o(!0),r(_,null,g(l(v).models,a=>(o(),r("tr",{key:a.name,class:"border-b border-border-default/50"},[t("td",ea,e(a.name),1),t("td",sa,e(a.details.family),1),t("td",aa,e(a.details.parameter_size),1),t("td",oa,e(a.details.quantization_level),1),t("td",ra,e(l(m)(a.size)),1)]))),128))])])]))])]))}});export{ua as default};