Files
mission-control-v2/frontend/dist/assets/Modelle-CP6R81Y7.js
T
HitonabiandClaude Opus 5.5 44f33c31d3 radar: „Jetzt testen“ – Kandidaten auf Knopfdruck prüfen, wenn der Speicher reicht
User 25.09.: „Warum kann ich Modell-Tests nicht selbst anstoßen, sondern muss
immer auf die Box warten?“ Nachts testet das Radar weiter selbst. Tagsüber jetzt
auch per Knopf – aber nur, wenn Kandidat, Warm-Set UND der heutige Coder
zusammen unter die 115-GB-Grenze passen (der Test-Wächter stoppt den Kandidaten
erst bis zu 10 s, nachdem der Coder zu laden beginnt), und nicht 00:00–03:30.
Sonst steht der Grund beim Kandidaten. Test als Auftrag (radar_lauf.py --test),
höchstens 2 h, dieselben Leitplanken wie nachts; jedes Ergebnis kommt als Meldung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 13:16:39 +02:00

1 line
40 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{i as e,n as t,r as n,s as r}from"./dist-D4CVSex9.js";import{n as i,t as a}from"./useSelector-uUwrspuX.js";import{n as o}from"./useMatch-CiyhmkMV.js";import{t as s}from"./chevron-right-OsYQC36T.js";import{t as c}from"./search-CL90ahDw.js";import{$ as l,$t as u,A as d,Ct as f,Ht as p,Lt as m,Mt as h,N as g,Ot as _,P as v,Q as y,Rt as b,St as x,Vt as S,at as C,ct as w,en as T,et as E,f as D,it as O,k,kt as A,mt as j,p as M,q as N,st as P,tt as F,u as I,wt as L,zt as R}from"./index-21ZM2s1S.js";import{t as z}from"./button-D8rvET0Z.js";import{a as B,i as V,n as H,r as U,t as ee}from"./sheet-CgwkrC7e.js";import{t as te}from"./Bestaetigen-BbaFDWye.js";import{a as W,r as ne,s as G,t as K}from"./Auftraege-4M6-VkEi.js";function q(e){let t=i();return a(t.stores.location,o(e,t))}var J=t(),Y=r(e(),1),X=n(),re={coder:`Coder`};function ie(e){let t=(0,J.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,a=N(),[o,s]=(0,Y.useState)(``),[c,l]=(0,Y.useState)(``),[d,f]=(0,Y.useState)(null),[m,h]=(0,Y.useState)(``),[g,v]=(0,Y.useState)(null),y=(0,Y.useRef)(!1),b,x;t[0]===c?(b=t[1],x=t[2]):(b=[`hf-suche`,c],x=()=>p(`/api/hf/search?q=${encodeURIComponent(c)}`),t[0]=c,t[1]=b,t[2]=x);let S=c.length>1,C;t[3]!==b||t[4]!==x||t[5]!==S?(C={queryKey:b,queryFn:x,enabled:S},t[3]=b,t[4]=x,t[5]=S,t[6]=C):C=t[6];let w=u(C),T,E;t[7]===d?(T=t[8],E=t[9]):(T=[`hf-quants`,d],E=()=>p(`/api/hf/quants?repo=${encodeURIComponent(d??``)}`),t[7]=d,t[8]=T,t[9]=E);let D=!!d,O;t[10]!==T||t[11]!==E||t[12]!==D?(O={queryKey:T,queryFn:E,enabled:D},t[10]=T,t[11]=E,t[12]=D,t[13]=O):O=t[13];let k=u(O),A,j,M,P,F,I,R,W,K,q,ie,Z,se;if(t[14]!==g||t[15]!==o||t[16]!==a||t[17]!==n||t[18]!==r||t[19]!==k.data||t[20]!==k.error||t[21]!==k.isError||t[22]!==k.isFetching||t[23]!==d||t[24]!==m||t[25]!==i||t[26]!==w){let e=(k.data?.quants??[]).map(oe),c=m?re[m]??m:null,u;t[40]!==d||t[41]!==m||t[42]!==i||t[43]!==c?(u=c&&d?G(d,c,i[m]):null,t[40]=d,t[41]=m,t[42]=i,t[43]=c,t[44]=u):u=t[44],M=u;let p;t[45]!==g||t[46]!==a||t[47]!==r||t[48]!==d||t[49]!==m?(p=function(){d&&g&&!y.current&&(y.current=!0,a.mutate({repo:d,quant:g.quant,rolle:m||null},{onSuccess:e=>{v(null),e.ok!==!1&&r()},onError:()=>v(null),onSettled:()=>{y.current=!1}}))},t[45]=g,t[46]=a,t[47]=r,t[48]=d,t[49]=m,t[50]=p):p=t[50],P=p,j=ee,ie=n,t[51]===r?Z=t[52]:(Z=e=>!e&&r(),t[51]=r,t[52]=Z),A=H,R=`right`,W=`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`)?(K=(0,X.jsxs)(V,{children:[(0,X.jsx)(B,{className:`schild text-lg`,children:`Modelle selbst suchen`}),(0,X.jsx)(U,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=K):K=t[53];let b;t[54]===o?b=t[55]:(b=e=>{e.preventDefault(),f(null),l(o.trim())},t[54]=o,t[55]=b);let x;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,X.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=>s(e.target.value),t[57]=S):S=t[57];let C;t[58]===o?C=t[59]:(C=(0,X.jsx)(`input`,{id:`hf-suche`,value:o,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]=o,t[59]=C);let T;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,X.jsx)(z,{type:`submit`,children:`Suchen`}),t[60]=T):T=t[60],t[61]!==b||t[62]!==C?(q=(0,X.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:b,children:[x,C,T]}),t[61]=b,t[62]=C,t[63]=q):q=t[63],se=`flex flex-col px-4 pb-4`,t[64]!==d||t[65]!==w?(F=!d&&(0,X.jsxs)(X.Fragment,{children:[w.isFetching&&(0,X.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!w.isFetching&&w.isError&&(0,X.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,w.error.message]}),!w.isFetching&&w.data?.results.length===0&&(0,X.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),w.data?.results.map(e=>(0,X.jsxs)(`button`,{type:`button`,onClick:()=>f(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,X.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,X.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[_(e.downloads),` ↓`]})]},e.repo))]}),t[64]=d,t[65]=w,t[66]=F):F=t[66],I=d&&(0,X.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,X.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:d}),(0,X.jsx)(z,{variant:`ghost`,size:`sm`,onClick:()=>f(null),children:`Zurück`})]}),(0,X.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,X.jsxs)(`select`,{value:m,onChange:e=>h(e.target.value),className:`h-11 min-w-0 rounded-lg border border-linie-stark bg-erhaben px-3 text-foreground`,children:[(0,X.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(re).map(ae)]})]}),M&&(0,X.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:M}),k.isFetching&&(0,X.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!k.isFetching&&k.isError&&(0,X.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,k.error.message]}),!k.isFetching&&k.data&&e.length===0&&(0,X.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,X.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2`,children:[(0,X.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,X.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,X.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:L(n,1)}):null,(0,X.jsx)(z,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>v({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=g,t[15]=o,t[16]=a,t[17]=n,t[18]=r,t[19]=k.data,t[20]=k.error,t[21]=k.isError,t[22]=k.isFetching,t[23]=d,t[24]=m,t[25]=i,t[26]=w,t[27]=A,t[28]=j,t[29]=M,t[30]=P,t[31]=F,t[32]=I,t[33]=R,t[34]=W,t[35]=K,t[36]=q,t[37]=ie,t[38]=Z,t[39]=se}else A=t[27],j=t[28],M=t[29],P=t[30],F=t[31],I=t[32],R=t[33],W=t[34],K=t[35],q=t[36],ie=t[37],Z=t[38],se=t[39];let ce;t[67]!==F||t[68]!==I||t[69]!==se?(ce=(0,X.jsxs)(`div`,{className:se,children:[F,I]}),t[67]=F,t[68]=I,t[69]=se,t[70]=ce):ce=t[70];let le=g!==null,Q;t[71]!==g||t[72]!==d?(Q=g&&d?`${d} (${g.quant}${g.bytes?`, ${L(g.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(g.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=g,t[72]=d,t[73]=Q):Q=t[73];let ue=a.isPending?`Wird gestartet …`:`Installieren`,de=a.isPending,fe;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(fe=()=>v(null),t[74]=fe):fe=t[74];let pe;t[75]===M?pe=t[76]:(pe=M&&(0,X.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:M}),t[75]=M,t[76]=pe);let me=!!m,he;t[77]===me?he=t[78]:(he=ne(me),t[77]=me,t[78]=he);let ge;t[79]===he?ge=t[80]:(ge=(0,X.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:he}),t[79]=he,t[80]=ge);let _e;t[81]!==a.isPending||t[82]!==P||t[83]!==le||t[84]!==Q||t[85]!==ue||t[86]!==pe||t[87]!==ge?(_e=(0,X.jsxs)(te,{offen:le,titel:`Modell installieren?`,text:Q,knopf:ue,gesperrt:de,onNein:fe,onJa:P,children:[pe,ge]}),t[81]=a.isPending,t[82]=P,t[83]=le,t[84]=Q,t[85]=ue,t[86]=pe,t[87]=ge,t[88]=_e):_e=t[88];let $;t[89]!==A||t[90]!==R||t[91]!==W||t[92]!==K||t[93]!==q||t[94]!==ce||t[95]!==_e?($=(0,X.jsxs)(A,{side:R,className:W,children:[K,q,ce,_e]}),t[89]=A,t[90]=R,t[91]=W,t[92]=K,t[93]=q,t[94]=ce,t[95]=_e,t[96]=$):$=t[96];let ve;return t[97]!==j||t[98]!==ie||t[99]!==Z||t[100]!==$?(ve=(0,X.jsx)(j,{open:ie,onOpenChange:Z,children:$}),t[97]=j,t[98]=ie,t[99]=Z,t[100]=$,t[101]=ve):ve=t[101],ve}function ae(e){let[t,n]=e;return(0,X.jsx)(`option`,{value:t,children:n},t)}function oe(e){return typeof e==`string`?{quant:e}:e}var Z=115;function se(e){let t=(0,J.c)(55),{modelle:n,laufend:r}=e,i=A(),a=j(),o,s,c,l,u,d,p,m,h,g;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=f(i?.ram_total??a.data?.box.ram_total)??122.7,_=f(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(ce,0);s=Math.max(0,_-y);let b=t=>`${Math.min(100,t/e*100)}%`;o=I,m=`Speicher`,h=(0,X.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(_),` von `,Math.round(e),` GB belegt · Grenze ~`,Z,` GB`]});let x=`Speicher: ${Math.round(_)} von ${Math.round(e)} GB belegt`,S=b(_),C;t[17]===S?C=t[18]:(C={width:S},t[17]=S,t[18]=C);let w=`${_?y/_*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,X.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${_?s/_*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,X.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,X.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(Z),A;t[27]===k?A=t[28]:(A=(0,X.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?(g=(0,X.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]=g):g=t[32],p=`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,X.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,d=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]=u,t[10]=d,t[11]=p,t[12]=m,t[13]=h,t[14]=g}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],p=t[11],m=t[12],h=t[13],g=t[14];let _;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==d?(_=(0,X.jsxs)(`span`,{className:c,children:[l,u,d,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=d,t[38]=_):_=t[38];let v;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,X.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=v):v=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let b;t[42]===y?b=t[43]:(b=(0,X.jsxs)(`span`,{className:`flex items-center gap-2`,children:[v,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=b);let x;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,X.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=x):x=t[44];let S;t[45]!==b||t[46]!==p||t[47]!==_?(S=(0,X.jsxs)(`div`,{className:p,children:[_,b,x]}),t[45]=b,t[46]=p,t[47]=_,t[48]=S):S=t[48];let C;return t[49]!==o||t[50]!==S||t[51]!==m||t[52]!==h||t[53]!==g?(C=(0,X.jsxs)(o,{titel:m,rechts:h,children:[g,S]}),t[49]=o,t[50]=S,t[51]=m,t[52]=h,t[53]=g,t[54]=C):C=t[54],C}function ce(e,t){return e+(f(t.size_bytes)??0)}function le(e){let t=(0,J.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,X.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,X.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,X.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 Q(e){let t=(0,J.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=l();if(!r){let e;t[0]===n?e=t[1]:(e=(0,X.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,X.jsx)(D,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,X.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,X.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,X.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,X.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 u=c,d=!!r.capabilities?.vision||!!i,f;t[12]===n?f=t[13]:(f=(0,X.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[12]=n,t[13]=f);let p=a?`gruen`:`grau`,m=a?`Geladen`:`Auf Abruf`,h;t[14]!==p||t[15]!==m?(h=(0,X.jsx)(D,{art:p,children:m}),t[14]=p,t[15]=m,t[16]=h):h=t[16];let g;t[17]!==f||t[18]!==h?(g=(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[f,h]}),t[17]=f,t[18]=h,t[19]=g):g=t[19];let _;t[20]===r.name?_=t[21]:(_=(0,X.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=_);let v;t[22]===r.size_bytes?v=t[23]:(v=L(r.size_bytes),t[22]=r.size_bytes,t[23]=v);let y;t[24]===v?y=t[25]:(y=(0,X.jsx)(le,{name:`Größe`,wert:v}),t[24]=v,t[25]=y);let b=u?`${u}k`:`–`,x;t[26]===b?x=t[27]:(x=(0,X.jsx)(le,{name:`Kontext`,wert:b}),t[26]=b,t[27]=x);let S=d?`ja`:`nein`,C;t[28]===S?C=t[29]:(C=(0,X.jsx)(le,{name:`Bilder`,wert:S}),t[28]=S,t[29]=C);let w;t[30]!==x||t[31]!==C||t[32]!==y?(w=(0,X.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[y,x,C]}),t[30]=x,t[31]=C,t[32]=y,t[33]=w):w=t[33];let T=r.spec_active?` Mit Draft-Beschleunigung.`:``,E=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==T||t[36]!==E?(O=(0,X.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,T,E]}),t[34]=o,t[35]=T,t[36]=E,t[37]=O):O=t[37];let k;t[38]!==s||t[39]!==a||t[40]!==r.name?(k=!a&&(0,X.jsx)(z,{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]=k):k=t[41];let A;return t[42]!==w||t[43]!==O||t[44]!==k||t[45]!==g||t[46]!==_?(A=(0,X.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-linie bg-panel p-5`,children:[g,_,w,O,k]}),t[42]=w,t[43]=O,t[44]=k,t[45]=g,t[46]=_,t[47]=A):A=t[47],A}function ue(e){let t=(0,J.c)(54),{nutzung:n,laedt:r,fehler:i}=e;if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,X.jsx)(I,{titel:`Wer nutzt die Modelle`,children:r?(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,X.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(me)),t[3]=n.absender,t[4]=a);let o=a,s,c,l,u,d,f,p,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(fe),r=Math.max(1,...e);s=I,y=`Wer nutzt die Modelle`,t[21]===n.tage?c=t[22]:(c=(0,X.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,X.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,X.jsxs)(`li`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex justify-between gap-3 text-sm`,children:[(0,X.jsx)(`span`,{children:e.name}),(0,X.jsx)(`span`,{className:`ziffern`,children:_(e.anfragen)})]}),(0,X.jsx)(`div`,{className:`h-2 rounded-full bg-erhaben`,children:(0,X.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,X.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-3.5 p-0`,children:i}),t[30]=i,t[31]=u),g=`flex flex-col gap-1.5`,t[32]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,X.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`,p=`img`,m=`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,X.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),h=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]=p,t[16]=m,t[17]=h,t[18]=g,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],p=t[15],m=t[16],h=t[17],g=t[18],v=t[19],y=t[20];let b;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(b=[0,6,12,18].map(de),t[35]=b):b=t[35];let x;t[36]!==d||t[37]!==f||t[38]!==p||t[39]!==m||t[40]!==h?(x=(0,X.jsxs)(`svg`,{viewBox:d,className:f,role:p,"aria-label":m,children:[h,b]}),t[36]=d,t[37]=f,t[38]=p,t[39]=m,t[40]=h,t[41]=x):x=t[41];let S;t[42]!==x||t[43]!==g||t[44]!==v?(S=(0,X.jsxs)(`div`,{className:g,children:[v,x]}),t[42]=x,t[43]=g,t[44]=v,t[45]=S):S=t[45];let C;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,X.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,X.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 de(e){return(0,X.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 fe(e){return Object.values(e.je_absender).reduce(pe,0)}function pe(e,t){return e+t}function me(e){return e.anfragen}var he={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},ge={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function _e(e){let t=(0,J.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,X.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,X.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,X.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,X.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,X.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($)]})}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 $(e){let[t,n]=e;return(0,X.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-linie py-1`,children:[(0,X.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,X.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${ge[n.urteil??``]??`text-text-2`}`,children:b(n.kandidat,n.einheit)}),(0,X.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:b(n.baseline,n.einheit)})]},t)}function ve(e){let t=(0,J.c)(80),{k:n,test:r,heute:i}=e,a=C(),o=w(),[s,c]=(0,Y.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,X.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,X.jsx)(D,{art:`cyan`,children:p}),t[3]=p,t[4]=m);let g;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(g=n.groesse_gb!=null&&(0,X.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]=g):g=t[8];let _=he[n.status]??`grau`,v=h[n.status]??n.status,y;t[9]!==_||t[10]!==v?(y=(0,X.jsx)(D,{art:_,children:v}),t[9]=_,t[10]=v,t[11]=y):y=t[11];let b;t[12]!==f||t[13]!==m||t[14]!==g||t[15]!==y?(b=(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[f,m,g,y]}),t[12]=f,t[13]=m,t[14]=g,t[15]=y,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,X.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 T;t[22]!==n.status||t[23]!==r?(T=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,X.jsx)(_e,{test:r}),t[22]=n.status,t[23]=r,t[24]=T):T=t[24];let E;t[25]!==n.begruendung||t[26]!==n.testbar_grund?(E=n.testbar_grund&&!n.begruendung.startsWith(`Läuft gerade`)&&(0,X.jsx)(`p`,{className:`text-xs text-text-3`,children:n.testbar_grund}),t[25]=n.begruendung,t[26]=n.testbar_grund,t[27]=E):E=t[27];let O;t[28]!==a.isPending||t[29]!==n.status||t[30]!==n.testbar_jetzt||t[31]!==u||t[32]!==o.isPending?(O=u&&(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.testbar_jetzt&&(0,X.jsx)(z,{variant:`info`,size:`sm`,disabled:o.isPending,onClick:()=>c(`testen`),children:`Jetzt testen`}),n.status===`bestanden`&&(0,X.jsx)(z,{size:`sm`,disabled:a.isPending,onClick:()=>c(`uebernehmen`),children:`Übernehmen`}),(0,X.jsx)(z,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>c(`verwerfen`),children:`Verwerfen`})]}),t[28]=a.isPending,t[29]=n.status,t[30]=n.testbar_jetzt,t[31]=u,t[32]=o.isPending,t[33]=O):O=t[33];let k=s===`uebernehmen`,A=`${n.name} übernehmen?`,j=d?`${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.`,M;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>c(null),t[34]=M):M=t[34];let N;t[35]!==a||t[36]!==s||t[37]!==n.id||t[38]!==n.name?(N=()=>{s===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),c(null))},t[35]=a,t[36]=s,t[37]=n.id,t[38]=n.name,t[39]=N):N=t[39];let P;t[40]!==a.isPending||t[41]!==k||t[42]!==A||t[43]!==j||t[44]!==N?(P=(0,X.jsx)(te,{offen:k,titel:A,text:j,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:M,onJa:N}),t[40]=a.isPending,t[41]=k,t[42]=A,t[43]=j,t[44]=N,t[45]=P):P=t[45];let F=s===`testen`,I=`${n.name} jetzt testen?`,L;t[46]===n.groesse_gb?L=t[47]:(L=n.groesse_gb==null?``:` (${n.groesse_gb.toLocaleString(`de-DE`)} GB)`,t[46]=n.groesse_gb,t[47]=L);let R=`Das Radar lädt ${n.name}${L} herunter, falls nötig, misst das heutige Modell der Rolle und dann den Kandidaten. Das dauert je nach Download eine halbe bis zwei Stunden. Solange antworten Lucy und NerdQuiz etwas langsamer; ein geladener Coder wird dafür entladen, und wird er währenddessen gebraucht, bricht der Test ab. Das Ergebnis kommt als Meldung; fällt der Kandidat durch, werden seine Dateien gelöscht.`,B;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(B=()=>c(null),t[48]=B):B=t[48];let V;t[49]!==s||t[50]!==n.id||t[51]!==n.name||t[52]!==o?(V=()=>{s===`testen`&&(o.mutate({id:n.id,name:n.name}),c(null))},t[49]=s,t[50]=n.id,t[51]=n.name,t[52]=o,t[53]=V):V=t[53];let H;t[54]!==F||t[55]!==I||t[56]!==R||t[57]!==V||t[58]!==o.isPending?(H=(0,X.jsx)(te,{offen:F,titel:I,text:R,knopf:`Jetzt testen`,gesperrt:o.isPending,onNein:B,onJa:V}),t[54]=F,t[55]=I,t[56]=R,t[57]=V,t[58]=o.isPending,t[59]=H):H=t[59];let U=s===`verwerfen`,ee=`${n.name} verwerfen?`,W;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(W=()=>c(null),t[60]=W):W=t[60];let ne;t[61]!==a||t[62]!==s||t[63]!==n.id||t[64]!==n.name?(ne=()=>{s===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),c(null))},t[61]=a,t[62]=s,t[63]=n.id,t[64]=n.name,t[65]=ne):ne=t[65];let G;t[66]!==a.isPending||t[67]!==U||t[68]!==ee||t[69]!==ne?(G=(0,X.jsx)(te,{offen:U,gefahr:!0,titel:ee,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:W,onJa:ne}),t[66]=a.isPending,t[67]=U,t[68]=ee,t[69]=ne,t[70]=G):G=t[70];let K;return t[71]!==S||t[72]!==T||t[73]!==E||t[74]!==O||t[75]!==P||t[76]!==H||t[77]!==G||t[78]!==b?(K=(0,X.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3.5`,children:[b,S,T,E,O,P,H,G]}),t[71]=S,t[72]=T,t[73]=E,t[74]=O,t[75]=P,t[76]=H,t[77]=G,t[78]=b,t[79]=K):K=t[79],K}function ye(e){let t=(0,J.c)(30),{hirn:n,coder:r}=e,i=O(),a=P(),o=y(),s=T(),c=o.data?.jobs,l=(c??[]).filter(xe).at(-1),u=a.data?.job_id,d;t[0]!==u||t[1]!==c?(d=!!u&&!!c&&!c.some(e=>e.id===u),t[0]=u,t[1]=c,t[2]=d):d=t[2];let f=d,p=a.isPending||f||l!==void 0&&m(l),h=(0,Y.useRef)(p);if((0,Y.useEffect)(()=>{h.current&&!p&&s.invalidateQueries({queryKey:[`radar`]}),h.current=p},[p,s]),i.isError&&!i.data){let e=i.error instanceof S&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,X.jsx)(I,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,X.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let g=i.data,_=I,v;t[6]===a?v=t[7]:(v=()=>a.mutate(void 0),t[6]=a,t[7]=v);let b=p?`Sucht …`:`Jetzt suchen`,C;t[8]!==p||t[9]!==v||t[10]!==b?(C=(0,X.jsx)(z,{variant:`info`,size:`sm`,onClick:v,disabled:p,children:b}),t[8]=p,t[9]=v,t[10]=b,t[11]=C):C=t[11];let w;t[12]===g?w=t[13]:(w=g?.naechster_test?` Nächster Test: ${x(g.naechster_test)}.`:``,t[12]=g,t[13]=w);let E=p?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,D;t[14]!==w||t[15]!==E?(D=(0,X.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. Tagsüber geht es mit „Jetzt testen“, wenn der Kandidat samt Coder in den Speicher passt.`,w,E]}),t[14]=w,t[15]=E,t[16]=D):D=t[16];let k=!p&&l?.state===`failed`&&(0,X.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,W(l)??`ohne Meldung`]}),A;t[17]!==r||t[18]!==g||t[19]!==n?(A=g?g.kandidaten.length===0?(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,X.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:g.kandidaten.map(e=>(0,X.jsx)(ve,{k:e,test:g.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=g,t[19]=n,t[20]=A):A=t[20];let j;t[21]===g?j=t[22]:(j=g&&g.tests.length>0&&(0,X.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,X.jsx)(`h3`,{className:`schild text-xs text-text-3`,children:`Letzte Tests`}),g.tests.slice(0,3).map(be)]}),t[21]=g,t[22]=j);let M;return t[23]!==_||t[24]!==D||t[25]!==k||t[26]!==A||t[27]!==j||t[28]!==C?(M=(0,X.jsxs)(_,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:C,children:[D,k,A,j]}),t[23]=_,t[24]=D,t[25]=k,t[26]=A,t[27]=j,t[28]=C,t[29]=M):M=t[29],M}function be(e){return(0,X.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,X.jsx)(`span`,{className:`ziffern text-text-3`,children:x(e.datum)}),` · `,e.zusammenfassung]},e.id)}function xe(e){return e.group===`radar`}var Se=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function Ce(e){let t=(0,J.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,X.jsx)(s,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,X.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let c;t[3]===r?c=t[4]:(c=(0,X.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=c);let l;t[5]!==o||t[6]!==c?(l=(0,X.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,c]}),t[5]=o,t[6]=c,t[7]=l):l=t[7];let u;t[8]===i?u=t[9]:(u=(0,X.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=u);let d;return t[10]!==l||t[11]!==u?(d=(0,X.jsxs)(`details`,{className:`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-2`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function we(){let e=(0,J.c)(37),t=g(),n=v(),[r,i]=(0,Y.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],d=r.reduce(Te,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,X.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[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,X.jsx)(De,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,X.jsxs)(I,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=I,o=`Aufräumen`,s=r.length>0?(0,X.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,d.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,X.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[16]=c):c=e[16],l=t.isPending?(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,X.jsx)(Ce,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${d.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,X.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,X.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,X.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,X.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,X.jsx)(D,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,X.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,X.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,X.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,X.jsx)(z,{variant:`ghost`,size:`sm`,className:Se,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d=r!==null,f=`${r?.name??``} löschen?`,p;e[17]===r?.groesse_gb?p=e[18]:(p=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=p);let m=`${r?.hinweis??``} Es werden ${p} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,h;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>i(null),e[19]=h):h=e[19];let _;e[20]!==r||e[21]!==n?(_=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=_):_=e[22];let y;e[23]!==n.isPending||e[24]!==_||e[25]!==d||e[26]!==f||e[27]!==m?(y=(0,X.jsx)(te,{offen:d,gefahr:!0,titel:f,text:m,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:h,onJa:_}),e[23]=n.isPending,e[24]=_,e[25]=d,e[26]=f,e[27]=m,e[28]=y):y=e[28];let b;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,X.jsx)(De,{}),e[29]=b):b=e[29];let x;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==y||e[34]!==c||e[35]!==l?(x=(0,X.jsxs)(a,{titel:o,rechts:s,children:[c,l,y,b]}),e[30]=a,e[31]=o,e[32]=s,e[33]=y,e[34]=c,e[35]=l,e[36]=x):x=e[36],x}function Te(e,t){return e+t.groesse_gb}function Ee(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function De(){let e=(0,J.c)(23),t=d(),n=k(),[r,i]=(0,Y.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(Oe,0);a=`flex flex-col gap-2`,o=t.isPending?(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,X.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,X.jsxs)(Ce,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${Ee(s)}`,children:[(0,X.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,X.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,X.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,X.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,X.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,X.jsx)(D,{children:`Altrest`})]}),(0,X.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,X.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,X.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,X.jsx)(z,{variant:`ghost`,size:`sm`,className:Se,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let u=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,f;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>i(null),e[9]=f):f=e[9];let p;e[10]!==r||e[11]!==n?(p=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=p):p=e[12];let m;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==u||e[17]!==p?(m=(0,X.jsx)(te,{offen:s,gefahr:!0,titel:c,text:u,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:f,onJa:p}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=u,e[17]=p,e[18]=m):m=e[18];let h;return e[19]!==a||e[20]!==o||e[21]!==m?(h=(0,X.jsxs)(`div`,{className:a,children:[o,m]}),e[19]=a,e[20]=o,e[21]=m,e[22]=h):h=e[22],h}function Oe(e,t){return e+t.groesse_bytes}function ke(){let e=(0,J.c)(74),t=E(),n=F(),r=O(),i=y(),[a,o]=(0,Y.useState)(!1),s;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={select:Ne},e[0]=s):s=e[0];let l=q(s),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,Y.useEffect)(d,f),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,X.jsx)(M,{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,X.jsx)(M,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let p=t.data.models,m=t.data.running,h,g,_,v,b,S,C,w,T,D,k,A;if(e[8]!==m||e[9]!==p||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=p.find(Me);g=p.find(je);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,a=i(t,`vision`);_=i(g,`coder-bild`);let s=p.filter(e=>![t,g,a,_].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?(k=(0,X.jsx)(se,{modelle:p,laufend:m}),e[29]=m,e[30]=p,e[31]=k):k=e[31],e[32]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,X.jsx)(K,{alsPanel:!0}),e[32]=A):A=e[32];let d;e[33]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,X.jsx)(Q,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[33]=d):d=e[33],v=(0,X.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,X.jsx)(Q,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&m.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,X.jsx)(Q,{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,y;e[34]!==n.data||e[35]!==n.isPending||e[36]!==f?(y=(0,X.jsx)(ue,{nutzung:n.data,laedt:n.isPending,fehler:f}),e[34]=n.data,e[35]=n.isPending,e[36]=f,e[37]=y):y=e[37];let E=t?.name,O=g?.name,j;e[38]!==E||e[39]!==O?(j=(0,X.jsx)(ye,{hirn:E,coder:O}),e[38]=E,e[39]=O,e[40]=j):j=e[40],e[41]!==y||e[42]!==j?(b=(0,X.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.3fr)]`,children:[y,j]}),e[41]=y,e[42]=j,e[43]=b):b=e[43],h=I,w=`Weitere Einträge`,e[44]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,X.jsxs)(z,{variant:`outline`,size:`sm`,onClick:()=>o(!0),children:[(0,X.jsx)(c,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[44]=T):T=e[44],D=s.length===0&&(0,X.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),S=`m-0 flex list-none flex-col p-0`;let M;e[45]!==m||e[46]!==u?(M=e=>(0,X.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,X.jsxs)(`span`,{className:`min-w-0`,children:[(0,X.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,X.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,X.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:L(e.size_bytes)}),(0,X.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:m.includes(e.name)?`geladen`:u[e.name]?`zuletzt ${x(u[e.name])}`:`länger nicht geladen`})]},e.name),e[45]=m,e[46]=u,e[47]=M):M=e[47],C=s.map(M),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]=b,e[18]=S,e[19]=C,e[20]=w,e[21]=T,e[22]=D,e[23]=k,e[24]=A}else h=e[13],g=e[14],_=e[15],v=e[16],b=e[17],S=e[18],C=e[19],w=e[20],T=e[21],D=e[22],k=e[23],A=e[24];let j;e[48]!==S||e[49]!==C?(j=(0,X.jsx)(`ul`,{className:S,children:C}),e[48]=S,e[49]=C,e[50]=j):j=e[50];let N;e[51]!==h||e[52]!==j||e[53]!==w||e[54]!==T||e[55]!==D?(N=(0,X.jsxs)(h,{titel:w,rechts:T,children:[D,j]}),e[51]=h,e[52]=j,e[53]=w,e[54]=T,e[55]=D,e[56]=N):N=e[56];let P;e[57]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,X.jsx)(we,{}),e[57]=P):P=e[57];let R;e[58]===Symbol.for(`react.memo_cache_sentinel`)?(R=()=>o(!1),e[58]=R):R=e[58];let B;e[59]!==g||e[60]!==_?(B=g?{name:g.name,zwilling:!!_,weitere:g.aliases.filter(Ae)}:void 0,e[59]=g,e[60]=_,e[61]=B):B=e[61];let V;e[62]===B?V=e[63]:(V={coder:B},e[62]=B,e[63]=V);let H;e[64]!==a||e[65]!==V?(H=(0,X.jsx)(ie,{offen:a,onSchliessen:R,rollenJetzt:V}),e[64]=a,e[65]=V,e[66]=H):H=e[66];let U;return e[67]!==v||e[68]!==b||e[69]!==N||e[70]!==H||e[71]!==k||e[72]!==A?(U=(0,X.jsxs)(X.Fragment,{children:[k,A,v,b,N,P,H]}),e[67]=v,e[68]=b,e[69]=N,e[70]=H,e[71]=k,e[72]=A,e[73]=U):U=e[73],U}function Ae(e){return e.toLowerCase()!==`coder`}function je(e){return R(e)===`coder`}function Me(e){return R(e)===`hirn`}function Ne(e){return e.hash}export{ve as Kandidat,ke as ModelleSeite};