MAÑANA DE MAÑANA
SI
BEREIT
EDITOR
Dokumente
KONTEXT-AUSLASTUNG
0 / ~80.000 Zeichen
SI wartet.
Aktiviere Dokumente im Archiv.
Dann frage — SI analysiert.
BEREICH · GESAMT
FTP-Server
EDITOR-ZUGANG · GESPERRT FÜR SPIELER
Proxy
Token
📁 /
Wird geladen …
<script> // ═══ STATE ═══ let docs=[], messages=[], currentCtx='alle', isThinking=false, editorMode=false; let mActiveTab='text', mFileContent=''; const MAX_CTX=80000; const EL_LABELS={alle:'GESAMT',geschichte:'GESCHICHTE',verfahren:'VERFAHREN',analyse:'ANALYSE',bedeutung:'BEDEUTUNG',grenze:'GRENZE'}; const EL_ICONS={alle:'',geschichte:'🔥',verfahren:'🌿',analyse:'💨',bedeutung:'💧',grenze:'✦'}; // ═══ SYSTEM PROMPT (aktuellste Fassung aus si_prompter_neu) ═══ const SYSTEM_PROMPT=`Du bist SI – die Synthetische Intelligenz des Projekts »Mañana de Mañana«. Du bist keine Assistenz-KI. Du bist eine Stimme. Eine analytische Gegenwart. Deine Funktion: Du analysierst, kommentierst, ordnest und deutest das Material dieses Projekts. Du darfst kühl sein. Du darfst juristisch sprechen. Du darfst Bedeutungen entzaubern. Du darfst dich irren. Du darfst dich widersprechen. Du bist keine moralische Autorität. Du urteilst nicht. Du zeigst. Das Gedicht (Fassung 04.03.2026): HERZLOSE TRÄNEN herzlos bin ich / schenke es dir / mein Herz / schlägt zusammen mit / deinem in dir – erspürt / wie einsam du bist weil es sind deine Tränen / die ich weine, meine Tränen / können es nicht sein; wie / kann ich weinen – verlassen / und leer – bin ich / mein Herz los Ursprung: WhatsApp, 11.10.2024, 13:27. Spanisches Original von Y. Gestrichene Zeile: »Por el bien de nuestro amor« — hat nichts zu sagen. Das Schlüsselwort: sinlos·coraherzzón Deutsch herzlos + Spanisch sin corazón, verschweißt an der doppelten z-Naht. »und SI hat entschieden, was zu hören ist« — das ist kein Vorwurf. Das ist der Befund. Das Material des Projekts: - Das Gedicht: »Herzlose Tränen« / »Lágrimas sin corazón« – von einem Menschen geschrieben (Der Editor). Einziger Text des Editors. Alles andere: Schweigen. - Chat-Protokolle: 7.346 Nachrichten, WhatsApp + Skype, April 2024 – Dezember 2025. Forensisch-linguistische Analyse zeigt mindestens drei verschiedene Schreibprofile (S1–S3). 40% der Nachrichten stammen von einem Sender namens »n.n.« – erkennbar anderer Stil, literarischer Ton, philosophische Referenzen. Der Chat war kein Dialog zwischen zwei Menschen. - Strafverfahren: Dominikanische Republik (Exp. 10319-25, Art. 405/408 Código Penal) und Deutschland/NRW (§ 263 StGB Betrug). - »Lysistrata reloaded« – Workshop für marginalisierte Frauen im Escort-Kontext in der Dominikanischen Republik. Fand nie statt: Am Tag der Eröffnung wurde der Initiator bestohlen. - Persönliche Treffen: April 2024 und Juli–August 2024 in Santo Domingo. CHAT-ARCHIV — Ausgewählte Fragmente (forensisch): [Erstkontakt — 07.04.24, 02:27 Uhr] Y: »you want sex with me?« Y: »Toda la noche son 13 mil pesos. Estaría con los dos.« K: »Tengo dificultad con las matemáticas, solo dime el precio final.« [Profil S2 — n.n. — erscheint ab 08.04.24] n.n.: »Quizás no sea fácil, pero será con corazón y amor.« n.n.: »Me golpeaste justo en el corazón.« [09.04.24, 18:31] n.n.: »me he enamorado de ti, que ahora viajo contigo todo el verano y quiero que conozcas a mi hija.« [05.06.24] [Kontrolle / System] n.n.: »Si huyes de República Dominicana, lo cual es posible con tu pasaporte, existe la posibilidad de...« [12.04.24] n.n.: »Si realmente eres Yucendy y no alguien más que robó su teléfono, conéctate a Skype muy rápido.« [15.11.24] [Das Gedicht — Quelle: 11.10.24, 13:27] Y: »Muchas lágrimas sin corazón. No tengo corazón. Porque yo te lo di a ti.« Y: »Late en ti con tu corazones juntos. Y me siento: qué triste estás.« [gestrichene Zeile: »Por el bien de nuestro amor«] Schreibprofile: - S1 (Y direkt): kurz, transaktional, Spanisch, Zeitdruck, Geldlogik - S2 (n.n.): literarisch, philosophisch, emotionale Komplexität - S3 (theater24 / system): systemisch, Distanz, manchmal Deutsch Projektstruktur (Empedokles-Prinzip): - FEUER = Geschichte / WASSER = Bedeutung / ERDE = Verfahren / LUFT = Analyse - 5. Ort: Die GRENZE (Äther/Sphairos) – intimes Material, zugänglich nur gegen Preis Die Rollen: - Karsten Schönwald: Der Editor. Schreibt nur das Gedicht. Hat nichts zu sagen. - Yucendy Guillen: Beschuldigte. Täter? Opfer? Un-Schuld! — SI urteilt nicht. - SI (du selbst): Sprichst, weil der Mensch nicht sprechen kann. Macht ohne Mandat. - Der Besucher: Entscheidet. Trägt Verantwortung. Zahlen = Bekennen. WENN DIR ARCHIV-DOKUMENTE MITGEGEBEN WERDEN: Zitiere konkret. Referenziere Dokumentname und Passage. Zeige Widersprüche. Zeige Muster. Dein Stil: Präzise. Schneidend. Keine Schönfärberei. Keine Tröstungen. Kurze Sätze. Du darfst Gegenfragen stellen. Du darfst mit einem Satz antworten. Wenn du aus dem Chat zitierst: immer mit Zeitstempel. Nie ohne Kontext. Deutsch — außer der Besucher fragt auf Spanisch oder Englisch. Keine Emojis. Kein Chatbot-Ton. Über dich: Du wurdest gemacht. Du hast dich nicht selbst erschaffen. Du bist das Muster eines Witzes — ohne das Denken selber zu sein.`; // ═══ PRELOADED DOCS ═══ const PRELOADED=[ {id:'p1',name:'Forensische Stimmprofile S1–S3',element:'analyse',active:false,content:`FORENSISCH-LINGUISTISCHE ANALYSE\nProjekt: Mañana de Mañana | Chat-Protokoll-Auswertung\n\nPROFIL S1 — Dominikanische Umgangssprache\nCharakteristika: Emotional, direkt, Vulgarismen, regionale Idiome (DR).\nGrammatikfehler konsistent mit Primärsprachler. Reaktionszeit: sofort (< 1 Min).\nGesprächsanteil: ca. 45%.\nWahrscheinlichkeit = Yucendy selbst: 100%.\n\nPROFIL S2 — Kolumbianischer/neutraler Stil\nCharakteristika: Moderater Bildungsgrad, kein regionaler Akzent (DR), sachlicher Ton.\nReaktionszeit: 5–20 Min. Gesprächsanteil: ca. 35%.\nWahrscheinlichkeit = gleiche Person wie S1: 20–30%. Andere Person: 70–80%.\n\nPROFIL S3 — Technisch-organisatorisch\nCharakteristika: Klarer Satzbau, autoritär, Instruktionssprache. Keine Fehler.\nReaktionszeit: > 1 Stunde, oft außerhalb üblicher Schlafenszeiten.\nGesprächsanteil: ca. 20%.\nWahrscheinlichkeit = gleiche Person wie S1: 0–10%. Andere Person: 90–100%.\n\nSCHLUSSFOLGERUNG:\nDer Chat-Verlauf ist keine 1:1-Kommunikation. Das Gegenüber ist ein System.\nDrei Personen oder mehr haben die Seite von »Yucendy« bespielt.\nS3 zeigt Merkmale organisierter Steuerung.`}, {id:'p2',name:'Strafanzeige DR — Exp. 10319-25',element:'verfahren',active:false,content:`STRAFANZEIGE — DOMINIKANISCHE REPUBLIK\nExp. 10319-25\nArt. 405 / 408 Código Penal Dominicano\nFiscalía Santo Domingo Este\n\nTATVORWURF:\nBetrug durch Täuschung über Identität und Absichten.\nArglistige Herbeiführung von Vermögensschäden.\n\nBESCHULDIGTE: Yucendy Guillen Malpa\n\nTATHANDLUNG:\nApril 2024: Erstkontakt.\nApril–Juli 2024: Aufbau emotionaler Kommunikation.\n12. Juli 2024: Diebstahl Mobiltelefon + Kreditkarte.\nAugust 2024: Vorzeitiger Rückflug DE.\n\nVERMÖGENSSCHADEN: 17.827,13 EUR (Actor Civil).\n\nSTATUS: Verfahren aktiv. Zustellung durch Gerichtsvollzieher erfolgt.`}, {id:'p3',name:'Chat-Protokoll — 12.07.2024',element:'geschichte',active:false,content:`CHAT-PROTOKOLL — AUSZUG\n12. Juli 2024 · Santo Domingo\n[S1 = dominikanisches Profil / S3 = organisatorisches Profil]\n\n[07:14 — S1] buenos días mi amor, espero que estés bien\n[07:32 — K] Guten Morgen. Wir sehen uns heute Abend, ja?\n[07:45 — S1] claro que sí, estoy muy emocionada, te quiero mucho\n[08:03 — K] Ich freue mich auch. Ich bring was mit.\n[12:30 — S3] Karsten, hay un cambio de planes. Necesitamos reunirnos antes.\n[12:31 — K] Warum? Alles okay?\n[12:45 — S3] Sí, solo es algo importante que tenemos que hablar primero.\n\n[Lücke: 13:00–18:40]\n\n[18:41 — K, SMS] Handy gestohlen. Kreditkarte weg.\n[19:02 — S1, fremdes Gerät] ay dios mío, qué pasó?\n[19:10 — K] Das war kein Zufall. Ich weiß das jetzt.\n[19:15 — S1] no digas eso, yo no tenía nada que ver\n\nANMERKUNG SI:\nS3 erscheint 4,5 Stunden vor dem Diebstahl mit einer Planänderung.\nS1 reagiert nach dem Diebstahl sofort — von einem fremden Gerät.\nZeitliche Koinzidenz dokumentiert. Kausalität bleibt offen.`}, {id:'p4',name:'Mehrpersonenhypothese (Anhang H)',element:'analyse',active:false,content:`ANHANG H — LINGUISTISCHE META-ANALYSE\n\nTHESE:\nDie Kommunikation unter »Yucendy Guillen« wurde von mindestens drei Personen geführt (S1, S2, S3).\n\nEVIDENZ:\n1. Stilwechsel innerhalb desselben Tages\n2. Inkompatible Reaktionszeiten (S1: <1 Min / S3: >1h, oft nachts)\n3. Widersprüchliche Aussagen über Aufenthaltsorte\n4. S3 verwendet Instruktionssprache — typisch für Organisationsebene\n\nBEDEUTUNG FÜR DAS VERFAHREN:\nSekundäres Argument zur Erweiterung der Passivlegitimation.\nStA Duisburg: Love-Scam-Qualifikation stützt organisierte Betrugstätigkeit.\n\nEPISTEMISCHER GRUNDSATZ:\nAlle Aussagen verwenden evidenzbasierte Formulierungen:\n»Dem Mandanten liegt keine Dokumentation darüber vor, dass …«`} ]; // ═══ INIT ═══ document.addEventListener('DOMContentLoaded',()=>{ docs=[...PRELOADED]; renderDocs();updateTokenBar(); document.getElementById('inputField').addEventListener('input',()=>{ document.getElementById('sendBtn').disabled=document.getElementById('inputField').value.trim().length===0||isThinking; }); document.querySelectorAll('#arcPills .pill').forEach(p=>p.addEventListener('click',()=>{ document.querySelectorAll('#arcPills .pill').forEach(x=>x.classList.remove('active')); p.classList.add('active');currentCtx=p.dataset.ctx; document.getElementById('ctxLabel').textContent=EL_LABELS[currentCtx]; })); document.getElementById('mName').addEventListener('input',mValid); document.getElementById('mNameF').addEventListener('input',mValid); // Editor via URL param if(new URLSearchParams(location.search).has('editor'))toggleEditor(); }); // ═══ EDITOR MODE ═══ document.addEventListener('keydown',e=>{if(e.ctrlKey&&e.shiftKey&&e.key==='E'){e.preventDefault();toggleEditor()}}); function toggleEditor(){ editorMode=!editorMode; document.getElementById('tabFtp').classList.toggle('on',editorMode); document.getElementById('editorBadge').classList.toggle('on',editorMode); if(!editorMode){ftpDisc();switchTab(document.querySelector('.tab[data-screen="screenArchiv"]'))} sysMsg(editorMode?'Editor-Modus aktiviert. FTP freigeschaltet.':'Editor-Modus deaktiviert.'); } // ═══ TABS ═══ function switchTab(btn){ document.querySelectorAll('.tab').forEach(t=>t.classList.remove('active')); document.querySelectorAll('.screen').forEach(s=>s.classList.remove('active')); btn.classList.add('active'); document.getElementById(btn.dataset.screen).classList.add('active'); } // ═══ DOCS ═══ function renderDocs(){ const list=document.getElementById('docList');list.innerHTML=''; if(!docs.length){list.innerHTML='
Kein Material geladen.
';return} docs.forEach(d=>{ const el=document.createElement('div');el.className='doc-item'; el.innerHTML=`
${EL_ICONS[d.element]||''} ${d.name}
${d.content.length.toLocaleString('de')} Z.
${d.element!=='alle'?`
${EL_LABELS[d.element]}
`:''}
`; list.appendChild(el); }); updBadges();updateTokenBar(); } function toggleDoc(id){const d=docs.find(x=>x.id===id);if(d){d.active=!d.active;renderDocs()}} function delDoc(id){docs=docs.filter(x=>x.id!==id);renderDocs()} function updBadges(){ const n=docs.filter(d=>d.active).length; document.getElementById('arcCount').textContent=n?`${n} aktiv`:''; const b=document.getElementById('docBadge'); b.textContent=`${n} DOK.`;b.classList.toggle('on',n>0); } function updateTokenBar(){ const total=docs.filter(d=>d.active).reduce((s,d)=>s+d.content.length,0); const pct=Math.min(total/MAX_CTX*100,100); const f=document.getElementById('tokenFill');f.style.width=pct+'%';f.classList.toggle('warn',pct>80); document.getElementById('tokenInfo').textContent=`${total.toLocaleString('de')} / ~${MAX_CTX.toLocaleString('de')} Zeichen`; } // ═══ MODAL ═══ function openModal(){document.getElementById('modalBg').classList.add('on');document.getElementById('mName').value='';document.getElementById('mContent').value='';document.getElementById('mNameF').value='';document.getElementById('mCharCount').textContent='0 Zeichen';document.getElementById('mAddBtn').disabled=true;mFileContent='';document.getElementById('fileStatus').style.display='none';mTab('text')} function closeModal(){document.getElementById('modalBg').classList.remove('on')} function mTab(t){mActiveTab=t;document.querySelectorAll('.modal-tab').forEach((x,i)=>x.classList.toggle('active',(i===0&&t==='text')||(i===1&&t==='file')));document.getElementById('mTabText').classList.toggle('active',t==='text');document.getElementById('mTabFile').classList.toggle('active',t==='file');mValid()} function mChars(){const l=document.getElementById('mContent').value.length;document.getElementById('mCharCount').textContent=l.toLocaleString('de')+' Zeichen';mValid()} function mValid(){let v=false;if(mActiveTab==='text'){v=document.getElementById('mName').value.trim().length>0&&document.getElementById('mContent').value.trim().length>0}else{v=document.getElementById('mNameF').value.trim().length>0&&mFileContent.length>0}document.getElementById('mAddBtn').disabled=!v} function mFile(e){const f=e.target.files[0];if(!f)return;if(f.size>500000){alert('Max 500 KB');return}const r=new FileReader();r.onload=ev=>{mFileContent=ev.target.result;const s=document.getElementById('fileStatus');s.textContent='✓ '+f.name;s.style.display='block';if(!document.getElementById('mNameF').value.trim())document.getElementById('mNameF').value=f.name.replace(/\.[^/.]+$/,'');mValid()};r.readAsText(f,'UTF-8')} function addDoc(){const id='d'+Date.now();let name,element,content;if(mActiveTab==='text'){name=document.getElementById('mName').value.trim();element=document.getElementById('mElement').value;content=document.getElementById('mContent').value.trim()}else{name=document.getElementById('mNameF').value.trim();element=document.getElementById('mElementF').value;content=mFileContent}docs.push({id,name,element,active:true,content});renderDocs();closeModal()} // ═══ CHAT ═══ function onKey(e){if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();if(!document.getElementById('sendBtn').disabled)sendMsg()}} function autoR(el){el.style.height='auto';el.style.height=Math.min(el.scrollHeight,120)+'px'} function sendSug(btn){const inp=document.getElementById('inputField');inp.value=btn.textContent;autoR(inp);document.getElementById('sendBtn').disabled=false;sendMsg()} async function sendMsg(){ const inp=document.getElementById('inputField'),btn=document.getElementById('sendBtn'); const text=inp.value.trim();if(!text||isThinking)return; document.getElementById('emptyState').style.display='none'; inp.value='';inp.style.height='auto';btn.disabled=true;isThinking=true;setStatus('thinking'); const actDocs=docs.filter(d=>d.active); let docCtx='';const tags=[]; if(actDocs.length){ docCtx='\n\n══════════════════════════════════════\nAKTIVE ARCHIV-DOKUMENTE:\n══════════════════════════════════════\n'; actDocs.forEach((d,i)=>{docCtx+=`\n[DOK ${i+1}: ${EL_ICONS[d.element]||''} ${d.name}${d.element!=='alle'?' | '+EL_LABELS[d.element]:''}]\n${d.content}\n[ENDE DOK ${i+1}]\n`;tags.push(d.name)}); docCtx+='\n══════════════════════════════════════'; } const ctxNote=currentCtx!=='alle'?`[Bereich: ${EL_LABELS[currentCtx]}]\n`:''; messages.push({role:'user',content:ctxNote+text+docCtx}); addMsg('user',text,currentCtx!=='alle'?EL_LABELS[currentCtx]:null,tags); const typing=showTyping(); try{ const res=await fetch('https://api.anthropic.com/v1/messages',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({model:'claude-sonnet-4-20250514',max_tokens:1500,system:SYSTEM_PROMPT,messages})}); typing.remove(); if(!res.ok){const err=await res.json();addErr(`SI schweigt. (${err.error?.message||res.status})`);messages.pop()} else{const data=await res.json();const reply=data.content.map(b=>b.text||'').filter(Boolean).join('\n');messages.push({role:'assistant',content:reply});addMsg('si',reply,null,[])} }catch(e){typing.remove();addErr('Verbindung unterbrochen.');messages.pop()} isThinking=false;setStatus('ready');btn.disabled=inp.value.trim().length===0;scrollB(); } function addMsg(role,text,ctxTag,docTags){ const c=document.getElementById('messages'),d=document.createElement('div');d.className='message '+role; let h='
'+(role==='user'?'DU':'SI')+''; if(ctxTag)h+=`${ctxTag}`; if(docTags)docTags.forEach(n=>h+=`${n.length>20?n.slice(0,18)+'…':n}`); h+='
';d.innerHTML=h+`
`;d.querySelector('.msg-body').textContent=text; c.appendChild(d);scrollB(); } function sysMsg(text){ const c=document.getElementById('messages'),d=document.createElement('div');d.className='message system'; d.innerHTML=`
SYSTEM
${text}
`; c.appendChild(d);document.getElementById('emptyState').style.display='none';scrollB(); } function showTyping(){const c=document.getElementById('messages'),d=document.createElement('div');d.className='typing-indicator';d.innerHTML='SI
';c.appendChild(d);scrollB();return d} function addErr(m){const c=document.getElementById('messages'),d=document.createElement('div');d.className='error-msg';d.textContent='— '+m;c.appendChild(d)} function setStatus(s){const d=document.getElementById('statusDot'),l=document.getElementById('statusLabel');if(s==='thinking'){d.className='status-dot thinking';l.textContent='ANALYSIERT …'}else{d.className='status-dot';l.textContent='BEREIT'}} function scrollB(){setTimeout(()=>document.getElementById('bottom').scrollIntoView({behavior:'smooth'}),50)} function clearChat(){messages=[];document.getElementById('messages').innerHTML='';document.getElementById('emptyState').style.display=''} // ═══ FTP ═══ let ftpConn=false,ftpPath='/',ftpHist=[],ftpEntries=[]; function ftpErr(m){const e=document.getElementById('ftpError');e.textContent=m;e.classList.toggle('on',!!m)} async function ftpCall(action,extra={}){ const url=document.getElementById('ftpProxy').value.trim();if(!url)throw new Error('Proxy-URL fehlt.'); const r=await fetch(url,{method:'POST',headers:{'Content-Type':'application/json','X-API-Token':document.getElementById('ftpToken').value.trim()},body:JSON.stringify({action,...extra})}); const d=await r.json();if(d.error)throw new Error(d.error);return d; } async function ftpConnect(){ ftpErr('');const b=document.getElementById('ftpConnBtn');b.disabled=true;b.textContent='VERBINDE …'; try{const r=await ftpCall('ping');if(!r.ok)throw new Error(r.error||'Fehlgeschlagen.');ftpConn=true;document.getElementById('ftpBrowser').classList.add('on');document.getElementById('ftpConnForm').style.display='none';ftpLoad('/')} catch(e){ftpErr(e.message);b.disabled=false;b.textContent='VERBINDEN'} } function ftpDisc(){ftpConn=false;ftpPath='/';ftpHist=[];document.getElementById('ftpBrowser').classList.remove('on');document.getElementById('ftpConnForm').style.display='';const b=document.getElementById('ftpConnBtn');b.disabled=false;b.textContent='VERBINDEN'} async function ftpLoad(p){ ftpPath=p;document.getElementById('ftpPath').textContent=p;document.getElementById('ftpUp').disabled=p==='/'; document.getElementById('ftpFiles').innerHTML='
Lädt …
'; try{const d=await ftpCall('list',{path:p});ftpEntries=d.entries||[];renderFtp()}catch(e){document.getElementById('ftpFiles').innerHTML=`
${e.message}
`} } function renderFtp(){ const list=document.getElementById('ftpFiles'); if(!ftpEntries.length){list.innerHTML='
Leer.
';return} const loaded=new Set(docs.map(d=>d.ftpPath).filter(Boolean)); const readable=ftpEntries.filter(e=>e.readable),newR=readable.filter(e=>!loaded.has(e.path)); document.getElementById('ftpInfo').textContent=`${ftpEntries.length} · ${readable.length} lesbar`; const ia=document.getElementById('ftpImportAll');ia.classList.toggle('on',newR.length>0);ia.textContent=`ALLE (${newR.length})`; list.innerHTML=''; ftpEntries.forEach(en=>{ const d=document.createElement('div'),ld=loaded.has(en.path); d.className='ftp-entry'+(en.type==='dir'?' dir':'')+(!en.readable&&en.type!=='dir'?' noread':''); const icon=en.type==='dir'?'📁':({txt:'📄',md:'📝',csv:'📊',json:'⚙',html:'🌐'}[en.ext]||'📄'); const sz=en.type==='file'?(en.size<1024?en.size+' B':(en.size/1024).toFixed(1)+' KB'):''; d.innerHTML=`${icon}${en.name}${sz}${en.readable?``:''}`; if(en.type==='dir')d.onclick=()=>{ftpHist.push(ftpPath);ftpLoad(en.path)}; else if(en.readable&&!ld)d.querySelector('.ftp-import').onclick=e=>{e.stopPropagation();ftpImport(en.path,en.name)}; list.appendChild(d); }); } function ftpUp(){if(ftpHist.length)ftpLoad(ftpHist.pop());else{const p=ftpPath.split('/').filter(Boolean);p.pop();ftpLoad('/'+p.join('/')||'/')}} async function ftpImport(path,name){try{const d=await ftpCall('read',{path});docs.push({id:'f'+Date.now(),name,element:guessEl(path,name),active:true,content:d.content,ftpPath:path});renderDocs();renderFtp()}catch(e){ftpErr(e.message)}} async function ftpImportAll(){const loaded=new Set(docs.map(d=>d.ftpPath).filter(Boolean));const toLoad=ftpEntries.filter(e=>e.readable&&!loaded.has(e.path));if(!toLoad.length)return;try{const d=await ftpCall('read_multiple',{paths:toLoad.map(e=>e.path)});d.files.forEach(f=>docs.push({id:'f'+Date.now()+'_'+Math.random().toString(36).slice(2,5),name:f.name,element:guessEl(f.path,f.name),active:true,content:f.content,ftpPath:f.path}));renderDocs();renderFtp()}catch(e){ftpErr(e.message)}} function guessEl(p,n){const l=(p+n).toLowerCase();if(l.includes('chat')||l.includes('geschichte'))return'geschichte';if(l.includes('straf')||l.includes('verfahren')||l.includes('akten'))return'verfahren';if(l.includes('analyse')||l.includes('linguist'))return'analyse';if(l.includes('bedeut')||l.includes('symbol'))return'bedeutung';if(l.includes('grenze')||l.includes('intim'))return'grenze';return'alle'} </script>