diff --git a/backend/routers/partner.py b/backend/routers/partner.py index 7907c07..d32d0d2 100644 --- a/backend/routers/partner.py +++ b/backend/routers/partner.py @@ -18,6 +18,15 @@ _GESPERRT = ("partner", "stream") _ZEITLIMIT = httpx.Timeout(30.0, connect=5.0) +@router.get("/instanz") +def instanz() -> dict: + """Wer liefert die Seite aus? Ohne Netzabfragen, damit die Oberfläche sofort weiß, welche Anfragen + sie selbst beantwortet und welche über /api/partner/… an die andere Instanz gehen.""" + e = einstellungen() + return {"rolle": e.rolle, "instanz": e.instanz, + "partner": {"eingerichtet": bool(e.partner_url), "name": e.partner_name}} + + @router.get("/partner") def partner_status() -> dict: return partner.status() diff --git a/backend/tests/test_partner.py b/backend/tests/test_partner.py index 0c1e7a3..aaf1a64 100644 --- a/backend/tests/test_partner.py +++ b/backend/tests/test_partner.py @@ -110,6 +110,12 @@ def test_durchreiche_get_und_post(mit_partner, partner_server): assert json.loads(letzte["koerper"]) == {"ziel": "ct:101"} +def test_instanz_ohne_netz(mit_partner): + mit_partner("http://127.0.0.1:9") + assert _client().get("/api/instanz").json() == { + "rolle": "box", "instanz": "Box-Wart", "partner": {"eingerichtet": True, "name": "Homelab"}} + + @pytest.mark.parametrize("pfad", ["partner/health", "partner", "stream"]) def test_durchreiche_sperrt_schleifen_und_strom(mit_partner, partner_server, pfad): url, empfangen = partner_server diff --git a/frontend/dist/assets/Auftraege-C5bKfsD1.js b/frontend/dist/assets/Auftraege-C5bKfsD1.js new file mode 100644 index 0000000..7d3ce20 --- /dev/null +++ b/frontend/dist/assets/Auftraege-C5bKfsD1.js @@ -0,0 +1,2 @@ +import{i as e,n as t,o as n,r,t as i}from"./dist-BaE5-hhJ.js";import{D as a,N as o,d as s,f as c,k as l,n as u,t as d,z as f}from"./index-DSxwfDVg.js";import{Bestaetigen as p}from"./Bestaetigen-kFure1oW.js";var m=t();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=>o(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(`${l(e.done_bytes??0,1)} von ${l(e.total_bytes,1)}`),e.eta_s!=null&&o(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(o).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!o(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=n(e(),1),M=r(),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=>a(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:n,onAbbrechen:r,abbrechenGesperrt:a,ebene:s}=e,c=s===void 0?4:s,[l,d]=(0,j.useState)(!1),[h,g]=(0,j.useState)(!1),_;t[0]===n.state?_=t[1]:(_=N[n.state]??{text:n.state,art:`grau`},t[0]=n.state,t[1]=_);let y=_,x;t[2]===n?x=t[3]:(x=C(n),t[2]=n,t[3]=x);let S=x,w;t[4]===n?w=t[5]:(w=E(n),t[4]=n,t[5]=w);let O=w,k;t[6]===n?k=t[7]:(k=D(n),t[6]=n,t[7]=k);let A=k,L;t[8]===n?L=t[9]:(L=o(n),t[8]=n,t[9]=L);let R=L,z=I(R),B;t[10]!==n||t[11]!==r?(B=!!r&&b(n),t[10]=n,t[11]=r,t[12]=B):B=t[12];let V=B,H,U,W,G,K,q,J,Y;if(t[13]!==a||t[14]!==V||t[15]!==c||t[16]!==O||t[17]!==z||t[18]!==n||t[19]!==R||t[20]!==A||t[21]!==h||t[22]!==S||t[23]!==y.art||t[24]!==y.text){let e=(n.log??[]).slice(-12),r=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 o;t[33]!==r||t[34]!==S?(o=(0,M.jsx)(r,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:S}),t[33]=r,t[34]=S,t[35]=o):o=t[35];let s;t[36]!==y.art||t[37]!==y.text?(s=(0,M.jsx)(u,{art:y.art,children:y.text}),t[36]=y.art,t[37]=y.text,t[38]=s):s=t[38],t[39]!==o||t[40]!==s?(H=(0,M.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[o,s]}),t[39]=o,t[40]=s,t[41]=H):H=t[41],t[42]!==n.progress||t[43]!==n.state||t[44]!==S?(U=n.progress!=null&&(0,M.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${S}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(n.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,M.jsx)(`div`,{className:i(`h-full`,P[n.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,n.progress))}%`}})}),t[42]=n.progress,t[43]=n.state,t[44]=S,t[45]=U):U=t[45];let l;t[46]!==O||t[47]!==z||t[48]!==n||t[49]!==R||t[50]!==y.text?(l=R?O??T(n,z):`${y.text} · ${F(n.finished_at??n.started_at)}`,t[46]=O,t[47]=z,t[48]=n,t[49]=R,t[50]=y.text,t[51]=l):l=t[51],t[52]===l?W=t[53]:(W=(0,M.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:l}),t[52]=l,t[53]=W),t[54]!==n.progress||t[55]!==n.state||t[56]!==R||t[57]!==A?(G=A&&(n.state===`failed`||R&&n.progress==null)&&(0,M.jsx)(`p`,{className:n.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:n.state===`failed`?`Letzte Meldung: ${A}`:A}),t[54]=n.progress,t[55]=n.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)(f,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>d(!0),children:`Abbrechen`}),e.length>1&&(0,M.jsx)(f,{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]=a,t[14]=V,t[15]=c,t[16]=O,t[17]=z,t[18]=n,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]!==l||t[61]!==n||t[62]!==r||t[63]!==S?(X=V&&(0,M.jsx)(p,{offen:l,gefahr:!0,titel:`Auftrag abbrechen?`,text:v(n)?`Der ${S} stoppt. Du kannst ihn später über „Modelle selbst suchen“ neu starten.`:`„${S}“ wird abgebrochen.`,knopf:`Ja, abbrechen`,neinKnopf:`Weiterlaufen lassen`,onNein:()=>d(!1),onJa:()=>{l&&(d(!1),r?.(n))}}),t[59]=V,t[60]=l,t[61]=n,t[62]=r,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=s(),o,l;if(t[0]!==a||t[1]!==r||t[2]!==i.data||t[3]!==i.error||t[4]!==i.isError){l=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{l=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]=l}else o=t[5],l=t[6];if(l!==Symbol.for(`react.early_return_sentinel`))return l;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 u;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,M.jsx)(`h3`,{className:`schild m-0 text-sm text-text-3`,children:`Aufträge`}),t[14]=u):u=t[14];let f;return t[15]===o?f=t[16]:(f=(0,M.jsxs)(`section`,{"aria-label":`Aufträge`,className:`flex flex-col gap-2.5`,children:[u,o]}),t[15]=o,t[16]=f),f}export{_ as a,y as i,g as n,k as o,A as r,h as s,z as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Auftraege-fchOFtdC.js b/frontend/dist/assets/Auftraege-fchOFtdC.js deleted file mode 100644 index 05b0ad1..0000000 --- a/frontend/dist/assets/Auftraege-fchOFtdC.js +++ /dev/null @@ -1,2 +0,0 @@ -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}; \ No newline at end of file diff --git a/frontend/dist/assets/Bestaetigen-CBdEBtky.js b/frontend/dist/assets/Bestaetigen-CBdEBtky.js deleted file mode 100644 index 2a49044..0000000 --- a/frontend/dist/assets/Bestaetigen-CBdEBtky.js +++ /dev/null @@ -1 +0,0 @@ -import{a as e,c as t,i as n,s as r,t as i,u as a}from"./button-Dd8hfusv.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./dist-CgRgLCFz.js";var p=r();a();var m=t();function h(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(f,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function g(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(l,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,p.c)(8),r,i;t[0]===e?(r=t[1],i=t[2]):({className:r,...i}=e,t[0]=e,t[1]=r,t[2]=i);let a;t[3]===r?a=t[4]:(a=n(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,r),t[3]=r,t[4]=a);let s;return t[5]!==i||t[6]!==a?(s=(0,m.jsx)(o,{"data-slot":`dialog-overlay`,className:a,...i}),t[5]=i,t[6]=a,t[7]=s):s=t[7],s}function v(t){let r=(0,p.c)(15),a,o,s,l;r[0]===t?(a=r[1],o=r[2],s=r[3],l=r[4]):({className:o,children:a,showCloseButton:l,...s}=t,r[0]=t,r[1]=a,r[2]=o,r[3]=s,r[4]=l);let d=l===void 0||l,f;r[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,m.jsx)(_,{}),r[5]=f):f=r[5];let h;r[6]===o?h=r[7]:(h=n(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,o),r[6]=o,r[7]=h);let v;r[8]===d?v=r[9]:(v=d&&(0,m.jsx)(c,{"data-slot":`dialog-close`,asChild:!0,children:(0,m.jsxs)(i,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,m.jsx)(e,{}),(0,m.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),r[8]=d,r[9]=v);let y;return r[10]!==a||r[11]!==s||r[12]!==h||r[13]!==v?(y=(0,m.jsxs)(g,{children:[f,(0,m.jsxs)(u,{"data-slot":`dialog-content`,className:h,...s,children:[a,v]})]}),r[10]=a,r[11]=s,r[12]=h,r[13]=v,r[14]=y):y=r[14],y}function y(e){let t=(0,p.c)(8),r,i;t[0]===e?(r=t[1],i=t[2]):({className:r,...i}=e,t[0]=e,t[1]=r,t[2]=i);let a;t[3]===r?a=t[4]:(a=n(`flex flex-col gap-2`,r),t[3]=r,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function b(e){let t=(0,p.c)(14),r,a,o,s;t[0]===e?(r=t[1],a=t[2],o=t[3],s=t[4]):({className:a,showCloseButton:s,children:r,...o}=e,t[0]=e,t[1]=r,t[2]=a,t[3]=o,t[4]=s);let l=s!==void 0&&s,u;t[5]===a?u=t[6]:(u=n(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,a),t[5]=a,t[6]=u);let d;t[7]===l?d=t[8]:(d=l&&(0,m.jsx)(c,{asChild:!0,children:(0,m.jsx)(i,{variant:`outline`,children:`Schließen`})}),t[7]=l,t[8]=d);let f;return t[9]!==r||t[10]!==o||t[11]!==u||t[12]!==d?(f=(0,m.jsxs)(`div`,{"data-slot":`dialog-footer`,className:u,...o,children:[r,d]}),t[9]=r,t[10]=o,t[11]=u,t[12]=d,t[13]=f):f=t[13],f}function x(e){let t=(0,p.c)(8),r,i;t[0]===e?(r=t[1],i=t[2]):({className:r,...i}=e,t[0]=e,t[1]=r,t[2]=i);let a;t[3]===r?a=t[4]:(a=n(`font-heading text-base leading-none font-medium`,r),t[3]=r,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(d,{"data-slot":`dialog-title`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function S(e){let t=(0,p.c)(8),r,i;t[0]===e?(r=t[1],i=t[2]):({className:r,...i}=e,t[0]=e,t[1]=r,t[2]=i);let a;t[3]===r?a=t[4]:(a=n(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,r),t[3]=r,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(s,{"data-slot":`dialog-description`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function C(e){let t=(0,p.c)(32),{offen:n,titel:r,text:a,knopf:o,neinKnopf:s,gefahr:c,gesperrt:l,onJa:u,onNein:d,children:f}=e,g=s===void 0?`Abbrechen`:s,_;t[0]===d?_=t[1]:(_=e=>!e&&d(),t[0]=d,t[1]=_);let C;t[2]===r?C=t[3]:(C=(0,m.jsx)(x,{className:`schild pr-10 text-xl break-words`,children:r}),t[2]=r,t[3]=C);let w;t[4]===a?w=t[5]:(w=(0,m.jsx)(S,{className:`text-[15px] leading-relaxed text-text-2`,children:a}),t[4]=a,t[5]=w);let T;t[6]!==C||t[7]!==w?(T=(0,m.jsxs)(y,{children:[C,w]}),t[6]=C,t[7]=w,t[8]=T):T=t[8];let E;t[9]!==g||t[10]!==d?(E=(0,m.jsx)(i,{variant:`outline`,onClick:d,children:g}),t[9]=g,t[10]=d,t[11]=E):E=t[11];let D=c?`gefahr`:`default`,O=l||void 0,k;t[12]!==l||t[13]!==u?(k=()=>{l||u()},t[12]=l,t[13]=u,t[14]=k):k=t[14];let A;t[15]!==l||t[16]!==o||t[17]!==D||t[18]!==O||t[19]!==k?(A=(0,m.jsx)(i,{variant:D,disabled:l,"aria-busy":O,onClick:k,children:o}),t[15]=l,t[16]=o,t[17]=D,t[18]=O,t[19]=k,t[20]=A):A=t[20];let j;t[21]!==A||t[22]!==E?(j=(0,m.jsxs)(b,{className:`sticky bottom-0 mb-0 gap-2 bg-erhaben sm:gap-2`,children:[E,A]}),t[21]=A,t[22]=E,t[23]=j):j=t[23];let M;t[24]!==f||t[25]!==j||t[26]!==T?(M=(0,m.jsxs)(v,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-linie bg-panel pb-0 sm:max-w-lg`,children:[T,f,j]}),t[24]=f,t[25]=j,t[26]=T,t[27]=M):M=t[27];let N;return t[28]!==n||t[29]!==M||t[30]!==_?(N=(0,m.jsx)(h,{open:n,onOpenChange:_,children:M}),t[28]=n,t[29]=M,t[30]=_,t[31]=N):N=t[31],N}export{C as Bestaetigen}; \ No newline at end of file diff --git a/frontend/dist/assets/Bestaetigen-kFure1oW.js b/frontend/dist/assets/Bestaetigen-kFure1oW.js new file mode 100644 index 0000000..493a29e --- /dev/null +++ b/frontend/dist/assets/Bestaetigen-kFure1oW.js @@ -0,0 +1 @@ +import{i as e,n as t,r as n,t as r}from"./dist-BaE5-hhJ.js";import{a as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./dist-ndv4TK4_.js";import{W as d,z as f}from"./index-DSxwfDVg.js";var p=t();e();var m=n();function h(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(u,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function g(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(s,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,p.c)(8),n,a;t[0]===e?(n=t[1],a=t[2]):({className:n,...a}=e,t[0]=e,t[1]=n,t[2]=a);let o;t[3]===n?o=t[4]:(o=r(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=o);let s;return t[5]!==a||t[6]!==o?(s=(0,m.jsx)(i,{"data-slot":`dialog-overlay`,className:o,...a}),t[5]=a,t[6]=o,t[7]=s):s=t[7],s}function v(e){let t=(0,p.c)(15),n,i,a,s;t[0]===e?(n=t[1],i=t[2],a=t[3],s=t[4]):({className:i,children:n,showCloseButton:s,...a}=e,t[0]=e,t[1]=n,t[2]=i,t[3]=a,t[4]=s);let l=s===void 0||s,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,m.jsx)(_,{}),t[5]=u):u=t[5];let h;t[6]===i?h=t[7]:(h=r(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,i),t[6]=i,t[7]=h);let v;t[8]===l?v=t[9]:(v=l&&(0,m.jsx)(o,{"data-slot":`dialog-close`,asChild:!0,children:(0,m.jsxs)(f,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,m.jsx)(d,{}),(0,m.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[8]=l,t[9]=v);let y;return t[10]!==n||t[11]!==a||t[12]!==h||t[13]!==v?(y=(0,m.jsxs)(g,{children:[u,(0,m.jsxs)(c,{"data-slot":`dialog-content`,className:h,...a,children:[n,v]})]}),t[10]=n,t[11]=a,t[12]=h,t[13]=v,t[14]=y):y=t[14],y}function y(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`flex flex-col gap-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function b(e){let t=(0,p.c)(14),n,i,a,s;t[0]===e?(n=t[1],i=t[2],a=t[3],s=t[4]):({className:i,showCloseButton:s,children:n,...a}=e,t[0]=e,t[1]=n,t[2]=i,t[3]=a,t[4]=s);let c=s!==void 0&&s,l;t[5]===i?l=t[6]:(l=r(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,i),t[5]=i,t[6]=l);let u;t[7]===c?u=t[8]:(u=c&&(0,m.jsx)(o,{asChild:!0,children:(0,m.jsx)(f,{variant:`outline`,children:`Schließen`})}),t[7]=c,t[8]=u);let d;return t[9]!==n||t[10]!==a||t[11]!==l||t[12]!==u?(d=(0,m.jsxs)(`div`,{"data-slot":`dialog-footer`,className:l,...a,children:[n,u]}),t[9]=n,t[10]=a,t[11]=l,t[12]=u,t[13]=d):d=t[13],d}function x(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(l,{"data-slot":`dialog-title`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function S(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let o;t[3]===n?o=t[4]:(o=r(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=o);let s;return t[5]!==i||t[6]!==o?(s=(0,m.jsx)(a,{"data-slot":`dialog-description`,className:o,...i}),t[5]=i,t[6]=o,t[7]=s):s=t[7],s}function C(e){let t=(0,p.c)(32),{offen:n,titel:r,text:i,knopf:a,neinKnopf:o,gefahr:s,gesperrt:c,onJa:l,onNein:u,children:d}=e,g=o===void 0?`Abbrechen`:o,_;t[0]===u?_=t[1]:(_=e=>!e&&u(),t[0]=u,t[1]=_);let C;t[2]===r?C=t[3]:(C=(0,m.jsx)(x,{className:`schild pr-10 text-xl break-words`,children:r}),t[2]=r,t[3]=C);let w;t[4]===i?w=t[5]:(w=(0,m.jsx)(S,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=w);let T;t[6]!==C||t[7]!==w?(T=(0,m.jsxs)(y,{children:[C,w]}),t[6]=C,t[7]=w,t[8]=T):T=t[8];let E;t[9]!==g||t[10]!==u?(E=(0,m.jsx)(f,{variant:`outline`,onClick:u,children:g}),t[9]=g,t[10]=u,t[11]=E):E=t[11];let D=s?`gefahr`:`default`,O=c||void 0,k;t[12]!==c||t[13]!==l?(k=()=>{c||l()},t[12]=c,t[13]=l,t[14]=k):k=t[14];let A;t[15]!==c||t[16]!==a||t[17]!==D||t[18]!==O||t[19]!==k?(A=(0,m.jsx)(f,{variant:D,disabled:c,"aria-busy":O,onClick:k,children:a}),t[15]=c,t[16]=a,t[17]=D,t[18]=O,t[19]=k,t[20]=A):A=t[20];let j;t[21]!==A||t[22]!==E?(j=(0,m.jsxs)(b,{className:`sticky bottom-0 mb-0 gap-2 bg-erhaben sm:gap-2`,children:[E,A]}),t[21]=A,t[22]=E,t[23]=j):j=t[23];let M;t[24]!==d||t[25]!==j||t[26]!==T?(M=(0,m.jsxs)(v,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-linie bg-panel pb-0 sm:max-w-lg`,children:[T,d,j]}),t[24]=d,t[25]=j,t[26]=T,t[27]=M):M=t[27];let N;return t[28]!==n||t[29]!==M||t[30]!==_?(N=(0,m.jsx)(h,{open:n,onOpenChange:_,children:M}),t[28]=n,t[29]=M,t[30]=_,t[31]=N):N=t[31],N}export{C as Bestaetigen}; \ No newline at end of file diff --git a/frontend/dist/assets/Dienste-BiELxcPZ.js b/frontend/dist/assets/Dienste-BiELxcPZ.js deleted file mode 100644 index aed374c..0000000 --- a/frontend/dist/assets/Dienste-BiELxcPZ.js +++ /dev/null @@ -1 +0,0 @@ -import{c as e,f as t,i as n,s as r,t as i,u as a}from"./button-Dd8hfusv.js";import{A as o,I as s,K as c,L as l,h as u,o as d}from"./index-BpFIVIMn.js";import{a as f,i as p,n as m,r as h,t as g}from"./sheet-DWG2Q04V.js";var _=r(),v=t(a(),1),y=e();function b(e){let t=(0,_.c)(4),{unit:n}=e,r=u(n),i;if(r.isPending)i=`Wird gelesen …`;else if(r.isError)i=`Das Protokoll lässt sich gerade nicht lesen: ${r.error.message}`;else if(r.data.ok===!1)i=r.data.err||r.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===r.data.text?e=t[1]:(e=r.data.text?.trim()||`Noch keine Einträge.`,t[0]=r.data.text,t[1]=e),i=e}let a;return t[2]===i?a=t[3]:(a=(0,y.jsx)(`pre`,{className:`ziffern m-0 max-h-[50vh] w-full basis-full overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap break-all text-text-2`,children:i}),t[2]=i,t[3]=a),a}function x({offen:e,onSchliessen:t}){let r=c(),a=d(),[u,_]=(0,v.useState)(null),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null);async function T(e){if(!C){S(null),w(e.unit);try{let t=await s(`/api/maintenance/restart`,{service:e.unit});t.ok?l(`erfolg`,`${e.name} ${e.schlaeft?`wird geweckt`:`startet neu`}.`):l(`fehler`,`${e.name} ließ sich nicht starten: ${o(t)}`),r.invalidateQueries({queryKey:[`dienste`]})}catch(e){l(`fehler`,e.message)}finally{w(null)}}}let E;return E=a.isPending?(0,y.jsx)(`p`,{role:`status`,className:`px-4 text-[15px] text-text-2`,children:`Dienste werden gelesen …`}):a.isError&&!a.data?(0,y.jsxs)(`p`,{role:`alert`,className:`px-4 text-[15px] text-rot-text`,children:[`Die Dienste lassen sich gerade nicht lesen: `,a.error.message]}):a.data?.services.length?(0,y.jsx)(`ul`,{className:`m-0 flex list-none flex-col px-4 pb-4`,children:a.data.services.map(e=>(0,y.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-2 border-t border-linie py-2.5`,children:[(0,y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2.5`,children:[(0,y.jsx)(`span`,{className:n(`size-2.5 shrink-0 rounded-full`,e.ok?`bg-gruen`:e.schlaeft?`bg-text-3`:`bg-rot`),"aria-hidden":!0}),(0,y.jsxs)(`span`,{className:`min-w-0`,children:[(0,y.jsx)(`span`,{className:`block text-[15px]`,children:e.name}),(0,y.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.unit,` · `,e.ok?`läuft`:e.schlaeft?`schläft (abgeschaltet)`:`antwortet nicht`]})]})]}),(0,y.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,y.jsx)(i,{variant:u===e.unit?`info`:`ghost`,size:`sm`,"aria-expanded":u===e.unit,onClick:()=>_(u===e.unit?null:e.unit),children:`Protokoll`}),x===e.unit?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(i,{variant:`gefahr`,size:`sm`,onClick:()=>T(e),children:e.schlaeft?`Wirklich wecken?`:`Wirklich neu starten?`}),(0,y.jsx)(i,{variant:`ghost`,size:`sm`,onClick:()=>S(null),children:`Nein`})]}):(0,y.jsx)(i,{variant:`outline`,size:`sm`,disabled:C!==null,onClick:()=>S(e.unit),children:C===e.unit?`Startet …`:e.schlaeft?`Wecken`:`Neu starten`})]}),u===e.unit&&(0,y.jsx)(b,{unit:e.unit})]},e.unit))}):(0,y.jsx)(`p`,{className:`px-4 text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}),(0,y.jsx)(g,{open:e,onOpenChange:e=>!e&&t(),children:(0,y.jsxs)(m,{side:`right`,className:`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[(0,y.jsxs)(p,{children:[(0,y.jsx)(f,{className:`schild text-lg`,children:`Dienste und Protokolle`}),(0,y.jsx)(h,{className:`text-text-2`,children:`Welcher Dienst läuft, was er zuletzt geschrieben hat.`})]}),E]})})}export{x as Dienste}; \ No newline at end of file diff --git a/frontend/dist/assets/Dienste-Cy5bJFkH.js b/frontend/dist/assets/Dienste-Cy5bJFkH.js new file mode 100644 index 0000000..b0f14f0 --- /dev/null +++ b/frontend/dist/assets/Dienste-Cy5bJFkH.js @@ -0,0 +1 @@ +import{i as e,n as t,o as n,r,t as i}from"./dist-BaE5-hhJ.js";import{$ as a,H as o,M as s,R as c,_ as l,o as u,z as d}from"./index-DSxwfDVg.js";import{a as f,i as p,n as m,r as h,t as g}from"./sheet-iGGgLZLg.js";var _=t(),v=n(e(),1),y=r();function b(e){let t=(0,_.c)(4),{unit:n}=e,r=l(n),i;if(r.isPending)i=`Wird gelesen …`;else if(r.isError)i=`Das Protokoll lässt sich gerade nicht lesen: ${r.error.message}`;else if(r.data.ok===!1)i=r.data.err||r.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===r.data.text?e=t[1]:(e=r.data.text?.trim()||`Noch keine Einträge.`,t[0]=r.data.text,t[1]=e),i=e}let a;return t[2]===i?a=t[3]:(a=(0,y.jsx)(`pre`,{className:`ziffern m-0 max-h-[50vh] w-full basis-full overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap break-all text-text-2`,children:i}),t[2]=i,t[3]=a),a}function x({offen:e,onSchliessen:t}){let n=a(),r=u(),[l,_]=(0,v.useState)(null),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null);async function T(e){if(!C){S(null),w(e.unit);try{let t=await c(`/api/maintenance/restart`,{service:e.unit});t.ok?o(`erfolg`,`${e.name} ${e.schlaeft?`wird geweckt`:`startet neu`}.`):o(`fehler`,`${e.name} ließ sich nicht starten: ${s(t)}`),n.invalidateQueries({queryKey:[`dienste`]})}catch(e){o(`fehler`,e.message)}finally{w(null)}}}let E;return E=r.isPending?(0,y.jsx)(`p`,{role:`status`,className:`px-4 text-[15px] text-text-2`,children:`Dienste werden gelesen …`}):r.isError&&!r.data?(0,y.jsxs)(`p`,{role:`alert`,className:`px-4 text-[15px] text-rot-text`,children:[`Die Dienste lassen sich gerade nicht lesen: `,r.error.message]}):r.data?.services.length?(0,y.jsx)(`ul`,{className:`m-0 flex list-none flex-col px-4 pb-4`,children:r.data.services.map(e=>(0,y.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-2 border-t border-linie py-2.5`,children:[(0,y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2.5`,children:[(0,y.jsx)(`span`,{className:i(`size-2.5 shrink-0 rounded-full`,e.ok?`bg-gruen`:e.schlaeft?`bg-text-3`:`bg-rot`),"aria-hidden":!0}),(0,y.jsxs)(`span`,{className:`min-w-0`,children:[(0,y.jsx)(`span`,{className:`block text-[15px]`,children:e.name}),(0,y.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.unit,` · `,e.ok?`läuft`:e.schlaeft?`schläft (abgeschaltet)`:`antwortet nicht`]})]})]}),(0,y.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,y.jsx)(d,{variant:l===e.unit?`info`:`ghost`,size:`sm`,"aria-expanded":l===e.unit,onClick:()=>_(l===e.unit?null:e.unit),children:`Protokoll`}),x===e.unit?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{variant:`gefahr`,size:`sm`,onClick:()=>T(e),children:e.schlaeft?`Wirklich wecken?`:`Wirklich neu starten?`}),(0,y.jsx)(d,{variant:`ghost`,size:`sm`,onClick:()=>S(null),children:`Nein`})]}):(0,y.jsx)(d,{variant:`outline`,size:`sm`,disabled:C!==null,onClick:()=>S(e.unit),children:C===e.unit?`Startet …`:e.schlaeft?`Wecken`:`Neu starten`})]}),l===e.unit&&(0,y.jsx)(b,{unit:e.unit})]},e.unit))}):(0,y.jsx)(`p`,{className:`px-4 text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}),(0,y.jsx)(g,{open:e,onOpenChange:e=>!e&&t(),children:(0,y.jsxs)(m,{side:`right`,className:`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[(0,y.jsxs)(p,{children:[(0,y.jsx)(f,{className:`schild text-lg`,children:`Dienste und Protokolle`}),(0,y.jsx)(h,{className:`text-text-2`,children:`Welcher Dienst läuft, was er zuletzt geschrieben hat.`})]}),E]})})}export{x as Dienste}; \ No newline at end of file diff --git a/frontend/dist/assets/Einstellungen-BSsBxIeF.js b/frontend/dist/assets/Einstellungen-BSsBxIeF.js new file mode 100644 index 0000000..6b0e81c --- /dev/null +++ b/frontend/dist/assets/Einstellungen-BSsBxIeF.js @@ -0,0 +1 @@ +import{i as e,o as t,r as n}from"./dist-BaE5-hhJ.js";import{$ as r,H as i,L as a,Q as o,R as s,q as c,z as l}from"./index-DSxwfDVg.js";import{a as u,i as d,n as f,r as p,t as m}from"./sheet-iGGgLZLg.js";var h=t(e(),1),g=n();function _({offen:e,onSchliessen:t}){let n=r(),_=o({queryKey:[`geheimnisse`],queryFn:()=>a(`/api/maintenance/geheimnisse`),enabled:e}),[v,y]=(0,h.useState)(``),[b,x]=(0,h.useState)(!1),[S,C]=(0,h.useState)(!1);async function w(e){if(!b){x(!0),C(!1);try{await s(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),i(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),y(``),n.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){i(`fehler`,e.message)}finally{x(!1)}}}let T=_.data,E;return E=_.isPending?`Wird gelesen …`:T?T.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${_.error?`: ${_.error.message}`:`.`}`,(0,g.jsx)(m,{open:e,onOpenChange:e=>!e&&t(),children:(0,g.jsxs)(f,{side:`right`,className:`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-lg`,children:[(0,g.jsxs)(d,{children:[(0,g.jsx)(u,{className:`schild text-lg`,children:`Einstellungen`}),(0,g.jsx)(p,{className:`text-text-2`,children:`Was die Box sich merkt.`})]}),(0,g.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-linie px-4 pt-4`,children:[(0,g.jsx)(`h3`,{className:`schild text-sm text-text-3`,children:`Hugging-Face-Zugang`}),(0,g.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,g.jsx)(`span`,{className:!T&&!_.isPending?`text-rot-text`:void 0,children:E}),` Nötig für gesperrte Modelle und schnellere Downloads.`,T?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),T?.schreibbar===!1&&(0,g.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,g.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),v.trim()&&w(v.trim())},children:[(0,g.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,g.jsx)(`input`,{id:`hf-token`,type:`password`,autoComplete:`off`,value:v,onChange:e=>y(e.target.value),placeholder:`hf_…`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),(0,g.jsx)(l,{type:`submit`,disabled:!v.trim()||T?.schreibbar===!1||b,children:b?`Speichert …`:`Speichern`})]}),T?.hf_token_gesetzt&&!T.hf_token_aus_env&&(S?(0,g.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,g.jsx)(l,{variant:`gefahr`,size:`sm`,disabled:b,onClick:()=>w(null),children:`Wirklich löschen?`}),(0,g.jsx)(l,{variant:`ghost`,size:`sm`,onClick:()=>C(!1),children:`Nein`})]}):(0,g.jsx)(l,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:b,onClick:()=>C(!0),children:`Zugang löschen`}))]}),(0,g.jsxs)(`section`,{className:`flex flex-col gap-2 border-t border-linie px-4 pt-4`,children:[(0,g.jsx)(`h3`,{className:`schild text-sm text-text-3`,children:`Hinweise`}),(0,g.jsx)(`p`,{className:`text-sm text-text-2`,children:`Dringende Hinweise gehen zusätzlich per Telegram raus, alles andere bleibt hier. Einfache Probleme wie einen abgestürzten Dienst behebt der Wächter selbst und schreibt es in den Verlauf.`})]}),(0,g.jsxs)(`section`,{className:`flex flex-col gap-2 border-t border-linie px-4 pt-4 pb-4`,children:[(0,g.jsx)(`h3`,{className:`schild text-sm text-text-3`,children:`Hermes`}),(0,g.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-lg border border-linie-stark bg-erhaben px-4 text-[15px] hover:border-text-3`,children:[(0,g.jsx)(c,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,g.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat, Sitzungen und Cron-Jobs verwaltet Hermes selbst. Es fragt nach seiner eigenen Anmeldung.`})]})]})})}export{_ as Einstellungen}; \ No newline at end of file diff --git a/frontend/dist/assets/Einstellungen-TfSOPcbo.js b/frontend/dist/assets/Einstellungen-TfSOPcbo.js deleted file mode 100644 index e62e390..0000000 --- a/frontend/dist/assets/Einstellungen-TfSOPcbo.js +++ /dev/null @@ -1 +0,0 @@ -import{c as e,f as t,t as n,u as r}from"./button-Dd8hfusv.js";import{F as i,G as a,I as o,K as s,L as c,V as l}from"./index-BpFIVIMn.js";import{a as u,i as d,n as f,r as p,t as m}from"./sheet-DWG2Q04V.js";var h=t(r(),1),g=e();function _({offen:e,onSchliessen:t}){let r=s(),_=a({queryKey:[`geheimnisse`],queryFn:()=>i(`/api/maintenance/geheimnisse`),enabled:e}),[v,y]=(0,h.useState)(``),[b,x]=(0,h.useState)(!1),[S,C]=(0,h.useState)(!1);async function w(e){if(!b){x(!0),C(!1);try{await o(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),c(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),y(``),r.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){c(`fehler`,e.message)}finally{x(!1)}}}let T=_.data,E;return E=_.isPending?`Wird gelesen …`:T?T.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${_.error?`: ${_.error.message}`:`.`}`,(0,g.jsx)(m,{open:e,onOpenChange:e=>!e&&t(),children:(0,g.jsxs)(f,{side:`right`,className:`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-lg`,children:[(0,g.jsxs)(d,{children:[(0,g.jsx)(u,{className:`schild text-lg`,children:`Einstellungen`}),(0,g.jsx)(p,{className:`text-text-2`,children:`Was die Box sich merkt.`})]}),(0,g.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-linie px-4 pt-4`,children:[(0,g.jsx)(`h3`,{className:`schild text-sm text-text-3`,children:`Hugging-Face-Zugang`}),(0,g.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,g.jsx)(`span`,{className:!T&&!_.isPending?`text-rot-text`:void 0,children:E}),` Nötig für gesperrte Modelle und schnellere Downloads.`,T?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),T?.schreibbar===!1&&(0,g.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,g.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),v.trim()&&w(v.trim())},children:[(0,g.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,g.jsx)(`input`,{id:`hf-token`,type:`password`,autoComplete:`off`,value:v,onChange:e=>y(e.target.value),placeholder:`hf_…`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),(0,g.jsx)(n,{type:`submit`,disabled:!v.trim()||T?.schreibbar===!1||b,children:b?`Speichert …`:`Speichern`})]}),T?.hf_token_gesetzt&&!T.hf_token_aus_env&&(S?(0,g.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,g.jsx)(n,{variant:`gefahr`,size:`sm`,disabled:b,onClick:()=>w(null),children:`Wirklich löschen?`}),(0,g.jsx)(n,{variant:`ghost`,size:`sm`,onClick:()=>C(!1),children:`Nein`})]}):(0,g.jsx)(n,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:b,onClick:()=>C(!0),children:`Zugang löschen`}))]}),(0,g.jsxs)(`section`,{className:`flex flex-col gap-2 border-t border-linie px-4 pt-4`,children:[(0,g.jsx)(`h3`,{className:`schild text-sm text-text-3`,children:`Hinweise`}),(0,g.jsx)(`p`,{className:`text-sm text-text-2`,children:`Dringende Hinweise gehen zusätzlich per Telegram raus, alles andere bleibt hier. Einfache Probleme wie einen abgestürzten Dienst behebt der Wächter selbst und schreibt es in den Verlauf.`})]}),(0,g.jsxs)(`section`,{className:`flex flex-col gap-2 border-t border-linie px-4 pt-4 pb-4`,children:[(0,g.jsx)(`h3`,{className:`schild text-sm text-text-3`,children:`Hermes`}),(0,g.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-lg border border-linie-stark bg-erhaben px-4 text-[15px] hover:border-text-3`,children:[(0,g.jsx)(l,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,g.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat, Sitzungen und Cron-Jobs verwaltet Hermes selbst. Es fragt nach seiner eigenen Anmeldung.`})]})]})})}export{_ as Einstellungen}; \ No newline at end of file diff --git a/frontend/dist/assets/Homelab-BUx8ea4H.js b/frontend/dist/assets/Homelab-BUx8ea4H.js new file mode 100644 index 0000000..1deb56a --- /dev/null +++ b/frontend/dist/assets/Homelab-BUx8ea4H.js @@ -0,0 +1 @@ +import{n as e,r as t}from"./dist-BaE5-hhJ.js";import{g as n,l as r,n as i,r as a,t as o}from"./index-DSxwfDVg.js";var s=e(),c=t(),l=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`];function u(e){let t=(0,s.c)(11),{partner:n}=e;if(n.erreichbar){let e=n.instanz??n.name,r=n.version?` (Version ${n.version})`:``,i;t[0]!==e||t[1]!==r?(i=(0,c.jsxs)(`p`,{className:`text-[15px] text-text-2`,children:[e,` antwortet`,r,`. Die Übersicht der Geräte mit ihren Updates folgt als Nächstes.`]}),t[0]=e,t[1]=r,t[2]=i):i=t[2];let a;t[3]===n.url?a=t[4]:(a=(0,c.jsx)(`p`,{className:`ziffern text-sm text-text-3`,children:n.url}),t[3]=n.url,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,c.jsxs)(c.Fragment,{children:[i,a]}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}let r=n.fehler??`nicht erreichbar`,i;return t[8]!==n.url||t[9]!==r?(i=(0,c.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,r,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}),t[8]=n.url,t[9]=r,t[10]=i):i=t[10],i}function d(){let e=(0,s.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,c.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,c.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, zeigt diese Seite alle Geräte mit ihren offenen Updates. Ein Update startest du dann hier mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,c.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,c.jsxs)(c.Fragment,{children:[t,n,(0,c.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,c.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:l.map(f)})]}),(0,c.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function f(e){return(0,c.jsx)(`li`,{children:(0,c.jsx)(i,{children:e})},e)}function p(){let e=(0,s.c)(12),t=r(),l=n();if(t.isPending||l.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,c.jsx)(a,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!l.data){let t=`Der Stand des Homelab-Teils lässt sich nicht lesen: ${l.error?.message??`keine Daten`}`,n;return e[1]===t?n=e[2]:(n=(0,c.jsx)(a,{fehler:!0,text:t}),e[1]=t,e[2]=n),n}if(t.data?.rolle===`homelab`){let t;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,c.jsx)(o,{titel:`Homelab`,rechts:(0,c.jsx)(i,{art:`gruen`,children:`Diese Instanz`}),children:(0,c.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Diese Seite kommt vom Homelab-Teil auf dem Proxmox-PC.`})}),e[3]=t):t=e[3],t}let f=l.data,p;e[4]!==f.eingerichtet||e[5]!==f.erreichbar?(p=f.eingerichtet?f.erreichbar?(0,c.jsx)(i,{art:`gruen`,children:`Verbunden`}):(0,c.jsx)(i,{art:`rot`,children:`Antwortet nicht`}):(0,c.jsx)(i,{children:`Noch nicht eingerichtet`}),e[4]=f.eingerichtet,e[5]=f.erreichbar,e[6]=p):p=e[6];let m=p,h;e[7]===f?h=e[8]:(h=f.eingerichtet?(0,c.jsx)(u,{partner:f}):(0,c.jsx)(d,{}),e[7]=f,e[8]=h);let g;return e[9]!==m||e[10]!==h?(g=(0,c.jsx)(o,{titel:`Homelab`,rechts:m,children:h}),e[9]=m,e[10]=h,e[11]=g):g=e[11],g}export{p as HomelabSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/MehrMenue-B-Zm3BRi.js b/frontend/dist/assets/MehrMenue-B-Zm3BRi.js deleted file mode 100644 index fd35465..0000000 --- a/frontend/dist/assets/MehrMenue-B-Zm3BRi.js +++ /dev/null @@ -1 +0,0 @@ -import{c as e,s as t}from"./button-Dd8hfusv.js";import{B as n,V as r,z as i}from"./index-BpFIVIMn.js";import{a,i as o,n as s,r as c,t as l}from"./sheet-DWG2Q04V.js";var u=t(),d=e();function f(e){let t=(0,u.c)(16),{onDienste:f,onEinstellungen:p,onSchliessen:m}=e,h;t[0]===m?h=t[1]:(h=e=>!e&&m(),t[0]=m,t[1]=h);let g;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,d.jsxs)(o,{children:[(0,d.jsx)(a,{className:`schild text-lg`,children:`Mehr`}),(0,d.jsx)(c,{className:`sr-only`,children:`Weitere Bereiche`})]}),t[2]=g):g=t[2];let _;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,d.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-12 items-center gap-3 rounded-lg border border-linie px-4 text-base`,children:[(0,d.jsx)(r,{className:`size-5`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),t[3]=_):_=t[3];let v;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,d.jsx)(n,{className:`size-5`,"aria-hidden":!0}),t[4]=v):v=t[4];let y;t[5]===f?y=t[6]:(y=(0,d.jsxs)(`button`,{type:`button`,onClick:f,className:`flex h-12 items-center gap-3 rounded-lg border border-linie px-4 text-left text-base`,children:[v,` Dienste und Protokolle`]}),t[5]=f,t[6]=y);let b;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,d.jsx)(i,{className:`size-5`,"aria-hidden":!0}),t[7]=b):b=t[7];let x;t[8]===p?x=t[9]:(x=(0,d.jsxs)(`button`,{type:`button`,onClick:p,className:`flex h-12 items-center gap-3 rounded-lg border border-linie px-4 text-left text-base`,children:[b,` Einstellungen`]}),t[8]=p,t[9]=x);let S;t[10]!==y||t[11]!==x?(S=(0,d.jsxs)(s,{side:`bottom`,className:`border-linie bg-panel pb-[calc(1rem+env(safe-area-inset-bottom))]`,children:[g,(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 px-4`,children:[_,y,x]})]}),t[10]=y,t[11]=x,t[12]=S):S=t[12];let C;return t[13]!==h||t[14]!==S?(C=(0,d.jsx)(l,{open:!0,onOpenChange:h,children:S}),t[13]=h,t[14]=S,t[15]=C):C=t[15],C}export{f as MehrMenue}; \ No newline at end of file diff --git a/frontend/dist/assets/MehrMenue-Bb-CQEnN.js b/frontend/dist/assets/MehrMenue-Bb-CQEnN.js new file mode 100644 index 0000000..23f83b1 --- /dev/null +++ b/frontend/dist/assets/MehrMenue-Bb-CQEnN.js @@ -0,0 +1 @@ +import{n as e,r as t}from"./dist-BaE5-hhJ.js";import{G as n,K as r,q as i}from"./index-DSxwfDVg.js";import{a,i as o,n as s,r as c,t as l}from"./sheet-iGGgLZLg.js";var u=e(),d=t();function f(e){let t=(0,u.c)(16),{onDienste:f,onEinstellungen:p,onSchliessen:m}=e,h;t[0]===m?h=t[1]:(h=e=>!e&&m(),t[0]=m,t[1]=h);let g;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,d.jsxs)(o,{children:[(0,d.jsx)(a,{className:`schild text-lg`,children:`Mehr`}),(0,d.jsx)(c,{className:`sr-only`,children:`Weitere Bereiche`})]}),t[2]=g):g=t[2];let _;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,d.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-12 items-center gap-3 rounded-lg border border-linie px-4 text-base`,children:[(0,d.jsx)(i,{className:`size-5`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),t[3]=_):_=t[3];let v;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,d.jsx)(r,{className:`size-5`,"aria-hidden":!0}),t[4]=v):v=t[4];let y;t[5]===f?y=t[6]:(y=(0,d.jsxs)(`button`,{type:`button`,onClick:f,className:`flex h-12 items-center gap-3 rounded-lg border border-linie px-4 text-left text-base`,children:[v,` Dienste und Protokolle`]}),t[5]=f,t[6]=y);let b;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,d.jsx)(n,{className:`size-5`,"aria-hidden":!0}),t[7]=b):b=t[7];let x;t[8]===p?x=t[9]:(x=(0,d.jsxs)(`button`,{type:`button`,onClick:p,className:`flex h-12 items-center gap-3 rounded-lg border border-linie px-4 text-left text-base`,children:[b,` Einstellungen`]}),t[8]=p,t[9]=x);let S;t[10]!==y||t[11]!==x?(S=(0,d.jsxs)(s,{side:`bottom`,className:`border-linie bg-panel pb-[calc(1rem+env(safe-area-inset-bottom))]`,children:[g,(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 px-4`,children:[_,y,x]})]}),t[10]=y,t[11]=x,t[12]=S):S=t[12];let C;return t[13]!==h||t[14]!==S?(C=(0,d.jsx)(l,{open:!0,onOpenChange:h,children:S}),t[13]=h,t[14]=S,t[15]=C):C=t[15],C}export{f as MehrMenue}; \ No newline at end of file diff --git a/frontend/dist/assets/Modelle-CfdYZ2Ik.js b/frontend/dist/assets/Modelle-CfdYZ2Ik.js new file mode 100644 index 0000000..a61fc3c --- /dev/null +++ b/frontend/dist/assets/Modelle-CfdYZ2Ik.js @@ -0,0 +1 @@ +import{i as e,n as t,o as n,r}from"./dist-BaE5-hhJ.js";import{A as i,D as a,F as o,I as s,J as c,L as l,O as u,P as d,Q as f,S as p,U as m,X as h,Y as g,Z as _,a as v,b as y,c as b,f as x,h as S,i as C,j as w,k as T,m as E,n as D,p as O,r as k,t as A,v as j,y as M,z as N}from"./index-DSxwfDVg.js";import{a as P,i as F,n as I,r as L,t as R}from"./sheet-iGGgLZLg.js";import{Bestaetigen as z}from"./Bestaetigen-kFure1oW.js";import{o as ee,r as te,t as B}from"./Auftraege-C5bKfsD1.js";function V(e){let t=_();return h(t.stores.location,g(e,t))}var H={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};H.node;var U=c(H),W=t(),G=n(e(),1),K=r(),ne={coder:`Coder`};function re(e){let t=(0,W.c)(102),{offen:n,onSchliessen:r,rollenJetzt:a}=e,o=b(),[s,c]=(0,G.useState)(``),[u,d]=(0,G.useState)(``),[p,m]=(0,G.useState)(null),[h,g]=(0,G.useState)(``),[_,v]=(0,G.useState)(null),y=(0,G.useRef)(!1),x,S;t[0]===u?(x=t[1],S=t[2]):(x=[`hf-suche`,u],S=()=>l(`/api/hf/search?q=${encodeURIComponent(u)}`),t[0]=u,t[1]=x,t[2]=S);let C=u.length>1,w;t[3]!==x||t[4]!==S||t[5]!==C?(w={queryKey:x,queryFn:S,enabled:C},t[3]=x,t[4]=S,t[5]=C,t[6]=w):w=t[6];let E=f(w),D,O;t[7]===p?(D=t[8],O=t[9]):(D=[`hf-quants`,p],O=()=>l(`/api/hf/quants?repo=${encodeURIComponent(p??``)}`),t[7]=p,t[8]=D,t[9]=O);let k=!!p,A;t[10]!==D||t[11]!==O||t[12]!==k?(A={queryKey:D,queryFn:O,enabled:k},t[10]=D,t[11]=O,t[12]=k,t[13]=A):A=t[13];let j=f(A),M,B,V,H,U,re,q,J,Y,X,Z,Q,oe;if(t[14]!==_||t[15]!==s||t[16]!==o||t[17]!==n||t[18]!==r||t[19]!==j.data||t[20]!==j.error||t[21]!==j.isError||t[22]!==j.isFetching||t[23]!==p||t[24]!==h||t[25]!==a||t[26]!==E){let e=(j.data?.quants??[]).map(ae),l=h?ne[h]??h:null,u;t[40]!==p||t[41]!==h||t[42]!==a||t[43]!==l?(u=l&&p?ee(p,l,a[h]):null,t[40]=p,t[41]=h,t[42]=a,t[43]=l,t[44]=u):u=t[44],V=u;let f;t[45]!==_||t[46]!==o||t[47]!==r||t[48]!==p||t[49]!==h?(f=function(){p&&_&&!y.current&&(y.current=!0,o.mutate({repo:p,quant:_.quant,rolle:h||null},{onSuccess:e=>{v(null),e.ok!==!1&&r()},onError:()=>v(null),onSettled:()=>{y.current=!1}}))},t[45]=_,t[46]=o,t[47]=r,t[48]=p,t[49]=h,t[50]=f):f=t[50],H=f,B=R,Z=n,t[51]===r?Q=t[52]:(Q=e=>!e&&r(),t[51]=r,t[52]=Q),M=I,q=`right`,J=`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,K.jsxs)(F,{children:[(0,K.jsx)(P,{className:`schild text-lg`,children:`Modelle selbst suchen`}),(0,K.jsx)(L,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=Y):Y=t[53];let b;t[54]===s?b=t[55]:(b=e=>{e.preventDefault(),m(null),d(s.trim())},t[54]=s,t[55]=b);let x;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,K.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=x):x=t[56];let S;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>c(e.target.value),t[57]=S):S=t[57];let C;t[58]===s?C=t[59]:(C=(0,K.jsx)(`input`,{id:`hf-suche`,value:s,onChange:S,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),t[58]=s,t[59]=C);let w;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,K.jsx)(N,{type:`submit`,children:`Suchen`}),t[60]=w):w=t[60],t[61]!==b||t[62]!==C?(X=(0,K.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:b,children:[x,C,w]}),t[61]=b,t[62]=C,t[63]=X):X=t[63],oe=`flex flex-col px-4 pb-4`,t[64]!==p||t[65]!==E?(U=!p&&(0,K.jsxs)(K.Fragment,{children:[E.isFetching&&(0,K.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!E.isFetching&&E.isError&&(0,K.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,E.error.message]}),!E.isFetching&&E.data?.results.length===0&&(0,K.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),E.data?.results.map(e=>(0,K.jsxs)(`button`,{type:`button`,onClick:()=>m(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-linie py-2 text-left hover:text-cyan`,children:[(0,K.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,K.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[i(e.downloads),` ↓`]})]},e.repo))]}),t[64]=p,t[65]=E,t[66]=U):U=t[66],re=p&&(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:p}),(0,K.jsx)(N,{variant:`ghost`,size:`sm`,onClick:()=>m(null),children:`Zurück`})]}),(0,K.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,K.jsxs)(`select`,{value:h,onChange:e=>g(e.target.value),className:`h-11 min-w-0 rounded-lg border border-linie-stark bg-erhaben px-3 text-foreground`,children:[(0,K.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(ne).map(ie)]})]}),V&&(0,K.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:V}),j.isFetching&&(0,K.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!j.isFetching&&j.isError&&(0,K.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,j.error.message]}),!j.isFetching&&j.data&&e.length===0&&(0,K.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2`,children:[(0,K.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,K.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,K.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:T(n,1)}):null,(0,K.jsx)(N,{variant:`outline`,size:`sm`,disabled:o.isPending,onClick:()=>v({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=_,t[15]=s,t[16]=o,t[17]=n,t[18]=r,t[19]=j.data,t[20]=j.error,t[21]=j.isError,t[22]=j.isFetching,t[23]=p,t[24]=h,t[25]=a,t[26]=E,t[27]=M,t[28]=B,t[29]=V,t[30]=H,t[31]=U,t[32]=re,t[33]=q,t[34]=J,t[35]=Y,t[36]=X,t[37]=Z,t[38]=Q,t[39]=oe}else M=t[27],B=t[28],V=t[29],H=t[30],U=t[31],re=t[32],q=t[33],J=t[34],Y=t[35],X=t[36],Z=t[37],Q=t[38],oe=t[39];let se;t[67]!==U||t[68]!==re||t[69]!==oe?(se=(0,K.jsxs)(`div`,{className:oe,children:[U,re]}),t[67]=U,t[68]=re,t[69]=oe,t[70]=se):se=t[70];let ce=_!==null,le;t[71]!==_||t[72]!==p?(le=_&&p?`${p} (${_.quant}${_.bytes?`, ${T(_.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(_.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=_,t[72]=p,t[73]=le):le=t[73];let ue=o.isPending?`Wird gestartet …`:`Installieren`,de=o.isPending,fe;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(fe=()=>v(null),t[74]=fe):fe=t[74];let pe;t[75]===V?pe=t[76]:(pe=V&&(0,K.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:V}),t[75]=V,t[76]=pe);let me=!!h,he;t[77]===me?he=t[78]:(he=te(me),t[77]=me,t[78]=he);let $;t[79]===he?$=t[80]:($=(0,K.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:he}),t[79]=he,t[80]=$);let ge;t[81]!==o.isPending||t[82]!==H||t[83]!==ce||t[84]!==le||t[85]!==ue||t[86]!==pe||t[87]!==$?(ge=(0,K.jsxs)(z,{offen:ce,titel:`Modell installieren?`,text:le,knopf:ue,gesperrt:de,onNein:fe,onJa:H,children:[pe,$]}),t[81]=o.isPending,t[82]=H,t[83]=ce,t[84]=le,t[85]=ue,t[86]=pe,t[87]=$,t[88]=ge):ge=t[88];let _e;t[89]!==M||t[90]!==q||t[91]!==J||t[92]!==Y||t[93]!==X||t[94]!==se||t[95]!==ge?(_e=(0,K.jsxs)(M,{side:q,className:J,children:[Y,X,se,ge]}),t[89]=M,t[90]=q,t[91]=J,t[92]=Y,t[93]=X,t[94]=se,t[95]=ge,t[96]=_e):_e=t[96];let ve;return t[97]!==B||t[98]!==Z||t[99]!==Q||t[100]!==_e?(ve=(0,K.jsx)(B,{open:Z,onOpenChange:Q,children:_e}),t[97]=B,t[98]=Z,t[99]=Q,t[100]=_e,t[101]=ve):ve=t[101],ve}function ie(e){let[t,n]=e;return(0,K.jsx)(`option`,{value:t,children:n},t)}function ae(e){return typeof e==`string`?{quant:e}:e}var q=115;function J(e){let t=(0,W.c)(55),{modelle:n,laufend:r}=e,i=m(),a=p(),o,s,c,l,d,f,h,g,_,v;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=u(i?.ram_total??a.data?.box.ram_total)??122.7,p=u(i?.ram_used??a.data?.box.ram_used)??0,m;t[15]===r?m=t[16]:(m=e=>r.includes(e.name),t[15]=r,t[16]=m);let y=n.filter(m).reduce(Y,0);s=Math.max(0,p-y);let b=t=>`${Math.min(100,t/e*100)}%`;o=A,g=`Speicher`,_=(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(p),` von `,Math.round(e),` GB belegt · Grenze ~`,q,` GB`]});let x=`Speicher: ${Math.round(p)} von ${Math.round(e)} GB belegt`,S=b(p),C;t[17]===S?C=t[18]:(C={width:S},t[17]=S,t[18]=C);let w=`${p?y/p*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,K.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${p?s/p*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,K.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:E}}),t[21]=E,t[22]=D);let O;t[23]!==C||t[24]!==T||t[25]!==D?(O=(0,K.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:C,children:[T,D]}),t[23]=C,t[24]=T,t[25]=D,t[26]=O):O=t[26];let k=b(q),j;t[27]===k?j=t[28]:(j=(0,K.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:k}}),t[27]=k,t[28]=j),t[29]!==x||t[30]!==O||t[31]!==j?(v=(0,K.jsxs)(`div`,{className:`relative h-8 rounded-lg bg-erhaben`,role:`img`,"aria-label":x,children:[O,j]}),t[29]=x,t[30]=O,t[31]=j,t[32]=v):v=t[32],h=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,K.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],d=` Geladene Modelle: `,f=Math.round(y),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=d,t[10]=f,t[11]=h,t[12]=g,t[13]=_,t[14]=v}else o=t[5],s=t[6],c=t[7],l=t[8],d=t[9],f=t[10],h=t[11],g=t[12],_=t[13],v=t[14];let y;t[34]!==c||t[35]!==l||t[36]!==d||t[37]!==f?(y=(0,K.jsxs)(`span`,{className:c,children:[l,d,f,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=d,t[37]=f,t[38]=y):y=t[38];let b;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,K.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=b):b=t[39];let x;t[40]===s?x=t[41]:(x=Math.round(s),t[40]=s,t[41]=x);let S;t[42]===x?S=t[43]:(S=(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[b,` Cache, Dienste, System: `,x,` GB`]}),t[42]=x,t[43]=S);let C;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=C):C=t[44];let w;t[45]!==S||t[46]!==h||t[47]!==y?(w=(0,K.jsxs)(`div`,{className:h,children:[y,S,C]}),t[45]=S,t[46]=h,t[47]=y,t[48]=w):w=t[48];let T;return t[49]!==o||t[50]!==w||t[51]!==g||t[52]!==_||t[53]!==v?(T=(0,K.jsxs)(o,{titel:g,rechts:_,children:[v,w]}),t[49]=o,t[50]=w,t[51]=g,t[52]=_,t[53]=v,t[54]=T):T=t[54],T}function Y(e,t){return e+(u(t.size_bytes)??0)}function X(e){let t=(0,W.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,K.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,K.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function Z(e){let t=(0,W.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=O();if(!r){let e;t[0]===n?e=t[1]:(e=(0,K.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,K.jsx)(D,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,K.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,K.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-linie-stark p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision||!!i,d;t[12]===n?d=t[13]:(d=(0,K.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[12]=n,t[13]=d);let f=a?`gruen`:`grau`,p=a?`Geladen`:`Auf Abruf`,m;t[14]!==f||t[15]!==p?(m=(0,K.jsx)(D,{art:f,children:p}),t[14]=f,t[15]=p,t[16]=m):m=t[16];let h;t[17]!==d||t[18]!==m?(h=(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[d,m]}),t[17]=d,t[18]=m,t[19]=h):h=t[19];let g;t[20]===r.name?g=t[21]:(g=(0,K.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=g);let _;t[22]===r.size_bytes?_=t[23]:(_=T(r.size_bytes),t[22]=r.size_bytes,t[23]=_);let v;t[24]===_?v=t[25]:(v=(0,K.jsx)(X,{name:`Größe`,wert:_}),t[24]=_,t[25]=v);let y=l?`${l}k`:`–`,b;t[26]===y?b=t[27]:(b=(0,K.jsx)(X,{name:`Kontext`,wert:y}),t[26]=y,t[27]=b);let x=u?`ja`:`nein`,S;t[28]===x?S=t[29]:(S=(0,K.jsx)(X,{name:`Bilder`,wert:x}),t[28]=x,t[29]=S);let C;t[30]!==b||t[31]!==S||t[32]!==v?(C=(0,K.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[v,b,S]}),t[30]=b,t[31]=S,t[32]=v,t[33]=C):C=t[33];let w=r.spec_active?` Mit Draft-Beschleunigung.`:``,E=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,k;t[34]!==o||t[35]!==w||t[36]!==E?(k=(0,K.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,w,E]}),t[34]=o,t[35]=w,t[36]=E,t[37]=k):k=t[37];let A;t[38]!==s||t[39]!==a||t[40]!==r.name?(A=!a&&(0,K.jsx)(N,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=A):A=t[41];let j;return t[42]!==C||t[43]!==k||t[44]!==A||t[45]!==h||t[46]!==g?(j=(0,K.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-linie bg-panel p-5`,children:[h,g,C,k,A]}),t[42]=C,t[43]=k,t[44]=A,t[45]=h,t[46]=g,t[47]=j):j=t[47],j}function Q(e){let t=(0,W.c)(54),{nutzung:n,laedt:r,fehler:a}=e;if(!n){let e;return t[0]!==a||t[1]!==r?(e=(0,K.jsx)(A,{titel:`Wer nutzt die Modelle`,children:r?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,K.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,a?`: ${a}`:`.`]})}),t[0]=a,t[1]=r,t[2]=e):e=t[2],e}let o;t[3]===n.absender?o=t[4]:(o=Math.max(1,...n.absender.map(le)),t[3]=n.absender,t[4]=o);let s=o,c,l,u,d,f,p,m,h,g,_,v,y;if(t[5]!==s||t[6]!==n.absender||t[7]!==n.letzte_24h||t[8]!==n.tage){let e=n.letzte_24h.map(se),r=Math.max(1,...e);c=A,y=`Wer nutzt die Modelle`,t[21]===n.tage?l=t[22]:(l=(0,K.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`letzte `,n.tage,` Tage`]}),t[21]=n.tage,t[22]=l),t[23]===n.absender.length?u=t[24]:(u=n.absender.length===0&&(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}),t[23]=n.absender.length,t[24]=u);let a;if(t[25]!==s||t[26]!==n.absender){let e;t[28]===s?e=t[29]:(e=e=>(0,K.jsxs)(`li`,{className:`flex flex-col gap-1.5`,children:[(0,K.jsxs)(`div`,{className:`flex justify-between gap-3 text-sm`,children:[(0,K.jsx)(`span`,{children:e.name}),(0,K.jsx)(`span`,{className:`ziffern`,children:i(e.anfragen)})]}),(0,K.jsx)(`div`,{className:`h-2 rounded-full bg-erhaben`,children:(0,K.jsx)(`div`,{className:`h-2 rounded-full bg-cyan`,style:{width:`${e.anfragen/s*100}%`}})})]},e.name),t[28]=s,t[29]=e),a=n.absender.map(e),t[25]=s,t[26]=n.absender,t[27]=a}else a=t[27];t[30]===a?d=t[31]:(d=(0,K.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-3.5 p-0`,children:a}),t[30]=a,t[31]=d),_=`flex flex-col gap-1.5`,t[32]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,K.jsx)(`span`,{className:`schild text-xs text-text-3`,children:`Anfragen je Stunde, letzte 24 h`}),t[32]=v):v=t[32],f=`0 0 240 64`,p=`h-16 w-full`,m=`img`,h=`Anfragen je Stunde in den letzten 24 Stunden`;let o;t[33]===r?o=t[34]:(o=(e,t)=>{let n=e?Math.max(3,e/r*50):2;return(0,K.jsx)(`rect`,{x:t*10+1.5,y:52-n,width:7,height:n,rx:1.5,fill:e?`var(--cyan)`:`var(--linie)`},t)},t[33]=r,t[34]=o),g=e.map(o),t[5]=s,t[6]=n.absender,t[7]=n.letzte_24h,t[8]=n.tage,t[9]=c,t[10]=l,t[11]=u,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=y}else c=t[9],l=t[10],u=t[11],d=t[12],f=t[13],p=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],y=t[20];let b;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(b=[0,6,12,18].map(oe),t[35]=b):b=t[35];let x;t[36]!==f||t[37]!==p||t[38]!==m||t[39]!==h||t[40]!==g?(x=(0,K.jsxs)(`svg`,{viewBox:f,className:p,role:m,"aria-label":h,children:[g,b]}),t[36]=f,t[37]=p,t[38]=m,t[39]=h,t[40]=g,t[41]=x):x=t[41];let S;t[42]!==x||t[43]!==_||t[44]!==v?(S=(0,K.jsxs)(`div`,{className:_,children:[v,x]}),t[42]=x,t[43]=_,t[44]=v,t[45]=S):S=t[45];let C;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,K.jsx)(`p`,{className:`text-xs text-text-3`,children:`Anfragen an llama-swap. NerdQuiz geht direkt dorthin, alles andere über MC2.`}),t[46]=C):C=t[46];let w;return t[47]!==c||t[48]!==l||t[49]!==u||t[50]!==d||t[51]!==S||t[52]!==y?(w=(0,K.jsxs)(c,{titel:y,rechts:l,children:[u,d,S,C]}),t[47]=c,t[48]=l,t[49]=u,t[50]=d,t[51]=S,t[52]=y,t[53]=w):w=t[53],w}function oe(e){return(0,K.jsx)(`text`,{x:e*10+5,y:63,textAnchor:`middle`,style:{fontSize:9,fill:`var(--text-3)`,fontFamily:`var(--font-mono)`},children:e},e)}function se(e){return Object.values(e.je_absender).reduce(ce,0)}function ce(e,t){return e+t}function le(e){return e.anfragen}var ue={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},de={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function fe(e){let t=(0,W.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsxs)(`div`,{role:`row`,className:`schild grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-xs text-text-3`,children:[(0,K.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,K.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,K.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,K.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`rounded-lg border border-linie bg-erhaben/50 px-3 py-2 text-sm`,children:[a,e.map(pe)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function pe(e){let[t,n]=e;return(0,K.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-linie py-1`,children:[(0,K.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,K.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${de[n.urteil??``]??`text-text-2`}`,children:d(n.kandidat,n.einheit)}),(0,K.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:d(n.baseline,n.einheit)})]},t)}function me(e){let t=(0,W.c)(59),{k:n,test:r,heute:i}=e,a=M(),[o,s]=(0,G.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=c):c=t[0];let l=c.includes(n.status),u=n.rolle===`hirn`,d;t[1]===n.name?d=t[2]:(d=(0,K.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=d);let f=u?`fürs Hirn`:`fürs Coden`,p;t[3]===f?p=t[4]:(p=(0,K.jsx)(D,{art:`cyan`,children:f}),t[3]=f,t[4]=p);let m;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(m=n.groesse_gb!=null&&(0,K.jsx)(D,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=m):m=t[8];let h=ue[n.status]??`grau`,g=w[n.status]??n.status,_;t[9]!==h||t[10]!==g?(_=(0,K.jsx)(D,{art:h,children:g}),t[9]=h,t[10]=g,t[11]=_):_=t[11];let v;t[12]!==d||t[13]!==p||t[14]!==m||t[15]!==_?(v=(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[d,p,m,_]}),t[12]=d,t[13]=p,t[14]=m,t[15]=_,t[16]=v):v=t[16];let y;t[17]===n.groesse_gb?y=t[18]:(y=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=y);let b;t[19]!==n.begruendung||t[20]!==y?(b=(0,K.jsxs)(`p`,{className:`text-sm text-text-2`,children:[y,n.begruendung]}),t[19]=n.begruendung,t[20]=y,t[21]=b):b=t[21];let x;t[22]!==n.status||t[23]!==r?(x=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,K.jsx)(fe,{test:r}),t[22]=n.status,t[23]=r,t[24]=x):x=t[24];let S;t[25]!==a.isPending||t[26]!==n.status||t[27]!==l?(S=l&&(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.status===`bestanden`&&(0,K.jsx)(N,{size:`sm`,disabled:a.isPending,onClick:()=>s(`uebernehmen`),children:`Übernehmen`}),(0,K.jsx)(N,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>s(`verwerfen`),children:`Verwerfen`})]}),t[25]=a.isPending,t[26]=n.status,t[27]=l,t[28]=S):S=t[28];let C=o===`uebernehmen`,T=`${n.name} übernehmen?`,E=u?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,O;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(O=()=>s(null),t[29]=O):O=t[29];let k;t[30]!==a||t[31]!==o||t[32]!==n.id||t[33]!==n.name?(k=()=>{o===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),s(null))},t[30]=a,t[31]=o,t[32]=n.id,t[33]=n.name,t[34]=k):k=t[34];let A;t[35]!==a.isPending||t[36]!==C||t[37]!==T||t[38]!==E||t[39]!==k?(A=(0,K.jsx)(z,{offen:C,titel:T,text:E,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:O,onJa:k}),t[35]=a.isPending,t[36]=C,t[37]=T,t[38]=E,t[39]=k,t[40]=A):A=t[40];let j=o===`verwerfen`,P=`${n.name} verwerfen?`,F;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(F=()=>s(null),t[41]=F):F=t[41];let I;t[42]!==a||t[43]!==o||t[44]!==n.id||t[45]!==n.name?(I=()=>{o===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),s(null))},t[42]=a,t[43]=o,t[44]=n.id,t[45]=n.name,t[46]=I):I=t[46];let L;t[47]!==a.isPending||t[48]!==j||t[49]!==P||t[50]!==I?(L=(0,K.jsx)(z,{offen:j,gefahr:!0,titel:P,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:F,onJa:I}),t[47]=a.isPending,t[48]=j,t[49]=P,t[50]=I,t[51]=L):L=t[51];let R;return t[52]!==b||t[53]!==x||t[54]!==S||t[55]!==A||t[56]!==L||t[57]!==v?(R=(0,K.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3.5`,children:[v,b,x,S,A,L]}),t[52]=b,t[53]=x,t[54]=S,t[55]=A,t[56]=L,t[57]=v,t[58]=R):R=t[58],R}function he(e){let t=(0,W.c)(24),{hirn:n,coder:r}=e,i=j(),o=y();if(i.isError&&!i.data){let e=i.error instanceof s&&i.error.status===404,n;return t[0]!==e||t[1]!==i.error?(n=(0,K.jsx)(A,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,K.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[0]=e,t[1]=i.error,t[2]=n):n=t[2],n}let c=i.data,l;t[3]===o?l=t[4]:(l=()=>o.mutate(void 0),t[3]=o,t[4]=l);let u=o.isPending?`Sucht …`:`Jetzt suchen`,d;t[5]!==o.isPending||t[6]!==l||t[7]!==u?(d=(0,K.jsx)(N,{variant:`info`,size:`sm`,onClick:l,disabled:o.isPending,children:u}),t[5]=o.isPending,t[6]=l,t[7]=u,t[8]=d):d=t[8];let f;t[9]===c?f=t[10]:(f=c?.naechster_test?` Nächster Test: ${a(c.naechster_test)}.`:``,t[9]=c,t[10]=f);let p;t[11]===f?p=t[12]:(p=(0,K.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche.`,f]}),t[11]=f,t[12]=p);let m;t[13]!==r||t[14]!==c||t[15]!==n?(m=c?c.kandidaten.length===0?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,K.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:c.kandidaten.map(e=>(0,K.jsx)(me,{k:e,test:c.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[13]=r,t[14]=c,t[15]=n,t[16]=m):m=t[16];let h;t[17]===c?h=t[18]:(h=c&&c.tests.length>0&&(0,K.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,K.jsx)(`h3`,{className:`schild text-xs text-text-3`,children:`Letzte Tests`}),c.tests.slice(0,3).map($)]}),t[17]=c,t[18]=h);let g;return t[19]!==d||t[20]!==p||t[21]!==m||t[22]!==h?(g=(0,K.jsxs)(A,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:d,children:[p,m,h]}),t[19]=d,t[20]=p,t[21]=m,t[22]=h,t[23]=g):g=t[23],g}function $(e){return(0,K.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,K.jsx)(`span`,{className:`ziffern text-text-3`,children:a(e.datum)}),` · `,e.zusammenfassung]},e.id)}function ge(){let e=(0,W.c)(33),t=C(),n=v(),[r,i]=(0,G.useState)(null),a,o,s,c,l;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError){l=Symbol.for(`react.early_return_sentinel`);bb0:{o=t.data?.kandidaten??[];let n=o.reduce(_e,0);if(t.isError&&!t.data){let n;e[8]===t.error.message?n=e[9]:(n=(0,K.jsx)(A,{titel:`Aufräumen`,children:(0,K.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]})}),e[8]=t.error.message,e[9]=n),l=n;break bb0}a=A,s=`Aufräumen`,c=o.length>0?(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,n.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=a,e[4]=o,e[5]=s,e[6]=c,e[7]=l}else a=e[3],o=e[4],s=e[5],c=e[6],l=e[7];if(l!==Symbol.for(`react.early_return_sentinel`))return l;let u;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,K.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[10]=u):u=e[10];let d;e[11]!==o||e[12]!==t.isPending||e[13]!==n.isPending?(d=t.isPending?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):o.length===0?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,K.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:o.map(e=>(0,K.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,K.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,K.jsx)(D,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,K.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,K.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,K.jsx)(N,{variant:`gefahr`,size:`sm`,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))}),e[11]=o,e[12]=t.isPending,e[13]=n.isPending,e[14]=d):d=e[14];let f=r!==null,p=`${r?.name??``} löschen?`,m;e[15]===r?.groesse_gb?m=e[16]:(m=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[15]=r?.groesse_gb,e[16]=m);let h=`${r?.hinweis??``} Es werden ${m} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,g;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>i(null),e[17]=g):g=e[17];let _;e[18]!==r||e[19]!==n?(_=()=>{r&&n.mutate(r),i(null)},e[18]=r,e[19]=n,e[20]=_):_=e[20];let y;e[21]!==n.isPending||e[22]!==_||e[23]!==f||e[24]!==p||e[25]!==h?(y=(0,K.jsx)(z,{offen:f,gefahr:!0,titel:p,text:h,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:g,onJa:_}),e[21]=n.isPending,e[22]=_,e[23]=f,e[24]=p,e[25]=h,e[26]=y):y=e[26];let b;return e[27]!==a||e[28]!==s||e[29]!==c||e[30]!==y||e[31]!==d?(b=(0,K.jsxs)(a,{titel:s,rechts:c,children:[u,d,y]}),e[27]=a,e[28]=s,e[29]=c,e[30]=y,e[31]=d,e[32]=b):b=e[32],b}function _e(e,t){return e+t.groesse_gb}function ve(){let e=(0,W.c)(74),t=E(),n=S(),r=j(),i=x(),[o,s]=(0,G.useState)(!1),c;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={select:Se},e[0]=c):c=e[0];let l=V(c),u=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,d,f;if(e[1]!==u||e[2]!==l?(d=()=>{u&&l===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},f=[u,l],e[1]=u,e[2]=l,e[3]=d,e[4]=f):(d=e[3],f=e[4]),(0,G.useEffect)(d,f),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,K.jsx)(k,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,K.jsx)(k,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let p=t.data.models,m=t.data.running,h,g,_,v,y,b,C,w,D,O,M,P;if(e[8]!==m||e[9]!==p||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=p.find(xe);g=p.find(be);let r;e[25]===p?r=e[26]:(r=(e,t)=>e?p.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[25]=p,e[26]=r);let i=r,o=i(t,`vision`);_=i(g,`coder-bild`);let c=p.filter(e=>![t,g,o,_].includes(e)),l;e[27]===n.data?.zuletzt_geladen?l=e[28]:(l=n.data?.zuletzt_geladen??{},e[27]=n.data?.zuletzt_geladen,e[28]=l);let u=l;e[29]!==m||e[30]!==p?(M=(0,K.jsx)(J,{modelle:p,laufend:m}),e[29]=m,e[30]=p,e[31]=M):M=e[31],e[32]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,K.jsx)(B,{alsPanel:!0}),e[32]=P):P=e[32];let d;e[33]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,K.jsx)(Z,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[33]=d):d=e[33],v=(0,K.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,K.jsx)(Z,{titel:`Hirn`,modell:t,zwilling:o,laeuft:!!t&&m.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,K.jsx)(Z,{titel:`Coder`,modell:g,zwilling:_,laeuft:!!g&&m.includes(g.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),d]});let f=n.error?.message??null,x;e[34]!==n.data||e[35]!==n.isPending||e[36]!==f?(x=(0,K.jsx)(Q,{nutzung:n.data,laedt:n.isPending,fehler:f}),e[34]=n.data,e[35]=n.isPending,e[36]=f,e[37]=x):x=e[37];let S=t?.name,E=g?.name,k;e[38]!==S||e[39]!==E?(k=(0,K.jsx)(he,{hirn:S,coder:E}),e[38]=S,e[39]=E,e[40]=k):k=e[40],e[41]!==x||e[42]!==k?(y=(0,K.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.3fr)]`,children:[x,k]}),e[41]=x,e[42]=k,e[43]=y):y=e[43],h=A,w=`Weitere Einträge`,e[44]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,K.jsxs)(N,{variant:`outline`,size:`sm`,onClick:()=>s(!0),children:[(0,K.jsx)(U,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[44]=D):D=e[44],O=c.length===0&&(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),b=`m-0 flex list-none flex-col p-0`;let j;e[45]!==m||e[46]!==u?(j=e=>(0,K.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-linie py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,K.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,K.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:T(e.size_bytes)}),(0,K.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:m.includes(e.name)?`geladen`:u[e.name]?`zuletzt ${a(u[e.name])}`:`länger nicht geladen`})]},e.name),e[45]=m,e[46]=u,e[47]=j):j=e[47],C=c.map(j),e[8]=m,e[9]=p,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=h,e[14]=g,e[15]=_,e[16]=v,e[17]=y,e[18]=b,e[19]=C,e[20]=w,e[21]=D,e[22]=O,e[23]=M,e[24]=P}else h=e[13],g=e[14],_=e[15],v=e[16],y=e[17],b=e[18],C=e[19],w=e[20],D=e[21],O=e[22],M=e[23],P=e[24];let F;e[48]!==b||e[49]!==C?(F=(0,K.jsx)(`ul`,{className:b,children:C}),e[48]=b,e[49]=C,e[50]=F):F=e[50];let I;e[51]!==h||e[52]!==F||e[53]!==w||e[54]!==D||e[55]!==O?(I=(0,K.jsxs)(h,{titel:w,rechts:D,children:[O,F]}),e[51]=h,e[52]=F,e[53]=w,e[54]=D,e[55]=O,e[56]=I):I=e[56];let L;e[57]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,K.jsx)(ge,{}),e[57]=L):L=e[57];let R;e[58]===Symbol.for(`react.memo_cache_sentinel`)?(R=()=>s(!1),e[58]=R):R=e[58];let z;e[59]!==g||e[60]!==_?(z=g?{name:g.name,zwilling:!!_,weitere:g.aliases.filter(ye)}:void 0,e[59]=g,e[60]=_,e[61]=z):z=e[61];let ee;e[62]===z?ee=e[63]:(ee={coder:z},e[62]=z,e[63]=ee);let te;e[64]!==o||e[65]!==ee?(te=(0,K.jsx)(re,{offen:o,onSchliessen:R,rollenJetzt:ee}),e[64]=o,e[65]=ee,e[66]=te):te=e[66];let H;return e[67]!==v||e[68]!==y||e[69]!==I||e[70]!==te||e[71]!==M||e[72]!==P?(H=(0,K.jsxs)(K.Fragment,{children:[M,P,v,y,I,L,te]}),e[67]=v,e[68]=y,e[69]=I,e[70]=te,e[71]=M,e[72]=P,e[73]=H):H=e[73],H}function ye(e){return e.toLowerCase()!==`coder`}function be(e){return o(e)===`coder`}function xe(e){return o(e)===`hirn`}function Se(e){return e.hash}export{ve as ModelleSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Modelle-Cwc8US6c.js b/frontend/dist/assets/Modelle-Cwc8US6c.js deleted file mode 100644 index df88cfc..0000000 --- a/frontend/dist/assets/Modelle-Cwc8US6c.js +++ /dev/null @@ -1 +0,0 @@ -import{c as e,f as t,o as n,s as r,t as i,u as a}from"./button-Dd8hfusv.js";import{D as o,E as s,F as c,G as l,H as u,M as d,N as f,O as p,P as m,R as h,T as g,U as _,W as v,_ as y,a as b,b as x,c as S,d as C,f as w,g as T,i as E,k as D,m as O,n as k,p as A,r as j,t as M,v as N}from"./index-BpFIVIMn.js";import{a as P,i as F,n as I,r as L,t as R}from"./sheet-DWG2Q04V.js";import{Bestaetigen as z}from"./Bestaetigen-CBdEBtky.js";import{o as B,r as ee,t as te}from"./Auftraege-fchOFtdC.js";function V(e){let t=v();return _(t.stores.location,u(e,t))}var H={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};H.node;var U=n(H),W=r(),G=t(a(),1),K=e(),ne={coder:`Coder`};function re(e){let t=(0,W.c)(102),{offen:n,onSchliessen:r,rollenJetzt:a}=e,s=S(),[u,d]=(0,G.useState)(``),[f,m]=(0,G.useState)(``),[h,g]=(0,G.useState)(null),[_,v]=(0,G.useState)(``),[y,b]=(0,G.useState)(null),x=(0,G.useRef)(!1),C,w;t[0]===f?(C=t[1],w=t[2]):(C=[`hf-suche`,f],w=()=>c(`/api/hf/search?q=${encodeURIComponent(f)}`),t[0]=f,t[1]=C,t[2]=w);let T=f.length>1,E;t[3]!==C||t[4]!==w||t[5]!==T?(E={queryKey:C,queryFn:w,enabled:T},t[3]=C,t[4]=w,t[5]=T,t[6]=E):E=t[6];let D=l(E),O,k;t[7]===h?(O=t[8],k=t[9]):(O=[`hf-quants`,h],k=()=>c(`/api/hf/quants?repo=${encodeURIComponent(h??``)}`),t[7]=h,t[8]=O,t[9]=k);let A=!!h,j;t[10]!==O||t[11]!==k||t[12]!==A?(j={queryKey:O,queryFn:k,enabled:A},t[10]=O,t[11]=k,t[12]=A,t[13]=j):j=t[13];let M=l(j),N,te,V,H,U,re,q,J,Y,X,Z,Q,oe;if(t[14]!==y||t[15]!==u||t[16]!==s||t[17]!==n||t[18]!==r||t[19]!==M.data||t[20]!==M.error||t[21]!==M.isError||t[22]!==M.isFetching||t[23]!==h||t[24]!==_||t[25]!==a||t[26]!==D){let e=(M.data?.quants??[]).map(ae),c=_?ne[_]??_:null,l;t[40]!==h||t[41]!==_||t[42]!==a||t[43]!==c?(l=c&&h?B(h,c,a[_]):null,t[40]=h,t[41]=_,t[42]=a,t[43]=c,t[44]=l):l=t[44],V=l;let f;t[45]!==y||t[46]!==s||t[47]!==r||t[48]!==h||t[49]!==_?(f=function(){h&&y&&!x.current&&(x.current=!0,s.mutate({repo:h,quant:y.quant,rolle:_||null},{onSuccess:e=>{b(null),e.ok!==!1&&r()},onError:()=>b(null),onSettled:()=>{x.current=!1}}))},t[45]=y,t[46]=s,t[47]=r,t[48]=h,t[49]=_,t[50]=f):f=t[50],H=f,te=R,Z=n,t[51]===r?Q=t[52]:(Q=e=>!e&&r(),t[51]=r,t[52]=Q),N=I,q=`right`,J=`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,K.jsxs)(F,{children:[(0,K.jsx)(P,{className:`schild text-lg`,children:`Modelle selbst suchen`}),(0,K.jsx)(L,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=Y):Y=t[53];let S;t[54]===u?S=t[55]:(S=e=>{e.preventDefault(),g(null),m(u.trim())},t[54]=u,t[55]=S);let C;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,K.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=C):C=t[56];let w;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(w=e=>d(e.target.value),t[57]=w):w=t[57];let T;t[58]===u?T=t[59]:(T=(0,K.jsx)(`input`,{id:`hf-suche`,value:u,onChange:w,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),t[58]=u,t[59]=T);let E;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,K.jsx)(i,{type:`submit`,children:`Suchen`}),t[60]=E):E=t[60],t[61]!==S||t[62]!==T?(X=(0,K.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:S,children:[C,T,E]}),t[61]=S,t[62]=T,t[63]=X):X=t[63],oe=`flex flex-col px-4 pb-4`,t[64]!==h||t[65]!==D?(U=!h&&(0,K.jsxs)(K.Fragment,{children:[D.isFetching&&(0,K.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!D.isFetching&&D.isError&&(0,K.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,D.error.message]}),!D.isFetching&&D.data?.results.length===0&&(0,K.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),D.data?.results.map(e=>(0,K.jsxs)(`button`,{type:`button`,onClick:()=>g(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-linie py-2 text-left hover:text-cyan`,children:[(0,K.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,K.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[p(e.downloads),` ↓`]})]},e.repo))]}),t[64]=h,t[65]=D,t[66]=U):U=t[66],re=h&&(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:h}),(0,K.jsx)(i,{variant:`ghost`,size:`sm`,onClick:()=>g(null),children:`Zurück`})]}),(0,K.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,K.jsxs)(`select`,{value:_,onChange:e=>v(e.target.value),className:`h-11 min-w-0 rounded-lg border border-linie-stark bg-erhaben px-3 text-foreground`,children:[(0,K.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(ne).map(ie)]})]}),V&&(0,K.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:V}),M.isFetching&&(0,K.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!M.isFetching&&M.isError&&(0,K.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,M.error.message]}),!M.isFetching&&M.data&&e.length===0&&(0,K.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2`,children:[(0,K.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,K.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,K.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:o(n,1)}):null,(0,K.jsx)(i,{variant:`outline`,size:`sm`,disabled:s.isPending,onClick:()=>b({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=y,t[15]=u,t[16]=s,t[17]=n,t[18]=r,t[19]=M.data,t[20]=M.error,t[21]=M.isError,t[22]=M.isFetching,t[23]=h,t[24]=_,t[25]=a,t[26]=D,t[27]=N,t[28]=te,t[29]=V,t[30]=H,t[31]=U,t[32]=re,t[33]=q,t[34]=J,t[35]=Y,t[36]=X,t[37]=Z,t[38]=Q,t[39]=oe}else N=t[27],te=t[28],V=t[29],H=t[30],U=t[31],re=t[32],q=t[33],J=t[34],Y=t[35],X=t[36],Z=t[37],Q=t[38],oe=t[39];let se;t[67]!==U||t[68]!==re||t[69]!==oe?(se=(0,K.jsxs)(`div`,{className:oe,children:[U,re]}),t[67]=U,t[68]=re,t[69]=oe,t[70]=se):se=t[70];let ce=y!==null,le;t[71]!==y||t[72]!==h?(le=y&&h?`${h} (${y.quant}${y.bytes?`, ${o(y.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(y.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=y,t[72]=h,t[73]=le):le=t[73];let ue=s.isPending?`Wird gestartet …`:`Installieren`,de=s.isPending,fe;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(fe=()=>b(null),t[74]=fe):fe=t[74];let pe;t[75]===V?pe=t[76]:(pe=V&&(0,K.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:V}),t[75]=V,t[76]=pe);let me=!!_,he;t[77]===me?he=t[78]:(he=ee(me),t[77]=me,t[78]=he);let ge;t[79]===he?ge=t[80]:(ge=(0,K.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:he}),t[79]=he,t[80]=ge);let $;t[81]!==s.isPending||t[82]!==H||t[83]!==ce||t[84]!==le||t[85]!==ue||t[86]!==pe||t[87]!==ge?($=(0,K.jsxs)(z,{offen:ce,titel:`Modell installieren?`,text:le,knopf:ue,gesperrt:de,onNein:fe,onJa:H,children:[pe,ge]}),t[81]=s.isPending,t[82]=H,t[83]=ce,t[84]=le,t[85]=ue,t[86]=pe,t[87]=ge,t[88]=$):$=t[88];let _e;t[89]!==N||t[90]!==q||t[91]!==J||t[92]!==Y||t[93]!==X||t[94]!==se||t[95]!==$?(_e=(0,K.jsxs)(N,{side:q,className:J,children:[Y,X,se,$]}),t[89]=N,t[90]=q,t[91]=J,t[92]=Y,t[93]=X,t[94]=se,t[95]=$,t[96]=_e):_e=t[96];let ve;return t[97]!==te||t[98]!==Z||t[99]!==Q||t[100]!==_e?(ve=(0,K.jsx)(te,{open:Z,onOpenChange:Q,children:_e}),t[97]=te,t[98]=Z,t[99]=Q,t[100]=_e,t[101]=ve):ve=t[101],ve}function ie(e){let[t,n]=e;return(0,K.jsx)(`option`,{value:t,children:n},t)}function ae(e){return typeof e==`string`?{quant:e}:e}var q=115;function J(e){let t=(0,W.c)(55),{modelle:n,laufend:r}=e,i=h(),a=x(),o,c,l,u,d,f,p,m,g,_;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=s(i?.ram_total??a.data?.box.ram_total)??122.7,h=s(i?.ram_used??a.data?.box.ram_used)??0,v;t[15]===r?v=t[16]:(v=e=>r.includes(e.name),t[15]=r,t[16]=v);let y=n.filter(v).reduce(Y,0);c=Math.max(0,h-y);let b=t=>`${Math.min(100,t/e*100)}%`;o=M,m=`Speicher`,g=(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(h),` von `,Math.round(e),` GB belegt · Grenze ~`,q,` GB`]});let x=`Speicher: ${Math.round(h)} von ${Math.round(e)} GB belegt`,S=b(h),C;t[17]===S?C=t[18]:(C={width:S},t[17]=S,t[18]=C);let w=`${h?y/h*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,K.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${h?c/h*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,K.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:E}}),t[21]=E,t[22]=D);let O;t[23]!==C||t[24]!==T||t[25]!==D?(O=(0,K.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:C,children:[T,D]}),t[23]=C,t[24]=T,t[25]=D,t[26]=O):O=t[26];let k=b(q),A;t[27]===k?A=t[28]:(A=(0,K.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:k}}),t[27]=k,t[28]=A),t[29]!==x||t[30]!==O||t[31]!==A?(_=(0,K.jsxs)(`div`,{className:`relative h-8 rounded-lg bg-erhaben`,role:`img`,"aria-label":x,children:[O,A]}),t[29]=x,t[30]=O,t[31]=A,t[32]=_):_=t[32],p=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,l=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,K.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=u):u=t[33],d=` Geladene Modelle: `,f=Math.round(y),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f,t[11]=p,t[12]=m,t[13]=g,t[14]=_}else o=t[5],c=t[6],l=t[7],u=t[8],d=t[9],f=t[10],p=t[11],m=t[12],g=t[13],_=t[14];let v;t[34]!==l||t[35]!==u||t[36]!==d||t[37]!==f?(v=(0,K.jsxs)(`span`,{className:l,children:[u,d,f,` GB Dateien`]}),t[34]=l,t[35]=u,t[36]=d,t[37]=f,t[38]=v):v=t[38];let y;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,K.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=y):y=t[39];let b;t[40]===c?b=t[41]:(b=Math.round(c),t[40]=c,t[41]=b);let S;t[42]===b?S=t[43]:(S=(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[y,` Cache, Dienste, System: `,b,` GB`]}),t[42]=b,t[43]=S);let C;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=C):C=t[44];let w;t[45]!==S||t[46]!==p||t[47]!==v?(w=(0,K.jsxs)(`div`,{className:p,children:[v,S,C]}),t[45]=S,t[46]=p,t[47]=v,t[48]=w):w=t[48];let T;return t[49]!==o||t[50]!==w||t[51]!==m||t[52]!==g||t[53]!==_?(T=(0,K.jsxs)(o,{titel:m,rechts:g,children:[_,w]}),t[49]=o,t[50]=w,t[51]=m,t[52]=g,t[53]=_,t[54]=T):T=t[54],T}function Y(e,t){return e+(s(t.size_bytes)??0)}function X(e){let t=(0,W.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,K.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,K.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function Z(e){let t=(0,W.c)(48),{titel:n,modell:r,zwilling:a,laeuft:s,nutzer:c}=e,l=w();if(!r){let e;t[0]===n?e=t[1]:(e=(0,K.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,K.jsx)(k,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,K.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,K.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-linie-stark p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let u;t[9]!==r.ctx||t[10]!==r.parallel_slots?(u=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=u):u=t[11];let d=u,f=!!r.capabilities?.vision||!!a,p;t[12]===n?p=t[13]:(p=(0,K.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[12]=n,t[13]=p);let m=s?`gruen`:`grau`,h=s?`Geladen`:`Auf Abruf`,g;t[14]!==m||t[15]!==h?(g=(0,K.jsx)(k,{art:m,children:h}),t[14]=m,t[15]=h,t[16]=g):g=t[16];let _;t[17]!==p||t[18]!==g?(_=(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[p,g]}),t[17]=p,t[18]=g,t[19]=_):_=t[19];let v;t[20]===r.name?v=t[21]:(v=(0,K.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=v);let y;t[22]===r.size_bytes?y=t[23]:(y=o(r.size_bytes),t[22]=r.size_bytes,t[23]=y);let b;t[24]===y?b=t[25]:(b=(0,K.jsx)(X,{name:`Größe`,wert:y}),t[24]=y,t[25]=b);let x=d?`${d}k`:`–`,S;t[26]===x?S=t[27]:(S=(0,K.jsx)(X,{name:`Kontext`,wert:x}),t[26]=x,t[27]=S);let C=f?`ja`:`nein`,T;t[28]===C?T=t[29]:(T=(0,K.jsx)(X,{name:`Bilder`,wert:C}),t[28]=C,t[29]=T);let E;t[30]!==S||t[31]!==T||t[32]!==b?(E=(0,K.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[b,S,T]}),t[30]=S,t[31]=T,t[32]=b,t[33]=E):E=t[33];let D=r.spec_active?` Mit Draft-Beschleunigung.`:``,O=a?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,A;t[34]!==c||t[35]!==D||t[36]!==O?(A=(0,K.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,c,`.`,D,O]}),t[34]=c,t[35]=D,t[36]=O,t[37]=A):A=t[37];let j;t[38]!==l||t[39]!==s||t[40]!==r.name?(j=!s&&(0,K.jsx)(i,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>l.mutate(r.name),disabled:l.isPending,children:`Jetzt laden`}),t[38]=l,t[39]=s,t[40]=r.name,t[41]=j):j=t[41];let M;return t[42]!==E||t[43]!==A||t[44]!==j||t[45]!==_||t[46]!==v?(M=(0,K.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-linie bg-panel p-5`,children:[_,v,E,A,j]}),t[42]=E,t[43]=A,t[44]=j,t[45]=_,t[46]=v,t[47]=M):M=t[47],M}function Q(e){let t=(0,W.c)(54),{nutzung:n,laedt:r,fehler:i}=e;if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,K.jsx)(M,{titel:`Wer nutzt die Modelle`,children:r?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,K.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let a;t[3]===n.absender?a=t[4]:(a=Math.max(1,...n.absender.map(le)),t[3]=n.absender,t[4]=a);let o=a,s,c,l,u,d,f,m,h,g,_,v,y;if(t[5]!==o||t[6]!==n.absender||t[7]!==n.letzte_24h||t[8]!==n.tage){let e=n.letzte_24h.map(se),r=Math.max(1,...e);s=M,y=`Wer nutzt die Modelle`,t[21]===n.tage?c=t[22]:(c=(0,K.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`letzte `,n.tage,` Tage`]}),t[21]=n.tage,t[22]=c),t[23]===n.absender.length?l=t[24]:(l=n.absender.length===0&&(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}),t[23]=n.absender.length,t[24]=l);let i;if(t[25]!==o||t[26]!==n.absender){let e;t[28]===o?e=t[29]:(e=e=>(0,K.jsxs)(`li`,{className:`flex flex-col gap-1.5`,children:[(0,K.jsxs)(`div`,{className:`flex justify-between gap-3 text-sm`,children:[(0,K.jsx)(`span`,{children:e.name}),(0,K.jsx)(`span`,{className:`ziffern`,children:p(e.anfragen)})]}),(0,K.jsx)(`div`,{className:`h-2 rounded-full bg-erhaben`,children:(0,K.jsx)(`div`,{className:`h-2 rounded-full bg-cyan`,style:{width:`${e.anfragen/o*100}%`}})})]},e.name),t[28]=o,t[29]=e),i=n.absender.map(e),t[25]=o,t[26]=n.absender,t[27]=i}else i=t[27];t[30]===i?u=t[31]:(u=(0,K.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-3.5 p-0`,children:i}),t[30]=i,t[31]=u),_=`flex flex-col gap-1.5`,t[32]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,K.jsx)(`span`,{className:`schild text-xs text-text-3`,children:`Anfragen je Stunde, letzte 24 h`}),t[32]=v):v=t[32],d=`0 0 240 64`,f=`h-16 w-full`,m=`img`,h=`Anfragen je Stunde in den letzten 24 Stunden`;let a;t[33]===r?a=t[34]:(a=(e,t)=>{let n=e?Math.max(3,e/r*50):2;return(0,K.jsx)(`rect`,{x:t*10+1.5,y:52-n,width:7,height:n,rx:1.5,fill:e?`var(--cyan)`:`var(--linie)`},t)},t[33]=r,t[34]=a),g=e.map(a),t[5]=o,t[6]=n.absender,t[7]=n.letzte_24h,t[8]=n.tage,t[9]=s,t[10]=c,t[11]=l,t[12]=u,t[13]=d,t[14]=f,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=y}else s=t[9],c=t[10],l=t[11],u=t[12],d=t[13],f=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],y=t[20];let b;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(b=[0,6,12,18].map(oe),t[35]=b):b=t[35];let x;t[36]!==d||t[37]!==f||t[38]!==m||t[39]!==h||t[40]!==g?(x=(0,K.jsxs)(`svg`,{viewBox:d,className:f,role:m,"aria-label":h,children:[g,b]}),t[36]=d,t[37]=f,t[38]=m,t[39]=h,t[40]=g,t[41]=x):x=t[41];let S;t[42]!==x||t[43]!==_||t[44]!==v?(S=(0,K.jsxs)(`div`,{className:_,children:[v,x]}),t[42]=x,t[43]=_,t[44]=v,t[45]=S):S=t[45];let C;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,K.jsx)(`p`,{className:`text-xs text-text-3`,children:`Anfragen an llama-swap. NerdQuiz geht direkt dorthin, alles andere über MC2.`}),t[46]=C):C=t[46];let w;return t[47]!==s||t[48]!==c||t[49]!==l||t[50]!==u||t[51]!==S||t[52]!==y?(w=(0,K.jsxs)(s,{titel:y,rechts:c,children:[l,u,S,C]}),t[47]=s,t[48]=c,t[49]=l,t[50]=u,t[51]=S,t[52]=y,t[53]=w):w=t[53],w}function oe(e){return(0,K.jsx)(`text`,{x:e*10+5,y:63,textAnchor:`middle`,style:{fontSize:9,fill:`var(--text-3)`,fontFamily:`var(--font-mono)`},children:e},e)}function se(e){return Object.values(e.je_absender).reduce(ce,0)}function ce(e,t){return e+t}function le(e){return e.anfragen}var ue={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},de={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function fe(e){let t=(0,W.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsxs)(`div`,{role:`row`,className:`schild grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-xs text-text-3`,children:[(0,K.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,K.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,K.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,K.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`rounded-lg border border-linie bg-erhaben/50 px-3 py-2 text-sm`,children:[a,e.map(pe)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function pe(e){let[t,n]=e;return(0,K.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-linie py-1`,children:[(0,K.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,K.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${de[n.urteil??``]??`text-text-2`}`,children:d(n.kandidat,n.einheit)}),(0,K.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:d(n.baseline,n.einheit)})]},t)}function me(e){let t=(0,W.c)(59),{k:n,test:r,heute:a}=e,o=y(),[s,c]=(0,G.useState)(null),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=l):l=t[0];let u=l.includes(n.status),d=n.rolle===`hirn`,f;t[1]===n.name?f=t[2]:(f=(0,K.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=f);let p=d?`fürs Hirn`:`fürs Coden`,m;t[3]===p?m=t[4]:(m=(0,K.jsx)(k,{art:`cyan`,children:p}),t[3]=p,t[4]=m);let h;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(h=n.groesse_gb!=null&&(0,K.jsx)(k,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=h):h=t[8];let g=ue[n.status]??`grau`,_=D[n.status]??n.status,v;t[9]!==g||t[10]!==_?(v=(0,K.jsx)(k,{art:g,children:_}),t[9]=g,t[10]=_,t[11]=v):v=t[11];let b;t[12]!==f||t[13]!==m||t[14]!==h||t[15]!==v?(b=(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[f,m,h,v]}),t[12]=f,t[13]=m,t[14]=h,t[15]=v,t[16]=b):b=t[16];let x;t[17]===n.groesse_gb?x=t[18]:(x=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=x);let S;t[19]!==n.begruendung||t[20]!==x?(S=(0,K.jsxs)(`p`,{className:`text-sm text-text-2`,children:[x,n.begruendung]}),t[19]=n.begruendung,t[20]=x,t[21]=S):S=t[21];let C;t[22]!==n.status||t[23]!==r?(C=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,K.jsx)(fe,{test:r}),t[22]=n.status,t[23]=r,t[24]=C):C=t[24];let w;t[25]!==o.isPending||t[26]!==n.status||t[27]!==u?(w=u&&(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.status===`bestanden`&&(0,K.jsx)(i,{size:`sm`,disabled:o.isPending,onClick:()=>c(`uebernehmen`),children:`Übernehmen`}),(0,K.jsx)(i,{variant:`outline`,size:`sm`,disabled:o.isPending,onClick:()=>c(`verwerfen`),children:`Verwerfen`})]}),t[25]=o.isPending,t[26]=n.status,t[27]=u,t[28]=w):w=t[28];let T=s===`uebernehmen`,E=`${n.name} übernehmen?`,O=d?`${n.name} wird Lucys Hirn${a?` und löst ${a} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${a?` und löst ${a} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,A;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(A=()=>c(null),t[29]=A):A=t[29];let j;t[30]!==o||t[31]!==s||t[32]!==n.id||t[33]!==n.name?(j=()=>{s===`uebernehmen`&&(o.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),c(null))},t[30]=o,t[31]=s,t[32]=n.id,t[33]=n.name,t[34]=j):j=t[34];let M;t[35]!==o.isPending||t[36]!==T||t[37]!==E||t[38]!==O||t[39]!==j?(M=(0,K.jsx)(z,{offen:T,titel:E,text:O,knopf:`Übernehmen`,gesperrt:o.isPending,onNein:A,onJa:j}),t[35]=o.isPending,t[36]=T,t[37]=E,t[38]=O,t[39]=j,t[40]=M):M=t[40];let N=s===`verwerfen`,P=`${n.name} verwerfen?`,F;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(F=()=>c(null),t[41]=F):F=t[41];let I;t[42]!==o||t[43]!==s||t[44]!==n.id||t[45]!==n.name?(I=()=>{s===`verwerfen`&&(o.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),c(null))},t[42]=o,t[43]=s,t[44]=n.id,t[45]=n.name,t[46]=I):I=t[46];let L;t[47]!==o.isPending||t[48]!==N||t[49]!==P||t[50]!==I?(L=(0,K.jsx)(z,{offen:N,gefahr:!0,titel:P,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:o.isPending,onNein:F,onJa:I}),t[47]=o.isPending,t[48]=N,t[49]=P,t[50]=I,t[51]=L):L=t[51];let R;return t[52]!==S||t[53]!==C||t[54]!==w||t[55]!==M||t[56]!==L||t[57]!==b?(R=(0,K.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3.5`,children:[b,S,C,w,M,L]}),t[52]=S,t[53]=C,t[54]=w,t[55]=M,t[56]=L,t[57]=b,t[58]=R):R=t[58],R}function he(e){let t=(0,W.c)(24),{hirn:n,coder:r}=e,a=T(),o=N();if(a.isError&&!a.data){let e=a.error instanceof m&&a.error.status===404,n;return t[0]!==e||t[1]!==a.error?(n=(0,K.jsx)(M,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,K.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,a.error.message]})}),t[0]=e,t[1]=a.error,t[2]=n):n=t[2],n}let s=a.data,c;t[3]===o?c=t[4]:(c=()=>o.mutate(void 0),t[3]=o,t[4]=c);let l=o.isPending?`Sucht …`:`Jetzt suchen`,u;t[5]!==o.isPending||t[6]!==c||t[7]!==l?(u=(0,K.jsx)(i,{variant:`info`,size:`sm`,onClick:c,disabled:o.isPending,children:l}),t[5]=o.isPending,t[6]=c,t[7]=l,t[8]=u):u=t[8];let d;t[9]===s?d=t[10]:(d=s?.naechster_test?` Nächster Test: ${g(s.naechster_test)}.`:``,t[9]=s,t[10]=d);let f;t[11]===d?f=t[12]:(f=(0,K.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche.`,d]}),t[11]=d,t[12]=f);let p;t[13]!==r||t[14]!==s||t[15]!==n?(p=s?s.kandidaten.length===0?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,K.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:s.kandidaten.map(e=>(0,K.jsx)(me,{k:e,test:s.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[13]=r,t[14]=s,t[15]=n,t[16]=p):p=t[16];let h;t[17]===s?h=t[18]:(h=s&&s.tests.length>0&&(0,K.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,K.jsx)(`h3`,{className:`schild text-xs text-text-3`,children:`Letzte Tests`}),s.tests.slice(0,3).map(ge)]}),t[17]=s,t[18]=h);let _;return t[19]!==u||t[20]!==f||t[21]!==p||t[22]!==h?(_=(0,K.jsxs)(M,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:u,children:[f,p,h]}),t[19]=u,t[20]=f,t[21]=p,t[22]=h,t[23]=_):_=t[23],_}function ge(e){return(0,K.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,K.jsx)(`span`,{className:`ziffern text-text-3`,children:g(e.datum)}),` · `,e.zusammenfassung]},e.id)}function $(){let e=(0,W.c)(33),t=E(),n=b(),[r,a]=(0,G.useState)(null),o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError){u=Symbol.for(`react.early_return_sentinel`);bb0:{s=t.data?.kandidaten??[];let n=s.reduce(_e,0);if(t.isError&&!t.data){let n;e[8]===t.error.message?n=e[9]:(n=(0,K.jsx)(M,{titel:`Aufräumen`,children:(0,K.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]})}),e[8]=t.error.message,e[9]=n),u=n;break bb0}o=M,c=`Aufräumen`,l=s.length>0?(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,n.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=o,e[4]=s,e[5]=c,e[6]=l,e[7]=u}else o=e[3],s=e[4],c=e[5],l=e[6],u=e[7];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,K.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[10]=d):d=e[10];let f;e[11]!==s||e[12]!==t.isPending||e[13]!==n.isPending?(f=t.isPending?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):s.length===0?(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,K.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:s.map(e=>(0,K.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,K.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,K.jsx)(k,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,K.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,K.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,K.jsx)(i,{variant:`gefahr`,size:`sm`,disabled:n.isPending,onClick:()=>a(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))}),e[11]=s,e[12]=t.isPending,e[13]=n.isPending,e[14]=f):f=e[14];let p=r!==null,m=`${r?.name??``} löschen?`,h;e[15]===r?.groesse_gb?h=e[16]:(h=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[15]=r?.groesse_gb,e[16]=h);let g=`${r?.hinweis??``} Es werden ${h} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,_;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>a(null),e[17]=_):_=e[17];let v;e[18]!==r||e[19]!==n?(v=()=>{r&&n.mutate(r),a(null)},e[18]=r,e[19]=n,e[20]=v):v=e[20];let y;e[21]!==n.isPending||e[22]!==v||e[23]!==p||e[24]!==m||e[25]!==g?(y=(0,K.jsx)(z,{offen:p,gefahr:!0,titel:m,text:g,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:_,onJa:v}),e[21]=n.isPending,e[22]=v,e[23]=p,e[24]=m,e[25]=g,e[26]=y):y=e[26];let x;return e[27]!==o||e[28]!==c||e[29]!==l||e[30]!==y||e[31]!==f?(x=(0,K.jsxs)(o,{titel:c,rechts:l,children:[d,f,y]}),e[27]=o,e[28]=c,e[29]=l,e[30]=y,e[31]=f,e[32]=x):x=e[32],x}function _e(e,t){return e+t.groesse_gb}function ve(){let e=(0,W.c)(74),t=A(),n=O(),r=T(),a=C(),[s,c]=(0,G.useState)(!1),l;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(l={select:Se},e[0]=l):l=e[0];let u=V(l),d=!!t.data&&!n.isPending&&!r.isPending&&!a.isPending,f,p;if(e[1]!==d||e[2]!==u?(f=()=>{d&&u===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},p=[d,u],e[1]=d,e[2]=u,e[3]=f,e[4]=p):(f=e[3],p=e[4]),(0,G.useEffect)(f,p),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,K.jsx)(j,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,K.jsx)(j,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let m=t.data.models,h=t.data.running,_,v,y,b,x,S,w,E,D,k,N,P;if(e[8]!==h||e[9]!==m||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=m.find(xe);v=m.find(be);let r;e[25]===m?r=e[26]:(r=(e,t)=>e?m.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[25]=m,e[26]=r);let a=r,s=a(t,`vision`);y=a(v,`coder-bild`);let l=m.filter(e=>![t,v,s,y].includes(e)),u;e[27]===n.data?.zuletzt_geladen?u=e[28]:(u=n.data?.zuletzt_geladen??{},e[27]=n.data?.zuletzt_geladen,e[28]=u);let d=u;e[29]!==h||e[30]!==m?(N=(0,K.jsx)(J,{modelle:m,laufend:h}),e[29]=h,e[30]=m,e[31]=N):N=e[31],e[32]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,K.jsx)(te,{alsPanel:!0}),e[32]=P):P=e[32];let f;e[33]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,K.jsx)(Z,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[33]=f):f=e[33],b=(0,K.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,K.jsx)(Z,{titel:`Hirn`,modell:t,zwilling:s,laeuft:!!t&&h.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,K.jsx)(Z,{titel:`Coder`,modell:v,zwilling:y,laeuft:!!v&&h.includes(v.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),f]});let p=n.error?.message??null,C;e[34]!==n.data||e[35]!==n.isPending||e[36]!==p?(C=(0,K.jsx)(Q,{nutzung:n.data,laedt:n.isPending,fehler:p}),e[34]=n.data,e[35]=n.isPending,e[36]=p,e[37]=C):C=e[37];let T=t?.name,O=v?.name,A;e[38]!==T||e[39]!==O?(A=(0,K.jsx)(he,{hirn:T,coder:O}),e[38]=T,e[39]=O,e[40]=A):A=e[40],e[41]!==C||e[42]!==A?(x=(0,K.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.3fr)]`,children:[C,A]}),e[41]=C,e[42]=A,e[43]=x):x=e[43],_=M,E=`Weitere Einträge`,e[44]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,K.jsxs)(i,{variant:`outline`,size:`sm`,onClick:()=>c(!0),children:[(0,K.jsx)(U,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[44]=D):D=e[44],k=l.length===0&&(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),S=`m-0 flex list-none flex-col p-0`;let j;e[45]!==h||e[46]!==d?(j=e=>(0,K.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-linie py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,K.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,K.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:o(e.size_bytes)}),(0,K.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:h.includes(e.name)?`geladen`:d[e.name]?`zuletzt ${g(d[e.name])}`:`länger nicht geladen`})]},e.name),e[45]=h,e[46]=d,e[47]=j):j=e[47],w=l.map(j),e[8]=h,e[9]=m,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=_,e[14]=v,e[15]=y,e[16]=b,e[17]=x,e[18]=S,e[19]=w,e[20]=E,e[21]=D,e[22]=k,e[23]=N,e[24]=P}else _=e[13],v=e[14],y=e[15],b=e[16],x=e[17],S=e[18],w=e[19],E=e[20],D=e[21],k=e[22],N=e[23],P=e[24];let F;e[48]!==S||e[49]!==w?(F=(0,K.jsx)(`ul`,{className:S,children:w}),e[48]=S,e[49]=w,e[50]=F):F=e[50];let I;e[51]!==_||e[52]!==F||e[53]!==E||e[54]!==D||e[55]!==k?(I=(0,K.jsxs)(_,{titel:E,rechts:D,children:[k,F]}),e[51]=_,e[52]=F,e[53]=E,e[54]=D,e[55]=k,e[56]=I):I=e[56];let L;e[57]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,K.jsx)($,{}),e[57]=L):L=e[57];let R;e[58]===Symbol.for(`react.memo_cache_sentinel`)?(R=()=>c(!1),e[58]=R):R=e[58];let z;e[59]!==v||e[60]!==y?(z=v?{name:v.name,zwilling:!!y,weitere:v.aliases.filter(ye)}:void 0,e[59]=v,e[60]=y,e[61]=z):z=e[61];let B;e[62]===z?B=e[63]:(B={coder:z},e[62]=z,e[63]=B);let ee;e[64]!==s||e[65]!==B?(ee=(0,K.jsx)(re,{offen:s,onSchliessen:R,rollenJetzt:B}),e[64]=s,e[65]=B,e[66]=ee):ee=e[66];let H;return e[67]!==b||e[68]!==x||e[69]!==I||e[70]!==ee||e[71]!==N||e[72]!==P?(H=(0,K.jsxs)(K.Fragment,{children:[N,P,b,x,I,L,ee]}),e[67]=b,e[68]=x,e[69]=I,e[70]=ee,e[71]=N,e[72]=P,e[73]=H):H=e[73],H}function ye(e){return e.toLowerCase()!==`coder`}function be(e){return f(e)===`coder`}function xe(e){return f(e)===`hirn`}function Se(e){return e.hash}export{ve as ModelleSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Protokollfenster-BQilNnAU.js b/frontend/dist/assets/Protokollfenster-BQilNnAU.js new file mode 100644 index 0000000..931ad99 --- /dev/null +++ b/frontend/dist/assets/Protokollfenster-BQilNnAU.js @@ -0,0 +1 @@ +import{n as e,r as t}from"./dist-BaE5-hhJ.js";import{a as n,i as r,n as i,r as a,t as o}from"./sheet-iGGgLZLg.js";var s=e(),c=t();function l(e){let t=(0,s.c)(14),{offen:l,titel:u,text:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,c.jsx)(n,{className:`schild text-lg`,children:`Protokoll`}),t[2]=m):m=t[2];let h;t[3]===u?h=t[4]:(h=(0,c.jsxs)(r,{children:[m,(0,c.jsx)(a,{className:`text-text-2`,children:u})]}),t[3]=u,t[4]=h);let g;t[5]===d?g=t[6]:(g=(0,c.jsx)(`pre`,{className:`ziffern mx-4 mb-4 flex-1 overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap text-text-2`,children:d}),t[5]=d,t[6]=g);let _;t[7]!==h||t[8]!==g?(_=(0,c.jsxs)(i,{side:`right`,className:`border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[h,g]}),t[7]=h,t[8]=g,t[9]=_):_=t[9];let v;return t[10]!==l||t[11]!==p||t[12]!==_?(v=(0,c.jsx)(o,{open:l,onOpenChange:p,children:_}),t[10]=l,t[11]=p,t[12]=_,t[13]=v):v=t[13],v}export{l as Protokollfenster}; \ No newline at end of file diff --git a/frontend/dist/assets/Protokollfenster-CzLJzfs0.js b/frontend/dist/assets/Protokollfenster-CzLJzfs0.js deleted file mode 100644 index 2726e77..0000000 --- a/frontend/dist/assets/Protokollfenster-CzLJzfs0.js +++ /dev/null @@ -1 +0,0 @@ -import{c as e,s as t}from"./button-Dd8hfusv.js";import{a as n,i as r,n as i,r as a,t as o}from"./sheet-DWG2Q04V.js";var s=t(),c=e();function l(e){let t=(0,s.c)(14),{offen:l,titel:u,text:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,c.jsx)(n,{className:`schild text-lg`,children:`Protokoll`}),t[2]=m):m=t[2];let h;t[3]===u?h=t[4]:(h=(0,c.jsxs)(r,{children:[m,(0,c.jsx)(a,{className:`text-text-2`,children:u})]}),t[3]=u,t[4]=h);let g;t[5]===d?g=t[6]:(g=(0,c.jsx)(`pre`,{className:`ziffern mx-4 mb-4 flex-1 overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap text-text-2`,children:d}),t[5]=d,t[6]=g);let _;t[7]!==h||t[8]!==g?(_=(0,c.jsxs)(i,{side:`right`,className:`border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[h,g]}),t[7]=h,t[8]=g,t[9]=_):_=t[9];let v;return t[10]!==l||t[11]!==p||t[12]!==_?(v=(0,c.jsx)(o,{open:l,onOpenChange:p,children:_}),t[10]=l,t[11]=p,t[12]=_,t[13]=v):v=t[13],v}export{l as Protokollfenster}; \ No newline at end of file diff --git a/frontend/dist/assets/Updates-DZWQJRjj.js b/frontend/dist/assets/Updates-DZWQJRjj.js deleted file mode 100644 index 83755cf..0000000 --- a/frontend/dist/assets/Updates-DZWQJRjj.js +++ /dev/null @@ -1,2 +0,0 @@ -import{c as e,f as t,i as n,o as r,s as i,t as a,u as o}from"./button-Dd8hfusv.js";import{C as s,S as c,T as l,b as u,d,j as f,l as p,n as m,r as h,s as ee,t as g,w as te,x as ne,y as re}from"./index-BpFIVIMn.js";import{Bestaetigen as _}from"./Bestaetigen-CBdEBtky.js";import{a as v,i as y,n as b,s as ie,t as ae}from"./Auftraege-fchOFtdC.js";var x={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};x.node;var S=r(x),C=i(),oe=t(o(),1),w=e(),T=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],E={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function D(e){let t=(0,C.c)(7),{breit:r}=e,i=r===void 0?`w-16`:r,a;t[0]===i?a=t[1]:(a=n(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,i),t[0]=i,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,w.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,w.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,w.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function se(e){let t=(0,C.c)(13),{text:r}=e,[i,a]=(0,oe.useState)(!1),o;t[0]===r?o=t[1]:(o=r.split(` -`).length>3||r.length>240,t[0]=r,t[1]=o);let s=o,c=s&&!i&&`line-clamp-3`,l;t[2]===c?l=t[3]:(l=n(`m-0 whitespace-pre-line`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,w.jsx)(`p`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;t[7]!==s||t[8]!==i?(d=s&&(0,w.jsx)(`button`,{type:`button`,"aria-expanded":i,onClick:()=>a(!i),className:`-mb-2 inline-flex h-11 items-center text-sm text-cyan hover:underline`,children:i?`Weniger zeigen`:`Ganze Zusammenfassung zeigen`}),t[7]=s,t[8]=i,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==d?(f=(0,w.jsxs)(`div`,{className:`flex flex-col items-start`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function ce(e){let t=(0,C.c)(13),{d:n}=e,r;t[0]===n.packages?r=t[1]:(r=n.packages??[],t[0]=n.packages,t[1]=r);let i=r,a,o;if(t[2]!==n.held_back||t[3]!==i){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.held_back??[];if(i.length===0&&e.length===0){o=null;break bb0}let r;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,w.jsx)(S,{"aria-hidden":!0,className:`size-4 transition-transform group-open:rotate-90`}),t[6]=r):r=t[6];let s=i.length===1?`Das Paket ansehen`:`Alle ${i.length} Pakete ansehen`,c;t[7]===s?c=t[8]:(c=(0,w.jsxs)(`summary`,{className:`inline-flex h-11 cursor-pointer items-center gap-1 text-sm text-cyan hover:underline`,children:[r,s]}),t[7]=s,t[8]=c);let l;t[9]===i?l=t[10]:(l=i.map(k),t[9]=i,t[10]=l);let u;t[11]===l?u=t[12]:(u=(0,w.jsx)(`ul`,{className:`ziffern m-0 flex max-h-64 list-none flex-col gap-1 overflow-auto rounded-md border border-linie bg-[#0b0d0f] p-2.5 text-xs`,children:l}),t[11]=l,t[12]=u),a=(0,w.jsxs)(`details`,{className:`group`,children:[c,u,e.length>0&&(0,w.jsxs)(`p`,{className:`mt-2 text-xs text-text-3`,children:[`Dazu `,e.length===1?`kommt ein Paket`:`kommen ${e.length} Pakete`,`, die Ubuntu noch zurückhält (`,e.map(O).join(`, `),`). Die kommen von selbst, wenn Ubuntu sie freigibt.`]})]})}t[2]=n.held_back,t[3]=i,t[4]=a,t[5]=o}else a=t[4],o=t[5];return o===Symbol.for(`react.early_return_sentinel`)?a:o}function O(e){return e.name}function k(e){return(0,w.jsxs)(`li`,{className:`break-all`,children:[(0,w.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,w.jsxs)(`span`,{className:`text-text-3`,children:[e.current,` → `,e.candidate]})]},e.name)}function A(e){let t=(0,C.c)(6),{d:n}=e;if(n.action_needed===!1){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsx)(m,{art:`gruen`,children:`Nichts zu tun`}),t[0]=e):e=t[0],e}if(n.action_needed!==!0)return null;let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,w.jsx)(m,{art:`bernstein`,children:`Du musst etwas tun`}),t[1]=r):r=t[1];let i;t[2]===n.action_text?i=t[3]:(i=n.action_text&&(0,w.jsx)(`span`,{className:`text-bernstein`,children:n.action_text}),t[2]=n.action_text,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,w.jsxs)(`span`,{className:`flex flex-col items-start gap-1.5`,children:[r,i]}),t[4]=i,t[5]=a),a}function le(e){let t=e?.trim();return t?t.startsWith(`(Zusammenfassung nicht verfügbar`)?`Die Zusammenfassung ist gerade nicht verfügbar.`:t:null}function j(e){let t=(0,C.c)(63),{id:n,name:r,details:i,hatUpdate:o,neuLautStart:s,fest:c,gesperrt:l,onStart:u,onFreigeben:d}=e,f=i.data,p=i.isPending,m=i.isError?i.error.message:f?.error,h;t[0]!==f||t[1]!==n?(h=f?ie(n,f):null,t[0]=f,t[1]=n,t[2]=h):h=t[2];let ee=h,g=o?ee?.neu??s??null:null,te=f?.summary,ne;t[3]===te?ne=t[4]:(ne=le(te),t[3]=te,t[4]=ne);let re=ne,_=ee&&ee.laeuft!==`–`?ee.laeuft:m?`unbekannt`:`–`,y;t[5]!==p||t[6]!==_?(y=p?(0,w.jsx)(D,{}):(0,w.jsx)(w.Fragment,{children:_}),t[5]=p,t[6]=_,t[7]=y):y=t[7];let b=y,ae;t[8]!==m||t[9]!==p||t[10]!==g?(ae=p?(0,w.jsx)(D,{breit:`w-20`}):g?(0,w.jsx)(`span`,{className:`text-cyan`,children:g}):m?(0,w.jsx)(`span`,{className:`text-bernstein`,children:`nicht geprüft`}):(0,w.jsx)(`span`,{className:`text-text-3`,children:`–`}),t[8]=m,t[9]=p,t[10]=g,t[11]=ae):ae=t[11];let x=ae,S;if(p){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsx)(`span`,{className:`text-text-3`,children:`Wird geprüft …`}),t[12]=e):e=t[12],S=e}else if(m&&!o){let e;t[13]===m?e=t[14]:(e=v(m),t[13]=m,t[14]=e);let n;t[15]===e?n=t[16]:(n=(0,w.jsx)(`span`,{className:`text-bernstein`,children:e}),t[15]=e,t[16]=n),S=n}else if(!o)S=`Aktuell.`;else{let e;t[17]===m?e=t[18]:(e=m&&(0,w.jsx)(`span`,{className:`text-bernstein`,children:v(m)}),t[17]=m,t[18]=e);let r;t[19]===f?r=t[20]:(r=f&&(0,w.jsx)(A,{d:f}),t[19]=f,t[20]=r);let i;t[21]!==f||t[22]!==n||t[23]!==re?(i=n===`os`?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`span`,{children:f?.count?`${f.count} ${f.count===1?`Paket`:`Pakete`} aus Ubuntu.`:`Neue Pakete aus Ubuntu.`}),f&&(0,w.jsx)(ce,{d:f})]}):re?(0,w.jsx)(se,{text:re}):null,t[21]=f,t[22]=n,t[23]=re,t[24]=i):i=t[24];let a;t[25]!==e||t[26]!==r||t[27]!==i?(a=(0,w.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[e,r,i]}),t[25]=e,t[26]=r,t[27]=i,t[28]=a):a=t[28],S=a}let oe=p||void 0,T;t[29]===r?T=t[30]:(T=(0,w.jsx)(`span`,{role:`rowheader`,className:`text-[15px] font-semibold`,children:r}),t[29]=r,t[30]=T);let E;t[31]!==m||t[32]!==p||t[33]!==g||t[34]!==x?(E=!p&&(g||m)&&(0,w.jsxs)(w.Fragment,{children:[` `,g?`→`:`·`,` `,x]}),t[31]=m,t[32]=p,t[33]=g,t[34]=x,t[35]=E):E=t[35];let O;t[36]!==b||t[37]!==E?(O=(0,w.jsxs)(`span`,{role:`cell`,className:`ziffern -mt-1 text-sm text-text-2 md:hidden`,children:[b,E]}),t[36]=b,t[37]=E,t[38]=O):O=t[38];let k;t[39]===b?k=t[40]:(k=(0,w.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm text-text-2 md:block`,children:b}),t[39]=b,t[40]=k);let j;t[41]===x?j=t[42]:(j=(0,w.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm md:block`,children:x}),t[41]=x,t[42]=j);let M;t[43]!==c||t[44]!==r?(M=c&&(0,w.jsxs)(`span`,{className:`mb-1.5 block text-bernstein`,children:[`Festgehalten seit `,c.seit,` auf `,c.version,`: `,c.grund,`. Der Sonntags-Lauf überspringt `,r,`.`]}),t[43]=c,t[44]=r,t[45]=M):M=t[45];let N;t[46]!==M||t[47]!==S?(N=(0,w.jsxs)(`div`,{role:`cell`,className:`text-sm leading-relaxed text-text-2`,children:[M,S]}),t[46]=M,t[47]=S,t[48]=N):N=t[48];let P;t[49]!==c||t[50]!==l||t[51]!==o||t[52]!==d||t[53]!==u?(P=(c||o)&&(0,w.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-end`,children:[c&&(0,w.jsx)(a,{variant:`outline`,size:`sm`,onClick:d,children:`Freigeben`}),o&&(0,w.jsx)(a,{variant:`outline`,size:`sm`,onClick:u,disabled:l,children:`Aktualisieren`})]}),t[49]=c,t[50]=l,t[51]=o,t[52]=d,t[53]=u,t[54]=P):P=t[54];let F;return t[55]!==k||t[56]!==j||t[57]!==N||t[58]!==P||t[59]!==oe||t[60]!==T||t[61]!==O?(F=(0,w.jsxs)(`div`,{role:`row`,"aria-busy":oe,className:`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-linie py-3.5 md:grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] md:items-start`,children:[T,O,k,j,N,P]}),t[55]=k,t[56]=j,t[57]=N,t[58]=P,t[59]=oe,t[60]=T,t[61]=O,t[62]=F):F=t[62],F}var M={rot:`rot`,gelb:`bernstein`,gruen:`gruen`,info:`cyan`,grau:`grau`},N={rot:`bg-rot`,gelb:`bg-bernstein`,gruen:`bg-gruen`,info:`bg-cyan`,grau:`bg-text-3`};function P(e){let t=(0,C.c)(19),{lauf:n}=e,r;t[0]===n.start?r=t[1]:(r=l(n.start),t[0]=n.start,t[1]=r);let i;t[2]===r?i=t[3]:(i=(0,w.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:r}),t[2]=r,t[3]=i);let a;t[4]===n.anlass?a=t[5]:(a=(0,w.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:n.anlass}),t[4]=n.anlass,t[5]=a);let o=M[n.stufe],s;t[6]!==n.titel||t[7]!==o?(s=(0,w.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,w.jsx)(m,{art:o,children:n.titel})}),t[6]=n.titel,t[7]=o,t[8]=s):s=t[8];let c;t[9]!==i||t[10]!==a||t[11]!==s?(c=(0,w.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[i,a,s]}),t[9]=i,t[10]=a,t[11]=s,t[12]=c):c=t[12];let u;t[13]!==n.stufe||t[14]!==n.zeilen?(u=n.stufe!==`grau`&&n.zeilen.length>0&&(0,w.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 @sm:pl-[124px]`,children:n.zeilen.map(F)}),t[13]=n.stufe,t[14]=n.zeilen,t[15]=u):u=t[15];let d;return t[16]!==c||t[17]!==u?(d=(0,w.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3`,children:[c,u]}),t[16]=c,t[17]=u,t[18]=d):d=t[18],d}function F(e){return(0,w.jsxs)(`li`,{className:`flex items-baseline gap-2 text-sm leading-snug text-text-2`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:n(`size-1.5 shrink-0 -translate-y-px rounded-full`,N[e.stufe])}),(0,w.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,w.jsx)(`span`,{className:`text-foreground`,children:e.baustein}),` · `,e.text]})]},`${e.baustein}-${e.text}`)}function ue(e){return e.mtime?l(new Date(e.mtime*1e3).toISOString()):e.snapshot}function I(){let e=(0,C.c)(124),t=u(),n=d(),r=s(),i=re(),o=c(),l=ee(),f=p(),m=te(),[v,y]=(0,oe.useState)(null),ie;e[0]===t.data?.updates.bausteine?ie=e[1]:(ie=new Map((t.data?.updates.bausteine??[]).map(ge)),e[0]=t.data?.updates.bausteine,e[1]=ie);let x=ie,S=new Map((t.data?.updates.festgehalten??[]).map(he)),D;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(D=T.map(me),e[2]=D):D=e[2];let se=ne(D),ce;e[3]!==se||e[4]!==x?(ce=(e,t)=>b(e.id,se[t].data)??x.has(e.id),e[3]=se,e[4]=x,e[5]=ce):ce=e[5];let O=T.map(ce),k;e[6]===n.data?.jobs?k=e[7]:(k=n.data?.jobs??[],e[6]=n.data?.jobs,e[7]=k);let A=k,le;e[8]!==A||e[9]!==t.data?.zustand?(le=A.some(pe)||(t.data?.zustand.update_laeuft??!1),e[8]=A,e[9]=t.data?.zustand,e[10]=le):le=e[10];let M=le,N;e[11]===A?N=e[12]:(N=A.some(fe),e[11]=A,e[12]=N);let P=N,F=M||o.isPending,I=i.data?.available??!1,L;if(t.isPending){let t;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(h,{text:`Updates werden gelesen …`}),e[13]=t):t=e[13],L=t}else if(t.isError&&!t.data){let n=`Die Box antwortet nicht: ${t.error.message}`,r;e[14]===n?r=e[15]:(r=(0,w.jsx)(h,{fehler:!0,text:n}),e[14]=n,e[15]=r),L=r}else{let t;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsxs)(`div`,{role:`row`,className:`schild hidden grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,children:[(0,w.jsx)(`span`,{role:`columnheader`,children:`Baustein`}),(0,w.jsx)(`span`,{role:`columnheader`,children:`Läuft`}),(0,w.jsx)(`span`,{role:`columnheader`,children:`Neu`}),(0,w.jsx)(`span`,{role:`columnheader`,children:`Was sich ändert`}),(0,w.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),e[16]=t):t=e[16],L=(0,w.jsxs)(`div`,{role:`table`,"aria-label":`Bausteine und ihre Updates`,className:`flex flex-col`,children:[t,T.map((e,t)=>(0,w.jsx)(j,{id:e.id,name:e.name,details:se[t],hatUpdate:O[t],neuLautStart:x.get(e.id),fest:S.get(e.id),gesperrt:F,onStart:()=>y({art:`einzeln`,id:e.id,name:e.name}),onFreigeben:()=>{let t=S.get(e.id);t&&y({art:`freigeben`,id:e.id,name:e.name,grund:t.grund})}},e.id))]})}let R;if(r.isPending){let t;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[17]=t):t=e[17],R=t}else if(r.isError&&!r.data){let t;e[18]===r.error.message?t=e[19]:(t=(0,w.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Verlauf lässt sich gerade nicht lesen: `,r.error.message]}),e[18]=r.error.message,e[19]=t),R=t}else if(r.data?.laeufe.length){let t;e[21]===r.data.laeufe?t=e[22]:(t=r.data.laeufe.map(de),e[21]=r.data.laeufe,e[22]=t);let n;e[23]===t?n=e[24]:(n=(0,w.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:t}),e[23]=t,e[24]=n),R=n}else{let t;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Update-Läufe aufgezeichnet.`}),e[20]=t):t=e[20],R=t}let z;if(i.isPending){let t;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[25]=t):t=e[25],z=t}else if(i.isError&&!i.data){let t;e[26]===i.error.message?t=e[27]:(t=(0,w.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Sicherungen lassen sich gerade nicht lesen: `,i.error.message]}),e[26]=i.error.message,e[27]=t),z=t}else if(i.data?.backups.length){let t;if(e[29]!==i.data.backups||e[30]!==m.isPending||e[31]!==I){let n;e[33]!==m.isPending||e[34]!==I?(n=e=>(0,w.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2.5`,children:[(0,w.jsx)(`span`,{className:`ziffern text-sm`,children:ue(e)}),(0,w.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,w.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,w.jsx)(a,{variant:`ghost`,size:`sm`,disabled:!I||m.isPending,onClick:()=>y({art:`zurueck`,datei:e.file,zeit:ue(e)}),children:`Zurückspielen`})]})]},e.file),e[33]=m.isPending,e[34]=I,e[35]=n):n=e[35],t=i.data.backups.slice(0,5).map(n),e[29]=i.data.backups,e[30]=m.isPending,e[31]=I,e[32]=t}else t=e[32];let n;e[36]===t?n=e[37]:(n=(0,w.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:t}),e[36]=t,e[37]=n),z=n}else{let t;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Sicherung vorhanden.`}),e[28]=t):t=e[28],z=t}let _e=g,B;e[38]===o?B=e[39]:(B=()=>o.mutate(`pruefen`),e[38]=o,e[39]=B);let ve=o.isPending||P,ye=P?`Sucht …`:`Nach Neuem suchen`,V;e[40]!==ye||e[41]!==B||e[42]!==ve?(V=(0,w.jsx)(a,{variant:`outline`,onClick:B,disabled:ve,children:ye}),e[40]=ye,e[41]=B,e[42]=ve,e[43]=V):V=e[43];let be=a,H;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(H=()=>y({art:`alle`}),e[44]=H):H=e[44];let xe=F||!O.some(Boolean),U;e[45]!==be||e[46]!==H||e[47]!==xe?(U=(0,w.jsx)(be,{onClick:H,disabled:xe,children:`Alles jetzt aktualisieren`}),e[45]=be,e[46]=H,e[47]=xe,e[48]=U):U=e[48];let W;e[49]!==V||e[50]!==U?(W=(0,w.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[V,U]}),e[49]=V,e[50]=U,e[51]=W):W=e[51];let Se;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(Se=(0,w.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Jeden Sonntag um 04:30 automatisch. Vorher wird gesichert, danach geprüft.`}),e[52]=Se):Se=e[52];let G;e[53]===M?G=e[54]:(G=M&&(0,w.jsx)(`p`,{role:`status`,className:`text-[15px] text-cyan`,children:`Gerade läuft ein Update. Weitere lassen sich erst starten, wenn es fertig ist.`}),e[53]=M,e[54]=G);let Ce;e[55]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,w.jsx)(ae,{}),e[55]=Ce):Ce=e[55];let K;e[56]!==_e||e[57]!==W||e[58]!==G||e[59]!==L?(K=(0,w.jsxs)(_e,{titel:`Updates`,rechts:W,children:[Se,G,L,Ce]}),e[56]=_e,e[57]=W,e[58]=G,e[59]=L,e[60]=K):K=e[60];let q;e[61]===R?q=e[62]:(q=(0,w.jsx)(g,{titel:`Verlauf`,children:R}),e[61]=R,e[62]=q);let J;e[63]===f?J=e[64]:(J=()=>f.mutate(void 0),e[63]=f,e[64]=J);let we=f.isPending?`Sichert …`:`Jetzt sichern`,Y;e[65]!==f.isPending||e[66]!==J||e[67]!==we?(Y=(0,w.jsx)(a,{variant:`outline`,size:`sm`,onClick:J,disabled:f.isPending,children:we}),e[65]=f.isPending,e[66]=J,e[67]=we,e[68]=Y):Y=e[68];let Te;e[69]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,w.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[69]=Te):Te=e[69];let X;e[70]!==i.data||e[71]!==I?(X=i.data&&!I&&(0,w.jsx)(`p`,{className:`text-sm text-text-3`,children:`Zurückspielen geht nur auf der Box selbst.`}),e[70]=i.data,e[71]=I,e[72]=X):X=e[72];let Z;e[73]!==z||e[74]!==Y||e[75]!==X?(Z=(0,w.jsxs)(g,{titel:`Sicherungen`,rechts:Y,children:[Te,X,z]}),e[73]=z,e[74]=Y,e[75]=X,e[76]=Z):Z=e[76];let Q;e[77]!==q||e[78]!==Z?(Q=(0,w.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[q,Z]}),e[77]=q,e[78]=Z,e[79]=Q):Q=e[79];let Ee=v?.art===`alle`,De;e[80]===Symbol.for(`react.memo_cache_sentinel`)?(De=()=>y(null),e[80]=De):De=e[80];let $;e[81]!==v?.art||e[82]!==o?($=()=>{v?.art===`alle`&&o.mutate(`alle`),y(null)},e[81]=v?.art,e[82]=o,e[83]=$):$=e[83];let Oe;e[84]!==F||e[85]!==Ee||e[86]!==$?(Oe=(0,w.jsx)(_,{offen:Ee,titel:`Alles jetzt aktualisieren?`,text:`Motor, llama-swap, Hermes und Betriebssystem werden nacheinander aktualisiert, soweit es Neues gibt, und danach geprüft. Motor und llama-swap holen bei Problemen ihren alten Stand von selbst zurück, vor Hermes wird gesichert. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,gesperrt:F,onNein:De,onJa:$}),e[84]=F,e[85]=Ee,e[86]=$,e[87]=Oe):Oe=e[87];let ke=v?.art===`einzeln`,Ae=v?.art===`einzeln`?`${v.name} aktualisieren?`:``,je=v?.art===`einzeln`?E[v.id]??``:``,Me;e[88]===Symbol.for(`react.memo_cache_sentinel`)?(Me=()=>y(null),e[88]=Me):Me=e[88];let Ne;e[89]!==v||e[90]!==o?(Ne=()=>{v?.art===`einzeln`&&o.mutate(v.id),y(null)},e[89]=v,e[90]=o,e[91]=Ne):Ne=e[91];let Pe;e[92]!==F||e[93]!==ke||e[94]!==Ae||e[95]!==je||e[96]!==Ne?(Pe=(0,w.jsx)(_,{offen:ke,titel:Ae,text:je,knopf:`Aktualisieren`,gesperrt:F,onNein:Me,onJa:Ne}),e[92]=F,e[93]=ke,e[94]=Ae,e[95]=je,e[96]=Ne,e[97]=Pe):Pe=e[97];let Fe=v?.art===`freigeben`,Ie=v?.art===`freigeben`?`${v.name} freigeben?`:``,Le=v?.art===`freigeben`?`Festgehalten wurde ${v.name}, weil: ${v.grund}. Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`:``,Re;e[98]===Symbol.for(`react.memo_cache_sentinel`)?(Re=()=>y(null),e[98]=Re):Re=e[98];let ze;e[99]!==v||e[100]!==l?(ze=()=>{v?.art===`freigeben`&&l.mutate(v.id),y(null)},e[99]=v,e[100]=l,e[101]=ze):ze=e[101];let Be;e[102]!==l.isPending||e[103]!==Fe||e[104]!==Ie||e[105]!==Le||e[106]!==ze?(Be=(0,w.jsx)(_,{offen:Fe,titel:Ie,text:Le,knopf:`Freigeben`,gesperrt:l.isPending,onNein:Re,onJa:ze}),e[102]=l.isPending,e[103]=Fe,e[104]=Ie,e[105]=Le,e[106]=ze,e[107]=Be):Be=e[107];let Ve=v?.art===`zurueck`,He=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${v?.art===`zurueck`?v.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,Ue;e[108]===Symbol.for(`react.memo_cache_sentinel`)?(Ue=()=>y(null),e[108]=Ue):Ue=e[108];let We;e[109]!==v||e[110]!==m?(We=()=>{v?.art===`zurueck`&&m.mutate(v.datei),y(null)},e[109]=v,e[110]=m,e[111]=We):We=e[111];let Ge;e[112]!==Ve||e[113]!==He||e[114]!==We||e[115]!==m.isPending?(Ge=(0,w.jsx)(_,{offen:Ve,gefahr:!0,titel:`Sicherung zurückspielen?`,text:He,knopf:`Zurückspielen`,gesperrt:m.isPending,onNein:Ue,onJa:We}),e[112]=Ve,e[113]=He,e[114]=We,e[115]=m.isPending,e[116]=Ge):Ge=e[116];let Ke;return e[117]!==K||e[118]!==Q||e[119]!==Oe||e[120]!==Pe||e[121]!==Be||e[122]!==Ge?(Ke=(0,w.jsxs)(w.Fragment,{children:[K,Q,Oe,Pe,Be,Ge]}),e[117]=K,e[118]=Q,e[119]=Oe,e[120]=Pe,e[121]=Be,e[122]=Ge,e[123]=Ke):Ke=e[123],Ke}function de(e){return(0,w.jsx)(P,{lauf:e},e.start)}function fe(e){return y(e)&&f(e)}function pe(e){return e.group===`maintenance`&&f(e)}function me(e){return e.id}function he(e){return[e.baustein,e]}function ge(e){return[e.id,e.neu]}export{I as UpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Updates-U5rB4cSU.js b/frontend/dist/assets/Updates-U5rB4cSU.js new file mode 100644 index 0000000..399d0d6 --- /dev/null +++ b/frontend/dist/assets/Updates-U5rB4cSU.js @@ -0,0 +1,2 @@ +import{i as e,n as t,o as n,r,t as i}from"./dist-BaE5-hhJ.js";import{C as a,D as o,E as s,J as c,N as l,S as u,T as d,f,n as p,r as m,s as ee,t as h,u as te,w as ne,x as re,z as g}from"./index-DSxwfDVg.js";import{Bestaetigen as _}from"./Bestaetigen-kFure1oW.js";import{a as v,i as y,n as b,s as ie,t as ae}from"./Auftraege-C5bKfsD1.js";var x={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};x.node;var S=c(x),C=t(),oe=n(e(),1),w=r(),T=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],E={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function D(e){let t=(0,C.c)(7),{breit:n}=e,r=n===void 0?`w-16`:n,a;t[0]===r?a=t[1]:(a=i(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,r),t[0]=r,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,w.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,w.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,w.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function se(e){let t=(0,C.c)(13),{text:n}=e,[r,a]=(0,oe.useState)(!1),o;t[0]===n?o=t[1]:(o=n.split(` +`).length>3||n.length>240,t[0]=n,t[1]=o);let s=o,c=s&&!r&&`line-clamp-3`,l;t[2]===c?l=t[3]:(l=i(`m-0 whitespace-pre-line`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==n?(u=(0,w.jsx)(`p`,{className:l,children:n}),t[4]=l,t[5]=n,t[6]=u):u=t[6];let d;t[7]!==s||t[8]!==r?(d=s&&(0,w.jsx)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>a(!r),className:`-mb-2 inline-flex h-11 items-center text-sm text-cyan hover:underline`,children:r?`Weniger zeigen`:`Ganze Zusammenfassung zeigen`}),t[7]=s,t[8]=r,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==d?(f=(0,w.jsxs)(`div`,{className:`flex flex-col items-start`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function ce(e){let t=(0,C.c)(13),{d:n}=e,r;t[0]===n.packages?r=t[1]:(r=n.packages??[],t[0]=n.packages,t[1]=r);let i=r,a,o;if(t[2]!==n.held_back||t[3]!==i){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.held_back??[];if(i.length===0&&e.length===0){o=null;break bb0}let r;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,w.jsx)(S,{"aria-hidden":!0,className:`size-4 transition-transform group-open:rotate-90`}),t[6]=r):r=t[6];let s=i.length===1?`Das Paket ansehen`:`Alle ${i.length} Pakete ansehen`,c;t[7]===s?c=t[8]:(c=(0,w.jsxs)(`summary`,{className:`inline-flex h-11 cursor-pointer items-center gap-1 text-sm text-cyan hover:underline`,children:[r,s]}),t[7]=s,t[8]=c);let l;t[9]===i?l=t[10]:(l=i.map(k),t[9]=i,t[10]=l);let u;t[11]===l?u=t[12]:(u=(0,w.jsx)(`ul`,{className:`ziffern m-0 flex max-h-64 list-none flex-col gap-1 overflow-auto rounded-md border border-linie bg-[#0b0d0f] p-2.5 text-xs`,children:l}),t[11]=l,t[12]=u),a=(0,w.jsxs)(`details`,{className:`group`,children:[c,u,e.length>0&&(0,w.jsxs)(`p`,{className:`mt-2 text-xs text-text-3`,children:[`Dazu `,e.length===1?`kommt ein Paket`:`kommen ${e.length} Pakete`,`, die Ubuntu noch zurückhält (`,e.map(O).join(`, `),`). Die kommen von selbst, wenn Ubuntu sie freigibt.`]})]})}t[2]=n.held_back,t[3]=i,t[4]=a,t[5]=o}else a=t[4],o=t[5];return o===Symbol.for(`react.early_return_sentinel`)?a:o}function O(e){return e.name}function k(e){return(0,w.jsxs)(`li`,{className:`break-all`,children:[(0,w.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,w.jsxs)(`span`,{className:`text-text-3`,children:[e.current,` → `,e.candidate]})]},e.name)}function A(e){let t=(0,C.c)(6),{d:n}=e;if(n.action_needed===!1){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsx)(p,{art:`gruen`,children:`Nichts zu tun`}),t[0]=e):e=t[0],e}if(n.action_needed!==!0)return null;let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,w.jsx)(p,{art:`bernstein`,children:`Du musst etwas tun`}),t[1]=r):r=t[1];let i;t[2]===n.action_text?i=t[3]:(i=n.action_text&&(0,w.jsx)(`span`,{className:`text-bernstein`,children:n.action_text}),t[2]=n.action_text,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,w.jsxs)(`span`,{className:`flex flex-col items-start gap-1.5`,children:[r,i]}),t[4]=i,t[5]=a),a}function le(e){let t=e?.trim();return t?t.startsWith(`(Zusammenfassung nicht verfügbar`)?`Die Zusammenfassung ist gerade nicht verfügbar.`:t:null}function j(e){let t=(0,C.c)(63),{id:n,name:r,details:i,hatUpdate:a,neuLautStart:o,fest:s,gesperrt:c,onStart:l,onFreigeben:u}=e,d=i.data,f=i.isPending,p=i.isError?i.error.message:d?.error,m;t[0]!==d||t[1]!==n?(m=d?ie(n,d):null,t[0]=d,t[1]=n,t[2]=m):m=t[2];let ee=m,h=a?ee?.neu??o??null:null,te=d?.summary,ne;t[3]===te?ne=t[4]:(ne=le(te),t[3]=te,t[4]=ne);let re=ne,_=ee&&ee.laeuft!==`–`?ee.laeuft:p?`unbekannt`:`–`,y;t[5]!==f||t[6]!==_?(y=f?(0,w.jsx)(D,{}):(0,w.jsx)(w.Fragment,{children:_}),t[5]=f,t[6]=_,t[7]=y):y=t[7];let b=y,ae;t[8]!==p||t[9]!==f||t[10]!==h?(ae=f?(0,w.jsx)(D,{breit:`w-20`}):h?(0,w.jsx)(`span`,{className:`text-cyan`,children:h}):p?(0,w.jsx)(`span`,{className:`text-bernstein`,children:`nicht geprüft`}):(0,w.jsx)(`span`,{className:`text-text-3`,children:`–`}),t[8]=p,t[9]=f,t[10]=h,t[11]=ae):ae=t[11];let x=ae,S;if(f){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsx)(`span`,{className:`text-text-3`,children:`Wird geprüft …`}),t[12]=e):e=t[12],S=e}else if(p&&!a){let e;t[13]===p?e=t[14]:(e=v(p),t[13]=p,t[14]=e);let n;t[15]===e?n=t[16]:(n=(0,w.jsx)(`span`,{className:`text-bernstein`,children:e}),t[15]=e,t[16]=n),S=n}else if(!a)S=`Aktuell.`;else{let e;t[17]===p?e=t[18]:(e=p&&(0,w.jsx)(`span`,{className:`text-bernstein`,children:v(p)}),t[17]=p,t[18]=e);let r;t[19]===d?r=t[20]:(r=d&&(0,w.jsx)(A,{d}),t[19]=d,t[20]=r);let i;t[21]!==d||t[22]!==n||t[23]!==re?(i=n===`os`?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`span`,{children:d?.count?`${d.count} ${d.count===1?`Paket`:`Pakete`} aus Ubuntu.`:`Neue Pakete aus Ubuntu.`}),d&&(0,w.jsx)(ce,{d})]}):re?(0,w.jsx)(se,{text:re}):null,t[21]=d,t[22]=n,t[23]=re,t[24]=i):i=t[24];let a;t[25]!==e||t[26]!==r||t[27]!==i?(a=(0,w.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[e,r,i]}),t[25]=e,t[26]=r,t[27]=i,t[28]=a):a=t[28],S=a}let oe=f||void 0,T;t[29]===r?T=t[30]:(T=(0,w.jsx)(`span`,{role:`rowheader`,className:`text-[15px] font-semibold`,children:r}),t[29]=r,t[30]=T);let E;t[31]!==p||t[32]!==f||t[33]!==h||t[34]!==x?(E=!f&&(h||p)&&(0,w.jsxs)(w.Fragment,{children:[` `,h?`→`:`·`,` `,x]}),t[31]=p,t[32]=f,t[33]=h,t[34]=x,t[35]=E):E=t[35];let O;t[36]!==b||t[37]!==E?(O=(0,w.jsxs)(`span`,{role:`cell`,className:`ziffern -mt-1 text-sm text-text-2 md:hidden`,children:[b,E]}),t[36]=b,t[37]=E,t[38]=O):O=t[38];let k;t[39]===b?k=t[40]:(k=(0,w.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm text-text-2 md:block`,children:b}),t[39]=b,t[40]=k);let j;t[41]===x?j=t[42]:(j=(0,w.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm md:block`,children:x}),t[41]=x,t[42]=j);let M;t[43]!==s||t[44]!==r?(M=s&&(0,w.jsxs)(`span`,{className:`mb-1.5 block text-bernstein`,children:[`Festgehalten seit `,s.seit,` auf `,s.version,`: `,s.grund,`. Der Sonntags-Lauf überspringt `,r,`.`]}),t[43]=s,t[44]=r,t[45]=M):M=t[45];let N;t[46]!==M||t[47]!==S?(N=(0,w.jsxs)(`div`,{role:`cell`,className:`text-sm leading-relaxed text-text-2`,children:[M,S]}),t[46]=M,t[47]=S,t[48]=N):N=t[48];let P;t[49]!==s||t[50]!==c||t[51]!==a||t[52]!==u||t[53]!==l?(P=(s||a)&&(0,w.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-end`,children:[s&&(0,w.jsx)(g,{variant:`outline`,size:`sm`,onClick:u,children:`Freigeben`}),a&&(0,w.jsx)(g,{variant:`outline`,size:`sm`,onClick:l,disabled:c,children:`Aktualisieren`})]}),t[49]=s,t[50]=c,t[51]=a,t[52]=u,t[53]=l,t[54]=P):P=t[54];let F;return t[55]!==k||t[56]!==j||t[57]!==N||t[58]!==P||t[59]!==oe||t[60]!==T||t[61]!==O?(F=(0,w.jsxs)(`div`,{role:`row`,"aria-busy":oe,className:`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-linie py-3.5 md:grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] md:items-start`,children:[T,O,k,j,N,P]}),t[55]=k,t[56]=j,t[57]=N,t[58]=P,t[59]=oe,t[60]=T,t[61]=O,t[62]=F):F=t[62],F}var M={rot:`rot`,gelb:`bernstein`,gruen:`gruen`,info:`cyan`,grau:`grau`},N={rot:`bg-rot`,gelb:`bg-bernstein`,gruen:`bg-gruen`,info:`bg-cyan`,grau:`bg-text-3`};function P(e){let t=(0,C.c)(19),{lauf:n}=e,r;t[0]===n.start?r=t[1]:(r=o(n.start),t[0]=n.start,t[1]=r);let i;t[2]===r?i=t[3]:(i=(0,w.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:r}),t[2]=r,t[3]=i);let a;t[4]===n.anlass?a=t[5]:(a=(0,w.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:n.anlass}),t[4]=n.anlass,t[5]=a);let s=M[n.stufe],c;t[6]!==n.titel||t[7]!==s?(c=(0,w.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,w.jsx)(p,{art:s,children:n.titel})}),t[6]=n.titel,t[7]=s,t[8]=c):c=t[8];let l;t[9]!==i||t[10]!==a||t[11]!==c?(l=(0,w.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[i,a,c]}),t[9]=i,t[10]=a,t[11]=c,t[12]=l):l=t[12];let u;t[13]!==n.stufe||t[14]!==n.zeilen?(u=n.stufe!==`grau`&&n.zeilen.length>0&&(0,w.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 @sm:pl-[124px]`,children:n.zeilen.map(F)}),t[13]=n.stufe,t[14]=n.zeilen,t[15]=u):u=t[15];let d;return t[16]!==l||t[17]!==u?(d=(0,w.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3`,children:[l,u]}),t[16]=l,t[17]=u,t[18]=d):d=t[18],d}function F(e){return(0,w.jsxs)(`li`,{className:`flex items-baseline gap-2 text-sm leading-snug text-text-2`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 shrink-0 -translate-y-px rounded-full`,N[e.stufe])}),(0,w.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,w.jsx)(`span`,{className:`text-foreground`,children:e.baustein}),` · `,e.text]})]},`${e.baustein}-${e.text}`)}function ue(e){return e.mtime?o(new Date(e.mtime*1e3).toISOString()):e.snapshot}function I(){let e=(0,C.c)(124),t=u(),n=f(),r=d(),i=re(),o=ne(),c=ee(),l=te(),p=s(),[v,y]=(0,oe.useState)(null),ie;e[0]===t.data?.updates.bausteine?ie=e[1]:(ie=new Map((t.data?.updates.bausteine??[]).map(ge)),e[0]=t.data?.updates.bausteine,e[1]=ie);let x=ie,S=new Map((t.data?.updates.festgehalten??[]).map(he)),D;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(D=T.map(me),e[2]=D):D=e[2];let se=a(D),ce;e[3]!==se||e[4]!==x?(ce=(e,t)=>b(e.id,se[t].data)??x.has(e.id),e[3]=se,e[4]=x,e[5]=ce):ce=e[5];let O=T.map(ce),k;e[6]===n.data?.jobs?k=e[7]:(k=n.data?.jobs??[],e[6]=n.data?.jobs,e[7]=k);let A=k,le;e[8]!==A||e[9]!==t.data?.zustand?(le=A.some(pe)||(t.data?.zustand.update_laeuft??!1),e[8]=A,e[9]=t.data?.zustand,e[10]=le):le=e[10];let M=le,N;e[11]===A?N=e[12]:(N=A.some(fe),e[11]=A,e[12]=N);let P=N,F=M||o.isPending,I=i.data?.available??!1,L;if(t.isPending){let t;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(m,{text:`Updates werden gelesen …`}),e[13]=t):t=e[13],L=t}else if(t.isError&&!t.data){let n=`Die Box antwortet nicht: ${t.error.message}`,r;e[14]===n?r=e[15]:(r=(0,w.jsx)(m,{fehler:!0,text:n}),e[14]=n,e[15]=r),L=r}else{let t;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsxs)(`div`,{role:`row`,className:`schild hidden grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,children:[(0,w.jsx)(`span`,{role:`columnheader`,children:`Baustein`}),(0,w.jsx)(`span`,{role:`columnheader`,children:`Läuft`}),(0,w.jsx)(`span`,{role:`columnheader`,children:`Neu`}),(0,w.jsx)(`span`,{role:`columnheader`,children:`Was sich ändert`}),(0,w.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),e[16]=t):t=e[16],L=(0,w.jsxs)(`div`,{role:`table`,"aria-label":`Bausteine und ihre Updates`,className:`flex flex-col`,children:[t,T.map((e,t)=>(0,w.jsx)(j,{id:e.id,name:e.name,details:se[t],hatUpdate:O[t],neuLautStart:x.get(e.id),fest:S.get(e.id),gesperrt:F,onStart:()=>y({art:`einzeln`,id:e.id,name:e.name}),onFreigeben:()=>{let t=S.get(e.id);t&&y({art:`freigeben`,id:e.id,name:e.name,grund:t.grund})}},e.id))]})}let R;if(r.isPending){let t;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[17]=t):t=e[17],R=t}else if(r.isError&&!r.data){let t;e[18]===r.error.message?t=e[19]:(t=(0,w.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Verlauf lässt sich gerade nicht lesen: `,r.error.message]}),e[18]=r.error.message,e[19]=t),R=t}else if(r.data?.laeufe.length){let t;e[21]===r.data.laeufe?t=e[22]:(t=r.data.laeufe.map(de),e[21]=r.data.laeufe,e[22]=t);let n;e[23]===t?n=e[24]:(n=(0,w.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:t}),e[23]=t,e[24]=n),R=n}else{let t;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Update-Läufe aufgezeichnet.`}),e[20]=t):t=e[20],R=t}let z;if(i.isPending){let t;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[25]=t):t=e[25],z=t}else if(i.isError&&!i.data){let t;e[26]===i.error.message?t=e[27]:(t=(0,w.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Sicherungen lassen sich gerade nicht lesen: `,i.error.message]}),e[26]=i.error.message,e[27]=t),z=t}else if(i.data?.backups.length){let t;if(e[29]!==i.data.backups||e[30]!==p.isPending||e[31]!==I){let n;e[33]!==p.isPending||e[34]!==I?(n=e=>(0,w.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2.5`,children:[(0,w.jsx)(`span`,{className:`ziffern text-sm`,children:ue(e)}),(0,w.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,w.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,w.jsx)(g,{variant:`ghost`,size:`sm`,disabled:!I||p.isPending,onClick:()=>y({art:`zurueck`,datei:e.file,zeit:ue(e)}),children:`Zurückspielen`})]})]},e.file),e[33]=p.isPending,e[34]=I,e[35]=n):n=e[35],t=i.data.backups.slice(0,5).map(n),e[29]=i.data.backups,e[30]=p.isPending,e[31]=I,e[32]=t}else t=e[32];let n;e[36]===t?n=e[37]:(n=(0,w.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:t}),e[36]=t,e[37]=n),z=n}else{let t;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Sicherung vorhanden.`}),e[28]=t):t=e[28],z=t}let _e=h,B;e[38]===o?B=e[39]:(B=()=>o.mutate(`pruefen`),e[38]=o,e[39]=B);let ve=o.isPending||P,ye=P?`Sucht …`:`Nach Neuem suchen`,V;e[40]!==ye||e[41]!==B||e[42]!==ve?(V=(0,w.jsx)(g,{variant:`outline`,onClick:B,disabled:ve,children:ye}),e[40]=ye,e[41]=B,e[42]=ve,e[43]=V):V=e[43];let be=g,H;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(H=()=>y({art:`alle`}),e[44]=H):H=e[44];let xe=F||!O.some(Boolean),U;e[45]!==be||e[46]!==H||e[47]!==xe?(U=(0,w.jsx)(be,{onClick:H,disabled:xe,children:`Alles jetzt aktualisieren`}),e[45]=be,e[46]=H,e[47]=xe,e[48]=U):U=e[48];let W;e[49]!==V||e[50]!==U?(W=(0,w.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[V,U]}),e[49]=V,e[50]=U,e[51]=W):W=e[51];let Se;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(Se=(0,w.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Jeden Sonntag um 04:30 automatisch. Vorher wird gesichert, danach geprüft.`}),e[52]=Se):Se=e[52];let G;e[53]===M?G=e[54]:(G=M&&(0,w.jsx)(`p`,{role:`status`,className:`text-[15px] text-cyan`,children:`Gerade läuft ein Update. Weitere lassen sich erst starten, wenn es fertig ist.`}),e[53]=M,e[54]=G);let Ce;e[55]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,w.jsx)(ae,{}),e[55]=Ce):Ce=e[55];let K;e[56]!==_e||e[57]!==W||e[58]!==G||e[59]!==L?(K=(0,w.jsxs)(_e,{titel:`Updates`,rechts:W,children:[Se,G,L,Ce]}),e[56]=_e,e[57]=W,e[58]=G,e[59]=L,e[60]=K):K=e[60];let q;e[61]===R?q=e[62]:(q=(0,w.jsx)(h,{titel:`Verlauf`,children:R}),e[61]=R,e[62]=q);let J;e[63]===l?J=e[64]:(J=()=>l.mutate(void 0),e[63]=l,e[64]=J);let we=l.isPending?`Sichert …`:`Jetzt sichern`,Y;e[65]!==l.isPending||e[66]!==J||e[67]!==we?(Y=(0,w.jsx)(g,{variant:`outline`,size:`sm`,onClick:J,disabled:l.isPending,children:we}),e[65]=l.isPending,e[66]=J,e[67]=we,e[68]=Y):Y=e[68];let Te;e[69]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,w.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[69]=Te):Te=e[69];let X;e[70]!==i.data||e[71]!==I?(X=i.data&&!I&&(0,w.jsx)(`p`,{className:`text-sm text-text-3`,children:`Zurückspielen geht nur auf der Box selbst.`}),e[70]=i.data,e[71]=I,e[72]=X):X=e[72];let Z;e[73]!==z||e[74]!==Y||e[75]!==X?(Z=(0,w.jsxs)(h,{titel:`Sicherungen`,rechts:Y,children:[Te,X,z]}),e[73]=z,e[74]=Y,e[75]=X,e[76]=Z):Z=e[76];let Q;e[77]!==q||e[78]!==Z?(Q=(0,w.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[q,Z]}),e[77]=q,e[78]=Z,e[79]=Q):Q=e[79];let Ee=v?.art===`alle`,De;e[80]===Symbol.for(`react.memo_cache_sentinel`)?(De=()=>y(null),e[80]=De):De=e[80];let Oe;e[81]!==v?.art||e[82]!==o?(Oe=()=>{v?.art===`alle`&&o.mutate(`alle`),y(null)},e[81]=v?.art,e[82]=o,e[83]=Oe):Oe=e[83];let ke;e[84]!==F||e[85]!==Ee||e[86]!==Oe?(ke=(0,w.jsx)(_,{offen:Ee,titel:`Alles jetzt aktualisieren?`,text:`Motor, llama-swap, Hermes und Betriebssystem werden nacheinander aktualisiert, soweit es Neues gibt, und danach geprüft. Motor und llama-swap holen bei Problemen ihren alten Stand von selbst zurück, vor Hermes wird gesichert. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,gesperrt:F,onNein:De,onJa:Oe}),e[84]=F,e[85]=Ee,e[86]=Oe,e[87]=ke):ke=e[87];let Ae=v?.art===`einzeln`,je=v?.art===`einzeln`?`${v.name} aktualisieren?`:``,Me=v?.art===`einzeln`?E[v.id]??``:``,Ne;e[88]===Symbol.for(`react.memo_cache_sentinel`)?(Ne=()=>y(null),e[88]=Ne):Ne=e[88];let Pe;e[89]!==v||e[90]!==o?(Pe=()=>{v?.art===`einzeln`&&o.mutate(v.id),y(null)},e[89]=v,e[90]=o,e[91]=Pe):Pe=e[91];let Fe;e[92]!==F||e[93]!==Ae||e[94]!==je||e[95]!==Me||e[96]!==Pe?(Fe=(0,w.jsx)(_,{offen:Ae,titel:je,text:Me,knopf:`Aktualisieren`,gesperrt:F,onNein:Ne,onJa:Pe}),e[92]=F,e[93]=Ae,e[94]=je,e[95]=Me,e[96]=Pe,e[97]=Fe):Fe=e[97];let Ie=v?.art===`freigeben`,Le=v?.art===`freigeben`?`${v.name} freigeben?`:``,Re=v?.art===`freigeben`?`Festgehalten wurde ${v.name}, weil: ${v.grund}. Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`:``,ze;e[98]===Symbol.for(`react.memo_cache_sentinel`)?(ze=()=>y(null),e[98]=ze):ze=e[98];let Be;e[99]!==v||e[100]!==c?(Be=()=>{v?.art===`freigeben`&&c.mutate(v.id),y(null)},e[99]=v,e[100]=c,e[101]=Be):Be=e[101];let Ve;e[102]!==c.isPending||e[103]!==Ie||e[104]!==Le||e[105]!==Re||e[106]!==Be?(Ve=(0,w.jsx)(_,{offen:Ie,titel:Le,text:Re,knopf:`Freigeben`,gesperrt:c.isPending,onNein:ze,onJa:Be}),e[102]=c.isPending,e[103]=Ie,e[104]=Le,e[105]=Re,e[106]=Be,e[107]=Ve):Ve=e[107];let He=v?.art===`zurueck`,Ue=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${v?.art===`zurueck`?v.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,We;e[108]===Symbol.for(`react.memo_cache_sentinel`)?(We=()=>y(null),e[108]=We):We=e[108];let Ge;e[109]!==v||e[110]!==p?(Ge=()=>{v?.art===`zurueck`&&p.mutate(v.datei),y(null)},e[109]=v,e[110]=p,e[111]=Ge):Ge=e[111];let $;e[112]!==He||e[113]!==Ue||e[114]!==Ge||e[115]!==p.isPending?($=(0,w.jsx)(_,{offen:He,gefahr:!0,titel:`Sicherung zurückspielen?`,text:Ue,knopf:`Zurückspielen`,gesperrt:p.isPending,onNein:We,onJa:Ge}),e[112]=He,e[113]=Ue,e[114]=Ge,e[115]=p.isPending,e[116]=$):$=e[116];let Ke;return e[117]!==K||e[118]!==Q||e[119]!==ke||e[120]!==Fe||e[121]!==Ve||e[122]!==$?(Ke=(0,w.jsxs)(w.Fragment,{children:[K,Q,ke,Fe,Ve,$]}),e[117]=K,e[118]=Q,e[119]=ke,e[120]=Fe,e[121]=Ve,e[122]=$,e[123]=Ke):Ke=e[123],Ke}function de(e){return(0,w.jsx)(P,{lauf:e},e.start)}function fe(e){return y(e)&&l(e)}function pe(e){return e.group===`maintenance`&&l(e)}function me(e){return e.id}function he(e){return[e.baustein,e]}function ge(e){return[e.id,e.neu]}export{I as UpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/button-Dd8hfusv.js b/frontend/dist/assets/button-Dd8hfusv.js deleted file mode 100644 index 88ac006..0000000 --- a/frontend/dist/assets/button-Dd8hfusv.js +++ /dev/null @@ -1 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function A(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ee=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?A(``+e.key):t.toString(36)}function te(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function M(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,M(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(ee,`$&/`)+`/`),M(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ee,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u{t.exports=l()})),d=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=d()})),p=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),m=o(((e,t)=>{t.exports=p()})),h=o((e=>{var t=u().__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;e.c=function(e){return t.H.useMemoCache(e)}})),g=o(((e,t)=>{t.exports=h()})),_=c(u(),1),v=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function y(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:v(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var b=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),C={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function w(e){return e!=null}function T(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??C.width,a=e.size??e.height??C.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?S(...c):S(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??C[`stroke-width`])*Number(e.size??e.width??C.width)/Number(t.size??t.width??C.width):t.strokeWidth??C[`stroke-width`];return[`svg`,{...Object.entries(C).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&w(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&w(t.width)&&{[r(`width`)]:t.width},...`height`in t&&w(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function E(e,t={}){return T(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var D=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},O=(0,_.createContext)({}),k=()=>(0,_.useContext)(O),A=(0,_.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:v=`currentColor`,className:y=``}=k()??{},b=!!c||D(d),[x,C,w=[]]=E(u,{color:e??v,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:S(y,s),hasA11yProp:b,attributes:d});return(0,_.createElement)(x,{ref:f,...C},[...w.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function ee(e,t=[],n=[]){let r=typeof e==`string`?y(e,t,n):e,i=(0,_.forwardRef)(({className:e,...t},n)=>(0,_.createElement)(A,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=x(r.name)),i}var j={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};j.node;var te=ee(j),M=g(),N=48,P=(e,t=0)=>{let n=new Int32Array(e.length);for(let r=0;r{let t=new Int32Array(e.length+1);for(let n=0;n{let t=new Int32Array(e.length),n=0;for(let r=0;r>>1^-(i&1),t[r]=n}return t},L=384,ne=[],R=F(P(`E0500002005282000000002000150000020021820000011200000003022202000300004200120000200420001200021200301200010400162000010000220021010:2192001200220012000220012000200200200400010200040000000000400200108200110100000022010313000162002000020020012020080213000228200000000082000000000120002000120020020040101020300130001001010`)),re=F(P(`:11111111211111119311546544411119731869:671397415686432441111111111161114151214313433415:78311132233313187211117221449443411141111151152226611131111112212518142224214215421421542142424242516171151615616347111111111197911327451111111111111111111113134714133513411111311111111111111111111112444411111342312715245411117:3`)),ie=`@containerabcdefghinlmoprstunderlineviawzccentlignnimatespectuto-colsrowsaglorightnessckdrop-sisbcontrastfiltergrayscalehue-rotateinvertopacityslurrightnessaturateepia-coniclinearpositionradialsizeockurrderttom-belrstxyespacing-xyaretoursorlnt-umnsendspantartainentrasteividerop-shadowurationcorationlay-xyasendillexontromlter-featuresstretchapr-xyayscaleidow-colsrowsue-rotatedentlinesetvert-beringsxyeshadoweiadingftnest-clamp-imageabein-lrstxyskx--b-coniclpositionrsizet-x-y-fromto-fromto-inearfromto-fromto-adialfromto-fromtofromtofromtofromtoblockhinlinew-screenesblockhinlinewbjectpacityrutlinederigin-offsetbelrstxyesrspective-originaceholderioghtng-offsettateundedw-xyz-belrstlreseslr-endspantartaturatecepiahizekewpace-taleroll-xyz-barmpbelrstxyesbelrstxyes-thumbrackadowrink-xyxyartrokeabextora-shadowpckingnsformitionlate-xyz-offsetill-changeoom`,z=(()=>{let e=R.length-1,t=new Int32Array(e);for(let n=e-1;n>=0;n--){let e=1,r=n+1;for(let i=R[n];iE?F@03263243255B:032523853:0325B:8GA032542HE?3257D>032585:0325B:;0328B:032`),B=P(`012113445661666666789111:5;;;;;;;;444;;;:62999<1161=62>>?61:21@ABCD4446996:64E:::;:?::64:F114GHHIHHHHIHH1HH1HH1HHHHHH::EEJ4444::EE4444441691;644444114244444:;K6666555555555555555999666664444444444444444444444226?6:66644L9M?D:111::::6DE199`),ce=I(`020200202020020020020020020020200200200200200200200002020202001003040106000200200200200200200200200200200200200200200200200200200200200200200200200200200200020020020020020020002020200202002002002002002002002002002020002002020020200220200200200200200200200200200200020020020000200020002000200200200020020020002000200200200020020202002020202000200200020022000200200020020002002000200220002002000200W0Z00020020002002020002002000200g0j0002002000200200020020002002000200200020020002000200002000002002002002002000200020000200002002002002002002002020020020200200200200200200200200202020020020020020020020020002002002020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020002002002002002002000200200200200200200200200200020202020002000200020002002002002000020200200`),le=(()=>{let e=new Int32Array(319).fill(-1),t=I(`02422242:222222242224222242442222222422222244442242226224222426222422442462222422622222222626222462242622422622422424242422222222422222222242422222222222222222622442224222222222222224424442262222222222222222222226224222424242422224422422422222`),n=I(`02222222222222222222202222222222222222222222221422222222222222222222222222222222222Y\\222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221422222222222222222222222222222222222222Ŀł222222222222222222`);for(let r=0;r