MHRN-Space / tmp /write_wesen.py
ThomasHeisig's picture
Sync GitHub main 4645f4137666463023fa501984a14336dd2fc666 (part 12)
f74b8f6 verified
Raw History Blame Contribute Delete
6.36 kB
import sys
content = r'''
function renderVitals(){const m=runtimeMetrics();const rows=[['Tick',m.tick??'—'],['Feuerrate',fmt(m.firing,' Hz',1)],['Target Hz',fmt(m.targetHz,' Hz',0)],['Achieved Hz',fmt(m.achievedHz,' Hz',1)],['Energie',fmt(m.energy,'',3)],['CPU',fmt(m.cpu,' %',0)],['RAM',fmt(m.memory,' %',0)],['Temperatur',fmt(m.temp,' °C',1)],['Fan',fmt(m.fan,' rpm',0)],['Disk',fmt(m.disk,' %',0)]];document.getElementById('wesen-vitals').innerHTML=rows.map(function(r){return '<div class="wesen-metric"><span>'+r[0]+'</span><strong>'+esc(r[1])+'</strong></div>';}).join('');document.getElementById('wesen-recurrence-value').textContent=m.recurrence===null?'—':m.recurrence.toFixed(2);if(m.recurrence!==null){state.recurrence.push(m.recurrence);if(state.recurrence.length>100)state.recurrence.shift();}drawRecurrence();}
function drawRecurrence(){const svg=document.getElementById('wesen-recurrence-chart');const values=state.recurrence;if(!values.length){svg.innerHTML='<text x="120" y="31" text-anchor="middle" class="wesen-chart-empty">keine Messwerte</text>';return;}const pts=values.map(function(v,i){return (i/Math.max(1,values.length-1)*240)+','+(52-clamp(v)*46);}).join(' ');const parts=pts.split(' ');const last=parts[parts.length-1].split(',');svg.innerHTML='<polyline class="wesen-chart-line" points="'+pts+'"/><circle class="wesen-chart-point" cx="'+last[0]+'" cy="'+last[1]+'" r="3"/>';}
function selectedNode(nodes){return nodes.find(function(n){return n.id===state.selected;})||nodes[0];}
function renderInspector(nodes){const node=selectedNode(nodes);state.selected=node.id;const m=runtimeMetrics();const root=document.getElementById('wesen-inspector');const rows=node.source?Object.entries(node.source).filter(function(e){return ['string','number','boolean'].includes(typeof e[1]);}).slice(0,7):[];const generic=node.id==='kern'?[['Feuerrate',fmt(m.firing,' Hz',1)],['Tick',m.tick??'—']]:node.id==='innenzustand'?[['Regulation',m.regulation],['CPU',fmt(m.cpu,' %',0)],['Temperatur',fmt(m.temp,' °C',1)]]:node.id==='rueckkopplung'?[['Recurrence',m.recurrence===null?'—':m.recurrence.toFixed(2)],['Latenz',fmt(m.latency,' ms',1)]]:[['Status',nodeValue(node)],['Typ',node.kind]];const data=rows.length?rows:generic;document.getElementById('wesen-inspector-status').textContent=node.placeholder?'unbekannt':'beobachtet';root.innerHTML='<div class="wesen-inspector-title wesen-hue-'+node.hue+'"><span>'+esc(node.icon)+'</span><div><strong>'+esc(node.label)+'</strong><small>'+esc(node.kind)+'</small></div></div><div class="wesen-inspector-rows">'+data.map(function(r){return '<div><span>'+esc(r[0])+'</span><strong>'+esc(r[1])+'</strong></div>';}).join('')+'</div><p class="wesen-integrity-note">OBSERVED/UNKNOWN: keine erfundenen Ersatzwerte. Darstellung ist Visualisierung, keine Bewusstseinsmessung.</p>';}
function renderConnections(){const root=document.getElementById('wesen-connections');const items=wesenConnectionArray();if(!items.length){root.innerHTML='<p class="wesen-empty">Keine realen Verbindungen gemeldet.</p>';return;}root.innerHTML=items.slice(0,14).map(function(item,index){const status=text(item,['status','state','available','connected'],'beobachtet');const kind=classifyConnection(item);return '<button class="wesen-connection-row" data-node="conn-'+index+'"><span class="wesen-connection-led '+statusClass(status)+'"></span><span><strong>'+esc(connectionLabel(item,index))+'</strong><small>'+esc(kind)+'</small></span><em>'+esc(status)+'</em></button>';}).join('');}
function renderHistory(){const root=document.getElementById('wesen-morphology-history');root.innerHTML=state.morphologyHistory.length?state.morphologyHistory.map(function(h){return '<div><time>'+h.time+'</time><span>'+h.count+' Knoten</span></div>';}).join(''):'<p class="wesen-empty">Noch keine Änderung der Körpergrenze.</p>';}
function pushEvent(type,label,detail){state.history.unshift({time:new Date().toLocaleTimeString('de-DE',{hour12:false}),type:type,label:label,detail:detail});if(state.history.length>40)state.history.length=40;}
function snapshot(){const m=runtimeMetrics();return{recurrence:m.recurrence,latency:m.latency,cpu:m.cpu,temp:m.temp,regulation:m.regulation,connections:wesenConnectionArray().length};}
function recordEvents(){const next=snapshot(),prev=state.lastSnapshot;state.lastSnapshot=next;if(!prev)return;const changed=function(a,b,t){return a!==null&&b!==null&&Math.abs(a-b)>t;};if(changed(next.recurrence,prev.recurrence,0.01))pushEvent('feedback','Rückkopplung verändert',(prev.recurrence?.toFixed(2)||'?')+' → '+(next.recurrence?.toFixed(2)||'?'));if(changed(next.latency,prev.latency,0.5))pushEvent('feedback','Loop-Latenz verändert',(prev.latency?.toFixed(1)||'?')+' → '+(next.latency?.toFixed(1)||'?')+' ms');if(changed(next.cpu,prev.cpu,3))pushEvent('system','CPU-Belastung verändert',(prev.cpu?.toFixed(0)||'?')+' → '+(next.cpu?.toFixed(0)||'?')+' %');if(changed(next.temp,prev.temp,1))pushEvent('system','Temperatur verändert',(prev.temp?.toFixed(1)||'?')+' → '+(next.temp?.toFixed(1)||'?')+' °C');if(next.connections!==prev.connections)pushEvent('structure','Körpergrenze verändert',prev.connections+' → '+next.connections+' Verbindungen');if(next.regulation!==prev.regulation)pushEvent('system','Regulation verändert',prev.regulation+' → '+next.regulation);renderEvents();}
function renderEvents(){const root=document.getElementById('wesen-events');const events=state.history.filter(function(e){return state.filter==='all'||e.type===state.filter;}).slice(0,20);root.innerHTML=events.length?events.map(function(e){return '<button class="wesen-event-row"><time>'+e.time+'</time><span class="wesen-event-kind '+e.type+'"></span><strong>'+esc(e.label)+'</strong><em>'+esc(e.detail)+'</em></button>';}).join(''):'<p class="wesen-empty">Noch keine Zustandsänderung im Beobachtungsfenster.</p>';}
function updateLive(error){const label=document.getElementById('wesen-live-label'),dot=document.querySelector('.wesen-live-dot');if(error){label.textContent='Telemetrie nicht erreichbar';dot.dataset.state='critical';return;}const runtime=text(state.status||{},['state','runtime.state','status'],'verbunden');label.textContent=runtime;dot.dataset.state=statusClass(runtime);}
'''
with open(sys.argv[1], 'a', encoding='utf-8') as f:
f.write(content)
print("Appended successfully")