@hiperplano/aluy-cli 1.0.0-rc.87 → 1.0.0-rc.89
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 +5 -5
- 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.89"});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.89"});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>]
|
|
@@ -492,9 +492,9 @@ ${Tn(w)}`}}catch(g){let b=u?`o proxy n\xE3o respondeu em ${m}ms (timeout)`:g ins
|
|
|
492
492
|
`,r=`${this.file}.tmp-${process.pid}-${Date.now().toString(36)}`,s=a7(r,AS.O_CREAT|AS.O_EXCL|AS.O_WRONLY,p7);try{l7(s,n,0,"utf8")}finally{c7(s)}try{d7(r,this.file)}catch(i){try{m7(r)}catch{}throw i}}ensureDir(e){let o=sl(e),n=sl(o);vP(n)||bP(n,{recursive:!0});for(let r of[o,e])try{bP(r,{mode:f7})}catch(s){if(s.code!=="EEXIST")throw s}}}});import{writeFileSync as v7,rmSync as k7,readFileSync as x7,existsSync as S7}from"node:fs";var cd,ud,xP=p(()=>{"use strict";cd=class{workspace;constructor(e){this.workspace=e.workspace}async writeConfined(e,o){let n=this.workspace.resolveInside(e);return v7(n,o,"utf8"),n}async removeConfined(e){let o=this.workspace.resolveInside(e);return k7(o,{force:!0}),o}},ud=class{workspace;constructor(e){this.workspace=e.workspace}async readCurrent(e){let o;try{o=this.workspace.resolveInside(e)}catch{return}if(S7(o))return x7(o,"utf8")}}});function E7(t){if(t===void 0)return!1;let e=t.trim().toLowerCase();return e==="0"||e==="false"||e==="off"||e==="no"}function CS(t=process.env){let e=!E7(t.ALUY_NOTIFY),o=t.NO_COLOR===void 0;return{enabled:e,desktop:o}}var w7,SP,dd,DS=p(()=>{"use strict";w7="\x1B]9;",SP={attention:"Aluy precisa de voc\xEA",done:"Aluy \u2014 turno conclu\xEDdo"},dd=class{write;isTty;desktop;on;constructor(e){this.write=e.write,this.isTty=e.isTty??!1,this.desktop=e.desktop??!0,this.on=e.enabled??!0}get enabled(){return this.on&&this.isTty}setEnabled(e){this.on=e}notify(e){if(!this.enabled)return;let o=SP[e];try{this.write("\x07"),this.desktop&&this.write(`${w7}${o}\x07`)}catch{}}}});async function A7(t,e){let{workspace:o,fs:n}=e;try{o.resolveInside(t)}catch{return}if(No(t).kind!=="allow"||!await n.exists(t))return;let r;try{r=await n.readFile(t)}catch{return}return pf(r)}async function TS(t){let e=[];for(let r of wP){let s=await A7(r,t);s!==void 0&&e.push({filename:r,text:s})}if(e.length===0)return{sources:[]};if(e.length===1)return{instructions:e[0].text,sources:[e[0].filename]};let o=e.map(r=>`<!-- fonte: ${r.filename} -->
|
|
493
493
|
${r.text}`).join(`
|
|
494
494
|
|
|
495
|
-
`),n=pf(o);return{...n!==void 0?{instructions:n}:{},sources:e.map(r=>r.filename)}}var Ni,wP,_S=p(()=>{"use strict";P();Ls();Ni="ALUY.md",wP=["ALUY.md","AGENT.md","AGENTS.md","CLAUDE.md"]});import{homedir as C7}from"node:os";import{join as RS,basename as D7}from"node:path";import{openSync as T7,writeSync as _7,closeSync as EP,mkdirSync as R7,renameSync as O7,unlinkSync as M7,constants as OS}from"node:fs";function I7(t,e){if(t===void 0||t.trim()==="")return e;let o=D7(t.trim());return o=o.replace(/[-/\\]/g,""),o===""||o==="."||o===".."?e:(/\.md$/i.test(o)||(o+=".md"),o)}function N7(t){return t.toISOString().replace(/[:.]/g,"-").replace(/-\d{3}Z$/,"Z")}var L7,P7,AP,F7,md,CP=p(()=>{"use strict";L7=448,P7=384,AP="exports",F7=(t,e,o)=>_7(t,e,o,e.length-o);md=class{base;now;writeChunk;constructor(e={}){this.base=RS(e.baseDir??RS(C7(),".aluy"),AP),this.now=e.now??(()=>new Date),this.writeChunk=e.writeChunk??F7}get dir(){return this.base}write(e,o={}){let n=`${(o.sessionId??"sessao").slice(0,40)}-${N7(this.now())}.md`,r=I7(o.fileName,n),s=RS(this.base,r),i=`${s}.${process.pid}.tmp`,a;try{R7(this.base,{recursive:!0,mode:L7}),a=T7(i,OS.O_CREAT|OS.O_EXCL|OS.O_WRONLY,P7);let l=Buffer.from(e,"utf8"),c=0;for(;c<l.length;){let u=this.writeChunk(a,l,c);if(u<=0)throw new Error(`escrita parou em ${c}/${l.length} bytes (writeSync devolveu ${u})`);c+=u}return EP(a),a=void 0,O7(i,s),{ok:!0,path:s}}catch(l){if(a!==void 0)try{EP(a)}catch{}try{M7(i)}catch{}return{ok:!1,error:`falha ao exportar: ${String(l)}`}}}}});function Dt(t){return typeof t=="string"}function DP(t){return typeof t=="number"&&Number.isInteger(t)&&t>=0}function B7(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function U7(t){return t==="ok"||t==="warn"||t==="fail"?t:"warn"}function j7(t){if(typeof t!="object"||t===null)return null;let e=t;return!Dt(e.id)||!Dt(e.label)?null:{id:e.id,label:e.label,status:U7(e.status),...Dt(e.detail)?{detail:e.detail}:{},...Dt(e.fix)?{fix:e.fix}:{}}}function TP(t){if(typeof t!="object"||t===null)return null;let e=t,o=e.kind;if(typeof o!="string"||!$7.has(o))return null;switch(o){case"you":return Dt(e.text)?{kind:"you",text:e.text}:null;case"aluy":return Dt(e.text)?{kind:"aluy",text:e.text,streaming:!1}:null;case"tool":{if(!Dt(e.verb)||!Dt(e.target)||!Dt(e.result))return null;let n=e.status==="ok"||e.status==="err"?e.status:"err";return{kind:"tool",verb:e.verb,target:e.target,result:e.result,status:n,...Dt(e.output)?{output:e.output}:{},...Dt(e.verbGerund)?{verbGerund:e.verbGerund}:{},...DP(e.added)?{added:e.added}:{},...DP(e.removed)?{removed:e.removed}:{}}}case"deny":return Dt(e.verb)&&Dt(e.exact)?{kind:"deny",verb:e.verb,exact:e.exact}:null;case"bang":{if(!Dt(e.command))return null;let n=e.status==="ok"||e.status==="err"||e.status==="blocked"?e.status:"err";return{kind:"bang",command:e.command,status:n,...Dt(e.output)?{output:e.output}:{}}}case"broker-error":return Dt(e.message)?{kind:"broker-error",message:e.message,...typeof e.status=="number"?{status:e.status}:{}}:null;case"note":return Dt(e.title)&&B7(e.lines)?{kind:"note",title:e.title,lines:e.lines}:null;case"inject":return Dt(e.text)?{kind:"inject",text:e.text}:null;case"doctor":{if(!Array.isArray(e.checks))return null;let n=e.checks.map(j7).filter(r=>r!==null);return n.length===0?null:{kind:"doctor",checks:n,...Dt(e.summary)?{summary:e.summary}:{}}}default:return null}}function fh(t){if(!Array.isArray(t))return[];let e=[];for(let o of t){let n=TP(o);n&&e.push(n)}return e}function $i(t){let e=[];for(let o of t)switch(o.kind){case"you":e.push({role:"goal",text:o.text});break;case"aluy":o.text.trim()!==""&&e.push({role:"model",text:o.text});break;case"tool":{let n=[`${o.verb} ${o.target} \u2192 ${o.result||o.status}`];o.output&&n.push(o.output),e.push({role:"observation",toolName:MS,text:n.join(`
|
|
495
|
+
`),n=pf(o);return{...n!==void 0?{instructions:n}:{},sources:e.map(r=>r.filename)}}var Ni,wP,_S=p(()=>{"use strict";P();Ls();Ni="ALUY.md",wP=["ALUY.md","AGENT.md","AGENTS.md","CLAUDE.md"]});import{homedir as C7}from"node:os";import{join as RS,basename as D7}from"node:path";import{openSync as T7,writeSync as _7,closeSync as EP,mkdirSync as R7,renameSync as O7,unlinkSync as M7,constants as OS}from"node:fs";function I7(t,e){if(t===void 0||t.trim()==="")return e;let o=D7(t.trim());return o=o.replace(/[-/\\]/g,""),o===""||o==="."||o===".."?e:(/\.md$/i.test(o)||(o+=".md"),o)}function N7(t){return t.toISOString().replace(/[:.]/g,"-").replace(/-\d{3}Z$/,"Z")}var L7,P7,AP,F7,md,CP=p(()=>{"use strict";L7=448,P7=384,AP="exports",F7=(t,e,o)=>_7(t,e,o,e.length-o);md=class{base;now;writeChunk;constructor(e={}){this.base=RS(e.baseDir??RS(C7(),".aluy"),AP),this.now=e.now??(()=>new Date),this.writeChunk=e.writeChunk??F7}get dir(){return this.base}write(e,o={}){let n=`${(o.sessionId??"sessao").slice(0,40)}-${N7(this.now())}.md`,r=I7(o.fileName,n),s=RS(this.base,r),i=`${s}.${process.pid}.tmp`,a;try{R7(this.base,{recursive:!0,mode:L7}),a=T7(i,OS.O_CREAT|OS.O_EXCL|OS.O_WRONLY,P7);let l=Buffer.from(e,"utf8"),c=0;for(;c<l.length;){let u=this.writeChunk(a,l,c);if(u<=0)throw new Error(`escrita parou em ${c}/${l.length} bytes (writeSync devolveu ${u})`);c+=u}return EP(a),a=void 0,O7(i,s),{ok:!0,path:s}}catch(l){if(a!==void 0)try{EP(a)}catch{}try{M7(i)}catch{}return{ok:!1,error:`falha ao exportar: ${String(l)}`}}}}});function Dt(t){return typeof t=="string"}function DP(t){return typeof t=="number"&&Number.isInteger(t)&&t>=0}function B7(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function U7(t){return t==="ok"||t==="warn"||t==="fail"?t:"warn"}function j7(t){if(typeof t!="object"||t===null)return null;let e=t;return!Dt(e.id)||!Dt(e.label)?null:{id:e.id,label:e.label,status:U7(e.status),...Dt(e.detail)?{detail:e.detail}:{},...Dt(e.fix)?{fix:e.fix}:{}}}function TP(t){if(typeof t!="object"||t===null)return null;let e=t,o=e.kind;if(typeof o!="string"||!$7.has(o))return null;switch(o){case"you":return Dt(e.text)?{kind:"you",text:e.text}:null;case"aluy":return Dt(e.text)?{kind:"aluy",text:e.text,streaming:!1}:null;case"tool":{if(!Dt(e.verb)||!Dt(e.target)||!Dt(e.result))return null;let n=e.status==="ok"||e.status==="err"?e.status:"err";return{kind:"tool",verb:e.verb,target:e.target,result:e.result,status:n,...Dt(e.output)?{output:e.output}:{},...Dt(e.verbGerund)?{verbGerund:e.verbGerund}:{},...DP(e.added)?{added:e.added}:{},...DP(e.removed)?{removed:e.removed}:{}}}case"deny":return Dt(e.verb)&&Dt(e.exact)?{kind:"deny",verb:e.verb,exact:e.exact}:null;case"bang":{if(!Dt(e.command))return null;let n=e.status==="ok"||e.status==="err"||e.status==="blocked"?e.status:"err";return{kind:"bang",command:e.command,status:n,...Dt(e.output)?{output:e.output}:{}}}case"broker-error":return Dt(e.message)?{kind:"broker-error",message:e.message,...typeof e.status=="number"?{status:e.status}:{}}:null;case"note":return Dt(e.title)&&B7(e.lines)?{kind:"note",title:e.title,lines:e.lines}:null;case"inject":return Dt(e.text)?{kind:"inject",text:e.text}:null;case"doctor":{if(!Array.isArray(e.checks))return null;let n=e.checks.map(j7).filter(r=>r!==null);return n.length===0?null:{kind:"doctor",checks:n,...Dt(e.summary)?{summary:e.summary}:{}}}default:return null}}function fh(t){if(!Array.isArray(t))return[];let e=[];for(let o of t){let n=TP(o);n&&e.push(n)}return e}function $i(t){let e=[];for(let o of t)switch(o.kind){case"you":e.push({role:"goal",text:o.text});break;case"inject":o.text.trim()!==""&&e.push({role:"goal",text:o.text});break;case"aluy":o.text.trim()!==""&&e.push({role:"model",text:o.text});break;case"tool":{let n=[`${o.verb} ${o.target} \u2192 ${o.result||o.status}`];o.output&&n.push(o.output),e.push({role:"observation",toolName:MS,text:n.join(`
|
|
496
496
|
`)});break}case"bang":{let n=[`! ${o.command} (${o.status})`];o.output&&n.push(o.output),e.push({role:"observation",toolName:MS,text:n.join(`
|
|
497
|
-
`)});break}case"broker-error":e.push({role:"observation",toolName:MS,text:`(${o.backend==="local"?"erro do provider local":"erro de broker"} anterior: ${o.message})`});break;case"note":case"deny":case"subagents":case"doctor":
|
|
497
|
+
`)});break}case"broker-error":e.push({role:"observation",toolName:MS,text:`(${o.backend==="local"?"erro do provider local":"erro de broker"} anterior: ${o.message})`});break;case"note":case"deny":case"subagents":case"doctor":break}return e}var $7,MS,LS=p(()=>{"use strict";$7=new Set(["you","aluy","tool","deny","bang","broker-error","note","inject","doctor"]);MS="sess\xE3o-anterior"});function W7(t){return t.kind==="tool"&&q7.has(t.verb)}function _P(t){let e=!1,o=t.map(n=>{if(n.kind==="tool"&&W7(n)){let r=Ze(n.result),s=n.output!==void 0?Ze(n.output):void 0,i=n.liveOutput!==void 0?Ze(n.liveOutput):void 0;return r===n.result&&s===n.output&&i===n.liveOutput?n:(e=!0,{...n,result:r,...s!==void 0?{output:s}:{},...i!==void 0?{liveOutput:i}:{}})}if(n.kind==="bang"){let r=vo(n.command);return r===n.command?n:(e=!0,{...n,command:r})}if(n.kind==="tool"&&H7.has(n.verb)){let r=vo(n.target);return r===n.target?n:(e=!0,{...n,target:r})}return n});return e?o:t}var H7,q7,RP=p(()=>{"use strict";P();H7=new Set(["bash","run_command"]),q7=new Set(["read","grep","attach","headroom_retrieve"])});import{homedir as G7}from"node:os";import{join as PS}from"node:path";import{randomBytes as z7}from"node:crypto";import{openSync as K7,writeSync as Y7,closeSync as OP,readFileSync as V7,readdirSync as MP,mkdirSync as X7,renameSync as J7,unlinkSync as LP,statSync as Q7,existsSync as Kye,constants as FS}from"node:fs";function iY(t,e){let o=[...t];return o.length>e?o.slice(0,e).join(""):t}function hh(t){if(typeof t!="string")return;let e="";for(let n of t){let r=n.codePointAt(0)??0;e+=r<32||r===127?" ":n}let o=e.replace(/\s+/g," ").trim();if(o!=="")return iY(o,sY)}function aY(t){for(let e of t)if(e.kind==="you"){let o=e.text.replace(/\s+/g," ").trim();if(o==="")return;let n=[...o];return n.length>60?n.slice(0,57).join("")+"\u2026":o}}var Z7,eY,PP,FP,tY,oY,IS,nY,rY,ph,sY,fd,IP=p(()=>{"use strict";LS();RP();Z7=448,eY=384,PP="sessions",FP=1,tY=720*60*60*1e3,oY=50,IS=8*1024*1024,nY=IS*8,rY=Math.floor(IS*.9),ph=/^[A-Za-z0-9_-]{1,128}$/,sY=64;fd=class{base;dir;now;createdAtCache=new Map;constructor(e={}){this.base=e.baseDir??PS(G7(),".aluy"),this.dir=PS(this.base,PP),this.now=e.now??(()=>Date.now())}get sessionsDir(){return this.dir}pathFor(e){return PS(this.dir,`${e}.json`)}save(e){if(!ph.test(e.id))return!1;try{let o=this.now(),n=this.resolveCreatedAt(e.id,o),r=e.tier==="custom"&&typeof e.model=="string"&&e.model.trim()!=="",s=r&&typeof e.provider=="string"&&e.provider.trim()!=="",i=hh(e.label),a=i!==void 0?hh(e.labelColor):void 0,l={id:e.id,version:FP,createdAt:n,updatedAt:o,cwd:e.cwd,tier:e.tier,...r?{model:e.model.trim()}:{},...s?{provider:e.provider.trim()}:{},...i!==void 0?{label:i}:{},...a!==void 0?{labelColor:a}:{}},c=this.fitBlocks(l,_P(fh(e.blocks))),u={...l,blocks:c};return this.writeAtomic(u),!0}catch{return!1}}resolveCreatedAt(e,o){let n=this.createdAtCache.get(e);if(n!==void 0)return n;let r=this.load(e)?.createdAt??o;return this.createdAtCache.set(e,r),r}load(e){if(!ph.test(e))return null;let o=this.pathFor(e),n,r=!1;try{let a=Q7(o);if(a.size>nY)return null;r=a.size>IS,n=V7(o,"utf8")}catch{return null}let s;try{s=JSON.parse(n)}catch{return null}let i=this.sanitizeRecord(s);if(i&&r){let{blocks:a,...l}=i,c=this.fitBlocks(l,a),u=a.length-c.length,m={kind:"note",title:"sess\xE3o grande \u2014 contexto antigo omitido no resume",lines:[`Esta sess\xE3o era grande demais p/ recarregar inteira; ${u} bloco(s) antigo(s) foram omitidos e a parte recente foi preservada.`,"O contexto restante ser\xE1 resumido automaticamente na pr\xF3xima intera\xE7\xE3o."]};i={...i,blocks:u>0?[m,...c]:c}}return i&&this.createdAtCache.set(i.id,i.createdAt),i}list(){let e;try{e=MP(this.dir)}catch{return[]}let o=[];for(let n of e){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5),s=this.load(r);s&&o.push({id:s.id,createdAt:s.createdAt,updatedAt:s.updatedAt,cwd:s.cwd,tier:s.tier,...s.model!==void 0?{model:s.model}:{},...s.provider!==void 0?{provider:s.provider}:{},...s.label!==void 0?{label:s.label}:{},...s.labelColor!==void 0?{labelColor:s.labelColor}:{},blockCount:s.blocks.length,title:aY(s.blocks)})}return o.sort((n,r)=>r.updatedAt-n.updatedAt),o}latestForCwd(e){let o;try{o=MP(this.dir)}catch{return null}let n=null;for(let r of o){if(!r.endsWith(".json"))continue;let s=r.slice(0,-5),i=this.load(s);!i||i.cwd!==e||(n===null||i.updatedAt>n.updatedAt)&&(n=i)}return n}remove(e){if(ph.test(e)){this.createdAtCache.delete(e);try{LP(this.pathFor(e))}catch{}}}gc(e={}){let o=e.maxAgeMs??tY,n=e.maxCount??oY,r=this.list(),s=this.now()-o;r.forEach((i,a)=>{(i.updatedAt<s||a>=n)&&this.remove(i.id)})}sanitizeRecord(e){if(typeof e!="object"||e===null)return null;let o=e;if(typeof o.id!="string"||!ph.test(o.id)||!Array.isArray(o.blocks))return null;let n=typeof o.createdAt=="number"&&o.createdAt>=0?o.createdAt:0,r=typeof o.updatedAt=="number"&&o.updatedAt>=0?o.updatedAt:n,s=typeof o.cwd=="string"?o.cwd:"",i=typeof o.tier=="string"&&o.tier.trim()!==""?o.tier:"",a=typeof o.version=="number"?o.version:0,l=i==="custom"&&typeof o.model=="string"&&o.model.trim()!==""?o.model.trim():void 0,c=l!==void 0&&typeof o.provider=="string"&&o.provider.trim()!==""?o.provider.trim():void 0,u=hh(o.label),m=u!==void 0?hh(o.labelColor):void 0;return{id:o.id,version:a,createdAt:n,updatedAt:r,cwd:s,tier:i,...l!==void 0?{model:l}:{},...c!==void 0?{provider:c}:{},...u!==void 0?{label:u}:{},...m!==void 0?{labelColor:m}:{},blocks:fh(o.blocks)}}fitBlocks(e,o){let n=i=>Buffer.byteLength(JSON.stringify({...e,blocks:i})+`
|
|
498
498
|
`,"utf8")<=rY;if(n(o))return o;let r=1,s=o.length;for(;r<s;){let i=r+s>>1;n(o.slice(i))?s=i:r=i+1}return o.slice(r)}writeAtomic(e){X7(this.dir,{recursive:!0,mode:Z7});let o=this.pathFor(e.id),n=`${o}.${process.pid}.${z7(6).toString("hex")}.tmp`,r=JSON.stringify(e)+`
|
|
499
499
|
`,s;try{s=K7(n,FS.O_CREAT|FS.O_EXCL|FS.O_WRONLY,eY),Y7(s,r),OP(s),s=void 0,J7(n,o)}catch(i){if(s!==void 0)try{OP(s)}catch{}try{LP(n)}catch{}throw i}}}});import{homedir as lY}from"node:os";import{join as NS}from"node:path";import{readdirSync as cY,readFileSync as uY,mkdirSync as dY,statSync as mY}from"node:fs";var fY,NP,pY,hY,pd,$P=p(()=>{"use strict";P();fY=448,NP="commands",pY=64*1024,hY=256,pd=class{dir;constructor(e={}){let o=e.baseDir??NS(lY(),".aluy");this.dir=NS(o,NP)}get commandsDir(){return this.dir}ensureDir(){try{dY(this.dir,{mode:fY,recursive:!0})}catch{}}load(){let e;try{e=cY(this.dir,{withFileTypes:!0})}catch{return[]}let o=e.filter(s=>(s.isFile()||s.isSymbolicLink())&&s.name.toLowerCase().endsWith(".md")).map(s=>s.name).sort((s,i)=>s.localeCompare(i)),n=new Set,r=[];for(let s of o){if(r.length>=hY)break;let i=this.readOne(s);i&&(n.has(i.name)||(n.add(i.name),r.push(i)))}return r}readOne(e){let o=NS(this.dir,e);try{let n=mY(o);if(!n.isFile()||n.size>pY)return null;let r=uY(o,"utf8");return iu(e,r)}catch{return null}}}});import{join as gY}from"node:path";import{readdirSync as yY,readFileSync as bY,statSync as vY}from"node:fs";function $S(t,e){let o=new Map;for(let n of t)o.set(n.name,n);for(let n of e)o.set(n.name,n);return[...o.values()]}var BP,kY,xY,hd,UP=p(()=>{"use strict";P();Ls();BP=[".claude/commands",".aluy/commands"],kY=64*1024,xY=256,hd=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[];for(let n of BP){let r;try{r=this.workspace.resolveInside(n)}catch{continue}let s;try{s=yY(r,{withFileTypes:!0})}catch{continue}let i=s.filter(a=>(a.isFile()||a.isSymbolicLink())&&a.name.toLowerCase().endsWith(".md")).map(a=>a.name).sort((a,l)=>a.localeCompare(l));for(let a of i){if(o.length>=xY)break;let l=this.readOne(n,r,a);l&&(e.has(l.name)||(e.add(l.name),o.push(l)))}}return o}readOne(e,o,n){let r=`${e}/${n}`;if(No(r).kind!=="allow")return null;let s=gY(o,n);try{this.workspace.resolveInside(r);let i=vY(s);if(!i.isFile()||i.size>kY)return null;let a=bY(s,"utf8");return iu(n,a)}catch{return null}}}});import{join as SY}from"node:path";import{readdirSync as wY,readFileSync as EY,statSync as AY}from"node:fs";var jP,CY,DY,Bi,BS=p(()=>{"use strict";P();Ls();jP=[".claude/agents",".aluy/agents"],CY=64*1024,DY=256,Bi=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of jP){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=wY(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>(l.isFile()||l.isSymbolicLink())&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=DY)break;let c=this.readOne(r,s,l);if(c!==null){if(Xc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{profiles:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(No(r).kind!=="allow")return null;let s=SY(o,n);try{this.workspace.resolveInside(r);let i=AY(s);if(!i.isFile()||i.size>CY)return null;let a=EY(s,"utf8");return Jc(n,a,"project")}catch{return null}}}});var jS={};ht(jS,{UserWorkflowsLoader:()=>ir,WORKFLOWS_DIRNAME:()=>il});import{homedir as TY}from"node:os";import{join as US}from"node:path";import{readdirSync as _Y,readFileSync as RY,mkdirSync as OY,statSync as MY}from"node:fs";var LY,il,PY,FY,ir,gd=p(()=>{"use strict";P();LY=448,il="workflows",PY=64*1024,FY=256,ir=class{dir;constructor(e={}){let o=e.baseDir??US(TY(),".aluy");this.dir=US(o,il)}get workflowsDir(){return this.dir}ensureDir(){try{OY(this.dir,{mode:LY,recursive:!0})}catch{}}load(){let e;try{e=_Y(this.dir,{withFileTypes:!0})}catch{return{workflows:[],errors:[]}}let o=e.filter(i=>(i.isFile()||i.isSymbolicLink())&&i.name.toLowerCase().endsWith(".md")).map(i=>i.name).sort((i,a)=>i.localeCompare(a)),n=new Set,r=[],s=[];for(let i of o){if(r.length>=FY)break;let a=this.readOne(i);if(a!==null){if(ou(a)){s.push(a);continue}n.has(a.name)||(n.add(a.name),r.push(a))}}return{workflows:r,errors:s}}readOne(e){let o=US(this.dir,e);try{let n=MY(o);if(!n.isFile()||n.size>PY)return null;let r=RY(o,"utf8");return nu(e,r,"global")}catch{return null}}}});var qS={};ht(qS,{PROJECT_WORKFLOWS_DIRNAMES:()=>HS,ProjectWorkflowsLoader:()=>ar});import{join as IY}from"node:path";import{readdirSync as NY,readFileSync as $Y,statSync as BY}from"node:fs";var HS,UY,jY,ar,yd=p(()=>{"use strict";P();Ls();HS=[".claude/workflows",".aluy/workflows"],UY=64*1024,jY=256,ar=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of HS){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=NY(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>(l.isFile()||l.isSymbolicLink())&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=jY)break;let c=this.readOne(r,s,l);if(c!==null){if(ou(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{workflows:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(No(r).kind!=="allow")return null;let s=IY(o,n);try{this.workspace.resolveInside(r);let i=BY(s);if(!i.isFile()||i.size>UY)return null;let a=$Y(s,"utf8");return nu(n,a,"project")}catch{return null}}}});import{homedir as HY}from"node:os";import{join as WS}from"node:path";import{readdirSync as qY,readFileSync as WY,mkdirSync as GY,statSync as zY}from"node:fs";var KY,bd,vd,YY,VY,Zr,gh=p(()=>{"use strict";P();KY=448,bd="skills",vd="SKILL.md",YY=256*1024,VY=256,Zr=class{dir;constructor(e={}){let o=e.baseDir??WS(HY(),".aluy");this.dir=WS(o,bd)}get skillsDir(){return this.dir}ensureDir(){try{GY(this.dir,{mode:KY,recursive:!0})}catch{}}load(){let e;try{e=qY(this.dir,{withFileTypes:!0})}catch{return{skills:[],errors:[]}}let o=e.filter(i=>i.isDirectory()).map(i=>i.name).sort((i,a)=>i.localeCompare(a)),n=new Set,r=[],s=[];for(let i of o){if(r.length>=VY)break;let a=this.readOne(i);if(a!==null){if(Zc(a)){s.push(a);continue}n.has(a.name)||(n.add(a.name),r.push(a))}}return{skills:r,errors:s}}readOne(e){let o=WS(this.dir,e,vd);try{let n=zY(o);if(!n.isFile()||n.size>YY)return null;let r=WY(o,"utf8");return eu(e,r,"global")}catch{return null}}}});import{join as XY}from"node:path";import{readdirSync as JY,readFileSync as QY,statSync as ZY}from"node:fs";var HP,e5,t5,es,GS=p(()=>{"use strict";P();gh();HP=[".claude/skills",".aluy/skills"],e5=256*1024,t5=256,es=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of HP){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=JY(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>l.isDirectory()).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=t5)break;let c=this.readOne(r,s,l);if(c!==null){if(Zc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{skills:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}/${vd}`,s=XY(o,n,vd);try{this.workspace.resolveInside(r);let i=ZY(s);if(!i.isFile()||i.size>e5)return null;let a=QY(s,"utf8");return eu(n,a,"project")}catch{return null}}}});import{homedir as o5}from"node:os";import{join as zS}from"node:path";import{readFileSync as n5,statSync as r5}from"node:fs";var qP,s5,i5,kd,WP=p(()=>{"use strict";P();qP="hooks.json",s5="settings.json",i5=256*1024,kd=class{file;claudeProjectFile;constructor(e={}){let o=e.baseDir??zS(o5(),".aluy");this.file=zS(o,qP),e.workspaceRoot!==void 0&&(this.claudeProjectFile=zS(e.workspaceRoot,".claude",s5))}get configPath(){return this.file}load(){let e=Zv(this.readJson(this.file));if(this.claudeProjectFile===void 0)return e;let o=tk(this.readJson(this.claudeProjectFile));return ok(e,o)}readJson(e){let o;try{let n=r5(e);if(!n.isFile()||n.size>i5)return;o=n5(e,"utf8")}catch{return}try{return JSON.parse(o)}catch{return}}}});var xd=p(()=>{"use strict";Za();JL();ah();eP();rP();lP();uh();Fs();yP();Vx();iS();kP();xP();DS();_S();ko();CP();IP();LS();$P();UP();Gp();BS();gd();yd();gh();GS();WP()});function Sd(t,e){let o=t.toLowerCase(),n=e.toLowerCase();if(o==="")return{score:0,matched:[]};let r=[],s=0,i=0,a=-1,l=e.lastIndexOf("/")+1;for(let u=0;u<o.length;u++){let m=o[u],d=n.indexOf(m,s);if(d===-1)return null;r.push(d),a>=0&&d===a+1?i+=5:i+=1,d>=l&&(i+=2);let h=d>0?e[d-1]:"/";(h==="/"||h==="-"||h==="_"||h===".")&&(i+=3),a=d,s=d+1}let c=(r[r.length-1]??0)-(r[0]??0);return i-=c*.1,i-=e.length*.01,{score:i,matched:r}}function KS(t,e){let o=t.trim();if(o==="")return e.map(r=>({path:r,score:0,matched:[]}));let n=[];for(let r of e){let s=Sd(o,r);s&&n.push({path:r,score:s.score,matched:s.matched})}return n.sort((r,s)=>s.score-r.score||r.path.length-s.path.length||r.path.localeCompare(s.path)),n}var YS=p(()=>{"use strict"});function l5(t){return t.replace(/\\ /g," ")}function c5(t){return t.includes("/")?!0:/\.[A-Za-z0-9]+$/.test(t)}function u5(t){let e=t.replace(/\.+$/,"");return{token:e,trimmed:t.length-e.length}}function Ui(t){let e=[];for(let o of t.matchAll(a5)){let n=o[1],r=o[4],s=o[2]??o[3]??r,{token:i,trimmed:a}=r!==void 0?u5(s):{token:s,trimmed:0},l=l5(i);if(!c5(l))continue;let c=(o.index??0)+o[0].indexOf(n);e.push({path:l,start:c,end:c+n.length-a})}return e}function VS(t,e){if(e.length===0)return t;let o=t;for(let n of[...e].sort((r,s)=>s.start-r.start))o=o.slice(0,n.start)+o.slice(n.end);return o.replace(/\s{2,}/g," ").trim()}var a5,GP=p(()=>{"use strict";a5=/(?:^|\s)(@(?:"([^"]+)"|'([^']+)'|((?:[\p{L}\p{N}._/-]|\\ )+)))/gu});function yh(t){let e=t.lastIndexOf("@");if(e<0)return null;let o=e>0?t[e-1]:" ";if(o!==" "&&o!==`
|
|
500
500
|
`&&o!==" ")return null;let n=t.slice(e+1);return/\s/.test(n)?null:{at:e,query:n}}function XS(t){let e=yh(t);return e?t.slice(0,e.at).replace(/\s+$/,""):t}var zP=p(()=>{"use strict"});import{relative as d5,sep as m5,isAbsolute as f5}from"node:path";var KP,p5,wd,YP=p(()=>{"use strict";P();Ls();ih();KP=16e3,p5=5*1024*1024,wd=class{workspace;fs;maxChars;sniffBytes;constructor(e){this.workspace=e.workspace,this.fs=e.fs,this.maxChars=e.maxChars??KP,this.sniffBytes=e.sniffBytes??p5}async attach(e,o={}){let n=e,r;try{r=this.workspace.resolveInside(e)}catch{return{kind:"rejected",path:n,reason:"caminho fora do workspace \u2014 recusado (o @ s\xF3 acessa a raiz do projeto)."}}let s=d5(this.workspace.root,r).split(m5).join("/");if(s===""||s.startsWith("..")||f5(s))return{kind:"rejected",path:n,reason:"caminho inv\xE1lido p/ o workspace."};let i=No(s);if(i.kind==="deny")return{kind:"rejected",path:s,reason:`bloqueado: ${i.why} \u2014 esse tipo de arquivo nunca \xE9 anexado ao contexto.`};if(i.kind==="ask"&&o.confirmSensitive!==!0)return{kind:"rejected",path:s,reason:`sens\xEDvel: ${i.why} \u2014 confirme explicitamente p/ anexar (fora do picker por padr\xE3o).`};try{if(await XL(r,this.sniffBytes))return{kind:"rejected",path:s,reason:"arquivo bin\xE1rio \u2014 n\xE3o anexado (conte\xFAdo n\xE3o \xE9 texto; evita lixo no contexto)."}}catch{}let a;try{a=await this.fs.readFile(s)}catch{return{kind:"rejected",path:s,reason:"n\xE3o foi poss\xEDvel ler o arquivo (sumiu/ileg\xEDvel)."}}let l=!1;return a.length>this.maxChars&&(a=a.slice(0,this.maxChars)+`
|
|
@@ -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,`
|