import{c as e,f as t,i as n,s as r,t as i,u as a}from"./button-Dd8hfusv.js";import{D as o,T as s,d as c,j as l,n as u,t as d,u as f}from"./index-BpFIVIMn.js";import{Bestaetigen as p}from"./Bestaetigen-CBdEBtky.js";var m=r();function h(e,t){if(e===`os`)return{laeuft:`Ubuntu`,neu:t.count?`${t.count} ${t.count===1?`Paket`:`Pakete`}`:null};if(e===`hermes`)return{laeuft:t.installed_version?`v${t.installed_version}`:`–`,neu:t.behind?`+${t.behind.toLocaleString(`de-DE`)} Änderungen`:null};let n=e===`engine`?`b`:`v`;return{laeuft:t.installed_build==null?`–`:`${n}${t.installed_build}`,neu:t.latest_build!=null&&t.installed_build!=null&&t.latest_build>t.installed_build?`${n}${t.latest_build}`:null}}function g(e,t){return!t||t.error?null:e===`os`?typeof t.count==`number`?t.count>0:null:e===`hermes`?typeof t.behind==`number`?t.behind>0:null:t.latest_build==null||t.installed_build==null?null:t.latest_build>t.installed_build}function _(e){let t=e.trim();return/timed out|timeout|zeitüberschreitung/i.test(t)?`Konnte nicht prüfen: Die Gegenstelle hat nicht rechtzeitig geantwortet. Später klappt es meist wieder.`:/name resolution|name or service not known|network is unreachable|connection (refused|reset)|nicht erreichbar/i.test(t)?`Konnte nicht prüfen: Die Box kommt gerade nicht ins Internet.`:`Konnte nicht prüfen: ${t.length>160?`${t.slice(0,157)}…`:t}`}var v=e=>e.group===`download`||/^download\s/i.test(e.label),y=e=>e.group===`pruefen`||e.label===`Nach Updates suchen`,b=e=>l(e)&&v(e),x=[[/^download\s+(.+)$/i,`Download $1`],[/^OS-Update \(apt\)$/,`Update Betriebssystem`],[/^Engine-Update \(llama\.cpp Vulkan\)$/,`Update Motor (llama.cpp)`],[/^Router-Update \(llama-swap\)$/,`Update llama-swap`],[/^Hermes-Agent-Update$/,`Update Hermes`]],S=[[`Engine (llama.cpp)`,`Motor`],[`Router (llama-swap)`,`llama-swap`],[`Hermes-Agent`,`Hermes`],[`OS (apt)`,`Betriebssystem`]];function C(e){for(let[t,n]of x)if(t.test(e.label))return e.label.replace(t,n);return e.label.startsWith(`Alle aktualisieren`)?S.reduce((e,[t,n])=>e.split(t).join(n),e.label):e.label}function w(e){if(e<60)return`noch unter einer Minute`;let t=Math.round(e/60);if(t<60)return`noch etwa ${t} min`;let n=Math.floor(t/60),r=t%60;return r?`noch etwa ${n} h ${r} min`:`noch etwa ${n} h`}function T(e,t=Date.now()/1e3){let n=Math.max(0,t-e.started_at),r=Math.floor(n/60),i=n<60?`ein paar Sekunden`:r<60?`${r} min`:`${Math.floor(r/60)} h ${r%60} min`;return`${e.state===`queued`?`Wartet`:`Läuft`} seit ${i}`}function E(e){if(e.progress==null)return null;let t=[`${Math.round(e.progress)} %`];return e.total_bytes&&t.push(`${o(e.done_bytes??0,1)} von ${o(e.total_bytes,1)}`),e.eta_s!=null&&l(e)&&t.push(w(e.eta_s)),t.join(` · `)}function D(e){for(let t=(e.log?.length??0)-1;t>=0;t--){let n=e.log[t].trim();if(n&&!n.startsWith(`$ `))return n}return null}function O(e,t=Date.now()/1e3){let n=e.filter(l).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!l(e)&&t-(e.finished_at??e.started_at)<86400).sort((e,t)=>(t.finished_at??t.started_at)-(e.finished_at??e.started_at)).slice(0,3);return[...n,...r]}function k(e,t,n){if(!n)return`Nach dem Download übernimmt ${e} die Rolle „${t}“.`;let r=n.weitere.length?` Die Rolle${n.weitere.length===1?``:`n`} „${n.weitere.join(`“, „`)}“ behält es.`:``;return`Achtung: Nach dem Download übernimmt ${e} die Rolle „${t}“ und ersetzt damit ${n.name}. Das bisherige Modell bleibt auf der Platte.${r}`+(n.zwilling?` Bilder liest vorerst weiter sein Bild-Zwilling, also noch das bisherige Modell.`:``)}function A(e){return`Kurze Unterbrechung: Beim Eintragen lädt llama-swap sofort neu. Was Lucy oder OpenChamber gerade schreiben, bricht ab, und die Modelle werden neu geladen.`+(e?` Mit Rolle passiert das nach dem Download noch einmal.`:``)}var j=t(a(),1),M=e(),N={queued:{text:`Wartet`,art:`cyan`},running:{text:`Läuft`,art:`cyan`},done:{text:`Fertig`,art:`gruen`},failed:{text:`Fehler`,art:`rot`},canceled:{text:`Abgebrochen`,art:`grau`}},P={queued:`bg-cyan`,running:`bg-cyan`,done:`bg-gruen`,failed:`bg-rot`,canceled:`bg-text-3`},F=e=>s(new Date(e*1e3).toISOString());function I(e){let t=(0,m.c)(3),[n,r]=(0,j.useState)(L),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(!e)return;let t=window.setInterval(()=>r(Date.now()/1e3),3e4);return()=>window.clearInterval(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,j.useEffect)(i,a),n}function L(){return Date.now()/1e3}function R(e){let t=(0,m.c)(75),{job:r,onAbbrechen:a,abbrechenGesperrt:o,ebene:s}=e,c=s===void 0?4:s,[d,f]=(0,j.useState)(!1),[h,g]=(0,j.useState)(!1),_;t[0]===r.state?_=t[1]:(_=N[r.state]??{text:r.state,art:`grau`},t[0]=r.state,t[1]=_);let y=_,x;t[2]===r?x=t[3]:(x=C(r),t[2]=r,t[3]=x);let S=x,w;t[4]===r?w=t[5]:(w=E(r),t[4]=r,t[5]=w);let O=w,k;t[6]===r?k=t[7]:(k=D(r),t[6]=r,t[7]=k);let A=k,L;t[8]===r?L=t[9]:(L=l(r),t[8]=r,t[9]=L);let R=L,z=I(R),B;t[10]!==r||t[11]!==a?(B=!!a&&b(r),t[10]=r,t[11]=a,t[12]=B):B=t[12];let V=B,H,U,W,G,K,q,J,Y;if(t[13]!==o||t[14]!==V||t[15]!==c||t[16]!==O||t[17]!==z||t[18]!==r||t[19]!==R||t[20]!==A||t[21]!==h||t[22]!==S||t[23]!==y.art||t[24]!==y.text){let e=(r.log??[]).slice(-12),a=c===3?`h3`:`h4`;J=`Auftrag: ${S}`,Y=`flex flex-col gap-2.5 rounded-xl border border-linie bg-erhaben/50 p-3.5`;let s;t[33]!==a||t[34]!==S?(s=(0,M.jsx)(a,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:S}),t[33]=a,t[34]=S,t[35]=s):s=t[35];let l;t[36]!==y.art||t[37]!==y.text?(l=(0,M.jsx)(u,{art:y.art,children:y.text}),t[36]=y.art,t[37]=y.text,t[38]=l):l=t[38],t[39]!==s||t[40]!==l?(H=(0,M.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[s,l]}),t[39]=s,t[40]=l,t[41]=H):H=t[41],t[42]!==r.progress||t[43]!==r.state||t[44]!==S?(U=r.progress!=null&&(0,M.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${S}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(r.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,M.jsx)(`div`,{className:n(`h-full`,P[r.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,r.progress))}%`}})}),t[42]=r.progress,t[43]=r.state,t[44]=S,t[45]=U):U=t[45];let d;t[46]!==O||t[47]!==z||t[48]!==r||t[49]!==R||t[50]!==y.text?(d=R?O??T(r,z):`${y.text} · ${F(r.finished_at??r.started_at)}`,t[46]=O,t[47]=z,t[48]=r,t[49]=R,t[50]=y.text,t[51]=d):d=t[51],t[52]===d?W=t[53]:(W=(0,M.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:d}),t[52]=d,t[53]=W),t[54]!==r.progress||t[55]!==r.state||t[56]!==R||t[57]!==A?(G=A&&(r.state===`failed`||R&&r.progress==null)&&(0,M.jsx)(`p`,{className:r.state===`failed`?`m-0 text-sm break-words text-rot-text`:`ziffern m-0 line-clamp-2 text-xs break-all text-text-3`,children:r.state===`failed`?`Letzte Meldung: ${A}`:A}),t[54]=r.progress,t[55]=r.state,t[56]=R,t[57]=A,t[58]=G):G=t[58],K=(V||e.length>1)&&(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[V&&(0,M.jsx)(i,{variant:`outline`,size:`sm`,disabled:o,onClick:()=>f(!0),children:`Abbrechen`}),e.length>1&&(0,M.jsx)(i,{variant:`ghost`,size:`sm`,"aria-expanded":h,onClick:()=>g(!h),children:h?`Protokoll zu`:`Protokoll`})]}),q=h&&(0,M.jsx)(`pre`,{className:`ziffern m-0 max-h-56 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap break-all text-text-2`,children:e.join(` `)}),t[13]=o,t[14]=V,t[15]=c,t[16]=O,t[17]=z,t[18]=r,t[19]=R,t[20]=A,t[21]=h,t[22]=S,t[23]=y.art,t[24]=y.text,t[25]=H,t[26]=U,t[27]=W,t[28]=G,t[29]=K,t[30]=q,t[31]=J,t[32]=Y}else H=t[25],U=t[26],W=t[27],G=t[28],K=t[29],q=t[30],J=t[31],Y=t[32];let X;t[59]!==V||t[60]!==d||t[61]!==r||t[62]!==a||t[63]!==S?(X=V&&(0,M.jsx)(p,{offen:d,gefahr:!0,titel:`Auftrag abbrechen?`,text:v(r)?`Der ${S} stoppt. Du kannst ihn später über „Modelle selbst suchen“ neu starten.`:`„${S}“ wird abgebrochen.`,knopf:`Ja, abbrechen`,neinKnopf:`Weiterlaufen lassen`,onNein:()=>f(!1),onJa:()=>{d&&(f(!1),a?.(r))}}),t[59]=V,t[60]=d,t[61]=r,t[62]=a,t[63]=S,t[64]=X):X=t[64];let Z;return t[65]!==H||t[66]!==U||t[67]!==W||t[68]!==G||t[69]!==K||t[70]!==q||t[71]!==X||t[72]!==J||t[73]!==Y?(Z=(0,M.jsxs)(`article`,{"aria-label":J,className:Y,children:[H,U,W,G,K,q,X]}),t[65]=H,t[66]=U,t[67]=W,t[68]=G,t[69]=K,t[70]=q,t[71]=X,t[72]=J,t[73]=Y,t[74]=Z):Z=t[74],Z}function z(e){let t=(0,m.c)(17),{alsPanel:n}=e,r=n!==void 0&&n,i=c(),a=f(),o,s;if(t[0]!==a||t[1]!==r||t[2]!==i.data||t[3]!==i.error||t[4]!==i.isError){s=Symbol.for(`react.early_return_sentinel`);bb0:{let e=O(i.data?.jobs??[]);if(e.length>0){let n;t[7]!==a||t[8]!==r?(n=e=>(0,M.jsx)(R,{job:e,ebene:r?3:4,abbrechenGesperrt:a.isPending,onAbbrechen:e=>a.mutate({id:e.id,titel:C(e)})},e.id),t[7]=a,t[8]=r,t[9]=n):n=t[9],o=(0,M.jsx)(`div`,{className:`grid items-start gap-2.5 lg:grid-cols-2`,children:e.map(n)})}else if(i.isError&&!i.data){let e;t[10]===i.error.message?e=t[11]:(e=(0,M.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Aufträge lassen sich gerade nicht lesen: `,i.error.message]}),t[10]=i.error.message,t[11]=e),o=e}else{s=null;break bb0}}t[0]=a,t[1]=r,t[2]=i.data,t[3]=i.error,t[4]=i.isError,t[5]=o,t[6]=s}else o=t[5],s=t[6];if(s!==Symbol.for(`react.early_return_sentinel`))return s;if(r){let e;return t[12]===o?e=t[13]:(e=(0,M.jsx)(d,{titel:`Aufträge`,children:o}),t[12]=o,t[13]=e),e}let l;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,M.jsx)(`h3`,{className:`schild m-0 text-sm text-text-3`,children:`Aufträge`}),t[14]=l):l=t[14];let u;return t[15]===o?u=t[16]:(u=(0,M.jsxs)(`section`,{"aria-label":`Aufträge`,className:`flex flex-col gap-2.5`,children:[l,o]}),t[15]=o,t[16]=u),u}export{_ as a,y as i,g as n,k as o,A as r,h as s,z as t};