@hiperplano/aluy-cli 1.0.0-rc.87 → 1.0.0-rc.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-bundle/bin/aluy.js +3 -3
- package/dist-bundle/index.js +128 -128
- package/package.json +1 -1
package/dist-bundle/bin/aluy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var c8=Object.create;var ay=Object.defineProperty;var u8=Object.getOwnPropertyDescriptor;var d8=Object.getOwnPropertyNames;var m8=Object.getPrototypeOf,f8=Object.prototype.hasOwnProperty;var p=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var p8=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}},ht=(t,e)=>{for(var o in e)ay(t,o,{get:e[o],enumerable:!0})},h8=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of d8(e))!f8.call(t,r)&&r!==o&&ay(t,r,{get:()=>e[r],enumerable:!(n=u8(e,r))||n.enumerable});return t};var g8=(t,e,o)=>(o=t!=null?c8(m8(t)):{},h8(e||!t||!t.__esModule?ay(o,"default",{value:t,enumerable:!0}):o,t));import{homedir as y8}from"node:os";import{join as b8}from"node:path";function Vl(t=y8()){return b8(t,".aluy")}var Tm=p(()=>{"use strict"});var Xl,fC=p(()=>{"use strict";Xl="1.0.0-rc.
|
|
2
|
+
var c8=Object.create;var ay=Object.defineProperty;var u8=Object.getOwnPropertyDescriptor;var d8=Object.getOwnPropertyNames;var m8=Object.getPrototypeOf,f8=Object.prototype.hasOwnProperty;var p=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var p8=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}},ht=(t,e)=>{for(var o in e)ay(t,o,{get:e[o],enumerable:!0})},h8=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of d8(e))!f8.call(t,r)&&r!==o&&ay(t,r,{get:()=>e[r],enumerable:!(n=u8(e,r))||n.enumerable});return t};var g8=(t,e,o)=>(o=t!=null?c8(m8(t)):{},h8(e||!t||!t.__esModule?ay(o,"default",{value:t,enumerable:!0}):o,t));import{homedir as y8}from"node:os";import{join as b8}from"node:path";function Vl(t=y8()){return b8(t,".aluy")}var Tm=p(()=>{"use strict"});var Xl,fC=p(()=>{"use strict";Xl="1.0.0-rc.88"});function _r(t,e){return t.decide(e)}var ai=p(()=>{"use strict"});var Gn,Rr,Or=p(()=>{"use strict";Gn="remember",Rr="recall"});var ly,v8,fa,cy=p(()=>{"use strict";ly=class{id;horizon;label;parentId;children;dependencies;pinned;closed;createdAt;lastAccessedAt;accessCount;context;constructor(e,o,n,r,s){this.id=e,this.horizon=o,this.label=n,this.parentId=r,this.children=new Set,this.dependencies=new Set,this.pinned=!1,this.closed=!1,this.createdAt=s,this.lastAccessedAt=s,this.accessCount=0,this.context=[]}touch(e){this.lastAccessedAt=e,this.accessCount+=1}snapshot(){return{id:this.id,horizon:this.horizon,label:this.label,parentId:this.parentId,children:[...this.children],dependencies:[...this.dependencies],pinned:this.pinned,closed:this.closed,createdAt:this.createdAt,lastAccessedAt:this.lastAccessedAt,accessCount:this.accessCount,contextSize:this.context.length}}},v8=200,fa=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??v8,this.now=e?.clock??Date.now}static boxId(e,o){return`${e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)}-${o.toString(36)}`}openBox(e,o,n,r){let s=this.nodes.get(e);if(s)return s.touch(this.now()),{box:s.snapshot(),created:!1};if(this.nodes.size>=this.maxBoxes&&(this.evictOne(),this.nodes.size>=this.maxBoxes))return null;let i=this.now(),a=new ly(e,o,n,r??null,i);if(r){let l=this.nodes.get(r);l&&l.children.add(e)}return this.nodes.set(e,a),{box:a.snapshot(),created:!0}}closeBox(e){let o=this.nodes.get(e);return o?(o.closed=!0,o.touch(this.now()),o.snapshot()):null}isClosed(e){let o=this.nodes.get(e);return o?o.closed:!1}reopenBox(e){let o=this.nodes.get(e);return o?(o.closed=!1,o.touch(this.now()),o.snapshot()):null}setHorizon(e,o){let n=this.nodes.get(e);return n?(n.horizon=o,n.touch(this.now()),n.snapshot()):null}setParent(e,o){let n=this.nodes.get(e);return n?n.parentId===o?n.snapshot():o!==null&&this.wouldCreateCycle(e,o)?null:(n.parentId&&this.nodes.get(n.parentId)?.children.delete(e),n.parentId=o,o&&this.nodes.get(o)?.children.add(e),n.touch(this.now()),n.snapshot()):null}wouldCreateCycle(e,o){let n=new Set,r=o;for(;r!==null;){if(r===e||n.has(r))return!0;n.add(r),r=this.nodes.get(r)?.parentId??null}return!1}getBox(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),o.snapshot()):null}listBoxes(e="lastAccessedAt"){let o=[...this.nodes.values()].map(n=>n.snapshot());switch(e){case"createdAt":return o.sort((n,r)=>n.createdAt-r.createdAt);case"accessCount":return o.sort((n,r)=>r.accessCount-n.accessCount);default:return o.sort((n,r)=>r.lastAccessedAt-n.lastAccessedAt)}}get size(){return this.nodes.size}addContext(e,o){let n=this.nodes.get(e);return n?(n.context.push({ts:this.now(),text:o}),n.touch(this.now()),n.snapshot()):null}getContext(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),[...o.context]):[]}getContextChain(e){let o=[],n=new Set,r=e;for(;r&&!n.has(r);){n.add(r);let s=this.nodes.get(r);if(!s)break;s.touch(this.now()),o.push({boxId:s.id,entries:[...s.context]}),r=s.parentId}return o}addDependency(e,o){let n=this.nodes.get(e);return!n||!this.nodes.has(o)||n.id===o?!1:(n.dependencies.add(o),n.touch(this.now()),!0)}getDependencies(e){let o=this.nodes.get(e);return o?[...o.dependencies]:[]}pinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!0,o.touch(this.now()),o.snapshot()):null}unpinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!1,o.touch(this.now()),o.snapshot()):null}evictOne(){let e=[];for(let n of this.nodes.values())n.horizon==="longo"||n.pinned||e.push(n);if(e.length===0)return null;e.sort((n,r)=>{let s=n.horizon==="curto"?0:1,i=r.horizon==="curto"?0:1;if(s!==i)return s-i;let a=n.closed?0:1,l=r.closed?0:1;return a!==l?a-l:n.lastAccessedAt!==r.lastAccessedAt?n.lastAccessedAt-r.lastAccessedAt:n.accessCount-r.accessCount});let o=e[0];return this.removeNode(o)}forceEvict(e){let o=this.nodes.get(e);return!o||o.horizon==="longo"||o.pinned?null:this.removeNode(o)}removeBox(e){let o=this.nodes.get(e);return o?this.removeNode(o):null}removeNode(e){if(e.parentId){let o=this.nodes.get(e.parentId);o&&o.children.delete(e.id)}return this.nodes.delete(e.id),e.snapshot()}}});function _m(t){let e=[];for(let o of t){e.push({step:o,depth:0});for(let n of o.substeps??[])e.push({step:n,depth:1})}return e}function gC(t,e){let o,n="pending",r;if(typeof t=="string")o=t;else if(t!==null&&typeof t=="object"){let i=t,a=i.title??i.step??i.text??i.name??i.content;if(typeof a=="string"&&(o=a),typeof i.status=="string"&&k8.has(i.status)&&(n=i.status),e){let l=i.substeps??i.subtasks??i.subpassos??i.children;if(Array.isArray(l)&&l.length>0){let c=[];for(let u of l){let m=gC(u,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return S8;let s=o.trim().slice(0,x8);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function w8(t){let e=t.steps??t.plan??t.todos??t.items;if(!Array.isArray(e))return{error:'update_plan: passe "steps" como uma LISTA de passos (string ou {title,status}).'};if(e.length===0)return{error:"update_plan: a lista de passos est\xE1 vazia."};let o=[];for(let i of e){let a=gC(i,!0);if(typeof a=="string")return{error:a};o.push(a)}let n=new Set,r=i=>{if(!n.has(i))return n.add(i),i;for(let a=2;;a++){let l=`${i} #${a}`;if(!n.has(l))return n.add(l),l}};for(let i=0;i<o.length;i++){let a=o[i],l=r(a.title),c=a.substeps?.map(u=>({...u,title:r(u.title)}));o[i]=c!==void 0?{...a,title:l,substeps:c}:{...a,title:l}}let s=_m(o).length;return s>pC?{error:`update_plan: no m\xE1ximo ${pC} passos (recebidos ${s}).`}:{steps:o}}function E8(t){let e=_m(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${yC[r.step.status]} ${r.step.title}`).join(`
|
|
3
3
|
`);return`plano (${o}/${e.length}):
|
|
4
4
|
${n}`}function C8(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function D8(t,e){let o=new Map;for(let i of e.listBoxes())o.set(i.label,i.id);let n=t.findIndex(i=>i.status==="in_progress"||(i.substeps??[]).some(a=>a.status==="in_progress")),r=(i,a,l)=>{let c=i.status==="in_progress"?"curto":l,u=o.get(i.title),m=u??fa.boxId(i.title,0);return u?(i.status!=="completed"&&e.isClosed(u)&&e.reopenBox(u),e.setHorizon(u,c),e.setParent(u,a)):e.openBox(m,c,i.title,a),i.status==="completed"&&!e.isClosed(m)&&e.closeBox(m),o.set(i.title,m),m};t.forEach((i,a)=>{let l=C8(a,n),c=r(i,null,l);for(let u of i.substeps??[])r(u,c,l)});let s=new Set;for(let i of t){s.add(i.title);for(let a of i.substeps??[])s.add(a.title)}for(let i of e.listBoxes())s.has(i.label)||e.removeBox(i.id)}function T8(t,e){if(!e)return E8(t);let o=new Map;for(let c of e.listBoxes())o.set(c.label,c);let n=new Map;for(let c of e.listBoxes())n.set(c.id,c);let r=new Map,s=(c,u=new Set)=>{let m=r.get(c);if(m!==void 0)return m;let d=n.get(c);if(!d||!d.parentId||u.has(c))return r.set(c,0),0;let h=s(d.parentId,new Set(u).add(c))+1;return r.set(c,h),h},i=_m(t),l=[`plano (${i.filter(c=>c.step.status==="completed").length}/${i.length}):`];for(let{step:c,depth:u}of i){let m=o.get(c.title),d=m?A8[m.horizon]:"",h=m?s(m.id):u,g=" ".repeat(h),b=yC[c.status];l.push(`${g}${d} ${b} ${c.title}`)}return l.join(`
|
|
5
5
|
`)}var Jl,k8,pC,x8,S8,yC,A8,hC,_8,bC,Rm=p(()=>{"use strict";cy();Jl="update_plan";k8=new Set(["pending","in_progress","completed"]),pC=30,x8=120,S8="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";yC={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};A8={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};hC=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),_8=Object.freeze({type:"object",properties:{steps:{type:"array",description:"A lista COMPLETA de passos do plano (re-emita TODOS a cada atualiza\xE7\xE3o \u2014 substitui o anterior).",items:{type:"object",properties:{title:{type:"string",description:"O passo, curto e no imperativo."},status:hC,substeps:{type:"array",description:"OPCIONAL: sub-passos que detalham este passo (1 n\xEDvel). Aparecem indentados sob o passo e seguem o foco dele. Use quando um passo tem a\xE7\xF5es menores distintas.",items:{type:"object",properties:{title:{type:"string",description:"O sub-passo, curto e no imperativo."},status:hC},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),bC={name:Jl,effect:"read",description:"Declara/atualiza um PLANO vis\xEDvel (checklist de passos). Use ao iniciar uma tarefa com V\xC1RIOS passos e a cada progresso: re-emita a lista TODA marcando o status de cada passo (pending/in_progress/completed). Mantenha 1 passo in_progress por vez. N\xE3o tem efeito no sistema \u2014 \xE9 s\xF3 o seu plano, para voc\xEA e para o usu\xE1rio acompanharem.",parameters:_8,async run(t,e){let o=w8(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&D8(o.steps,e.graph),e.plan&&e.plan.set(_m(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:T8(o.steps,e.graph)})}}});function vC(t){let e=t.question??t.prompt??t.text??t.message;if(typeof e!="string"||e.trim()==="")return{error:'perguntar: passe "question" (a pergunta em texto). Para escolha, passe tamb\xE9m "options".'};let o=e.trim().slice(0,2e3),n=t.header??t.title,r=typeof n=="string"&&n.trim()!==""?n.trim().slice(0,200):void 0,s=t.options??t.choices,i=Array.isArray(s)?O8(s):void 0;if(typeof i=="string")return{error:i};let a,l=t.kind??t.type;if(typeof l=="string"&&R8.has(l))a=l;else{if(typeof l=="string"&&l.trim()!=="")return{error:`perguntar: "kind" inv\xE1lido "${l}". Use "single", "multi" ou "text".`};a=i!==void 0&&i.length>0?"single":"text"}if((a==="single"||a==="multi")&&(i===void 0||i.length===0))return{error:`perguntar: kind "${a}" requer "options" (uma lista de ao menos 1 op\xE7\xE3o).`};let c=t.allowOther!==!1;return{spec:{kind:a,question:o,...r!==void 0?{header:r}:{},...a!=="text"&&i!==void 0?{options:i}:{},...a!=="text"?{allowOther:c}:{}}}}function O8(t){if(t.length===0)return'perguntar: a lista de "options" est\xE1 vazia.';if(t.length>12)return`perguntar: no m\xE1ximo 12 op\xE7\xF5es (recebidas ${t.length}).`;let e=[];for(let o of t){let n,r;if(typeof o=="string")n=o;else if(o!==null&&typeof o=="object"){let s=o,i=s.label??s.text??s.value??s.name??s.title;typeof i=="string"&&(n=i),typeof s.description=="string"&&s.description.trim()!==""&&(r=s.description.trim().slice(0,300))}if(n===void 0||n.trim()==="")return'perguntar: cada op\xE7\xE3o precisa de um "label" (texto) n\xE3o-vazio.';e.push({label:n.trim().slice(0,200),...r!==void 0?{description:r}:{}})}return e}function M8(t){switch(t.kind){case"choice":return t.label;case"choices":return t.labels.length===0?"(nenhuma)":t.labels.join(", ");case"text":{let e=t.text.split(`
|
|
@@ -154,7 +154,7 @@ ${t.trim()}`}}function kR(t,e,o=gu){let{older:n,recent:r}=Qf(t,o);if(n.length===
|
|
|
154
154
|
`);let i=xo(process.execPath,[n,"-p",o,"--yolo","--no-self-check"],{stdio:"inherit",timeout:9e5,env:{...process.env,ALUY_OVERWRITE_RENDER:"0",ALUY_SYNC_OUTPUT:"0",ALUY_NO_WEAK_YOLO_WARN:"1",ALUY_PRINT_VERBOSE:"1"}});if(t==="mem0")try{let l=ke(cn(),Ur),c=ke(l,Rn);et(l)&&_p(Op(),c)}catch{}t==="ollama"&&(await HG(),qG()),process.stderr.write(`
|
|
155
155
|
verificando "${t}"\u2026 (alguns segundos; a pr\xF3xima etapa vem em seguida)
|
|
156
156
|
`);let a=await zO(t,process.platform,!0);for(let l=0;l<BG&&!a;l++)await jG(UG),a=await zO(t,process.platform,!0);return{target:t,hashOk:a,installed:a,message:a?`complemento "${t}" instalado e verificado.`:`o complemento "${t}" ainda n\xE3o respondeu como esperado. O Aluy CLI funciona sem ele; voc\xEA pode tentar de novo depois com \`aluy bootstrap\`.`}}function jG(t){return new Promise(e=>setTimeout(e,t))}async function HG(){for(let t of[_n,Mp()])try{await(await fetch(`http://${an}:${Zn}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:t,stream:!1})})).text()}catch{}}function qG(){if(process.platform!=="win32")try{let t=xo("sh",["-lc","command -v ollama"],{encoding:"utf8",timeout:1e4});if(t.status===0&&(t.stdout??"").trim()!=="")return;let e=Rp(),n=["/usr/local/bin/ollama","/usr/bin/ollama","/opt/homebrew/bin/ollama",ke(e,".ollama","bin","ollama"),ke(cn(),Ss,"bin","ollama")].find(i=>et(i));if(n===void 0)return;let r=ke(e,".local","bin");Rx(r,{recursive:!0});let s=ke(r,"ollama");try{if(HO(s)===HO(n))return;xG(s)}catch{}try{kG(n,s)}catch{}}catch{}}function WG(){try{return xo("python3",["-m","venv","--help"],{timeout:1e4}).status===0}catch{return!1}}function GG(){try{return xo("python3",["-m","pip","--version"],{timeout:1e4}).status===0}catch{return!1}}function zG(t){let e=[],o=[];if(t.has("ollama")&&(YO()||(e.push("zstd (extrair o Ollama)"),o.push("zstd")),VO()||(e.push("tar (extrair o Ollama)"),o.push("tar"))),t.has("mem0")||t.has("headroom")){let r=Mx();r.ok?(WG()||(e.push("m\xF3dulo venv do Python (mem0/headroom criam um virtualenv)"),o.push("python3-venv")),GG()||(e.push("pip do Python (mem0/headroom instalam pacotes)"),o.push("python3-pip"))):(e.push(`python3 >= ${vu} para mem0/headroom (encontrado: ${r.version||"nenhum"})`),o.push("python3","python3-venv","python3-pip"))}if(e.length===0)return[];let n=[...new Set(o)];return["Faltam pr\xE9-requisitos para o modo turbo (o que conseguir, instala; o resto fica de fora):",...e.map(r=>` \u2022 ${r}`),`Instale e rode \`aluy bootstrap\` de novo: sudo apt install -y ${n.join(" ")}`,""]}async function JO(t,e,o){let n=t??"turbo",r=jr(e??{}),s=o?.useAgent!==!1,i=new _x({...o?.platform?{platform:o.platform}:{},...s?{agentInstaller:$G}:{}});if(!s)for(let a of zG(r))process.stderr.write(a+`
|
|
157
|
-
`);return i.provisionAll(n,r)}var KO,Ya,AG,Rn,WO,_x,GO,IG,BG,UG,Lx=p(()=>{"use strict";P();KO=".aluy",Ya=448,AG=384;Rn="aluy-mem0-server.py";WO="application/vnd.ollama.image.model";_x=class{platform;agentInstaller;constructor(e={}){this.platform=e.platform??process.platform,this.agentInstaller=e.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(e){switch(e){case"ollama":{let o=ke(cn(),Ss,"bin","ollama");return et(o)}case"mem0":{let o=ke(cn(),Ur,"bin","python3");return et(o)&&Fu(o)}case"headroom":{let o=ke(cn(),ws,"bin","headroom");return et(o)}default:return!1}}async provision(e,o){let n=wG().uid;if(Wk(n))return{target:e,hashOk:!1,installed:!1,message:"RECUSA ROOT (uid=0): provisionamento de sidecars \xE9 user-space. Execute como usu\xE1rio normal."};if(this.agentInstaller)return this.agentInstaller(e,o);if(!this.hasPinnedArtifact())return{target:e,hashOk:!1,installed:!1,message:`SO '${this.platform}' sem artefato pinado p/ provisionamento direto. Rode \`aluy bootstrap\` (o aluy instala via o pr\xF3prio agente, \u26A0 --yolo) ou instale manualmente.`};switch(e){case"ollama":return RG();case"mem0":return PG();case"headroom":return FG();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!xu(e))return{profile:e,targets:[],anySuccess:!1,allFailed:!1};let n=[],r=[...o];for(let a=0;a<r.length;a++){let l=r[a],c={index:a+1,total:r.length,plan:r};try{n.push(await this.provision(l,c))}catch(u){let m=u instanceof Error?u.message:String(u);n.push({target:l,hashOk:!1,installed:!1,message:`falha inesperada ao provisionar \u2014 seguindo p/ os pr\xF3ximos (${m}).`})}}let s=n.some(a=>a.installed),i=n.length>0&&n.every(a=>!a.installed);return{profile:e,targets:n,anySuccess:s,allFailed:i}}},GO="na faixa 3.10\u20133.12 (N\xC3O use 3.13+/3.14 \u2014 as depend\xEAncias nativas n\xE3o t\xEAm wheels e o pip falha ao compilar; no Windows prefira `py -3.12` ou `py -3.11`). Se N\xC3O houver um Python 3.10\u20133.12 instalado, INSTALE primeiro (no Windows: `winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements`; no Linux/macOS use o gerenciador do sistema). Se j\xE1 existir um venv nesse caminho numa vers\xE3o incompat\xEDvel (ex.: 3.14), APAGUE e recrie com a vers\xE3o certa",IG="IMPORTANTE \u2014 o usu\xE1rio quer ACOMPANHAR: antes de cada passo, diga em 1 linha o que vai fazer; rode os comandos de instala\xE7\xE3o de forma VIS\xCDVEL (N\xC3O silencie pip/apt/curl com -q; mostre a sa\xEDda/progresso). Sem modo silencioso. ";BG=24,UG=5e3});var tr,Iu=p(()=>{"use strict";tr="1.0.0-rc.87"});var oM={};ht(oM,{HELP_TEXT:()=>ZO,parseArgs:()=>Px,suggestFlag:()=>JG,versionText:()=>eM});function dt(t,e,o={}){let n=`--${e}=`;for(let r=0;r<t.length;r++){let s=t[r];if(s===`--${e}`){let i=t[r+1];return i===void 0||(o.allowDashValue?i.startsWith("--"):i.startsWith("-"))?void 0:i}if(s!==void 0&&s.startsWith(n))return s.slice(n.length)}}function KG(t,e){let o=`-${e}=`;for(let n=0;n<t.length;n++){let r=t[n];if(r===`-${e}`){let s=t[n+1];return s!==void 0&&!s.startsWith("-")?s:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function eM(){return`aluy ${tr} (@hiperplano/aluy-cli-core ${Xl})`}function XG(t,e){let o=t.length,n=e.length,r=Array.from({length:n+1},(s,i)=>i);for(let s=1;s<=o;s++){let i=[s];for(let a=1;a<=n;a++){let l=t[s-1]===e[a-1]?0:1;i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+l)}r=i}return r[n]}function JG(t){let e,o=3;for(let n of tM){let r=XG(t,n);r<o&&(o=r,e=n)}return e}function QG(t,e){let o=[];for(let n=0;n<t.length;n++){let r=t[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||e.has(n))continue;let s=r.slice(2).split("=",1)[0];s===""||tM.has(s)||o.push(`--${s}`)}return o}function Px(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let W=t.slice(1),pe=dt(W,"token"),ho=dt(W,"org"),Wt=W.includes("--device"),Ro=dt(W,"provider"),jn=W.includes("--oauth");return{kind:"login",forceDeviceFlow:Wt,...pe!==void 0?{token:pe}:{},...ho!==void 0?{org:ho}:{},...Ro!==void 0?{provider:Ro}:{},...jn?{oauth:!0}:{}}}if(e==="logout"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"logout"};if(e==="whoami"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"whoami"};if(e==="doctor"&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--deep")||t.includes("--test"),pe=t.includes("--json");return{kind:"doctor",deep:W,json:pe}}if(e==="config"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"config",json:t.includes("--json")};if(e==="agents"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"agents"};if(e==="bootstrap"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"bootstrap",agent:!t.includes("--no-agent")};if(e==="uninstall"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"uninstall",agent:t.includes("--agent")};if(e==="onboard"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"onboard"};if(e==="skills"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"skills"};if(e==="workflows"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"workflows"};if((e==="models"||e==="providers")&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--json"),pe=t.findIndex(Wt=>Wt==="--backend"||Wt.startsWith("--backend=")),ho="both";if(pe!==-1){let Ro=(t[pe].includes("=")?t[pe].slice(10):t[pe+1]??"").trim().toLowerCase();Ro==="local"?ho="local":Ro==="broker"&&(ho="broker")}return{kind:"models",scope:ho,json:W,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let W=t[1];if(W===void 0||!["login","logout","allow","deny","status"].includes(W))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ho=t.slice(2);if(W==="login"){let Wt=dt(ho,"token");return{kind:"telegram",sub:"login",...Wt!==void 0?{token:Wt}:{}}}if(W==="allow"||W==="deny"){let Wt=ho.find(jn=>!jn.startsWith("-")),Ro=Wt!==void 0&&/^-?\d+$/.test(Wt)?Number(Wt):void 0;return Ro===void 0?{kind:"usage-error",message:`uso: aluy telegram ${W} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:W,chatId:Ro}}return{kind:"telegram",sub:W}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(pe=>!pe.startsWith("-")).join(" ").trim()};if(e==="mcp")return{kind:"mcp",argv:t.slice(1)};if(e==="cron")return{kind:"cron",argv:t.slice(1)};if(t.includes("-v")||t.includes("--version"))return{kind:"version",text:eM()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:ZO};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--telegram"),c=t.includes("--split")||t.includes("--view")?!0:void 0,u=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,m=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,d=dt(t,"tier"),h=dt(t,"lang"),g=dt(t,"max-tokens"),b=dt(t,"max-iterations"),y=dt(t,"max-output-tokens"),w=!(t.includes("--no-subagents")||t.includes("--no-subagent")),E=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,C=t.includes("--no-autocompact")?"off":dt(t,"autocompact-at"),M=t.includes("--quiet")?!0:void 0,B=t.includes("--cycle")?!0:void 0,q=dt(t,"cycles"),Y=dt(t,"cycle-for"),z=dt(t,"backend"),U=dt(t,"local-provider"),Z=dt(t,"local-model"),te=dt(t,"local-auth"),ee=dt(t,"local-base-url"),L=dt(t,"model"),j=dt(t,"provider");if((t.includes("--provider")||t.some(W=>W.startsWith("--provider=")))&&(L===void 0||L.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((L===void 0||L.trim()==="")&&d!==void 0&&d.trim().toLowerCase()==="custom")return{kind:"usage-error",message:"aluy: --tier custom exige --model <slug> (ex.: --model deepseek-v4-pro). A via Custom precisa do slug do modelo; sem ele use um tier can\xF4nico (aluy-flux, aluy-granito, \u2026).",exitCode:2};let le=dt(t,"effort"),he=t.includes("--effort")||t.some(W=>W.startsWith("--effort=")),se;if(le!==void 0){if(le.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(le.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};se=le}else if(he)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let me=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec=")),O=me?dt(t,"print",{allowDashValue:!0})??dt(t,"exec",{allowDashValue:!0})??KG(t,"p")??void 0:void 0,ue=me?dt(t,"output-format"):void 0;if(ue!==void 0&&!["text","json","stream-json"].includes(ue.trim()))return{kind:"usage-error",message:`aluy: --output-format inv\xE1lido "${ue}" (use text | json | stream-json)`,exitCode:2};let V=t.includes("--new"),ie=t.includes("--continue"),be=t.indexOf("--resume"),ct=t.find(W=>W.startsWith("--resume=")),Ce=be>=0||ct!==void 0,Xe;if(ct!==void 0)Xe=ct.slice(9);else if(be>=0){let W=t[be+1];W!==void 0&&!W.startsWith("-")&&(Xe=W)}let kt=d!==void 0?t.indexOf("--tier")+1:-1,vt=h!==void 0&&!t.some(W=>W.startsWith("--lang="))?t.indexOf("--lang")+1:-1,it=Xe!==void 0&&ct===void 0?be+1:-1,Rt=g!==void 0&&!t.some(W=>W.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,K=b!==void 0&&!t.some(W=>W.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,Se=q!==void 0&&!t.some(W=>W.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Pe=Y!==void 0&&!t.some(W=>W.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,H=y!==void 0&&!t.some(W=>W.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,jt=C!==void 0&&!t.includes("--no-autocompact")&&!t.some(W=>W.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,_o=z!==void 0&&!t.some(W=>W.startsWith("--backend="))?t.indexOf("--backend")+1:-1,k=(W,pe)=>pe!==void 0&&!t.some(ho=>ho.startsWith(`--${W}=`))?t.indexOf(`--${W}`)+1:-1,po=k("local-provider",U),Ot=k("local-model",Z),xt=k("local-auth",te),as=k("local-base-url",ee),ls=L!==void 0&&!t.some(W=>W.startsWith("--model="))?t.indexOf("--model")+1:-1,wr=j!==void 0&&!t.some(W=>W.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Er=se!==void 0&&!t.some(W=>W.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Ht=ue!==void 0&&!t.some(W=>W.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,qt=O!==void 0&&!t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Zo=t.find((W,pe)=>!W.startsWith("-")&&pe!==kt&&pe!==vt&&pe!==_o&&pe!==po&&pe!==Ot&&pe!==xt&&pe!==as&&pe!==ls&&pe!==wr&&pe!==Er&&pe!==Ht&&pe!==qt&&pe!==it&&pe!==Rt&&pe!==K&&pe!==H&&pe!==jt&&pe!==Se&&pe!==Pe),jo=(O??Zo??"").trim();if(jo!==""&&!/\s/.test(jo)&&VG.has(jo.toLowerCase()))return{kind:"usage-error",message:`aluy: "${jo}" \xE9 um comando de SESS\xC3O, n\xE3o um objetivo. Use /${jo} DENTRO do aluy (rode \`aluy\` sem argumentos), ou veja \`aluy --help\`. Se voc\xEA quis MESMO um objetivo com essa palavra, d\xEA mais contexto (ex.: \`aluy "${jo} o arquivo X"\`).`,exitCode:2};let us=ie?{kind:"continue"}:Ce?{kind:"resume",...Xe!==void 0?{id:Xe}:{}}:void 0,xn=new Set([kt,vt,_o,po,Ot,xt,as,ls,wr,Er,Ht,qt,it,Rt,K,H,jt,Se,Pe].filter(W=>W>=0));for(let W of YG){let pe=t.indexOf(W);pe>=0&&!t[pe].includes("=")&&xn.add(pe+1)}let oi=QG(t,xn);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...oi.length>0?{unknownFlags:oi}:{},dense:i,fresh:V,subAgents:w,safeGlyphs:a,telegram:l,print:me,...c!==void 0?{split:c}:{},...u!==void 0?{fullscreen:u}:{},...m!==void 0?{budget:m}:{},...Zo!==void 0?{goal:Zo}:{},...d!==void 0?{tier:d}:{},...z!==void 0?{backend:z}:{},...U!==void 0?{localProvider:U}:{},...Z!==void 0?{localModel:Z}:{},...te!==void 0?{localAuth:te}:{},...ee!==void 0?{localBaseUrl:ee}:{},...L!==void 0?{model:L}:{},...j!==void 0?{provider:j}:{},...se!==void 0?{effort:se}:{},...O!==void 0?{printArg:O}:{},...ue!==void 0?{outputFormat:ue}:{},...h!==void 0?{lang:h}:{},...us!==void 0?{resume:us}:{},...g!==void 0?{maxTokens:g}:{},...b!==void 0?{maxIterations:b}:{},...y!==void 0?{maxOutputTokens:y}:{},...E!==void 0?{selfCheck:E}:{},...C!==void 0?{autoCompactAt:C}:{},...M!==void 0?{quiet:M}:{},...B!==void 0?{cycle:B}:{},...q!==void 0?{cycles:q}:{},...Y!==void 0?{cycleFor:Y}:{}}}var ZO,tM,YG,VG,Fx=p(()=>{"use strict";P();Iu();ZO=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
157
|
+
`);return i.provisionAll(n,r)}var KO,Ya,AG,Rn,WO,_x,GO,IG,BG,UG,Lx=p(()=>{"use strict";P();KO=".aluy",Ya=448,AG=384;Rn="aluy-mem0-server.py";WO="application/vnd.ollama.image.model";_x=class{platform;agentInstaller;constructor(e={}){this.platform=e.platform??process.platform,this.agentInstaller=e.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(e){switch(e){case"ollama":{let o=ke(cn(),Ss,"bin","ollama");return et(o)}case"mem0":{let o=ke(cn(),Ur,"bin","python3");return et(o)&&Fu(o)}case"headroom":{let o=ke(cn(),ws,"bin","headroom");return et(o)}default:return!1}}async provision(e,o){let n=wG().uid;if(Wk(n))return{target:e,hashOk:!1,installed:!1,message:"RECUSA ROOT (uid=0): provisionamento de sidecars \xE9 user-space. Execute como usu\xE1rio normal."};if(this.agentInstaller)return this.agentInstaller(e,o);if(!this.hasPinnedArtifact())return{target:e,hashOk:!1,installed:!1,message:`SO '${this.platform}' sem artefato pinado p/ provisionamento direto. Rode \`aluy bootstrap\` (o aluy instala via o pr\xF3prio agente, \u26A0 --yolo) ou instale manualmente.`};switch(e){case"ollama":return RG();case"mem0":return PG();case"headroom":return FG();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!xu(e))return{profile:e,targets:[],anySuccess:!1,allFailed:!1};let n=[],r=[...o];for(let a=0;a<r.length;a++){let l=r[a],c={index:a+1,total:r.length,plan:r};try{n.push(await this.provision(l,c))}catch(u){let m=u instanceof Error?u.message:String(u);n.push({target:l,hashOk:!1,installed:!1,message:`falha inesperada ao provisionar \u2014 seguindo p/ os pr\xF3ximos (${m}).`})}}let s=n.some(a=>a.installed),i=n.length>0&&n.every(a=>!a.installed);return{profile:e,targets:n,anySuccess:s,allFailed:i}}},GO="na faixa 3.10\u20133.12 (N\xC3O use 3.13+/3.14 \u2014 as depend\xEAncias nativas n\xE3o t\xEAm wheels e o pip falha ao compilar; no Windows prefira `py -3.12` ou `py -3.11`). Se N\xC3O houver um Python 3.10\u20133.12 instalado, INSTALE primeiro (no Windows: `winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements`; no Linux/macOS use o gerenciador do sistema). Se j\xE1 existir um venv nesse caminho numa vers\xE3o incompat\xEDvel (ex.: 3.14), APAGUE e recrie com a vers\xE3o certa",IG="IMPORTANTE \u2014 o usu\xE1rio quer ACOMPANHAR: antes de cada passo, diga em 1 linha o que vai fazer; rode os comandos de instala\xE7\xE3o de forma VIS\xCDVEL (N\xC3O silencie pip/apt/curl com -q; mostre a sa\xEDda/progresso). Sem modo silencioso. ";BG=24,UG=5e3});var tr,Iu=p(()=>{"use strict";tr="1.0.0-rc.88"});var oM={};ht(oM,{HELP_TEXT:()=>ZO,parseArgs:()=>Px,suggestFlag:()=>JG,versionText:()=>eM});function dt(t,e,o={}){let n=`--${e}=`;for(let r=0;r<t.length;r++){let s=t[r];if(s===`--${e}`){let i=t[r+1];return i===void 0||(o.allowDashValue?i.startsWith("--"):i.startsWith("-"))?void 0:i}if(s!==void 0&&s.startsWith(n))return s.slice(n.length)}}function KG(t,e){let o=`-${e}=`;for(let n=0;n<t.length;n++){let r=t[n];if(r===`-${e}`){let s=t[n+1];return s!==void 0&&!s.startsWith("-")?s:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function eM(){return`aluy ${tr} (@hiperplano/aluy-cli-core ${Xl})`}function XG(t,e){let o=t.length,n=e.length,r=Array.from({length:n+1},(s,i)=>i);for(let s=1;s<=o;s++){let i=[s];for(let a=1;a<=n;a++){let l=t[s-1]===e[a-1]?0:1;i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+l)}r=i}return r[n]}function JG(t){let e,o=3;for(let n of tM){let r=XG(t,n);r<o&&(o=r,e=n)}return e}function QG(t,e){let o=[];for(let n=0;n<t.length;n++){let r=t[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||e.has(n))continue;let s=r.slice(2).split("=",1)[0];s===""||tM.has(s)||o.push(`--${s}`)}return o}function Px(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let W=t.slice(1),pe=dt(W,"token"),ho=dt(W,"org"),Wt=W.includes("--device"),Ro=dt(W,"provider"),jn=W.includes("--oauth");return{kind:"login",forceDeviceFlow:Wt,...pe!==void 0?{token:pe}:{},...ho!==void 0?{org:ho}:{},...Ro!==void 0?{provider:Ro}:{},...jn?{oauth:!0}:{}}}if(e==="logout"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"logout"};if(e==="whoami"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"whoami"};if(e==="doctor"&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--deep")||t.includes("--test"),pe=t.includes("--json");return{kind:"doctor",deep:W,json:pe}}if(e==="config"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"config",json:t.includes("--json")};if(e==="agents"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"agents"};if(e==="bootstrap"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"bootstrap",agent:!t.includes("--no-agent")};if(e==="uninstall"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"uninstall",agent:t.includes("--agent")};if(e==="onboard"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"onboard"};if(e==="skills"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"skills"};if(e==="workflows"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"workflows"};if((e==="models"||e==="providers")&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--json"),pe=t.findIndex(Wt=>Wt==="--backend"||Wt.startsWith("--backend=")),ho="both";if(pe!==-1){let Ro=(t[pe].includes("=")?t[pe].slice(10):t[pe+1]??"").trim().toLowerCase();Ro==="local"?ho="local":Ro==="broker"&&(ho="broker")}return{kind:"models",scope:ho,json:W,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let W=t[1];if(W===void 0||!["login","logout","allow","deny","status"].includes(W))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ho=t.slice(2);if(W==="login"){let Wt=dt(ho,"token");return{kind:"telegram",sub:"login",...Wt!==void 0?{token:Wt}:{}}}if(W==="allow"||W==="deny"){let Wt=ho.find(jn=>!jn.startsWith("-")),Ro=Wt!==void 0&&/^-?\d+$/.test(Wt)?Number(Wt):void 0;return Ro===void 0?{kind:"usage-error",message:`uso: aluy telegram ${W} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:W,chatId:Ro}}return{kind:"telegram",sub:W}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(pe=>!pe.startsWith("-")).join(" ").trim()};if(e==="mcp")return{kind:"mcp",argv:t.slice(1)};if(e==="cron")return{kind:"cron",argv:t.slice(1)};if(t.includes("-v")||t.includes("--version"))return{kind:"version",text:eM()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:ZO};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--telegram"),c=t.includes("--split")||t.includes("--view")?!0:void 0,u=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,m=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,d=dt(t,"tier"),h=dt(t,"lang"),g=dt(t,"max-tokens"),b=dt(t,"max-iterations"),y=dt(t,"max-output-tokens"),w=!(t.includes("--no-subagents")||t.includes("--no-subagent")),E=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,C=t.includes("--no-autocompact")?"off":dt(t,"autocompact-at"),M=t.includes("--quiet")?!0:void 0,B=t.includes("--cycle")?!0:void 0,q=dt(t,"cycles"),Y=dt(t,"cycle-for"),z=dt(t,"backend"),U=dt(t,"local-provider"),Z=dt(t,"local-model"),te=dt(t,"local-auth"),ee=dt(t,"local-base-url"),L=dt(t,"model"),j=dt(t,"provider");if((t.includes("--provider")||t.some(W=>W.startsWith("--provider=")))&&(L===void 0||L.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((L===void 0||L.trim()==="")&&d!==void 0&&d.trim().toLowerCase()==="custom")return{kind:"usage-error",message:"aluy: --tier custom exige --model <slug> (ex.: --model deepseek-v4-pro). A via Custom precisa do slug do modelo; sem ele use um tier can\xF4nico (aluy-flux, aluy-granito, \u2026).",exitCode:2};let le=dt(t,"effort"),he=t.includes("--effort")||t.some(W=>W.startsWith("--effort=")),se;if(le!==void 0){if(le.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(le.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};se=le}else if(he)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let me=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec=")),O=me?dt(t,"print",{allowDashValue:!0})??dt(t,"exec",{allowDashValue:!0})??KG(t,"p")??void 0:void 0,ue=me?dt(t,"output-format"):void 0;if(ue!==void 0&&!["text","json","stream-json"].includes(ue.trim()))return{kind:"usage-error",message:`aluy: --output-format inv\xE1lido "${ue}" (use text | json | stream-json)`,exitCode:2};let V=t.includes("--new"),ie=t.includes("--continue"),be=t.indexOf("--resume"),ct=t.find(W=>W.startsWith("--resume=")),Ce=be>=0||ct!==void 0,Xe;if(ct!==void 0)Xe=ct.slice(9);else if(be>=0){let W=t[be+1];W!==void 0&&!W.startsWith("-")&&(Xe=W)}let kt=d!==void 0?t.indexOf("--tier")+1:-1,vt=h!==void 0&&!t.some(W=>W.startsWith("--lang="))?t.indexOf("--lang")+1:-1,it=Xe!==void 0&&ct===void 0?be+1:-1,Rt=g!==void 0&&!t.some(W=>W.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,K=b!==void 0&&!t.some(W=>W.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,Se=q!==void 0&&!t.some(W=>W.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Pe=Y!==void 0&&!t.some(W=>W.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,H=y!==void 0&&!t.some(W=>W.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,jt=C!==void 0&&!t.includes("--no-autocompact")&&!t.some(W=>W.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,_o=z!==void 0&&!t.some(W=>W.startsWith("--backend="))?t.indexOf("--backend")+1:-1,k=(W,pe)=>pe!==void 0&&!t.some(ho=>ho.startsWith(`--${W}=`))?t.indexOf(`--${W}`)+1:-1,po=k("local-provider",U),Ot=k("local-model",Z),xt=k("local-auth",te),as=k("local-base-url",ee),ls=L!==void 0&&!t.some(W=>W.startsWith("--model="))?t.indexOf("--model")+1:-1,wr=j!==void 0&&!t.some(W=>W.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Er=se!==void 0&&!t.some(W=>W.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Ht=ue!==void 0&&!t.some(W=>W.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,qt=O!==void 0&&!t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Zo=t.find((W,pe)=>!W.startsWith("-")&&pe!==kt&&pe!==vt&&pe!==_o&&pe!==po&&pe!==Ot&&pe!==xt&&pe!==as&&pe!==ls&&pe!==wr&&pe!==Er&&pe!==Ht&&pe!==qt&&pe!==it&&pe!==Rt&&pe!==K&&pe!==H&&pe!==jt&&pe!==Se&&pe!==Pe),jo=(O??Zo??"").trim();if(jo!==""&&!/\s/.test(jo)&&VG.has(jo.toLowerCase()))return{kind:"usage-error",message:`aluy: "${jo}" \xE9 um comando de SESS\xC3O, n\xE3o um objetivo. Use /${jo} DENTRO do aluy (rode \`aluy\` sem argumentos), ou veja \`aluy --help\`. Se voc\xEA quis MESMO um objetivo com essa palavra, d\xEA mais contexto (ex.: \`aluy "${jo} o arquivo X"\`).`,exitCode:2};let us=ie?{kind:"continue"}:Ce?{kind:"resume",...Xe!==void 0?{id:Xe}:{}}:void 0,xn=new Set([kt,vt,_o,po,Ot,xt,as,ls,wr,Er,Ht,qt,it,Rt,K,H,jt,Se,Pe].filter(W=>W>=0));for(let W of YG){let pe=t.indexOf(W);pe>=0&&!t[pe].includes("=")&&xn.add(pe+1)}let oi=QG(t,xn);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...oi.length>0?{unknownFlags:oi}:{},dense:i,fresh:V,subAgents:w,safeGlyphs:a,telegram:l,print:me,...c!==void 0?{split:c}:{},...u!==void 0?{fullscreen:u}:{},...m!==void 0?{budget:m}:{},...Zo!==void 0?{goal:Zo}:{},...d!==void 0?{tier:d}:{},...z!==void 0?{backend:z}:{},...U!==void 0?{localProvider:U}:{},...Z!==void 0?{localModel:Z}:{},...te!==void 0?{localAuth:te}:{},...ee!==void 0?{localBaseUrl:ee}:{},...L!==void 0?{model:L}:{},...j!==void 0?{provider:j}:{},...se!==void 0?{effort:se}:{},...O!==void 0?{printArg:O}:{},...ue!==void 0?{outputFormat:ue}:{},...h!==void 0?{lang:h}:{},...us!==void 0?{resume:us}:{},...g!==void 0?{maxTokens:g}:{},...b!==void 0?{maxIterations:b}:{},...y!==void 0?{maxOutputTokens:y}:{},...E!==void 0?{selfCheck:E}:{},...C!==void 0?{autoCompactAt:C}:{},...M!==void 0?{quiet:M}:{},...B!==void 0?{cycle:B}:{},...q!==void 0?{cycles:q}:{},...Y!==void 0?{cycleFor:Y}:{}}}var ZO,tM,YG,VG,Fx=p(()=>{"use strict";P();Iu();ZO=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
158
158
|
|
|
159
159
|
Uso:
|
|
160
160
|
aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
|
|
@@ -684,7 +684,7 @@ Notas:
|
|
|
684
684
|
`),!0}function s2(t){switch(t.kind){case"testrun":{let e=t.score;return e.unknownFormat?"[testes] placar indispon\xEDvel (formato n\xE3o reconhecido)":`[testes] ${e.passed} \u2713 ${e.failed} \u2717 (${e.total})`}case"you":return`[voc\xEA] ${t.text}`;case"aluy":{let e=sn(t.text);return e.trim()===""?"":`[aluy] ${e}`}case"tool":return t.status==="running"?`[tool] ${t.verb} ${t.target} \u2014 ${t.verbGerund??"rodando"}`:`[tool] ${t.verb} ${t.target} \u2014 ${t.result} ${t.status==="ok"?"ok":"erro"}`;case"bang":{if(t.status==="running")return`[shell] $ ${t.command} \u2014 rodando`;let e=t.status==="blocked"?"bloqueado":t.status==="ok"?"ok":"erro",o=t.output&&t.output.trim()!==""?`
|
|
685
685
|
${t.output}`:"";return`[shell] $ ${t.command} \u2014 ${e}${o}`}case"subagents":{let e=`[sub-agentes] ${t.children.length}:`,o=t.children.map(n=>{let r=n.status==="running"?"rodando":n.status==="done"?"pronto":n.stop==="timeout"?"timeout":n.stop==="limit"?"teto":"falhou",s=n.summary!==void 0&&n.status!=="running"?` \xB7 ${n.summary}`:"";return` [${n.label}] ${r}${s}`});return[e,...o].join(`
|
|
686
686
|
`)}case"deny":return`[negado] ${t.verb} ${t.exact}`;case"broker-error":return`[${NA(t.backend)}] ${t.message}${t.status!==void 0?` (${t.status})`:""}`;case"note":return`[${t.title}] ${t.lines.join(" \xB7 ")}`;case"doctor":{let e="[doctor]",o=t.checks.flatMap(r=>{let s=r.status==="ok"?"\u2713":r.status==="warn"?"\u26A0":r.status==="fail"?"\u2717":"\u25F7",i=r.detail!==void 0&&r.detail!==""?`: ${r.detail}`:": testando\u2026",a=` ${s} ${r.label}${i}`;return r.status!=="ok"&&r.status!=="pending"&&r.fix!==void 0?[a,` \u2192 ${r.fix}`]:[a]}),n=t.summary!==void 0?[` resumo: ${t.summary}`]:[];return[e,...o,...n].join(`
|
|
687
|
-
`)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var ate,$A=p(()=>{"use strict";P();Ed();Yr();MA();LA();FA();IA();ate="-".repeat(12)});import{useEffect as To,useState as tt,useReducer as lte,useCallback as Jt,useMemo as i2,useRef as Qo}from"react";import{Box as ae,Static as cte,Text as a2,useApp as ute,useInput as dte,useStdin as mte,useStdout as fte}from"ink";import{Fragment as u2,jsx as R,jsxs as fo}from"react/jsx-runtime";function d2(t){let{controller:e}=t,{exit:o}=ute(),{stdout:n}=fte(),r=Q(),{lang:s,t:i}=xe(),[,a]=lte(x=>x+1,0);To(()=>{if(!n||typeof n.on!="function")return;let x=()=>a();return n.on("resize",x),()=>{typeof n.off=="function"&&n.off("resize",x)}},[n]);let l=n?.columns??80,c=n?.rows??24,u=r.density!=="compact",m=r.density!=="compact",[d,h]=tt(e.current),[g,b]=tt({text:"",cursor:0}),y=g.text,w=g.cursor,[E,C]=tt(!1),[M,B]=tt(0),[q,Y]=tt(()=>new Set),[z,U]=tt(!1),[Z,te]=tt(""),ee=d.phase==="questioning"?d.pendingQuestion?.spec:void 0,L=Qo(void 0);To(()=>{ee!==L.current&&(L.current=ee,B(0),Y(new Set),te(""),U(ee?.kind==="text"))},[ee]);let[j,Te]=tt(0),[le,he]=tt(!1),[se,me]=tt(0),[O,ue]=tt([]),[V,ie]=tt(-1),[be,ct]=tt([]),Ce=Qo([]),Xe=Qo(0);Ce.current=be,be.length===0&&(Xe.current=0);let kt=Jt(x=>{Ce.current=[...Ce.current,x],ct(v=>[...v,x])},[]),Bt=Jt(()=>{Ce.current=[],ct([]),Xe.current=0},[]),[vt,it]=tt(!1),[Ut,Rt]=tt(0),[I,K]=tt(null),[_e,Se]=tt(t.initialSplitView===!0),[Ne,Pe]=tt(!1),[X,H]=tt("chat"),[de,jt]=tt(()=>new Set),[Sr,_o]=tt(0),[k,po]=tt(!1),[Ot,xt]=tt(t.initialFullscreen===!0),[as,Bl]=tt("conversa"),[ls,cs]=tt(0),[wr,Ul]=tt(!1),Er=Qo(void 0),Zt=Qo(void 0),Ht=Qo(!1),qt=Qo(void 0),Zo=Jt(()=>{Zt.current!==void 0&&(clearTimeout(Zt.current),Zt.current=void 0),Er.current=void 0,Ul(!1)},[]);To(()=>()=>{Zt.current!==void 0&&clearTimeout(Zt.current),qt.current!==void 0&&clearTimeout(qt.current)},[]);let jo=Nh(d.meta.label),us=y.length===0?1:Vo(y,l>jo?l-jo:l),xn=Math.max(3,Math.floor(c/3)),oi=Math.max(0,Math.min(us,xn)-1),W=Ot?e.flowOverview():[],pe=Ot?SA(W,x=>e.drillInFlow(x),{collapsed:de,errorsOnly:k}).sections:[],ho=W.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,Wt=Ot?$g(d.blocks).startupNotes:[],Ro=Wt.length>0?1+Wt.reduce((x,v)=>x+1+v.lines.length,0):0,jn=Ot?{lines:pU(pe)+Ro,hasActivity:pe.length>0||Ro>0,activeAgents:ho,focused:as==="log"}:void 0,en=ei(c,l,us,jn),la=Ot&&en.kind==="cockpit",tn=dU(l,_e),go=tn.layout,jl=go==="side"||go==="tabs"&&X==="log",ca=jl&&Ne,ge=MB({fileIndex:t.fileIndex??pte,attachReader:t.attachReader??hte}),$=FB({catalog:t.catalog??gte,...t.customModels?{customModels:t.customModels}:{},currentTier:d.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),yo=$B(t.permissionControl??vte),ua=t.currentTheme??Oi(r.brightness),Je=HB({currentTheme:ua}),Hl=t.currentLang??s,Mt=zB({currentLang:Hl}),da=(d.meta.provider??"")!==""?d.meta.provider:t.currentProvider,At=VB({...da!==void 0?{currentProvider:da}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Em=i2(()=>z$(Xo,i),[i]),Gt=JB({store:t.sessionStore??yte}),ql=t.rewindSource??bte,Fe=ZB({source:ql}),ma=i2(()=>Fe.target?ql.barriersAfter(Fe.target.id):[],[Fe.target,ql]),ot=tU({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Em}),Wl=t.syncActive??!0,Zg=sU(d.phase,Wl)||Ste(d.blocks),ni=dm({enabled:r.animate&&Zg}),A=iU(d.phase);dm({enabled:A,intervalMs:1e3}),To(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),To(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(ei(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{xt(!1);let v=ei(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let N=Qo(t.initialFullscreen===!0&&en.kind==="cockpit"),Ee=Qo(t.initialFullscreen===!0);To(()=>{let x=Ee.current!==Ot;if(Ee.current=Ot,!Ot){N.current=!1;return}let v=en.kind==="cockpit";if(x){N.current=v;return}let S=N.current;if(S&&!v){t.cockpitScreen?.leave();let D=en.kind==="refuse"&&en.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[D])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();N.current=v},[c,l,Ot]);let{stdin:T}=mte();To(()=>{if(!T)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),Bt();return}let D=EN(S);D==="home"?b(J=>({...J,cursor:0})):D==="end"&&b(J=>({...J,cursor:J.text.length}))};return T.on("data",x),()=>{T.removeListener("data",x)}},[T,e,Bt,b]),To(()=>{if(d.phase!=="boot")return;let x=t.bootMs??900;if(x<=0)return;let v=setTimeout(()=>e.dismissBoot(),x);return()=>clearTimeout(v)},[d.phase,e,t.bootMs]),To(()=>{d.phase!=="stuck"&&E&&C(!1)},[d.phase,E]);let _=t.userCommands??[],G=y.startsWith("/")?y.slice(1):"",ce=Y$(G,_,Em),oe=Jt((x,v)=>{b({text:x,cursor:_t(x,v??x.length)})},[]),$e=Jt(x=>{he(xE(x,t.userCommands??[])),me(0)},[t.userCommands]),Qe=Jt(()=>{Ng("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),Te(x=>x+1)},[n]),at=t.registerClearScreen;To(()=>{at?.(Qe)},[at,Qe]),To(()=>{Ng(`slashOpen=${le} (rows=${c} cols=${l})`)},[le,c,l]);let on=Qo({rows:c,columns:l});To(()=>{if(Ot){on.current={rows:c,columns:l};return}let x=on.current;if(x.rows===c&&x.columns===l)return;Ng(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),on.current={rows:c,columns:l};let v=setTimeout(()=>Qe(),90);return()=>clearTimeout(v)},[c,l,Ot,Qe]);let Sn=Jt(()=>{Se(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(Pe(!1),H("chat")),v})},[t]),Ar=Jt(()=>{if(process.env.ALUY_FULLSCREEN!=="1"){e.replaceNote("fullscreen",["O modo tela cheia (/fullscreen) est\xE1 desativado nesta vers\xE3o \u2014 ainda em ajustes.","A sess\xE3o continua no modo inline (o padr\xE3o), que \xE9 o recomendado."]);return}xt(x=>{let v=!x,S=ei(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let D=ei(c,l),J=D.kind==="refuse"&&D.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[J])}else t.cockpitScreen?.leave(),Qe(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Bl("conversa"),cs(0),_o(0)},[t,e,i,c,l,Qe]),Oo=Jt((x,v)=>{if(x.id==="split"){Sn();return}if(x.id==="fullscreen"){Ar();return}if(x.id==="export"){t.onExportTranscript?t.onExportTranscript().then(S=>{e.pushNote("export",S.ok&&S.path?[`transcript exportado (redigido) \u2192 ${S.path}`]:[S.error??"export indispon\xEDvel"])}):e.replaceNote("export",["export indispon\xEDvel nesta sess\xE3o."]);return}if(x.id==="model"&&v.trim()===""&&d.meta.backend==="local"){e.replaceNote("model-local",["Backend LOCAL (BYO): os tiers do broker n\xE3o se aplicam aqui.","O modelo vem do seu provider \u2014 troque com /provider, ou defina ALUY_LOCAL_MODEL / --model."]);return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){$.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){yo.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){Gt.openPicker();return}Qe(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Fe.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Je.openPicker();return}let D=qr(S);if(D){t.onSelectTheme(D.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){Mt.openPicker();return}let D=Ds(S);if(D){t.onSelectLang(D.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){At.openPicker();return}let D=Lg(S,At.providers);if(D){t.onSelectProvider(D.name);return}}t.onCommand?.(x,v)},[t,$,yo,Je,Mt,At,Gt,Fe,Qe,Sn]),ey=Jt(x=>{if(x.action.kind==="command"){Oo(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[Oo,e]),Ae=Jt(x=>{cs(0),_o(0);let v=Dl(x,_);if(v.kind==="goal"){if(v.text!==""){if(Ui(v.text).length>0&&t.attachReader){let D=ge.attachments.map(J=>J.item);km(v.text,t.attachReader).then(({goal:J,items:Ie})=>{if(J===""&&Ie.length===0){ge.clear();return}let je=[...D,...Ie],Mo=J!==""?J:v.text;ue(qn=>[...qn,Mo]),e.submit(Mo,je),ge.clear()});return}let S=ge.attachments.map(D=>D.item);ue(D=>[...D,v.text]),e.submit(v.text,S),ge.clear()}return}if(v.kind==="command"){Oo(v.command,v.args);return}if(v.kind==="bang"){ue(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,_,ge,Oo,t.attachReader]),Re=Jt(x=>{let v=Dl(x,_);return v.kind!=="goal"||v.text===""||ge.attachments.length>0||Ui(v.text).length>0?!1:e.injectInput("root",v.text)},[e,_,ge]),Cr=Jt(x=>{let v=Dl(x,_);return v.kind!=="command"||!yE(v.command,v.args)?!1:(Oo(v.command,v.args),!0)},[_,Oo]),ri=Jt(x=>{if(Ce.current.length>0){kt(x);return}let v=Dl(x,_),S=v.kind==="goal"?v.text:"";if(cU({subagentsRunning:c2(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:ge.attachments.length>0||S!==""&&Ui(S).length>0})){Re(x);return}!Re(x)&&!Cr(x)&&kt(x)},[kt,Re,Cr,e,_,ge]),si=Qo();si.current||(si.current=XI());let Dr=Qo();Dr.current||(Dr.current=AU());let Tr=Jt(x=>{let v=_U(x,Dr.current);return Dr.current.reset(),v},[]),Am=Jt(x=>{let v=TU(x,Dr.current,"backward");return v.handled?(v.removedId!==void 0&&Dr.current.remove(v.removedId),v.state):Fw(x)},[]),nn=Qo({open:!1}),wn=Jt(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),ge.dismissNotice();let v=EU(x);b(S=>{let D=v?CU(S,x,Dr.current):Gi(S,x);return $e(D.text),ii(D.text),D}),ie(-1)},[e,ge,$e]);To(()=>{if(!T)return;let x=si.current,v=S=>{let D=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!D.includes("\x1B[20"))return;let J=x.feed(D);for(let Ie of J)Ie.kind==="paste"&&wn(Ie.text)};return T.on("data",v),()=>{T.removeListener("data",v)}},[T,wn]);let Gl=ge.open||$.open||yo.open||Je.open||Mt.open||At.open||Gt.open||Fe.open||ot.open,Ho=nF({...d,anyPickerOpen:Gl});To(()=>{if(!Ho||be.length===0)return;let x=be[0]??"",v=Dl(x,_);if(v.kind==="command"&&v.command.id==="clear"){Bt(),Ae(x);return}ct(S=>S.slice(1)),Ae(x)},[Ho,be,Ae,_,Bt]),To(()=>{if(Ho||be.length===0||d.phase!=="thinking"&&d.phase!=="streaming")return;let x=0;for(let v of be){if(!Re(v))break;x+=1}x>0&&ct(v=>v.slice(x))},[Ho,be,d.phase,Re]),dte((x,v)=>{if(!VI(nn.current,x)&&!kU(x)){if(d.phase==="boot"){if(v.ctrl&&x==="c"){o();return}if(x&&!v.ctrl&&!v.meta){e.dismissBoot();let S=x.search(/[\r\n]/);S!==-1?Ae(y+x.slice(0,S)):b(D=>{let J=D.text+x;return he(xE(J,t.userCommands??[])),{text:J,cursor:J.length}});return}e.dismissBoot();return}if(la&&!le&&!ge.open&&!ot.open&&d.phase!=="asking"){if(v.tab&&!v.shift){Bl(D=>D==="conversa"?"log":"conversa");return}if(v.ctrl&&(x==="s"||x==="")){t.onExportTranscript?t.onExportTranscript().then(D=>{D.ok&&D.path?e.pushNote("export",[`${i("cockpit.exported")} ${D.path}`]):e.pushNote("export",[D.error??"export indispon\xEDvel"])}):e.pushNote("export",["export indispon\xEDvel nesta sess\xE3o"]);return}let S=en.kind==="cockpit"?en:void 0;if(S){let D=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(D!==void 0){if(as==="conversa"){let J=Math.max(1,Math.round((S.regions.conversaRows-1)/4)),Ie=D==="up"?1:D==="down"?-1:D==="pageUp"?J:-J;cs(je=>Math.min(Math.max(0,je+Ie),Math.max(0,d.blocks.length-1)))}else{let J=Math.max(1,S.regions.logRows-1);_o(Ie=>bU(D,Ie,pe.length+1,J))}return}}}if(!vt){if(v.ctrl&&x==="l"){_e&&go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Sn();return}if(v.tab&&!v.shift&&jl){go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Pe(S=>!S);return}if(ca){if(v.escape){Pe(!1);return}if(v.upArrow){_o(S=>S+1);return}if(v.downArrow){_o(S=>Math.max(0,S-1));return}if(v.pageUp){_o(S=>S+aa);return}if(v.pageDown){_o(S=>Math.max(0,S-aa));return}if(v.return){jt(S=>{let D=new Set(S);return D.has("root")?D.delete("root"):D.add("root"),D});return}if(x==="e"&&!v.ctrl&&!v.meta){po(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(vt){if(I){if(v.escape||v.return){K(null);return}if(x==="p"){e.cancelFlow(I);return}if(x==="i"){y.trim()!==""&&(e.injectInput(I,y),oe(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){it(!1);return}if(v.upArrow){Rt(D=>Math.max(0,D-1));return}if(v.downArrow){Rt(D=>Math.min(Math.max(0,S.length-1),D+1));return}if(v.return){let D=S[Math.min(Ut,S.length-1)];D&&K(D.id);return}if(x==="p"){let D=S[Math.min(Ut,S.length-1)];D&&e.cancelFlow(D.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let D=S[Math.min(Ut,S.length-1)];D&&y.trim()!==""&&(e.injectInput(D.id,y),oe(""));return}return}if(d.phase==="asking"&&d.pendingAsk){let S=d.pendingAsk.request.alwaysAsk;if(x==="a")return e.resolveAsk({kind:"approve-once"});if(x==="s"&&S===!1)return e.resolveAsk({kind:"approve-session"});if(x==="n")return e.resolveAsk({kind:"deny",reason:"negado pelo usu\xE1rio"});if(v.escape){let D=Date.now(),J=Ce.current.length>0,Ie=D-Xe.current<500;e.resolveAsk({kind:"deny",reason:"cancelado (esc)"}),Ie&&!J&&(e.interrupt(),Bt()),Xe.current=J?0:D;return}return x==="e"?e.resolveAsk({kind:"deny",reason:"editar (n\xE3o aplicado)"}):void 0}if(d.phase==="questioning"&&d.pendingQuestion){let S=d.pendingQuestion.spec,D=S.options??[],J=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(z&&S.kind!=="text"){U(!1),te("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(z){if(v.return){let je=Z.trim();return je===""?void 0:e.resolveQuestion({kind:"text",text:je})}if(v.backspace||v.delete){te(je=>je.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){te(je=>je+x);return}return}let Ie=D.length-1;if(v.upArrow){B(je=>je===fr?Ie:je<=0?J?fr:Ie:je-1);return}if(v.downArrow){B(je=>je===fr?0:je>=Ie?J?fr:0:je+1);return}if(S.kind==="multi"&&x===" "&&M!==fr&&M>=0){Y(je=>{let Mo=new Set(je);return Mo.has(M)?Mo.delete(M):Mo.add(M),Mo});return}if(v.return){if(M===fr){U(!0);return}if(S.kind==="multi"){let Mo=[...q].sort((Wn,l8)=>Wn-l8),qn=Mo.map(Wn=>D[Wn]?.label??"").filter(Wn=>Wn!=="");return e.resolveQuestion({kind:"choices",indices:Mo,labels:qn})}let je=D[M];return je?e.resolveQuestion({kind:"choice",index:M,label:je.label}):void 0}return}if(d.phase==="budget"){if(x==="n")return o();if(x==="c"){e.continueAfterBudget();return}if(x==="k"&&e.canCompact){e.compactAfterBudget();return}return}if(d.phase==="cycle-ceiling"){if(x==="n"||v.escape){e.stopCycleCeiling();return}if(x==="c"){e.continueCycleCeiling();return}return}if(d.pendingUnsafeConfirm===!0){if(x==="s"||x==="y"){e.confirmUnsafe();return}if(x==="n"||v.escape){e.cancelUnsafe();return}return}if(d.phase==="stuck")if(E){if(v.escape){C(!1);return}if(v.return&&!v.shift){let S=g.text;b({text:"",cursor:0}),C(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){C(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(xte(d.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),Bt();return}if(d.phase==="thinking"||d.phase==="streaming"||d.phase==="retrying"){if(v.ctrl&&x==="t"){K(null),Rt(0),it(!0);return}if(le){if(v.upArrow){me(D=>Math.max(0,D-1));return}if(v.downArrow){me(D=>Math.min(ce.length-1,D+1));return}if(v.escape){he(!1),me(0);return}if(v.tab){let D=ce[se];if(D){let J=ag(D);oe(J),$e(J)}return}if(v.return&&!v.shift){let D=ce[se];if(D&&D.kind==="subcommand"&&kE(D)){he(!1),me(0);let J=G$(D);kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1);return}if(D&&D.kind==="subcommand"){let J=ag(D);oe(J),$e(J);return}if(he(!1),me(0),D){if(yE(D.command,"")){Oo(D.command,""),oe(""),ie(-1);return}let J=`/${D.command.name}`;kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1)}return}}if(v.ctrl&&x==="c"){e.interrupt(),Bt();return}if(v.escape){let D=Ce.current.length>0,J=e.current.pendingInjects.length>0,Ie=Tr(y).trim(),je=Ie!=="";if(D||J||je){let Mo=J;if(je){let qn=nU(Ie);qn.kind==="redirect"&&(e.injectInput("root",qn.inject),ue(Wn=>[...Wn,qn.inject]),Mo=!0),oe(""),ie(-1)}if(!d.cycleActive&&Ce.current.length>0){let qn=[];for(let Wn of Ce.current)Re(Wn)?Mo=!0:qn.push(Wn);ct(qn)}Mo&&e.expedite();return}e.interrupt(),Bt();return}if(v.return&&v.ctrl||!v.return&&x===`
|
|
687
|
+
`)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var ate,$A=p(()=>{"use strict";P();Ed();Yr();MA();LA();FA();IA();ate="-".repeat(12)});import{useEffect as To,useState as tt,useReducer as lte,useCallback as Jt,useMemo as i2,useRef as Qo}from"react";import{Box as ae,Static as cte,Text as a2,useApp as ute,useInput as dte,useStdin as mte,useStdout as fte}from"ink";import{Fragment as u2,jsx as R,jsxs as fo}from"react/jsx-runtime";function d2(t){let{controller:e}=t,{exit:o}=ute(),{stdout:n}=fte(),r=Q(),{lang:s,t:i}=xe(),[,a]=lte(x=>x+1,0);To(()=>{if(!n||typeof n.on!="function")return;let x=()=>a();return n.on("resize",x),()=>{typeof n.off=="function"&&n.off("resize",x)}},[n]);let l=n?.columns??80,c=n?.rows??24,u=r.density!=="compact",m=r.density!=="compact",[d,h]=tt(e.current),[g,b]=tt({text:"",cursor:0}),y=g.text,w=g.cursor,[E,C]=tt(!1),[M,B]=tt(0),[q,Y]=tt(()=>new Set),[z,U]=tt(!1),[Z,te]=tt(""),ee=d.phase==="questioning"?d.pendingQuestion?.spec:void 0,L=Qo(void 0);To(()=>{ee!==L.current&&(L.current=ee,B(0),Y(new Set),te(""),U(ee?.kind==="text"))},[ee]);let[j,Te]=tt(0),[le,he]=tt(!1),[se,me]=tt(0),[O,ue]=tt([]),[V,ie]=tt(-1),[be,ct]=tt([]),Ce=Qo([]),Xe=Qo(0);Ce.current=be,be.length===0&&(Xe.current=0);let kt=Jt(x=>{Ce.current=[...Ce.current,x],ct(v=>[...v,x])},[]),Bt=Jt(()=>{Ce.current=[],ct([]),Xe.current=0},[]),[vt,it]=tt(!1),[Ut,Rt]=tt(0),[I,K]=tt(null),[_e,Se]=tt(t.initialSplitView===!0),[Ne,Pe]=tt(!1),[X,H]=tt("chat"),[de,jt]=tt(()=>new Set),[Sr,_o]=tt(0),[k,po]=tt(!1),[Ot,xt]=tt(t.initialFullscreen===!0),[as,Bl]=tt("conversa"),[ls,cs]=tt(0),[wr,Ul]=tt(!1),Er=Qo(void 0),Zt=Qo(void 0),Ht=Qo(!1),qt=Qo(void 0),Zo=Jt(()=>{Zt.current!==void 0&&(clearTimeout(Zt.current),Zt.current=void 0),Er.current=void 0,Ul(!1)},[]);To(()=>()=>{Zt.current!==void 0&&clearTimeout(Zt.current),qt.current!==void 0&&clearTimeout(qt.current)},[]);let jo=Nh(d.meta.label),us=y.length===0?1:Vo(y,l>jo?l-jo:l),xn=Math.max(3,Math.floor(c/3)),oi=Math.max(0,Math.min(us,xn)-1),W=Ot?e.flowOverview():[],pe=Ot?SA(W,x=>e.drillInFlow(x),{collapsed:de,errorsOnly:k}).sections:[],ho=W.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,Wt=Ot?$g(d.blocks).startupNotes:[],Ro=Wt.length>0?1+Wt.reduce((x,v)=>x+1+v.lines.length,0):0,jn=Ot?{lines:pU(pe)+Ro,hasActivity:pe.length>0||Ro>0,activeAgents:ho,focused:as==="log"}:void 0,en=ei(c,l,us,jn),la=Ot&&en.kind==="cockpit",tn=dU(l,_e),go=tn.layout,jl=go==="side"||go==="tabs"&&X==="log",ca=jl&&Ne,ge=MB({fileIndex:t.fileIndex??pte,attachReader:t.attachReader??hte}),$=FB({catalog:t.catalog??gte,...t.customModels?{customModels:t.customModels}:{},currentTier:d.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),yo=$B(t.permissionControl??vte),ua=t.currentTheme??Oi(r.brightness),Je=HB({currentTheme:ua}),Hl=t.currentLang??s,Mt=zB({currentLang:Hl}),da=(d.meta.provider??"")!==""?d.meta.provider:t.currentProvider,At=VB({...da!==void 0?{currentProvider:da}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Em=i2(()=>z$(Xo,i),[i]),Gt=JB({store:t.sessionStore??yte}),ql=t.rewindSource??bte,Fe=ZB({source:ql}),ma=i2(()=>Fe.target?ql.barriersAfter(Fe.target.id):[],[Fe.target,ql]),ot=tU({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Em}),Wl=t.syncActive??!0,Zg=sU(d.phase,Wl)||Ste(d.blocks),ni=dm({enabled:r.animate&&Zg}),A=iU(d.phase);dm({enabled:A,intervalMs:1e3}),To(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),To(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(ei(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{xt(!1);let v=ei(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let N=Qo(t.initialFullscreen===!0&&en.kind==="cockpit"),Ee=Qo(t.initialFullscreen===!0);To(()=>{let x=Ee.current!==Ot;if(Ee.current=Ot,!Ot){N.current=!1;return}let v=en.kind==="cockpit";if(x){N.current=v;return}let S=N.current;if(S&&!v){t.cockpitScreen?.leave();let D=en.kind==="refuse"&&en.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[D])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();N.current=v},[c,l,Ot]);let{stdin:T}=mte();To(()=>{if(!T)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),Bt();return}let D=EN(S);D==="home"?b(J=>({...J,cursor:0})):D==="end"&&b(J=>({...J,cursor:J.text.length}))};return T.on("data",x),()=>{T.removeListener("data",x)}},[T,e,Bt,b]),To(()=>{if(d.phase!=="boot")return;let x=t.bootMs??900;if(x<=0)return;let v=setTimeout(()=>e.dismissBoot(),x);return()=>clearTimeout(v)},[d.phase,e,t.bootMs]),To(()=>{d.phase!=="stuck"&&E&&C(!1)},[d.phase,E]);let _=t.userCommands??[],G=y.startsWith("/")?y.slice(1):"",ce=Y$(G,_,Em),oe=Jt((x,v)=>{b({text:x,cursor:_t(x,v??x.length)})},[]),$e=Jt(x=>{he(xE(x,t.userCommands??[])),me(0)},[t.userCommands]),Qe=Jt(()=>{Ng("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),Te(x=>x+1)},[n]),at=t.registerClearScreen;To(()=>{at?.(Qe)},[at,Qe]),To(()=>{Ng(`slashOpen=${le} (rows=${c} cols=${l})`)},[le,c,l]);let on=Qo({rows:c,columns:l});To(()=>{if(Ot){on.current={rows:c,columns:l};return}let x=on.current;if(x.rows===c&&x.columns===l)return;Ng(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),on.current={rows:c,columns:l};let v=setTimeout(()=>Qe(),90);return()=>clearTimeout(v)},[c,l,Ot,Qe]);let Sn=Jt(()=>{Se(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(Pe(!1),H("chat")),v})},[t]),Ar=Jt(()=>{xt(x=>{let v=!x,S=ei(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let D=ei(c,l),J=D.kind==="refuse"&&D.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[J])}else t.cockpitScreen?.leave(),Qe(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Bl("conversa"),cs(0),_o(0)},[t,e,i,c,l,Qe]),Oo=Jt((x,v)=>{if(x.id==="split"){Sn();return}if(x.id==="fullscreen"){Ar();return}if(x.id==="export"){t.onExportTranscript?t.onExportTranscript().then(S=>{e.pushNote("export",S.ok&&S.path?[`transcript exportado (redigido) \u2192 ${S.path}`]:[S.error??"export indispon\xEDvel"])}):e.replaceNote("export",["export indispon\xEDvel nesta sess\xE3o."]);return}if(x.id==="model"&&v.trim()===""&&d.meta.backend==="local"){e.replaceNote("model-local",["Backend LOCAL (BYO): os tiers do broker n\xE3o se aplicam aqui.","O modelo vem do seu provider \u2014 troque com /provider, ou defina ALUY_LOCAL_MODEL / --model."]);return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){$.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){yo.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){Gt.openPicker();return}Qe(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Fe.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Je.openPicker();return}let D=qr(S);if(D){t.onSelectTheme(D.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){Mt.openPicker();return}let D=Ds(S);if(D){t.onSelectLang(D.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){At.openPicker();return}let D=Lg(S,At.providers);if(D){t.onSelectProvider(D.name);return}}t.onCommand?.(x,v)},[t,$,yo,Je,Mt,At,Gt,Fe,Qe,Sn]),ey=Jt(x=>{if(x.action.kind==="command"){Oo(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[Oo,e]),Ae=Jt(x=>{cs(0),_o(0);let v=Dl(x,_);if(v.kind==="goal"){if(v.text!==""){if(Ui(v.text).length>0&&t.attachReader){let D=ge.attachments.map(J=>J.item);km(v.text,t.attachReader).then(({goal:J,items:Ie})=>{if(J===""&&Ie.length===0){ge.clear();return}let je=[...D,...Ie],Mo=J!==""?J:v.text;ue(qn=>[...qn,Mo]),e.submit(Mo,je),ge.clear()});return}let S=ge.attachments.map(D=>D.item);ue(D=>[...D,v.text]),e.submit(v.text,S),ge.clear()}return}if(v.kind==="command"){Oo(v.command,v.args);return}if(v.kind==="bang"){ue(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,_,ge,Oo,t.attachReader]),Re=Jt(x=>{let v=Dl(x,_);return v.kind!=="goal"||v.text===""||ge.attachments.length>0||Ui(v.text).length>0?!1:e.injectInput("root",v.text)},[e,_,ge]),Cr=Jt(x=>{let v=Dl(x,_);return v.kind!=="command"||!yE(v.command,v.args)?!1:(Oo(v.command,v.args),!0)},[_,Oo]),ri=Jt(x=>{if(Ce.current.length>0){kt(x);return}let v=Dl(x,_),S=v.kind==="goal"?v.text:"";if(cU({subagentsRunning:c2(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:ge.attachments.length>0||S!==""&&Ui(S).length>0})){Re(x);return}!Re(x)&&!Cr(x)&&kt(x)},[kt,Re,Cr,e,_,ge]),si=Qo();si.current||(si.current=XI());let Dr=Qo();Dr.current||(Dr.current=AU());let Tr=Jt(x=>{let v=_U(x,Dr.current);return Dr.current.reset(),v},[]),Am=Jt(x=>{let v=TU(x,Dr.current,"backward");return v.handled?(v.removedId!==void 0&&Dr.current.remove(v.removedId),v.state):Fw(x)},[]),nn=Qo({open:!1}),wn=Jt(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),ge.dismissNotice();let v=EU(x);b(S=>{let D=v?CU(S,x,Dr.current):Gi(S,x);return $e(D.text),ii(D.text),D}),ie(-1)},[e,ge,$e]);To(()=>{if(!T)return;let x=si.current,v=S=>{let D=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!D.includes("\x1B[20"))return;let J=x.feed(D);for(let Ie of J)Ie.kind==="paste"&&wn(Ie.text)};return T.on("data",v),()=>{T.removeListener("data",v)}},[T,wn]);let Gl=ge.open||$.open||yo.open||Je.open||Mt.open||At.open||Gt.open||Fe.open||ot.open,Ho=nF({...d,anyPickerOpen:Gl});To(()=>{if(!Ho||be.length===0)return;let x=be[0]??"",v=Dl(x,_);if(v.kind==="command"&&v.command.id==="clear"){Bt(),Ae(x);return}ct(S=>S.slice(1)),Ae(x)},[Ho,be,Ae,_,Bt]),To(()=>{if(Ho||be.length===0||d.phase!=="thinking"&&d.phase!=="streaming")return;let x=0;for(let v of be){if(!Re(v))break;x+=1}x>0&&ct(v=>v.slice(x))},[Ho,be,d.phase,Re]),dte((x,v)=>{if(!VI(nn.current,x)&&!kU(x)){if(d.phase==="boot"){if(v.ctrl&&x==="c"){o();return}if(x&&!v.ctrl&&!v.meta){e.dismissBoot();let S=x.search(/[\r\n]/);S!==-1?Ae(y+x.slice(0,S)):b(D=>{let J=D.text+x;return he(xE(J,t.userCommands??[])),{text:J,cursor:J.length}});return}e.dismissBoot();return}if(la&&!le&&!ge.open&&!ot.open&&d.phase!=="asking"){if(v.tab&&!v.shift){Bl(D=>D==="conversa"?"log":"conversa");return}if(v.ctrl&&(x==="s"||x==="")){t.onExportTranscript?t.onExportTranscript().then(D=>{D.ok&&D.path?e.pushNote("export",[`${i("cockpit.exported")} ${D.path}`]):e.pushNote("export",[D.error??"export indispon\xEDvel"])}):e.pushNote("export",["export indispon\xEDvel nesta sess\xE3o"]);return}let S=en.kind==="cockpit"?en:void 0;if(S){let D=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(D!==void 0){if(as==="conversa"){let J=Math.max(1,Math.round((S.regions.conversaRows-1)/4)),Ie=D==="up"?1:D==="down"?-1:D==="pageUp"?J:-J;cs(je=>Math.min(Math.max(0,je+Ie),Math.max(0,d.blocks.length-1)))}else{let J=Math.max(1,S.regions.logRows-1);_o(Ie=>bU(D,Ie,pe.length+1,J))}return}}}if(!vt){if(v.ctrl&&x==="l"){_e&&go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Sn();return}if(v.tab&&!v.shift&&jl){go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Pe(S=>!S);return}if(ca){if(v.escape){Pe(!1);return}if(v.upArrow){_o(S=>S+1);return}if(v.downArrow){_o(S=>Math.max(0,S-1));return}if(v.pageUp){_o(S=>S+aa);return}if(v.pageDown){_o(S=>Math.max(0,S-aa));return}if(v.return){jt(S=>{let D=new Set(S);return D.has("root")?D.delete("root"):D.add("root"),D});return}if(x==="e"&&!v.ctrl&&!v.meta){po(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(vt){if(I){if(v.escape||v.return){K(null);return}if(x==="p"){e.cancelFlow(I);return}if(x==="i"){y.trim()!==""&&(e.injectInput(I,y),oe(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){it(!1);return}if(v.upArrow){Rt(D=>Math.max(0,D-1));return}if(v.downArrow){Rt(D=>Math.min(Math.max(0,S.length-1),D+1));return}if(v.return){let D=S[Math.min(Ut,S.length-1)];D&&K(D.id);return}if(x==="p"){let D=S[Math.min(Ut,S.length-1)];D&&e.cancelFlow(D.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let D=S[Math.min(Ut,S.length-1)];D&&y.trim()!==""&&(e.injectInput(D.id,y),oe(""));return}return}if(d.phase==="asking"&&d.pendingAsk){let S=d.pendingAsk.request.alwaysAsk;if(x==="a")return e.resolveAsk({kind:"approve-once"});if(x==="s"&&S===!1)return e.resolveAsk({kind:"approve-session"});if(x==="n")return e.resolveAsk({kind:"deny",reason:"negado pelo usu\xE1rio"});if(v.escape){let D=Date.now(),J=Ce.current.length>0,Ie=D-Xe.current<500;e.resolveAsk({kind:"deny",reason:"cancelado (esc)"}),Ie&&!J&&(e.interrupt(),Bt()),Xe.current=J?0:D;return}return x==="e"?e.resolveAsk({kind:"deny",reason:"editar (n\xE3o aplicado)"}):void 0}if(d.phase==="questioning"&&d.pendingQuestion){let S=d.pendingQuestion.spec,D=S.options??[],J=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(z&&S.kind!=="text"){U(!1),te("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(z){if(v.return){let je=Z.trim();return je===""?void 0:e.resolveQuestion({kind:"text",text:je})}if(v.backspace||v.delete){te(je=>je.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){te(je=>je+x);return}return}let Ie=D.length-1;if(v.upArrow){B(je=>je===fr?Ie:je<=0?J?fr:Ie:je-1);return}if(v.downArrow){B(je=>je===fr?0:je>=Ie?J?fr:0:je+1);return}if(S.kind==="multi"&&x===" "&&M!==fr&&M>=0){Y(je=>{let Mo=new Set(je);return Mo.has(M)?Mo.delete(M):Mo.add(M),Mo});return}if(v.return){if(M===fr){U(!0);return}if(S.kind==="multi"){let Mo=[...q].sort((Wn,l8)=>Wn-l8),qn=Mo.map(Wn=>D[Wn]?.label??"").filter(Wn=>Wn!=="");return e.resolveQuestion({kind:"choices",indices:Mo,labels:qn})}let je=D[M];return je?e.resolveQuestion({kind:"choice",index:M,label:je.label}):void 0}return}if(d.phase==="budget"){if(x==="n")return o();if(x==="c"){e.continueAfterBudget();return}if(x==="k"&&e.canCompact){e.compactAfterBudget();return}return}if(d.phase==="cycle-ceiling"){if(x==="n"||v.escape){e.stopCycleCeiling();return}if(x==="c"){e.continueCycleCeiling();return}return}if(d.pendingUnsafeConfirm===!0){if(x==="s"||x==="y"){e.confirmUnsafe();return}if(x==="n"||v.escape){e.cancelUnsafe();return}return}if(d.phase==="stuck")if(E){if(v.escape){C(!1);return}if(v.return&&!v.shift){let S=g.text;b({text:"",cursor:0}),C(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){C(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(xte(d.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),Bt();return}if(d.phase==="thinking"||d.phase==="streaming"||d.phase==="retrying"){if(v.ctrl&&x==="t"){K(null),Rt(0),it(!0);return}if(le){if(v.upArrow){me(D=>Math.max(0,D-1));return}if(v.downArrow){me(D=>Math.min(ce.length-1,D+1));return}if(v.escape){he(!1),me(0);return}if(v.tab){let D=ce[se];if(D){let J=ag(D);oe(J),$e(J)}return}if(v.return&&!v.shift){let D=ce[se];if(D&&D.kind==="subcommand"&&kE(D)){he(!1),me(0);let J=G$(D);kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1);return}if(D&&D.kind==="subcommand"){let J=ag(D);oe(J),$e(J);return}if(he(!1),me(0),D){if(yE(D.command,"")){Oo(D.command,""),oe(""),ie(-1);return}let J=`/${D.command.name}`;kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1)}return}}if(v.ctrl&&x==="c"){e.interrupt(),Bt();return}if(v.escape){let D=Ce.current.length>0,J=e.current.pendingInjects.length>0,Ie=Tr(y).trim(),je=Ie!=="";if(D||J||je){let Mo=J;if(je){let qn=nU(Ie);qn.kind==="redirect"&&(e.injectInput("root",qn.inject),ue(Wn=>[...Wn,qn.inject]),Mo=!0),oe(""),ie(-1)}if(!d.cycleActive&&Ce.current.length>0){let qn=[];for(let Wn of Ce.current)Re(Wn)?Mo=!0:qn.push(Wn);ct(qn)}Mo&&e.expedite();return}e.interrupt(),Bt();return}if(v.return&&v.ctrl||!v.return&&x===`
|
|
688
688
|
`&&!v.ctrl&&!v.meta){let D=Tr(y).trim();D!==""&&(e.injectInput("root",D),oe(""),ue(J=>[...J,D]),ie(-1));return}if(v.return&&v.shift){b(D=>Gi(D,`
|
|
689
689
|
`));return}if(v.return){let D=Tr(y).trim();D!==""&&(ri(D),ue(J=>[...J,D]),oe(""),ie(-1));return}if(v.backspace||v.delete){if(y===""&&be.length>0){ct(D=>D.slice(0,-1));return}b(D=>{let J=Am(D);return $e(J.text),J});return}if(v.leftArrow){b(D=>({...D,cursor:v.meta?Ud(D):Iw(D)}));return}if(v.rightArrow){b(D=>({...D,cursor:v.meta?qh(D):Nw(D)}));return}if(v.ctrl&&x==="a"){b(D=>({...D,cursor:0}));return}if(v.ctrl&&x==="e"){b(D=>({...D,cursor:D.text.length}));return}if(x&&!v.ctrl&&!v.meta){if(x.search(/[\r\n]/)!==-1){b(D=>{let J=Bd(D,x),Ie=Tr(J.state.text).trim();return Ie!==""&&(J.newline===`
|
|
690
690
|
`?e.injectInput("root",Ie):ri(Ie),ue(je=>[...je,Ie])),ie(-1),{text:"",cursor:0}}),he(!1),me(0);return}b(D=>{let J=Bd(D,x).state;return $e(J.text),J});return}return}if(d.phase==="error"){if(v.escape){e.dismissError(),Qe();return}if((x==="r"||x==="R")&&!v.ctrl&&!v.meta){e.retryLastGoal(),Qe();return}if(!(v.ctrl&&x==="c"))return}if(ot.open){if(v.escape){ot.closePalette();return}if(v.upArrow){ot.move(-1);return}if(v.downArrow){ot.move(1);return}if(v.return){let S=ot.confirm();S&&ey(S);return}if(v.backspace||v.delete){ot.setQuery(ot.query.slice(0,-1));return}if(v.ctrl&&(x==="p"||x==="x"||x==="c")){ot.closePalette();return}x&&!v.ctrl&&!v.meta&&ot.setQuery(ot.query+x);return}if($.open){if($.effortStepOpen){if($.effortCustomOpen){if(v.escape){$.backFromEffort();return}if(v.return){let S=$.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.backspace||v.delete){$.backspaceEffortCustom();return}x&&!v.ctrl&&!v.meta&&$.appendEffortCustom(x);return}if(v.upArrow){$.effortMove(-1);return}if(v.downArrow){$.effortMove(1);return}if(v.return||v.tab){let S=$.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.escape){$.backFromEffort();return}return}if($.customInputOpen){if(v.escape){$.closePicker();return}if(v.upArrow){$.browseMove(-1);return}if(v.downArrow){$.browseMove(1);return}if(v.return){$.confirm();return}if(v.backspace||v.delete){$.backspaceCustom();return}if(v.ctrl&&x==="t"){$.toggleToolsOnly();return}x&&!v.ctrl&&!v.meta&&$.appendCustom(x);return}if(v.upArrow){$.move(-1);return}if(v.downArrow){$.move(1);return}if(v.return||v.tab){$.confirm();return}if(v.escape){$.closePicker();return}return}if(yo.open){if(v.upArrow){yo.move(-1);return}if(v.downArrow){yo.move(1);return}if(v.return){yo.act();return}if(v.escape){yo.closePanel();return}return}if(Je.open){if(v.upArrow){Je.move(-1);return}if(v.downArrow){Je.move(1);return}if(v.return||v.tab){let S=Je.confirm();S&&t.onSelectTheme?.(S);return}if(v.escape){Je.closePicker();return}return}if(Mt.open){if(v.upArrow){Mt.move(-1);return}if(v.downArrow){Mt.move(1);return}if(v.return||v.tab){let S=Mt.confirm();S&&t.onSelectLang?.(S);return}if(v.escape){Mt.closePicker();return}return}if(At.open){if(v.upArrow){At.move(-1);return}if(v.downArrow){At.move(1);return}if(v.return||v.tab){let S=At.confirm();S&&t.onSelectProvider?.(S);return}if(v.escape){At.closePicker();return}return}if(Gt.open){if(v.upArrow){Gt.move(-1);return}if(v.downArrow){Gt.move(1);return}if(v.return||v.tab){let S=Gt.confirm();S&&(Qe(),t.onResumeSession?.(S));return}if(v.escape){Gt.closePicker();return}return}if(Fe.open){if(v.upArrow){Fe.move(-1);return}if(v.downArrow){Fe.move(1);return}if(v.return){let S=Fe.confirm();S&&t.onRewind?.(S);return}if(v.escape){Fe.back();return}return}if(le){if(v.upArrow){me(S=>Math.max(0,S-1));return}if(v.downArrow){me(S=>Math.min(ce.length-1,S+1));return}if(v.return||v.tab){let S=ce[se];if(S===void 0){if(v.return){let D=y.trim().split(/\s+/)[0]??"";oe(""),he(!1),me(0),e.replaceNote("slash-unknown",[`comando desconhecido: ${D||"/"} \u2014 veja /help para a lista.`])}return}if(S){let D=S.kind==="command"&&S.command.subcommands!==void 0&&S.command.subcommands.length>0;if(S.kind==="subcommand"&&kE(S)&&v.return){oe(""),he(!1),me(0),Oo(S.parent,S.sub.name);return}if(S.kind==="subcommand"||D&&v.tab){let J=ag(S);oe(J),$e(J);return}oe(""),he(!1),me(0),Oo(S.command,"")}return}if(v.escape){he(!1),me(0);return}}if(ge.open){if(v.upArrow){ge.move(-1);return}if(v.downArrow){ge.move(1);return}if(v.return||v.tab){ge.confirm(),oe(XS(y));return}if(v.escape){ge.closePicker();return}}if(v.ctrl&&x==="c"){let S=Date.now(),D=Er.current!==void 0&&S-Er.current<=$w,J=ge.attachments.length>0,Ie=J&&y.trim()===""?"clear":AN(y,D);if(Ie==="clear"){oe(""),J&&ge.clear(),Zo();return}if(Ie==="exit"){Zo(),o();return}Er.current=S,Ul(!0),Zt.current!==void 0&&clearTimeout(Zt.current),Zt.current=setTimeout(Zo,$w);return}if(wr&&Zo(),v.escape){if(t.rewindSource!==void 0&&t.onRewind!==void 0&&y===""){if(Ht.current){Ht.current=!1,qt.current!==void 0&&clearTimeout(qt.current),Fe.openPicker();return}Ht.current=!0,qt.current!==void 0&&clearTimeout(qt.current),qt.current=setTimeout(()=>{Ht.current=!1},600);return}Ht.current=!1}else Ht.current&&(Ht.current=!1,qt.current!==void 0&&clearTimeout(qt.current));if(v.ctrl&&(x==="p"||x==="x")&&!le&&!ge.open){ot.openPalette();return}if(v.tab&&!le){e.cycleMode();return}if(!le&&v.upArrow&&O.length>0){let S=V<0?O.length-1:Math.max(0,V-1);ie(S),oe(O[S]??"");return}if(!le&&v.downArrow&&V>=0){let S=V+1;S>=O.length?(ie(-1),oe("")):(ie(S),oe(O[S]??""));return}if(v.leftArrow){b(S=>({...S,cursor:v.meta?Ud(S):Iw(S)}));return}if(v.rightArrow){b(S=>({...S,cursor:v.meta?qh(S):Nw(S)}));return}if(v.meta&&(x==="b"||x==="f")){b(S=>({...S,cursor:x==="b"?Ud(S):qh(S)}));return}if(v.ctrl&&x==="a"){b(S=>({...S,cursor:0}));return}if(v.ctrl&&x==="e"){b(S=>({...S,cursor:S.text.length}));return}if(v.ctrl&&(x==="u"||x==="k"||x==="w")){b(S=>{let D=x==="u"?xN(S):x==="k"?SN(S):wN(S);return $e(D.text),D}),ie(-1);return}if(v.return&&v.shift){b(S=>Gi(S,`
|