Spaces:
Running
Running
File size: 2,144 Bytes
5854813 | 1 2 3 4 5 6 7 | const $=s=>document.querySelector(s),feed=$('#feed');let role='ares';
const esc=s=>String(s).replace(/[&<>]/g,c=>({'&':'&','<':'<','>':'>'}[c]));
function add(kind,label,text){feed.insertAdjacentHTML('beforeend',`<article class="message ${kind}"><b>${label}</b><p>${esc(text)}</p></article>`);feed.scrollTop=feed.scrollHeight}
async function health(){try{const r=await fetch($('#endpoint').value+'/health');const x=await r.json();$('#health').textContent=x.ok?'● runtime connected · execution disabled':'● runtime unavailable';$('#health').style.color=x.ok?'var(--mint)':'var(--gold)'}catch{$('#health').textContent='● runtime not connected'}}
$('.nav[data-role="ares"]').onclick=()=>select('ares');$('.nav[data-role="xiphos"]').onclick=()=>select('xiphos');function select(v){role=v;document.querySelectorAll('.nav').forEach(x=>x.classList.toggle('active',x.dataset.role===v));$('#title').textContent=v==='ares'?'Ares':'Xiphos';$('#subtitle').textContent=v==='ares'?'Ask questions, explore ideas, and get direct assistance.':'Draft a reviewable plan. Nothing is executed.';$('#prompt').placeholder=v==='ares'?'Message Ares…':'Describe the capability or change you need…'}
$('#connect').onclick=health;$('#clear').onclick=()=>feed.replaceChildren();$('#composer').onsubmit=async e=>{e.preventDefault();const p=$('#prompt'),message=p.value.trim();if(!message)return;p.value='';add('user','YOU',message);$('#send').disabled=true;try{let url=role==='ares'?'/chat':'/xiphos/plan';let r=await fetch($('#endpoint').value+url,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message})});let x=await r.json();if(!r.ok)throw Error(x.error||'Runtime error');if(role==='ares')add('assistant','ARES',x.response);else add('plan','XIPHOS · PROPOSED / NOT EXECUTABLE',x.proposal+'\n\nRequired review: '+x.required_review.join('; '))}catch(e){add('system','CONNECTION',e.message+' — Start the approved local runtime, then press Connect runtime.')}finally{$('#send').disabled=false}};$('#prompt').onkeydown=e=>{if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();$('#composer').requestSubmit()}};health();
|