`}
/* CONTROL CENTER */
if(S==='control'){A.innerHTML=`
❤️ Health Completo Ver Saúde Completa `}
/* CONEXÃO MODULES */
if(S==='conexao'){A.innerHTML=`
`}
/* AISA GATEWAY */
if(S==='aisa'){A.innerHTML=`
`}
/* SESSION HUB */
if(S==='hub'){A.innerHTML=`
📊 Status Carregando...
🔄 Atualizar
`}
/* ARCHITECT */
if(S==='architect'){A.innerHTML=`
Gerar Diagrama de Arquitetura
Projeto (caminho) ou descrição
${['arch:🏗️ Arquitetura','erd:🗄️ Banco ERD','flow:📊 Fluxograma','sequence:🔄 Sequência','class:🧬 Classes','microservices:🔀 Microsserviços','deployment:🚀 Deployment','pipeline:⚙️ CI/CD','network:🌐 Rede','state:🔁 Estados','mindmap:🧠 Mapa Mental'].map(t=>{const[v,l]=t.split(':');return `${l} `}).join('')}
Gerar Diagrama
`}
/* YOUTUBE */
if(S==='youtube'){A.innerHTML=`
`}
/* SECURITY */
if(S==='security'){A.innerHTML=`
`}
/* PC */
if(S==='pc'){A.innerHTML=`
`}
}
/* === CHAT === */
async function sendChat(){
const inp=$('chi'),msgs=$('chat-msgs'),msg=inp.value.trim();if(!msg)return;
const prov=$('chp').value;_chatHistory.push({role:'user',content:msg});
msgs.innerHTML+=``;inp.value='';msgs.scrollTop=msgs.scrollHeight;
const lid='l'+Date.now();msgs.innerHTML+=``;msgs.scrollTop=msgs.scrollHeight;
const r=await api('/chat',{message:msg,provider:prov||''});_chatHistory.push({role:'assistant',content:r.text||''});
// Simular streaming (revela texto gradualmente)
const fullText=r.text||'';const el=$(lid);el.innerHTML=r.success?`${r.provider||'IA'} / ${r.model||'?'} · ${r.tokens||0}t · ${r.duration_ms||0}ms 📋 🔄
`:`Erro
${r.error||'Falha na requisição'}
`;
if(r.success){let i=0;const speed=Math.max(5,Math.floor(fullText.length/60));const stream=setInterval(()=>{i+=speed;if(i>=fullText.length){$(`${lid}t`).textContent=fullText;clearInterval(stream)}else{$(`${lid}t`).textContent=fullText.slice(0,i)+'▌'}},20)}
msgs.scrollTop=msgs.scrollHeight;
}
function qChat(m){$('chi').value=m;sendChat()}
function copyMsg(b){const t=b.closest('.msg').textContent.replace(/📋|🔄|Você|Pensando\.\.\..*$/gm,'').trim();navigator.clipboard.writeText(t);toast('Copiado','info')}
function retryChat(){if(_chatHistory.length>=2){_chatHistory.pop();const l=_chatHistory[_chatHistory.length-1];if(l&&l.role==='user'){$('chi').value=l.content;sendChat()}}}
/* === CODE === */
async function genCode(){
const b=$('cdb'),task=$('cdt').value,lang=$('cdl').value;if(!task){toast('Descreva a tarefa','error');return}
b.disabled=true;b.innerHTML=' Gerando...';$('code-empty').style.display='none';
const r=await api('/code',{task:task,language:lang});b.disabled=false;b.textContent='Gerar + Analisar';
if(!r.success){toast(r.error||'Erro','error');return}
$('cdr').style.display='block';$('cdm').textContent=`${lang} · ${(r.code||'').length} caracteres`;
$('cdbc').innerHTML=clines(r.code||'');
if(r.analysis){const a=$('cda');a.style.display='block';a.textContent='📋 '+r.analysis.summary}
toast('Código gerado','success');
}
function copyCode(){navigator.clipboard.writeText($('cdbc').textContent);toast('Copiado','info')}
function downloadCode(){const c=$('cdbc').textContent,l=$('cdl').value;const e={python:'py',javascript:'js',typescript:'ts',react:'jsx',html:'html',css:'css',sql:'sql',bash:'sh',fastapi:'py'};const b=new Blob([c]);const a=document.createElement('a');a.href=URL.createObjectURL(b);a.download='athus_code.'+(e[l]||'txt');a.click()}
/* === SITES === */
async function genSite(){
const p=$('stp').value,t=$('stt').value;if(!p){toast('Descreva o site','error');return}
show('str',' Gerando...
','html');
const r=await api('/site',{prompt:p,template:t});_siteHistory.push({prompt:p,template:t,result:r,time:new Date().toLocaleTimeString()});
$('str').innerHTML=r.success?`✅ ${r.output_dir} ${(r.files||[]).join(', ')}
`:`❌ ${r.error}
`;
renderSiteHistory();
}
function renderSiteHistory(){if(!_siteHistory.length)return;let h='Prompt Template Status Hora ';_siteHistory.slice(-5).reverse().forEach(s=>{h+=`${(s.prompt||'').slice(0,40)} ${s.template} ${s.result?.success?'✅':'❌'} ${s.time} `});h+='
';const el=$('stHist');if(el)el.innerHTML=`
Histórico ${h}`}
async function genPPT(){const t=$('ptt').value,tm=$('pttp').value;if(!t){toast('Digite o tema','error');return}
show('ptr',' Gerando...
','html');const r=await api('/ppt',{topic:t,template:tm});
$('ptr').innerHTML=r.success?`✅ ${r.path} ${r.slides||0} slides
`:`❌ ${r.error}
`}
/* === VOICE === */
async function speak(){
const b=$('vob'),text=$('vot').value||'Olá',voice=$('vov').value;b.disabled=true;b.innerHTML=' Gerando...';
const r=await api('/voice/speak',{text:text,voice:voice});b.disabled=false;b.textContent='Gerar Fala';
if(!r.success){toast(r.error,'error');return}
_voiceHistory.push({text:text.slice(0,80),voice:r.voice,time:new Date().toLocaleTimeString()});
$('vor').style.display='block';$('vor').innerHTML=`Voz: ${r.voice} · Áudio gerado com sucesso
`;
renderVoiceHistory();toast('Fala gerada','success');
}
function renderVoiceHistory(){if(!_voiceHistory.length)return;let h='Texto Voz Hora ';_voiceHistory.slice(-5).reverse().forEach(v=>{h+=`${v.text} ${v.voice} ${v.time} `});h+='
';const el=$('vHist');if(el)el.innerHTML=`
Histórico ${h}`}
/* === MEMORY === */
async function rem(){const c=$('mmc').value,cat=$('mmt').value;if(!c){toast('Digite o conteúdo','error');return}await api('/memory/remember',{content:c,category:cat});toast('Salvo','success');$('mmc').value=''}
async function recall(){const q=$('mmq').value;if(!q)return;$('mmr').style.display='block';$('mmb').innerHTML=' Buscando...
';const r=await api('/memory/recall',{query:q});$('mmb').innerHTML=r.count?`${r.count} memórias
${r.memories.map(m=>`• ${m.content}${m.category} · ${m.created||''} 🗑
`).join('')}`:`🔍
Nenhuma memória encontrada
`}
async function askMem(){const q=$('mmq').value;if(!q)return;$('mmr').style.display='block';$('mmb').innerHTML=' Consultando...
';const r=await api('/memory/ask',{question:q});$('mmb').innerHTML=r.answer?`${r.answer}
`:`${r.error||'Sem resposta'}
`}
async function deleteMem(id){if(!confirm('Excluir esta memória?'))return;await api('/memory/remember',{content:'__delete__',category:'__delete__'});toast('Excluída','info');recall()}
/* === AGENT === */
let _agentAbort=null;
async function runAgent(){
const b=$('agb'),goal=$('agg').value,ap=$('aga').checked;if(!goal){toast('Defina um objetivo','error');return}
b.disabled=true;b.innerHTML=' Planejando...';$('agStop').style.display='inline-flex';
const log=$('agl');log.style.display='block';log.innerHTML='🤖 Iniciando agente autônomo...
📋 Objetivo: '+goal.slice(0,100)+'
🔍 Analisando complexidade, riscos e dependências...
';
_agentAbort=false;
const r=await api('/agent',{goal:goal,max_steps:5,auto_approve:ap});
b.disabled=false;b.textContent='Executar Agente';$('agStop').style.display='none';
if(_agentAbort){log.innerHTML+='⏹ Execução cancelada pelo usuário
';toast('Agente cancelado','info');return}
log.innerHTML+=`━━━━━━━━━━━━━━━━━━━━━━
${r.success?'✅ CONCLUÍDO':'❌ FALHOU'}
${r.summary||''}
`;
if(r.results)r.results.forEach(s=>{log.innerHTML+=` ▸ Passo ${s.step}: ${s.action} ${s.result?.success?'✅':'❌'} ${s.reason||''}
`});
$('agr').style.display='block';$('agbc').textContent=JSON.stringify(r.results||[],null,2);
toast(r.success?'Agente concluído com sucesso!':'Agente encontrou problemas',r.success?'success':'error');
}
function stopAgent(){_agentAbort=true;$('agl').innerHTML+='⏹ Parando agente...
';toast('Parando agente...','info')}
/* === CONTROL CENTER === */
async function ccLoad(tool){
const ids={system:'cc_sys',docker:'cc_docker',database:'cc_db',apis:'cc_apis',projects:'cc_proj',memory:'cc_mem',deploy:'cc_deploy'};
$(ids[tool]).innerHTML=' ';
const r=await api('/mcp',{action:'execute',tool:tool});
if(r.success){
let html='';
const d=r.data;
if(tool==='system')html=`CPU: ${d.cpu_percent||'?'}% | RAM: ${d.ram?.percent||'?'}% | Disk: ${d.disk?.percent||'?'}%`;
if(tool==='docker')html=`Local: ${d.local?.total||0} | VPS60: ${d.vps60?.total||0} containers`;
if(tool==='database')html=(d.databases||[]).map(x=>`${x.name}: ${x.size}`).join(' ')||'N/A';
if(tool==='apis')html=`${d.online}/${d.total} online `+Object.entries(d.apis||{}).map(([k,v])=>`${v.status==='online'?'✅':'❌'} ${k}`).join(' ');
if(tool==='projects')html=`${d.total} projetos `+(d.projects||[]).slice(0,10).map(p=>`📁 ${p.name}`).join(' ');
if(tool==='memory')html=`${d.total||0} memórias`;
if(tool==='deploy')html=JSON.stringify(d.deployments||{}).slice(0,300);
$(ids[tool]).innerHTML=html;
}
}
async function ccSearch(){
const q=$('cc_search').value;if(!q)return;
$('cc_sr').innerHTML=' ';
const r=await api('/mcp',{action:'search',query:q});
$('cc_sr').innerHTML=r.success?`${r.data?.total_hits||0} resultados`:'❌';
}
async function ccHealth(){
$('cc_health_r').style.display='block';$('cc_health_b').textContent='Carregando...';
const r=await api('/mcp',{action:'health'});
$('cc_health_b').textContent=JSON.stringify(r,null,2);
}
ccLoad('system');ccLoad('apis');ccLoad('docker');
/* === CONEXÃO === */
async function modCall(mod){
$('cx_r').style.display='block';$('cx_m').textContent='⏳ Processando...';$('cx_b').textContent='Aguarde...';
const data={};let action='';
if(mod==='google'){action='google_leads';data.city=$('vg_city').value;data.segment=$('vg_seg').value}
if(mod==='news'){action='world_news';data.query=$('wn_q').value;data.location=$('wn_loc').value}
if(mod==='financial'){action='financial';data.asset=$('fi_type').value;data.symbol=$('fi_sym').value||'bitcoin'}
if(mod==='media'){action='media_factory';data.topic=$('mf_topic').value}
if(mod==='missao'){action='missao';data.city=$('me_city').value;data.interest=$('me_int').value}
if(mod==='seo'){action='seo_portal';data.keyword=$('seo_kw').value;data.url=$('seo_url').value}
const r=await api('/conexao',{...data,action:action});
$('cx_m').textContent=r.success?`✅ ${r.module}`:'❌ Erro';
$('cx_b').textContent=JSON.stringify(r,null,2);
}
async function diagConexao(){
$('cx_r').style.display='block';$('cx_m').textContent='⏳ Diagnóstico completo...';$('cx_b').textContent='Executando todos os módulos...';
const r=await api('/conexao',{action:'diagnostico',city:$('vg_city').value||'Cotia',segment:$('vg_seg').value});
$('cx_m').textContent=`✅ ${r.total_success}/${r.total_modules} módulos OK`;
$('cx_b').textContent=JSON.stringify(r.modules,null,2);
}
/* === AISA === */
async function aisaCall(action,data){
$('aisa_r').style.display='block';$('aisa_m').textContent='⏳ Chamando AIsa...';$('aisa_b').textContent='Aguardando...';
const r=await api('/aisa',{...data,action:action});
$('aisa_m').textContent=r.success?`✅ ${action}`:'❌ Erro';
$('aisa_b').textContent=JSON.stringify(r.data||r.results||r,null,2);
}
function aisaSearch(){$('aisa_r').style.display='block';aisaCall('search',{query:$('as_q').value,engine:$('as_eng').value})}
function aisaYT(){$('aisa_r').style.display='block';aisaCall('youtube',{query:$('ay_q').value})}
function aisaBiz(){$('aisa_r').style.display='block';aisaCall('business',{query:$('ab_q').value,location:$('ab_loc').value})}
function aisaCrypto(){$('aisa_r').style.display='block';aisaCall('crypto',{coin:$('ac_coin').value||'bitcoin'})}
function aisaSEO(){$('aisa_r').style.display='block';aisaCall('seo',{keyword:$('ak_kw').value})}
function aisaSocial(){$('aisa_r').style.display='block';aisaCall('social',{platform:$('asoc_plat').value,query:$('asoc_q').value})}
/* === SESSION HUB === */
async function hubCreate(){
const p=$('sh_phone').value,c=$('sh_company').value,u=$('sh_user').value,pr=$('sh_prov').value;
if(!p){toast('Número obrigatório','error');return}
const r=await api('/hub',{action:'create',phone:p,company:c,user:u,provider:pr});toast(r.uuid?'Sessão '+r.uuid+' criada!':'Erro',r.uuid?'success':'error');hubRefresh()
}
async function hubRefresh(){
const s=await api('/hub',{action:'status'});$('sh_status').innerHTML=`${s.sessions?.total||0} sessões (${s.sessions?.active||0} ativas) ${s.providers?.online||0}/${s.providers?.total||0} providers online`;
const l=await api('/hub',{action:'list'});$('sh_list').innerHTML=l.length?l.map(s=>`📱 ${s.phone_number} | ${s.provider} | ${s.status}
`).join(''):'';
const p=await api('/hub',{action:'providers'});$('sh_providers').innerHTML=p.map(p=>`${p.status==='online'?'✅':'❌'} ${p.name} v${p.version} | ${p.api_type}
`).join('')
}
hubRefresh();
/* === ARCHITECT === */
async function archGenerate(){
const src=$('ar_src').value,type=$('ar_type').value;if(!src){toast('Informe o caminho ou descrição','error');return}
const b=$('arb');b.disabled=true;b.innerHTML=' Gerando...';
$('arr').style.display='block';$('arm').textContent='Analisando projeto...';$('arbc').textContent='⏳ Escaneando e gerando diagrama...';
const r=await api('/architect',{source:src,diagram_type:type,action:'generate'});
b.disabled=false;b.textContent='Gerar Diagrama';
if(r.success){$('arm').textContent=r.title;$('arbc').textContent=r.mermaid;toast('Diagrama gerado!','success')}
else{$('arbc').textContent='❌ '+r.error}
}
function archCopy(){navigator.clipboard.writeText($('arbc').textContent);toast('Copiado!','info')}
function archView(){const m=$('arbc').textContent;const w=window.open('','_blank');w.document.write(\`Diagrama