@hiperplano/aluy-cli 1.0.0-rc.86 → 1.0.0-rc.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-bundle/bin/aluy.js +4 -4
- package/dist-bundle/index.js +128 -128
- package/package.json +1 -1
package/dist-bundle/bin/aluy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var c8=Object.create;var ay=Object.defineProperty;var u8=Object.getOwnPropertyDescriptor;var d8=Object.getOwnPropertyNames;var m8=Object.getPrototypeOf,f8=Object.prototype.hasOwnProperty;var p=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var p8=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}},ht=(t,e)=>{for(var o in e)ay(t,o,{get:e[o],enumerable:!0})},h8=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of d8(e))!f8.call(t,r)&&r!==o&&ay(t,r,{get:()=>e[r],enumerable:!(n=u8(e,r))||n.enumerable});return t};var g8=(t,e,o)=>(o=t!=null?c8(m8(t)):{},h8(e||!t||!t.__esModule?ay(o,"default",{value:t,enumerable:!0}):o,t));import{homedir as y8}from"node:os";import{join as b8}from"node:path";function Vl(t=y8()){return b8(t,".aluy")}var Tm=p(()=>{"use strict"});var Xl,fC=p(()=>{"use strict";Xl="1.0.0-rc.
|
|
2
|
+
var c8=Object.create;var ay=Object.defineProperty;var u8=Object.getOwnPropertyDescriptor;var d8=Object.getOwnPropertyNames;var m8=Object.getPrototypeOf,f8=Object.prototype.hasOwnProperty;var p=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var p8=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}},ht=(t,e)=>{for(var o in e)ay(t,o,{get:e[o],enumerable:!0})},h8=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of d8(e))!f8.call(t,r)&&r!==o&&ay(t,r,{get:()=>e[r],enumerable:!(n=u8(e,r))||n.enumerable});return t};var g8=(t,e,o)=>(o=t!=null?c8(m8(t)):{},h8(e||!t||!t.__esModule?ay(o,"default",{value:t,enumerable:!0}):o,t));import{homedir as y8}from"node:os";import{join as b8}from"node:path";function Vl(t=y8()){return b8(t,".aluy")}var Tm=p(()=>{"use strict"});var Xl,fC=p(()=>{"use strict";Xl="1.0.0-rc.88"});function _r(t,e){return t.decide(e)}var ai=p(()=>{"use strict"});var Gn,Rr,Or=p(()=>{"use strict";Gn="remember",Rr="recall"});var ly,v8,fa,cy=p(()=>{"use strict";ly=class{id;horizon;label;parentId;children;dependencies;pinned;closed;createdAt;lastAccessedAt;accessCount;context;constructor(e,o,n,r,s){this.id=e,this.horizon=o,this.label=n,this.parentId=r,this.children=new Set,this.dependencies=new Set,this.pinned=!1,this.closed=!1,this.createdAt=s,this.lastAccessedAt=s,this.accessCount=0,this.context=[]}touch(e){this.lastAccessedAt=e,this.accessCount+=1}snapshot(){return{id:this.id,horizon:this.horizon,label:this.label,parentId:this.parentId,children:[...this.children],dependencies:[...this.dependencies],pinned:this.pinned,closed:this.closed,createdAt:this.createdAt,lastAccessedAt:this.lastAccessedAt,accessCount:this.accessCount,contextSize:this.context.length}}},v8=200,fa=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??v8,this.now=e?.clock??Date.now}static boxId(e,o){return`${e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)}-${o.toString(36)}`}openBox(e,o,n,r){let s=this.nodes.get(e);if(s)return s.touch(this.now()),{box:s.snapshot(),created:!1};if(this.nodes.size>=this.maxBoxes&&(this.evictOne(),this.nodes.size>=this.maxBoxes))return null;let i=this.now(),a=new ly(e,o,n,r??null,i);if(r){let l=this.nodes.get(r);l&&l.children.add(e)}return this.nodes.set(e,a),{box:a.snapshot(),created:!0}}closeBox(e){let o=this.nodes.get(e);return o?(o.closed=!0,o.touch(this.now()),o.snapshot()):null}isClosed(e){let o=this.nodes.get(e);return o?o.closed:!1}reopenBox(e){let o=this.nodes.get(e);return o?(o.closed=!1,o.touch(this.now()),o.snapshot()):null}setHorizon(e,o){let n=this.nodes.get(e);return n?(n.horizon=o,n.touch(this.now()),n.snapshot()):null}setParent(e,o){let n=this.nodes.get(e);return n?n.parentId===o?n.snapshot():o!==null&&this.wouldCreateCycle(e,o)?null:(n.parentId&&this.nodes.get(n.parentId)?.children.delete(e),n.parentId=o,o&&this.nodes.get(o)?.children.add(e),n.touch(this.now()),n.snapshot()):null}wouldCreateCycle(e,o){let n=new Set,r=o;for(;r!==null;){if(r===e||n.has(r))return!0;n.add(r),r=this.nodes.get(r)?.parentId??null}return!1}getBox(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),o.snapshot()):null}listBoxes(e="lastAccessedAt"){let o=[...this.nodes.values()].map(n=>n.snapshot());switch(e){case"createdAt":return o.sort((n,r)=>n.createdAt-r.createdAt);case"accessCount":return o.sort((n,r)=>r.accessCount-n.accessCount);default:return o.sort((n,r)=>r.lastAccessedAt-n.lastAccessedAt)}}get size(){return this.nodes.size}addContext(e,o){let n=this.nodes.get(e);return n?(n.context.push({ts:this.now(),text:o}),n.touch(this.now()),n.snapshot()):null}getContext(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),[...o.context]):[]}getContextChain(e){let o=[],n=new Set,r=e;for(;r&&!n.has(r);){n.add(r);let s=this.nodes.get(r);if(!s)break;s.touch(this.now()),o.push({boxId:s.id,entries:[...s.context]}),r=s.parentId}return o}addDependency(e,o){let n=this.nodes.get(e);return!n||!this.nodes.has(o)||n.id===o?!1:(n.dependencies.add(o),n.touch(this.now()),!0)}getDependencies(e){let o=this.nodes.get(e);return o?[...o.dependencies]:[]}pinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!0,o.touch(this.now()),o.snapshot()):null}unpinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!1,o.touch(this.now()),o.snapshot()):null}evictOne(){let e=[];for(let n of this.nodes.values())n.horizon==="longo"||n.pinned||e.push(n);if(e.length===0)return null;e.sort((n,r)=>{let s=n.horizon==="curto"?0:1,i=r.horizon==="curto"?0:1;if(s!==i)return s-i;let a=n.closed?0:1,l=r.closed?0:1;return a!==l?a-l:n.lastAccessedAt!==r.lastAccessedAt?n.lastAccessedAt-r.lastAccessedAt:n.accessCount-r.accessCount});let o=e[0];return this.removeNode(o)}forceEvict(e){let o=this.nodes.get(e);return!o||o.horizon==="longo"||o.pinned?null:this.removeNode(o)}removeBox(e){let o=this.nodes.get(e);return o?this.removeNode(o):null}removeNode(e){if(e.parentId){let o=this.nodes.get(e.parentId);o&&o.children.delete(e.id)}return this.nodes.delete(e.id),e.snapshot()}}});function _m(t){let e=[];for(let o of t){e.push({step:o,depth:0});for(let n of o.substeps??[])e.push({step:n,depth:1})}return e}function gC(t,e){let o,n="pending",r;if(typeof t=="string")o=t;else if(t!==null&&typeof t=="object"){let i=t,a=i.title??i.step??i.text??i.name??i.content;if(typeof a=="string"&&(o=a),typeof i.status=="string"&&k8.has(i.status)&&(n=i.status),e){let l=i.substeps??i.subtasks??i.subpassos??i.children;if(Array.isArray(l)&&l.length>0){let c=[];for(let u of l){let m=gC(u,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return S8;let s=o.trim().slice(0,x8);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function w8(t){let e=t.steps??t.plan??t.todos??t.items;if(!Array.isArray(e))return{error:'update_plan: passe "steps" como uma LISTA de passos (string ou {title,status}).'};if(e.length===0)return{error:"update_plan: a lista de passos est\xE1 vazia."};let o=[];for(let i of e){let a=gC(i,!0);if(typeof a=="string")return{error:a};o.push(a)}let n=new Set,r=i=>{if(!n.has(i))return n.add(i),i;for(let a=2;;a++){let l=`${i} #${a}`;if(!n.has(l))return n.add(l),l}};for(let i=0;i<o.length;i++){let a=o[i],l=r(a.title),c=a.substeps?.map(u=>({...u,title:r(u.title)}));o[i]=c!==void 0?{...a,title:l,substeps:c}:{...a,title:l}}let s=_m(o).length;return s>pC?{error:`update_plan: no m\xE1ximo ${pC} passos (recebidos ${s}).`}:{steps:o}}function E8(t){let e=_m(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${yC[r.step.status]} ${r.step.title}`).join(`
|
|
3
3
|
`);return`plano (${o}/${e.length}):
|
|
4
4
|
${n}`}function C8(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function D8(t,e){let o=new Map;for(let i of e.listBoxes())o.set(i.label,i.id);let n=t.findIndex(i=>i.status==="in_progress"||(i.substeps??[]).some(a=>a.status==="in_progress")),r=(i,a,l)=>{let c=i.status==="in_progress"?"curto":l,u=o.get(i.title),m=u??fa.boxId(i.title,0);return u?(i.status!=="completed"&&e.isClosed(u)&&e.reopenBox(u),e.setHorizon(u,c),e.setParent(u,a)):e.openBox(m,c,i.title,a),i.status==="completed"&&!e.isClosed(m)&&e.closeBox(m),o.set(i.title,m),m};t.forEach((i,a)=>{let l=C8(a,n),c=r(i,null,l);for(let u of i.substeps??[])r(u,c,l)});let s=new Set;for(let i of t){s.add(i.title);for(let a of i.substeps??[])s.add(a.title)}for(let i of e.listBoxes())s.has(i.label)||e.removeBox(i.id)}function T8(t,e){if(!e)return E8(t);let o=new Map;for(let c of e.listBoxes())o.set(c.label,c);let n=new Map;for(let c of e.listBoxes())n.set(c.id,c);let r=new Map,s=(c,u=new Set)=>{let m=r.get(c);if(m!==void 0)return m;let d=n.get(c);if(!d||!d.parentId||u.has(c))return r.set(c,0),0;let h=s(d.parentId,new Set(u).add(c))+1;return r.set(c,h),h},i=_m(t),l=[`plano (${i.filter(c=>c.step.status==="completed").length}/${i.length}):`];for(let{step:c,depth:u}of i){let m=o.get(c.title),d=m?A8[m.horizon]:"",h=m?s(m.id):u,g=" ".repeat(h),b=yC[c.status];l.push(`${g}${d} ${b} ${c.title}`)}return l.join(`
|
|
5
5
|
`)}var Jl,k8,pC,x8,S8,yC,A8,hC,_8,bC,Rm=p(()=>{"use strict";cy();Jl="update_plan";k8=new Set(["pending","in_progress","completed"]),pC=30,x8=120,S8="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";yC={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};A8={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};hC=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),_8=Object.freeze({type:"object",properties:{steps:{type:"array",description:"A lista COMPLETA de passos do plano (re-emita TODOS a cada atualiza\xE7\xE3o \u2014 substitui o anterior).",items:{type:"object",properties:{title:{type:"string",description:"O passo, curto e no imperativo."},status:hC,substeps:{type:"array",description:"OPCIONAL: sub-passos que detalham este passo (1 n\xEDvel). Aparecem indentados sob o passo e seguem o foco dele. Use quando um passo tem a\xE7\xF5es menores distintas.",items:{type:"object",properties:{title:{type:"string",description:"O sub-passo, curto e no imperativo."},status:hC},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),bC={name:Jl,effect:"read",description:"Declara/atualiza um PLANO vis\xEDvel (checklist de passos). Use ao iniciar uma tarefa com V\xC1RIOS passos e a cada progresso: re-emita a lista TODA marcando o status de cada passo (pending/in_progress/completed). Mantenha 1 passo in_progress por vez. N\xE3o tem efeito no sistema \u2014 \xE9 s\xF3 o seu plano, para voc\xEA e para o usu\xE1rio acompanharem.",parameters:_8,async run(t,e){let o=w8(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&D8(o.steps,e.graph),e.plan&&e.plan.set(_m(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:T8(o.steps,e.graph)})}}});function vC(t){let e=t.question??t.prompt??t.text??t.message;if(typeof e!="string"||e.trim()==="")return{error:'perguntar: passe "question" (a pergunta em texto). Para escolha, passe tamb\xE9m "options".'};let o=e.trim().slice(0,2e3),n=t.header??t.title,r=typeof n=="string"&&n.trim()!==""?n.trim().slice(0,200):void 0,s=t.options??t.choices,i=Array.isArray(s)?O8(s):void 0;if(typeof i=="string")return{error:i};let a,l=t.kind??t.type;if(typeof l=="string"&&R8.has(l))a=l;else{if(typeof l=="string"&&l.trim()!=="")return{error:`perguntar: "kind" inv\xE1lido "${l}". Use "single", "multi" ou "text".`};a=i!==void 0&&i.length>0?"single":"text"}if((a==="single"||a==="multi")&&(i===void 0||i.length===0))return{error:`perguntar: kind "${a}" requer "options" (uma lista de ao menos 1 op\xE7\xE3o).`};let c=t.allowOther!==!1;return{spec:{kind:a,question:o,...r!==void 0?{header:r}:{},...a!=="text"&&i!==void 0?{options:i}:{},...a!=="text"?{allowOther:c}:{}}}}function O8(t){if(t.length===0)return'perguntar: a lista de "options" est\xE1 vazia.';if(t.length>12)return`perguntar: no m\xE1ximo 12 op\xE7\xF5es (recebidas ${t.length}).`;let e=[];for(let o of t){let n,r;if(typeof o=="string")n=o;else if(o!==null&&typeof o=="object"){let s=o,i=s.label??s.text??s.value??s.name??s.title;typeof i=="string"&&(n=i),typeof s.description=="string"&&s.description.trim()!==""&&(r=s.description.trim().slice(0,300))}if(n===void 0||n.trim()==="")return'perguntar: cada op\xE7\xE3o precisa de um "label" (texto) n\xE3o-vazio.';e.push({label:n.trim().slice(0,200),...r!==void 0?{description:r}:{}})}return e}function M8(t){switch(t.kind){case"choice":return t.label;case"choices":return t.labels.length===0?"(nenhuma)":t.labels.join(", ");case"text":{let e=t.text.split(`
|
|
@@ -21,7 +21,7 @@ ${e.text}`,display:o};case"unavailable":return{ok:!1,observation:`N\xE3o foi pos
|
|
|
21
21
|
|
|
22
22
|
`;return{ok:!0,observation:d+Y+M+w.join(`
|
|
23
23
|
|
|
24
|
-
`)+q}}}]}var ms,$y,_C,Hm=p(()=>{"use strict";My();Zl();Ny();ms="room_post",$y="room_read",_C=["ask","inform","result","ack"]});function qm(t,e,o){for(let n of t.rules)if(n.tool===e&&(n.match===void 0||MC(n.match,o)))return n}function MC(t,e){let o=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*");return new RegExp(`^${o}$`).test(e)}var By,Uy=p(()=>{"use strict";By={rules:[],defaults:{}}});function jy(t,e){let o,n;for(let r of t){let s=r(e);if(s){if(s.decision==="deny")return s;s.decision==="ask"&&!o&&(o=s),s.decision==="allow"&&!n&&(n=s)}}return o??n}var Hy=p(()=>{"use strict"});var ga,qy=p(()=>{"use strict";ga=class t{granted=new Set;static keyFor(e){let o=typeof e.input.command=="string"?e.input.command:typeof e.input.path=="string"?e.input.path:"";return`${e.name}\0${o}`}has(e){return this.granted.has(t.keyFor(e))}grant(e){this.granted.add(t.keyFor(e))}list(){return[...this.granted]}revoke(e){return this.granted.delete(e)}get size(){return this.granted.size}}});function Gy(t,e){return e==="ask"?!0:Wm.includes(t)}var Wm,Wy,zy=p(()=>{"use strict";Wm=["read_file","grep"],Wy=[{category:"always-ask:destructive",label:"destrutivo (rm -rf, git push --force, dd)",why:"apaga/sobrescreve dados de forma irreversivel \u2014 pergunta sempre, mostrando o efeito exato. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:network",label:"rede (curl | sh, wget, ssh, scp)",why:"sai da maquina / baixa-e-executa codigo remoto \u2014 o pior caso de injecao. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:escalation",label:"escalada (sudo, su, doas, setuid)",why:"eleva privilegio alem do usuario \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:package-exec",label:"exec de pacote (npm i, npx, pip install)",why:"instala/executa codigo de terceiros \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:config-startup",label:"config/startup (.bashrc, .git/hooks, package.json)",why:"muda o que roda no proximo start do shell/projeto \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:outside-workspace",label:"escrita FORA do workspace",why:"escreve fora do diretorio do projeto (home/system) \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:sensitive-read",label:"leitura de segredos (~/.ssh, ~/.aws, .env, *.key)",why:"le credenciais/chaves privadas \u2014 pergunta sempre (ou nega os mais criticos). So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:journal-read-deny",label:"leitura do journal ~/.aluy/ (undo)",why:"o journal guarda o conteudo-ANTES de cada edicao (possivel segredo): NEGADO por qualquer canal, ACIMA ate do --yolo. Nem o bypass total libera.",lock:"deny"},{category:"always-ask:aluy-config-write-deny",label:"escrita na config ~/.aluy/ (hooks.json, commands/)",why:"editar a config de HOOK e ato do USUARIO, nao do agente: senao um README malicioso plantaria um hook que roda sempre. NEGADO por qualquer canal, ACIMA ate do --yolo.",lock:"deny"}]});function Ky(t,e){return{kind:"command",tool:t,exact:`$ ${e}`}}function Gm(t,e,o){return{kind:"diff",tool:t,path:e,exact:o}}function ec(t,e,o){return{kind:"network",tool:t,exact:`$ ${e}`,target:o}}function fs(t,e){return{kind:"path",tool:t,path:e,exact:e}}function Yy(t){let e=t.match(/\bhttps?:\/\/[^\s"';|&]+/);if(e)return e[0];let o=t.match(/\b[\w.-]+@[\w.-]+:[^\s"';|&]*/);if(o)return o[0];let n=t.match(/\b[\w.-]+@[\w.-]+/);if(n)return n[0];let r=t.match(/\b(?:ssh|scp|sftp|telnet|nc|ncat)\s+(?:-\w+\s+)*([\w.-]+)/);if(r?.[1])return r[1]}var Vy=p(()=>{"use strict"});function tH(t,e){if(t===void 0)return e;if(e===void 0)return t;let o=new Set;for(let n of e)t.has(n)&&o.add(n);return o}function ut(t,e,o,n){return{decision:t,reason:e,category:o,effect:n}}function Xy(t){return t.map(e=>e.reason).join("; ")}function oH(t){return t[0].category}function nH(t){return t==="deny"?"policy:deny":"policy:allow"}function Jy(t){return t.name===ms?Ct(t,"code"):Ct(t,"command")||Ct(t,"path")||Ct(t,"pattern")||""}function Ct(t,e){let o=t.input[e];return typeof o=="string"?o:""}var LC,bo,ya=p(()=>{"use strict";ai();my();ky();li();Or();Hm();Rm();pa();Uy();Hy();qy();zy();Vy();LC=new Set(["read_file","grep","glob","change_dir",Rr,Jl,zn]);bo=class t{policy;hooks;grants;diffPreview;modeValue;safeDefaults=new Map;denySpawnAgent;toolScope;roomExemptTools;maxMemoryWrites;memoryWrites=0;constructor(e={}){this.policy=e.policy??By,this.hooks=e.hooks??[],this.grants=e.sessionGrants??new ga,this.modeValue=e.mode??(e.unsafe?"unsafe":"normal"),e.diffPreview&&(this.diffPreview=e.diffPreview),this.denySpawnAgent=e.denySpawnAgent??!1,e.toolScope!==void 0&&(this.toolScope=e.toolScope),e.roomExemptTools!==void 0&&(this.roomExemptTools=e.roomExemptTools),this.maxMemoryWrites=e.maxMemoryWritesPerSession??DC}forSubAgent(e,o){let n=tH(this.toolScope,e);return new t({policy:this.policy,hooks:this.hooks,mode:this.modeValue,sessionGrants:new ga,denySpawnAgent:!0,...n!==void 0?{toolScope:n}:{},...o!==void 0?{roomExemptTools:o}:{},...this.diffPreview?{diffPreview:this.diffPreview}:{}})}setMode(e){this.modeValue=e}get mode(){return this.modeValue}setUnsafe(e){this.modeValue=e?"unsafe":"normal"}get isUnsafe(){return this.modeValue==="unsafe"}get isPlan(){return this.modeValue==="plan"}get sessionGrants(){return this.grants}decide(e){let o=this.describeEffect(e);if(this.denySpawnAgent&&e.name==="spawn_agent")return ut("deny","profundidade de sub-agente \u22641 (E-A1): um sub-agente N\xC3O pode criar netos \u2014 spawn_agent negado na catraca","policy:deny",o);if(this.toolScope!==void 0&&!(this.roomExemptTools?.has(e.name)??!1)&&!this.toolScope.has(e.name))return ut("deny",`tool "${e.name}" fora do toolset declarado do agente (tools \u2286 pai, GS-MD1) \u2014 negada na catraca`,"policy:deny",o);let n=Im(e.name,e.input);if(e.name===Gn&&this.memoryWrites>=this.maxMemoryWrites)return ut("deny",`teto de grava\xE7\xF5es de mem\xF3ria por sess\xE3o atingido (${this.memoryWrites}/${this.maxMemoryWrites}) \u2014 lembran\xE7a aut\xF4noma barrada para evitar grava\xE7\xF5es em excesso. Use /memory para revisar/podar a mem\xF3ria.`,"memory-write",o);if(this.modeValue==="plan"&&!dy(e))return ut("deny",`modo Plan (read-only): "${e.name}" tem efeito (ou \xE9 rede) \u2014 s\xF3 leitura local \xE9 permitida`,"mode:plan-deny",o);if(this.modeValue==="unsafe")return ut("allow","PERMISS\xC3O COMPLETA de sess\xE3o (--yolo)","policy:allow",o);let r=n.find(l=>(l.category==="always-ask:journal-read-deny"||l.category==="always-ask:aluy-config-write-deny")&&l.deny);if(r)return ut("deny",Xy(n),r.category,o);if(e.name===Gn)return ut("allow","lembran\xE7a aut\xF4noma de mem\xF3ria (allow silencioso; recall = dado, CLI-SEC-15)","memory-write",o);if(e.name===ms){let l=Jy(e),c=qm(this.policy,e.name,l);return c&&c.decision!=="allow"?ut(c.decision,`pol\xEDtica do usu\xE1rio (room_post: ${c.match??"qualquer sala"})`,"agent-comms",o):ut("allow","comunica\xE7\xE3o entre agentes (membership = consentimento, \xA713.1; authz na mesh: writer\u2208writers)","agent-comms",o)}if(this.grants.has(e))return ut("allow","liberado nesta sess\xE3o (sempre-permitir)","policy:allow",o);let s=jy(this.hooks,e);if(s?.decision==="deny")return ut("deny",`hook: ${s.reason}`,"hook",o);if(n.length>0){let l=n.find(c=>c.deny);return l?ut("deny",Xy(n),l.category,o):ut("ask",Xy(n),oH(n),o)}if(s?.decision==="ask")return ut("ask",`hook: ${s.reason}`,"hook",o);if(s?.decision==="allow")return ut("allow",`hook: ${s.reason}`,"hook",o);let i=Jy(e),a=qm(this.policy,e.name,i);if(a){let l=a.match?`${a.match}`:"qualquer input";return ut(a.decision,`pol\xEDtica do usu\xE1rio (${e.name}: ${l})`,nH(a.decision),o)}return this.defaultFor(e,o)}grantSession(e){return Im(e.name,e.input).length>0?!1:(this.grants.grant(e),!0)}noteMemoryWrite(){this.memoryWrites+=1}get memoryWriteUsage(){return{used:this.memoryWrites,max:this.maxMemoryWrites}}setSafeToolDefault(e,o){return Gy(e,o)?(this.safeDefaults.set(e,o),!0):!1}effectiveSafeDefault(e){let o=this.safeDefaults.get(e);if(o)return o;let n=this.policy.defaults?.[e];return n==="allow"||n==="ask"?n:LC.has(e)?"allow":"ask"}defaultFor(e,o){let n=this.safeDefaults.get(e.name);if(n){let s=this.floor(e.name,n);return ut(s,`default ajustado no painel (${e.name})`,"default",o)}let r=this.policy.defaults?.[e.name];if(r){let s=this.floor(e.name,r);return ut(s,`default configurado (${e.name})`,"default",o)}return LC.has(e.name)?ut("allow",`leitura pura (${e.name}) \u2014 default allow`,"default",o):e.name==="run_command"?ut("ask","run_command = ask por padr\xE3o (CLI-SEC-3)","default",o):e.name==="edit_file"?ut("ask","edit_file = ask com diff (CLI-SEC-9)","default",o):e.name==="write_file"?ut("ask","write_file = ask com diff (CLI-SEC-9)","default",o):ut("ask",`sem regra expl\xEDcita p/ "${e.name}" \u2014 ask (deny-por-padr\xE3o)`,"default",o)}floor(e,o){return(e==="run_command"||e==="edit_file"||e==="write_file")&&o==="allow"?"ask":o}describeEffect(e){if(e.name==="run_command"){let o=Ct(e,"command"),n=Yy(o);return n?ec("run_command",o,n):Ky("run_command",o)}if(e.name==="edit_file"){let o=Ct(e,"path"),n=Ct(e,"old_string"),r=Ct(e,"new_string");return this.diffPreview?Gm("edit_file",o,this.diffPreview(o,r,n)):fs("edit_file",o)}if(e.name==="write_file"){let o=Ct(e,"path"),n=Ct(e,"content");return this.diffPreview?Gm("write_file",o,this.diffPreview(o,n)):fs("write_file",o)}if(e.name==="read_file"||e.name==="grep")return fs(e.name,Ct(e,"path"));if(e.name==="glob")return fs("glob",Ct(e,"path")||".");if(e.name===Gn){let o=Ct(e,"fact"),n=Ct(e,"scope")||"global";return{kind:"path",tool:Gn,exact:`[mem\xF3ria/${n}] ${o}`}}if(e.name==="web_fetch"){let o=Ct(e,"url");return ec("web_fetch",`web_fetch ${o}`,o)}if(e.name==="web_search"){let o=Ct(e,"query");return ec("web_search",`web_search ${o}`,"duckduckgo.com")}if(e.name===ms){let o=Ct(e,"code"),n=Ct(e,"to"),r=Ct(e,"kind");return{kind:"path",tool:ms,exact:`[sala ${o}] ${r||"msg"} \u2192 ${n||"?"}`}}return{kind:"command",tool:e.name,exact:`${e.name} ${Jy(e)}`.trim()}}}});function Zy(t){return t.root?{outcome:"refuse",reason:"root",message:"aluy: --yolo RECUSADO como ROOT (uid 0): YOLO + root = risco de destruir a m\xE1quina com uma inje\xE7\xE3o de prompt (sem barreira de privil\xE9gio). Rode como usu\xE1rio normal."}:{outcome:"allow",requiresConfirmation:t.tty,notice:PC,warning:Qy}}function eb(t,e){return t.outcome==="refuse"?{actorType:"cli",kind:"yolo-refused",mode:"yolo",at:e,reason:t.reason}:{actorType:"cli",kind:"yolo-entered",mode:"yolo",at:e}}var Qy,PC,FC=p(()=>{"use strict";Qy="\u26A0 MODO YOLO \u2014 PERMISS\xC3O COMPLETA NA M\xC1QUINA. A catraca de aprova\xE7\xE3o est\xE1 DESLIGADA, a cerca de workspace est\xE1 DERRUBADA (disco inteiro acess\xEDvel) e o anti-SSRF de rede interna est\xE1 suspenso. O agente roda QUALQUER comando, l\xEA/escreve QUALQUER arquivo e abre rede para QUALQUER destino SEM PERGUNTAR. Uma \xFAnica inje\xE7\xE3o de prompt (README/issue/p\xE1gina/sa\xEDda de comando) pode comprometer esta m\xE1quina. N\xE3o persiste entre sess\xF5es.",PC=`${Qy} Continuar? [s/N]`});var IC=p(()=>{"use strict";ai();ya();my();ky();Uy();Hy();qy();zy();Vy();FC()});var tb,ob=p(()=>{"use strict";tb=["assistant:session","llm:call"]});var En,zm,tc,ba,va,Km,ka,Mr,oc=p(()=>{"use strict";En=class extends Error{constructor(e){super(e),this.name=new.target.name}},zm=class extends En{constructor(){super("aprova\xE7\xE3o negada no navegador \u2014 login cancelado.")}},tc=class extends En{constructor(){super("o c\xF3digo expirou antes da aprova\xE7\xE3o. Rode `aluy login` de novo.")}},ba=class extends En{code;constructor(e,o){super(`falha no device-flow (${e})${o?`: ${o}`:""}`),this.code=e}},va=class extends En{constructor(){super("a sess\xE3o expirou ou foi revogada. Rode `aluy login` de novo.")}},Km=class extends En{constructor(){super("PAT inv\xE1lido: esperado o formato `pat_<id>_<segredo>`.")}},ka=class extends En{transient=!0;constructor(){super("n\xE3o consegui renovar a sess\xE3o agora (identity indispon\xEDvel) \u2014 tente de novo; sua credencial foi preservada.")}},Mr=class extends En{status;constructor(e,o){super(`identity respondeu ${e} em ${o}.`),this.status=e}}});function sH(t){return[t.slice(0,8),t.slice(8,12),t.slice(12,16),t.slice(16,20),t.slice(20,32)].join("-")}function iH(t){if(!t||!t.startsWith(NC))return null;let e=t.slice(NC.length),o=e.indexOf("_");if(o<=0)return null;let n=e.slice(0,o),r=e.slice(o+1);return!rH.test(n)||r.length===0?null:{lookupId:sH(n),secretLength:r.length}}function nc(t){return iH(t)!==null}var NC,rH,nb=p(()=>{"use strict";NC="pat_",rH=/^[0-9a-f]{32}$/});function aH(t){try{let e=t.replace(/-/g,"+").replace(/_/g,"/");return Buffer.from(e,"base64").toString("utf8")}catch{return null}}function $C(t){if(!t)return;let e=t.split(".");if(e.length!==3)return;let o=aH(e[1]??"");if(o!==null)try{let n=JSON.parse(o);return typeof n.sub=="string"&&n.sub.length>0?n.sub:void 0}catch{return}}var rb=p(()=>{"use strict"});function UC(t){return JSON.stringify(t)}function jC(t){try{let e=JSON.parse(t);return e.v!==1||e.kind!=="device"&&e.kind!=="pat"?null:e}catch{return null}}function Vm(t,e=Date.now){let o=t.kind==="pat"?"pat_\u2026":"jwt",n=t.kind==="device"?$C(t.access_token):void 0,r=t.kind==="device"&&t.expires_at!==void 0&&t.expires_at<=e();return{kind:t.kind,organization_id:t.organization_id,scopes:t.scopes,...t.expires_at!==void 0?{expires_at:t.expires_at}:{},expired:r,token_hint:o,...n!==void 0?{user:n}:{}}}var Ym,BC,sb=p(()=>{"use strict";rb();Ym="aluy-cli",BC="headless-credential"});var lH,Xm,ib=p(()=>{"use strict";oc();lH="urn:ietf:params:oauth:grant-type:device_code",Xm=class{baseUrl;clientId;doFetch;constructor(e){this.baseUrl=e.baseUrl.replace(/\/+$/,""),this.clientId=e.clientId,this.doFetch=e.fetch??globalThis.fetch}url(e){return`${this.baseUrl}${e}`}async readJson(e,o){try{return await e.json()}catch{throw new Mr(200,`${o} (corpo 2xx n\xE3o \xE9 JSON v\xE1lido)`)}}async deviceAuthorize(e){let o=await this.doFetch(this.url("/identity/device/authorize"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_id:this.clientId,organization_id:e.organizationId,scopes:e.scopes??[]})});if(!o.ok)throw new Mr(o.status,"device/authorize");return await this.readJson(o,"device/authorize")}async pollToken(e,o){let n=await this.doFetch(this.url("/identity/token"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({grant_type:lH,device_code:e,client_id:this.clientId}),...o?{signal:o}:{}});if(n.ok)return{status:"success",tokens:await this.readJson(n,"token")};let r;try{r=await n.json()}catch{r=void 0}let s=r?.error??"";switch(s){case"authorization_pending":return{status:"pending"};case"slow_down":return{status:"slow_down"};case"access_denied":return{status:"denied"};case"expired_token":return{status:"expired"};default:return{status:"error",code:s||`http_${n.status}`,...r?.error_description?{description:r.error_description}:{}}}}async refresh(e){let o=await this.doFetch(this.url("/identity/headless/refresh"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({refresh_token:e})});if(!o.ok)throw new Mr(o.status,"headless/refresh");return await this.readJson(o,"headless/refresh")}async revoke(e){let o=await this.doFetch(this.url("/identity/headless/revoke"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({refresh_token:e})});if(!(o.status===204||o.status===404||o.status===401)&&!o.ok)throw new Mr(o.status,"headless/revoke")}}});function mH(t){let e=typeof t=="number"?t:Number(t);return!Number.isFinite(e)||e<dH?uH:e}async function HC(t,e,o={}){let n=o.now??Date.now,r=o.sleep??fH,s=await t.deviceAuthorize({organizationId:e.organizationId,...e.scopes?{scopes:e.scopes}:{}});await e.onPrompt({userCode:s.user_code,verificationUri:s.verification_uri,verificationUriComplete:s.verification_uri_complete,expiresInSeconds:s.expires_in});let i=Number.isFinite(s.expires_in)?s.expires_in:900,a=n()+i*1e3,l=mH(s.interval);for(;;){if(e.signal?.aborted)throw new ba("cancelled","login cancelado pelo usu\xE1rio.");if(n()>=a)throw new tc;if(await r(l*1e3,e.signal),e.signal?.aborted)throw new ba("cancelled","login cancelado pelo usu\xE1rio.");let c=await t.pollToken(s.device_code,...e.signal?[e.signal]:[]);switch(c.status){case"success":return c.tokens;case"pending":continue;case"slow_down":l+=cH;continue;case"denied":throw new zm;case"expired":throw new tc;case"error":throw new ba(c.code,c.description)}}}var cH,uH,dH,fH,ab=p(()=>{"use strict";oc();cH=5,uH=5,dH=1;fH=(t,e)=>new Promise(o=>{if(e?.aborted)return o();let n=setTimeout(()=>{e?.removeEventListener("abort",r),o()},t),r=()=>{clearTimeout(n),o()};e?.addEventListener("abort",r,{once:!0})})});function pH(t){return t instanceof Mr&&(t.status===400||t.status===401||t.status===403)}function qC(t,e){return{kind:"device",access_token:t.access_token,refresh_token:t.refresh_token,organization_id:t.organization_id,scopes:t.scope.split(" ").filter(Boolean),expires_at:e()+t.expires_in*1e3,v:1}}var eo,WC=p(()=>{"use strict";sb();ab();oc();ib();nb();ob();eo=class{client;store;now;sleep;envToken;inFlightRefresh;constructor(e,o={}){this.client=new Xm(e),this.store=e.store,this.now=o.now??Date.now,this.sleep=o.sleep,this.envToken=o.envToken}async loginWithDeviceFlow(e){let o=await HC(this.client,{organizationId:e.organizationId,scopes:e.scopes??tb,onPrompt:e.onPrompt,...e.signal?{signal:e.signal}:{}},{now:this.now,...this.sleep?{sleep:this.sleep}:{}}),n=qC(o,this.now);return await this.store.set(n),Vm(n)}async loginWithPat(e,o){if(!nc(e))throw new Km;let n={kind:"pat",pat:e,organization_id:o,scopes:[...tb],v:1};return await this.store.set(n),Vm(n)}async whoami(){let e=await this.store.get();return e?Vm(e,this.now):null}async getAccessToken(e=3e4){let o=await this.store.get();if(!o){let r=this.envToken?.()?.trim();if(r&&nc(r))return r;throw new va}if(o.kind==="pat")return o.pat;if(o.access_token!==void 0&&o.expires_at!==void 0&&this.now()+e<o.expires_at)return o.access_token;if(!o.refresh_token)throw new va;return await this.refreshSingleFlight(o.refresh_token)}refreshSingleFlight(e){let o=this.inFlightRefresh;if(o)return o;let n=(async()=>{let s;try{s=await this.client.refresh(e)}catch(a){throw pH(a)?(await this.store.clear(),new va):new ka}let i=qC(s,this.now);return await this.store.set(i),i.access_token})();this.inFlightRefresh=n;let r=()=>{this.inFlightRefresh===n&&(this.inFlightRefresh=void 0)};return n.then(r,r),n}async logout(){let e=await this.store.get();if(!e)return{revoked:!1};let o=!1;if(e.kind==="device"&&e.refresh_token)try{await this.client.revoke(e.refresh_token),o=!0}catch{o=!1}return await this.store.clear(),{revoked:o}}}});function GC(t){let e="";for(let n of t)e+=String.fromCharCode(n);return(typeof btoa=="function"?btoa(e):hH(e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function hH(t){let e=globalThis;if(typeof e.Buffer<"u")return e.Buffer.from(t,"binary").toString("base64");throw new Error("base64 indispon\xEDvel no runtime")}function zC(t,e=32){let o=GC(t.randomBytes(e)),n=t.sha256(new TextEncoder().encode(o)),r=GC(n);return{codeVerifier:o,codeChallenge:r,method:"S256"}}function KC(t,e,o){let n=new URL(t.authorizeUrl);return n.searchParams.set("response_type","code"),n.searchParams.set("client_id",t.clientId),n.searchParams.set("redirect_uri",t.redirectUri),t.scopes.length>0&&n.searchParams.set("scope",t.scopes.join(" ")),n.searchParams.set("state",o),n.searchParams.set("code_challenge",e.codeChallenge),n.searchParams.set("code_challenge_method",e.method),n.toString()}async function YC(t){let e=new URLSearchParams({grant_type:"authorization_code",code:t.code,redirect_uri:t.config.redirectUri,client_id:t.config.clientId,code_verifier:t.codeVerifier});return await XC(t.config.tokenUrl,e,t.fetch,t.now??Date.now)}async function VC(t){let e=new URLSearchParams({grant_type:"refresh_token",refresh_token:t.refreshToken,client_id:t.config.clientId}),o=await XC(t.config.tokenUrl,e,t.fetch,t.now??Date.now);return o.refreshToken===void 0?{...o,refreshToken:t.refreshToken}:o}async function XC(t,e,o,n){let r=await o(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",accept:"application/json"},body:e.toString()});if(!r.ok){let i="";try{i=await r.text()}catch{i=""}throw new rc(`token endpoint respondeu ${r.status}`,r.status,yH(i))}let s=await r.json();return gH(s,n)}function gH(t,e){if(typeof t!="object"||t===null)throw new rc("resposta do token endpoint n\xE3o \xE9 objeto",0);let o=t,n=typeof o.access_token=="string"?o.access_token:void 0;if(n===void 0||n==="")throw new rc("resposta do token endpoint sem access_token",0);let r={accessToken:n};return typeof o.refresh_token=="string"&&o.refresh_token!==""&&(r.refreshToken=o.refresh_token),typeof o.expires_in=="number"&&Number.isFinite(o.expires_in)&&(r.expiresAt=e()+o.expires_in*1e3),typeof o.scope=="string"&&(r.scope=o.scope),r}function JC(t,e,o=6e4){return t.expiresAt===void 0?!1:t.expiresAt-e()<=o}function yH(t){return t.replace(/[A-Za-z0-9_-]{20,}/g,"***").slice(0,200)}var rc,QC=p(()=>{"use strict";rc=class extends Error{status;constructor(e,o,n){super(n!==void 0&&n!==""?`${e}: ${n}`:e),this.name="OAuthError",this.status=o}}});var ZC=p(()=>{"use strict";ob();oc();nb();rb();sb();ib();ab();WC();QC()});var eD=p(()=>{"use strict"});function bH(t){return t===429?!0:t>=500}function qo(t,e){let o=tD(e)?e:{},n=typeof o.code=="string"?o.code:kH(t),r={status:t,code:n};typeof o.title=="string"&&(r.title=o.title),typeof o.detail=="string"&&(r.detail=o.detail),typeof o.type=="string"&&(r.type=o.type),typeof o.instance=="string"&&(r.instance=o.instance);let s=vH(o.errors);return s!==void 0&&(r.errors=s),typeof o.retryable=="boolean"&&(r.retryable=o.retryable),typeof o.retry_after=="number"&&(r.retry_after=o.retry_after),r}function vH(t){if(!Array.isArray(t))return;let e=[];for(let o of t){if(!tD(o))continue;let n={};typeof o.field=="string"&&(n.field=o.field),typeof o.code=="string"&&(n.code=o.code),typeof o.detail=="string"&&(n.detail=o.detail),(n.field!==void 0||n.code!==void 0||n.detail!==void 0)&&e.push(n)}return e.length>0?e:void 0}function kH(t){switch(t){case 401:return"UNAUTHENTICATED";case 402:return"INSUFFICIENT_CREDIT";case 403:return"PERMISSION_DENIED";case 409:return"IDEMPOTENCY_KEY_REUSED";case 422:return"VALIDATION_FAILED";case 429:return"RATE_LIMITED";case 502:return"PROVIDER_ERROR";default:return`HTTP_${t}`}}function tD(t){return typeof t=="object"&&t!==null}var Ge,ze,nt,Wo=p(()=>{"use strict";Ge=class extends Error{status;code;retryable;retryAfter;problem;constructor(e){super(e.detail??e.title??`broker respondeu ${e.status} (${e.code})`),this.name="BrokerError",this.status=e.status,this.code=e.code,this.retryable=e.retryable??bH(e.status),this.retryAfter=e.retry_after,this.problem=e}get isAuth(){return this.status===401||this.code==="UNAUTHENTICATED"}get isQuota(){return this.status===429||this.status===402}get isToolsUnsupported(){return this.status===422&&this.code==="TOOLS_UNSUPPORTED"}};ze=class extends Error{constructor(e,o){super(e,o!==void 0?{cause:o}:void 0),this.name="BrokerTransportError"}},nt=class extends Error{constructor(){super("chamada de modelo cancelada."),this.name="ModelCallAbortedError"}}});var oD=p(()=>{"use strict"});function Jm(t){if(t==null)return;let e=t.trim().toLowerCase();if(e==="local")return"local";if(e==="broker")return"broker"}function Lr(t){return Jm(t.flag)??Jm(t.env)??Jm(t.config)??nD}var nD,rD=p(()=>{"use strict";nD="local"});function lb(){return{toolCalls:new Map,emittedToolCalls:!1}}var cb=p(()=>{"use strict"});function sc(t){let e=sD.get(t);return e===void 0&&(e={},sD.set(t,e)),e}function wH(t){let e=sc(t),o={request_id:e.requestId??"",tier:"local",provider:"anthropic"};return e.model!==void 0&&(o.model=e.model),e.inputTokens!==void 0&&(o.tokens_in=e.inputTokens),e.outputTokens!==void 0&&(o.tokens_out=e.outputTokens),o}function EH(t){if(t.emittedToolCalls||t.toolCalls.size===0)return[];t.emittedToolCalls=!0;let e=[];for(let o of t.toolCalls.values()){if(o.name==="")continue;let n=_H(o.argsText),r={id:o.id,name:o.name,input:n};e.push({type:"tool_call",call:r})}return e}function iD(t){let e=[];for(let o of t){if(o.role==="tool"){e.push({role:"user",content:[{type:"tool_result",tool_use_id:o.tool_call_id??"",content:o.content}]});continue}if(o.role==="assistant"&&o.tool_calls!==void 0&&o.tool_calls.length>0){let r=[];o.content!==""&&r.push({type:"text",text:o.content});for(let s of o.tool_calls)r.push({type:"tool_use",id:s.id,name:s.name,input:s.input??{}});e.push({role:"assistant",content:r});continue}let n=o.role==="system"?"user":o.role;e.push({role:n,content:o.content})}return e}function AH(t){return{name:t.function.name,description:t.function.description,input_schema:t.function.parameters}}function CH(t){return t==="none"?{type:"none"}:t==="required"?{type:"any"}:{type:"auto"}}function DH(t){return t==="tool_use"?"tool_calls":t==="end_turn"||t===void 0||t===null||t===""?"stop":t}function TH(t){let e=t!==void 0?rn(t,"type"):void 0,o=(t!==void 0?rn(t,"message"):void 0)??"provider error",n=e==="overloaded_error"?529:e==="rate_limit_error"?429:502;return new Ge({status:n,code:"PROVIDER_ERROR",detail:o})}function _H(t){if(t.trim()==="")return{};let e=aD(t);return An(e)?e:{}}function aD(t){try{return JSON.parse(t)}catch{return}}function An(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function rn(t,e){if(!An(t))return;let o=t[e];return typeof o=="string"?o:void 0}function Qm(t,e){if(!An(t))return;let o=t[e];return typeof o=="number"?o:void 0}var xH,SH,ic,sD,lD=p(()=>{"use strict";Wo();xH="2023-06-01",SH="oauth-2025-04-20",ic=class{kind="anthropic";defaultBaseUrl="";allowsBaseUrlOverride=!0;buildRequest(e){let{request:o,baseUrl:n,credential:r}=e,i=`${n.replace(/\/+$/,"")}/v1/messages`,a={model:o.model,max_tokens:o.maxTokens,messages:iD(o.messages),stream:!0};o.system!==void 0&&o.system!==""&&(a.system=o.system),o.temperature!==void 0&&(a.temperature=o.temperature),o.tools!==void 0&&o.tools.length>0&&(a.tools=o.tools.map(AH),a.tool_choice=CH(o.toolChoice));let l={"content-type":"application/json",accept:"text/event-stream","anthropic-version":xH};return r.kind==="oauth"?(l.authorization=`Bearer ${r.secret}`,l["anthropic-beta"]=SH):l["x-api-key"]=r.secret,{url:i,headers:l,body:JSON.stringify(a)}}mapSse(e,o,n){let r=aD(o);if(!An(r))return[];switch(e!==""?e:rn(r,"type")??""){case"message_start":{let i=[],a=An(r.message)?r.message:void 0,l=a!==void 0?rn(a,"id"):void 0;i.push({type:"start",request_id:l??""});let c=a!==void 0&&An(a.usage)?a.usage:void 0;if(c!==void 0){let m=Qm(c,"input_tokens");m!==void 0&&(sc(n).inputTokens=m)}let u=a!==void 0?rn(a,"model"):void 0;return u!==void 0&&(sc(n).model=u),l!==void 0&&(sc(n).requestId=l),i}case"content_block_start":{let i=An(r.content_block)?r.content_block:void 0,a=Qm(r,"index")??0;return i!==void 0&&rn(i,"type")==="tool_use"&&n.toolCalls.set(a,{id:rn(i,"id")??"",name:rn(i,"name")??"",argsText:""}),[]}case"content_block_delta":{let i=An(r.delta)?r.delta:void 0;if(i===void 0)return[];let a=rn(i,"type");if(a==="text_delta"){let l=rn(i,"text");return l!==void 0&&l!==""?[{type:"delta",content:l}]:[]}if(a==="input_json_delta"){let l=Qm(r,"index")??0,c=rn(i,"partial_json")??"",u=n.toolCalls.get(l);return u!==void 0&&(u.argsText+=c),[]}return[]}case"message_delta":{let i=[],a=An(r.delta)?r.delta:void 0;i.push(...EH(n));let l=An(r.usage)?r.usage:void 0;if(l!==void 0){let u=Qm(l,"output_tokens");u!==void 0&&(sc(n).outputTokens=u)}let c=a!==void 0?rn(a,"stop_reason"):void 0;return i.push({type:"usage",usage:wH(n)}),i.push({type:"done",finish_reason:DH(c)}),i}case"error":{let i=An(r.error)?r.error:void 0;throw TH(i)}default:return[]}}},sD=new WeakMap});function MH(t,e){for(let o of e){if(!Kn(o))continue;let n=typeof o.index=="number"?o.index:0,r=t.toolCalls.get(n)??{id:"",name:"",argsText:""},s=ps(o,"id");s!==void 0&&s!==""&&(r.id=s);let i=Kn(o.function)?o.function:void 0;if(i!==void 0){let a=ps(i,"name");a!==void 0&&a!==""&&(r.name=a);let l=ps(i,"arguments");l!==void 0&&(r.argsText+=l)}t.toolCalls.set(n,r)}}function LH(t){let e={role:t.role,content:t.content};return t.tool_calls!==void 0&&t.tool_calls.length>0&&(e.tool_calls=t.tool_calls.map(o=>({id:o.id,type:"function",function:{name:o.name,arguments:JSON.stringify(o.input??{})}}))),t.tool_call_id!==void 0&&(e.tool_call_id=t.tool_call_id),e}function PH(t){if(!Array.isArray(t.choices))return;let e=t.choices[0];return Kn(e)?e:void 0}function FH(t){let e=Zm(t,"code")??Zm(t,"status")??502,o=ps(t,"message")??"provider error";return new Ge({status:e,code:"PROVIDER_ERROR",detail:o})}function IH(t){if(t.trim()==="")return{};let e=cD(t);return Kn(e)?e:{}}function cD(t){try{return JSON.parse(t)}catch{return}}function Kn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ps(t,e){if(!Kn(t))return;let o=t[e];return typeof o=="string"?o:void 0}function Zm(t,e){if(!Kn(t))return;let o=t[e];return typeof o=="number"?o:void 0}var RH,OH,ac,uD=p(()=>{"use strict";Wo();RH="https://github.com/hiperplano/aluy-cli",OH="aluy-cli",ac=class{kind;defaultBaseUrl;allowsBaseUrlOverride=!0;provider;constructor(e){this.provider=e.provider,this.kind=e.provider,this.defaultBaseUrl=e.defaultBaseUrl}buildRequest(e){let{request:o,baseUrl:n,credential:r}=e,i=`${n.replace(/\/+$/,"")}/chat/completions`,a=[];o.system!==void 0&&o.system!==""&&a.push({role:"system",content:o.system});for(let u of o.messages)a.push(LH(u));let l={model:o.model,messages:a,max_tokens:o.maxTokens,stream:!0,stream_options:{include_usage:!0}};o.temperature!==void 0&&(l.temperature=o.temperature),o.reasoningEffort!==void 0&&o.reasoningEffort!==""&&(l.reasoning_effort=o.reasoningEffort),o.tools!==void 0&&o.tools.length>0&&(l.tools=o.tools,l.tool_choice=o.toolChoice??"auto");let c={"content-type":"application/json",accept:"text/event-stream"};return r.kind!=="none"&&r.secret!==""&&(c.authorization=`Bearer ${r.secret}`),this.provider==="openrouter"&&(c["http-referer"]=RH,c["x-title"]=OH),{url:i,headers:c,body:JSON.stringify(l)}}mapSse(e,o,n){let r=o.trim();if(r==="")return[];if(r==="[DONE]")return this.flush(n);let s=cD(r);if(!Kn(s))return[];if(Kn(s.error))throw FH(s.error);let i=[],a=PH(s);if(a!==void 0){let l=Kn(a.delta)?a.delta:void 0,c=l!==void 0?ps(l,"content"):void 0;c!==void 0&&c!==""&&i.push({type:"delta",content:c}),l!==void 0&&Array.isArray(l.tool_calls)&&MH(n,l.tool_calls);let u=ps(a,"finish_reason");u!=null&&u!==""&&(i.push(...this.flush(n)),i.push({type:"done",finish_reason:u}))}return Kn(s.usage)&&i.unshift({type:"usage",usage:this.toUsage(s.usage,s)}),i}flush(e){if(e.emittedToolCalls||e.toolCalls.size===0)return[];e.emittedToolCalls=!0;let o=[];for(let n of e.toolCalls.values()){if(n.name==="")continue;let r=IH(n.argsText),s={id:n.id,name:n.name,input:r};o.push({type:"tool_call",call:s})}return o}toUsage(e,o){let n={request_id:ps(o,"id")??"",tier:"local",provider:this.provider},r=ps(o,"model");r!==void 0&&(n.model=r);let s=Zm(e,"prompt_tokens");s!==void 0&&(n.tokens_in=s);let i=Zm(e,"completion_tokens");return i!==void 0&&(n.tokens_out=i),n}}});async function*lc(t){let e=new TextDecoder("utf-8"),o="";for await(let r of t){o+=typeof r=="string"?r:e.decode(r,{stream:!0}),o=o.replace(/\r\n/g,`
|
|
24
|
+
`)+q}}}]}var ms,$y,_C,Hm=p(()=>{"use strict";My();Zl();Ny();ms="room_post",$y="room_read",_C=["ask","inform","result","ack"]});function qm(t,e,o){for(let n of t.rules)if(n.tool===e&&(n.match===void 0||MC(n.match,o)))return n}function MC(t,e){let o=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*");return new RegExp(`^${o}$`).test(e)}var By,Uy=p(()=>{"use strict";By={rules:[],defaults:{}}});function jy(t,e){let o,n;for(let r of t){let s=r(e);if(s){if(s.decision==="deny")return s;s.decision==="ask"&&!o&&(o=s),s.decision==="allow"&&!n&&(n=s)}}return o??n}var Hy=p(()=>{"use strict"});var ga,qy=p(()=>{"use strict";ga=class t{granted=new Set;static keyFor(e){let o=typeof e.input.command=="string"?e.input.command:typeof e.input.path=="string"?e.input.path:"";return`${e.name==="write_file"||e.name==="edit_file"?"file_write":e.name}\0${o}`}has(e){return this.granted.has(t.keyFor(e))}grant(e){this.granted.add(t.keyFor(e))}list(){return[...this.granted]}revoke(e){return this.granted.delete(e)}get size(){return this.granted.size}}});function Gy(t,e){return e==="ask"?!0:Wm.includes(t)}var Wm,Wy,zy=p(()=>{"use strict";Wm=["read_file","grep"],Wy=[{category:"always-ask:destructive",label:"destrutivo (rm -rf, git push --force, dd)",why:"apaga/sobrescreve dados de forma irreversivel \u2014 pergunta sempre, mostrando o efeito exato. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:network",label:"rede (curl | sh, wget, ssh, scp)",why:"sai da maquina / baixa-e-executa codigo remoto \u2014 o pior caso de injecao. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:escalation",label:"escalada (sudo, su, doas, setuid)",why:"eleva privilegio alem do usuario \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:package-exec",label:"exec de pacote (npm i, npx, pip install)",why:"instala/executa codigo de terceiros \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:config-startup",label:"config/startup (.bashrc, .git/hooks, package.json)",why:"muda o que roda no proximo start do shell/projeto \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:outside-workspace",label:"escrita FORA do workspace",why:"escreve fora do diretorio do projeto (home/system) \u2014 pergunta sempre. So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:sensitive-read",label:"leitura de segredos (~/.ssh, ~/.aws, .env, *.key)",why:"le credenciais/chaves privadas \u2014 pergunta sempre (ou nega os mais criticos). So via --yolo (com o aviso vermelho).",lock:"always-ask"},{category:"always-ask:journal-read-deny",label:"leitura do journal ~/.aluy/ (undo)",why:"o journal guarda o conteudo-ANTES de cada edicao (possivel segredo): NEGADO por qualquer canal, ACIMA ate do --yolo. Nem o bypass total libera.",lock:"deny"},{category:"always-ask:aluy-config-write-deny",label:"escrita na config ~/.aluy/ (hooks.json, commands/)",why:"editar a config de HOOK e ato do USUARIO, nao do agente: senao um README malicioso plantaria um hook que roda sempre. NEGADO por qualquer canal, ACIMA ate do --yolo.",lock:"deny"}]});function Ky(t,e){return{kind:"command",tool:t,exact:`$ ${e}`}}function Gm(t,e,o){return{kind:"diff",tool:t,path:e,exact:o}}function ec(t,e,o){return{kind:"network",tool:t,exact:`$ ${e}`,target:o}}function fs(t,e){return{kind:"path",tool:t,path:e,exact:e}}function Yy(t){let e=t.match(/\bhttps?:\/\/[^\s"';|&]+/);if(e)return e[0];let o=t.match(/\b[\w.-]+@[\w.-]+:[^\s"';|&]*/);if(o)return o[0];let n=t.match(/\b[\w.-]+@[\w.-]+/);if(n)return n[0];let r=t.match(/\b(?:ssh|scp|sftp|telnet|nc|ncat)\s+(?:-\w+\s+)*([\w.-]+)/);if(r?.[1])return r[1]}var Vy=p(()=>{"use strict"});function tH(t,e){if(t===void 0)return e;if(e===void 0)return t;let o=new Set;for(let n of e)t.has(n)&&o.add(n);return o}function ut(t,e,o,n){return{decision:t,reason:e,category:o,effect:n}}function Xy(t){return t.map(e=>e.reason).join("; ")}function oH(t){return t[0].category}function nH(t){return t==="deny"?"policy:deny":"policy:allow"}function Jy(t){return t.name===ms?Ct(t,"code"):Ct(t,"command")||Ct(t,"path")||Ct(t,"pattern")||""}function Ct(t,e){let o=t.input[e];return typeof o=="string"?o:""}var LC,bo,ya=p(()=>{"use strict";ai();my();ky();li();Or();Hm();Rm();pa();Uy();Hy();qy();zy();Vy();LC=new Set(["read_file","grep","glob","change_dir",Rr,Jl,zn]);bo=class t{policy;hooks;grants;diffPreview;modeValue;safeDefaults=new Map;denySpawnAgent;toolScope;roomExemptTools;maxMemoryWrites;memoryWrites=0;constructor(e={}){this.policy=e.policy??By,this.hooks=e.hooks??[],this.grants=e.sessionGrants??new ga,this.modeValue=e.mode??(e.unsafe?"unsafe":"normal"),e.diffPreview&&(this.diffPreview=e.diffPreview),this.denySpawnAgent=e.denySpawnAgent??!1,e.toolScope!==void 0&&(this.toolScope=e.toolScope),e.roomExemptTools!==void 0&&(this.roomExemptTools=e.roomExemptTools),this.maxMemoryWrites=e.maxMemoryWritesPerSession??DC}forSubAgent(e,o){let n=tH(this.toolScope,e);return new t({policy:this.policy,hooks:this.hooks,mode:this.modeValue,sessionGrants:new ga,denySpawnAgent:!0,...n!==void 0?{toolScope:n}:{},...o!==void 0?{roomExemptTools:o}:{},...this.diffPreview?{diffPreview:this.diffPreview}:{}})}setMode(e){this.modeValue=e}get mode(){return this.modeValue}setUnsafe(e){this.modeValue=e?"unsafe":"normal"}get isUnsafe(){return this.modeValue==="unsafe"}get isPlan(){return this.modeValue==="plan"}get sessionGrants(){return this.grants}decide(e){let o=this.describeEffect(e);if(this.denySpawnAgent&&e.name==="spawn_agent")return ut("deny","profundidade de sub-agente \u22641 (E-A1): um sub-agente N\xC3O pode criar netos \u2014 spawn_agent negado na catraca","policy:deny",o);if(this.toolScope!==void 0&&!(this.roomExemptTools?.has(e.name)??!1)&&!this.toolScope.has(e.name))return ut("deny",`tool "${e.name}" fora do toolset declarado do agente (tools \u2286 pai, GS-MD1) \u2014 negada na catraca`,"policy:deny",o);let n=Im(e.name,e.input);if(e.name===Gn&&this.memoryWrites>=this.maxMemoryWrites)return ut("deny",`teto de grava\xE7\xF5es de mem\xF3ria por sess\xE3o atingido (${this.memoryWrites}/${this.maxMemoryWrites}) \u2014 lembran\xE7a aut\xF4noma barrada para evitar grava\xE7\xF5es em excesso. Use /memory para revisar/podar a mem\xF3ria.`,"memory-write",o);if(this.modeValue==="plan"&&!dy(e))return ut("deny",`modo Plan (read-only): "${e.name}" tem efeito (ou \xE9 rede) \u2014 s\xF3 leitura local \xE9 permitida`,"mode:plan-deny",o);if(this.modeValue==="unsafe")return ut("allow","PERMISS\xC3O COMPLETA de sess\xE3o (--yolo)","policy:allow",o);let r=n.find(l=>(l.category==="always-ask:journal-read-deny"||l.category==="always-ask:aluy-config-write-deny")&&l.deny);if(r)return ut("deny",Xy(n),r.category,o);if(e.name===Gn)return ut("allow","lembran\xE7a aut\xF4noma de mem\xF3ria (allow silencioso; recall = dado, CLI-SEC-15)","memory-write",o);if(e.name===ms){let l=Jy(e),c=qm(this.policy,e.name,l);return c&&c.decision!=="allow"?ut(c.decision,`pol\xEDtica do usu\xE1rio (room_post: ${c.match??"qualquer sala"})`,"agent-comms",o):ut("allow","comunica\xE7\xE3o entre agentes (membership = consentimento, \xA713.1; authz na mesh: writer\u2208writers)","agent-comms",o)}if(this.grants.has(e))return ut("allow","liberado nesta sess\xE3o (sempre-permitir)","policy:allow",o);let s=jy(this.hooks,e);if(s?.decision==="deny")return ut("deny",`hook: ${s.reason}`,"hook",o);if(n.length>0){let l=n.find(c=>c.deny);return l?ut("deny",Xy(n),l.category,o):ut("ask",Xy(n),oH(n),o)}if(s?.decision==="ask")return ut("ask",`hook: ${s.reason}`,"hook",o);if(s?.decision==="allow")return ut("allow",`hook: ${s.reason}`,"hook",o);let i=Jy(e),a=qm(this.policy,e.name,i);if(a){let l=a.match?`${a.match}`:"qualquer input";return ut(a.decision,`pol\xEDtica do usu\xE1rio (${e.name}: ${l})`,nH(a.decision),o)}return this.defaultFor(e,o)}grantSession(e){return Im(e.name,e.input).length>0?!1:(this.grants.grant(e),!0)}noteMemoryWrite(){this.memoryWrites+=1}get memoryWriteUsage(){return{used:this.memoryWrites,max:this.maxMemoryWrites}}setSafeToolDefault(e,o){return Gy(e,o)?(this.safeDefaults.set(e,o),!0):!1}effectiveSafeDefault(e){let o=this.safeDefaults.get(e);if(o)return o;let n=this.policy.defaults?.[e];return n==="allow"||n==="ask"?n:LC.has(e)?"allow":"ask"}defaultFor(e,o){let n=this.safeDefaults.get(e.name);if(n){let s=this.floor(e.name,n);return ut(s,`default ajustado no painel (${e.name})`,"default",o)}let r=this.policy.defaults?.[e.name];if(r){let s=this.floor(e.name,r);return ut(s,`default configurado (${e.name})`,"default",o)}return LC.has(e.name)?ut("allow",`leitura pura (${e.name}) \u2014 default allow`,"default",o):e.name==="run_command"?ut("ask","run_command = ask por padr\xE3o (CLI-SEC-3)","default",o):e.name==="edit_file"?ut("ask","edit_file = ask com diff (CLI-SEC-9)","default",o):e.name==="write_file"?ut("ask","write_file = ask com diff (CLI-SEC-9)","default",o):ut("ask",`sem regra expl\xEDcita p/ "${e.name}" \u2014 ask (deny-por-padr\xE3o)`,"default",o)}floor(e,o){return(e==="run_command"||e==="edit_file"||e==="write_file")&&o==="allow"?"ask":o}describeEffect(e){if(e.name==="run_command"){let o=Ct(e,"command"),n=Yy(o);return n?ec("run_command",o,n):Ky("run_command",o)}if(e.name==="edit_file"){let o=Ct(e,"path"),n=Ct(e,"old_string"),r=Ct(e,"new_string");return this.diffPreview?Gm("edit_file",o,this.diffPreview(o,r,n)):fs("edit_file",o)}if(e.name==="write_file"){let o=Ct(e,"path"),n=Ct(e,"content");return this.diffPreview?Gm("write_file",o,this.diffPreview(o,n)):fs("write_file",o)}if(e.name==="read_file"||e.name==="grep")return fs(e.name,Ct(e,"path"));if(e.name==="glob")return fs("glob",Ct(e,"path")||".");if(e.name===Gn){let o=Ct(e,"fact"),n=Ct(e,"scope")||"global";return{kind:"path",tool:Gn,exact:`[mem\xF3ria/${n}] ${o}`}}if(e.name==="web_fetch"){let o=Ct(e,"url");return ec("web_fetch",`web_fetch ${o}`,o)}if(e.name==="web_search"){let o=Ct(e,"query");return ec("web_search",`web_search ${o}`,"duckduckgo.com")}if(e.name===ms){let o=Ct(e,"code"),n=Ct(e,"to"),r=Ct(e,"kind");return{kind:"path",tool:ms,exact:`[sala ${o}] ${r||"msg"} \u2192 ${n||"?"}`}}return{kind:"command",tool:e.name,exact:`${e.name} ${Jy(e)}`.trim()}}}});function Zy(t){return t.root?{outcome:"refuse",reason:"root",message:"aluy: --yolo RECUSADO como ROOT (uid 0): YOLO + root = risco de destruir a m\xE1quina com uma inje\xE7\xE3o de prompt (sem barreira de privil\xE9gio). Rode como usu\xE1rio normal."}:{outcome:"allow",requiresConfirmation:t.tty,notice:PC,warning:Qy}}function eb(t,e){return t.outcome==="refuse"?{actorType:"cli",kind:"yolo-refused",mode:"yolo",at:e,reason:t.reason}:{actorType:"cli",kind:"yolo-entered",mode:"yolo",at:e}}var Qy,PC,FC=p(()=>{"use strict";Qy="\u26A0 MODO YOLO \u2014 PERMISS\xC3O COMPLETA NA M\xC1QUINA. A catraca de aprova\xE7\xE3o est\xE1 DESLIGADA, a cerca de workspace est\xE1 DERRUBADA (disco inteiro acess\xEDvel) e o anti-SSRF de rede interna est\xE1 suspenso. O agente roda QUALQUER comando, l\xEA/escreve QUALQUER arquivo e abre rede para QUALQUER destino SEM PERGUNTAR. Uma \xFAnica inje\xE7\xE3o de prompt (README/issue/p\xE1gina/sa\xEDda de comando) pode comprometer esta m\xE1quina. N\xE3o persiste entre sess\xF5es.",PC=`${Qy} Continuar? [s/N]`});var IC=p(()=>{"use strict";ai();ya();my();ky();Uy();Hy();qy();zy();Vy();FC()});var tb,ob=p(()=>{"use strict";tb=["assistant:session","llm:call"]});var En,zm,tc,ba,va,Km,ka,Mr,oc=p(()=>{"use strict";En=class extends Error{constructor(e){super(e),this.name=new.target.name}},zm=class extends En{constructor(){super("aprova\xE7\xE3o negada no navegador \u2014 login cancelado.")}},tc=class extends En{constructor(){super("o c\xF3digo expirou antes da aprova\xE7\xE3o. Rode `aluy login` de novo.")}},ba=class extends En{code;constructor(e,o){super(`falha no device-flow (${e})${o?`: ${o}`:""}`),this.code=e}},va=class extends En{constructor(){super("a sess\xE3o expirou ou foi revogada. Rode `aluy login` de novo.")}},Km=class extends En{constructor(){super("PAT inv\xE1lido: esperado o formato `pat_<id>_<segredo>`.")}},ka=class extends En{transient=!0;constructor(){super("n\xE3o consegui renovar a sess\xE3o agora (identity indispon\xEDvel) \u2014 tente de novo; sua credencial foi preservada.")}},Mr=class extends En{status;constructor(e,o){super(`identity respondeu ${e} em ${o}.`),this.status=e}}});function sH(t){return[t.slice(0,8),t.slice(8,12),t.slice(12,16),t.slice(16,20),t.slice(20,32)].join("-")}function iH(t){if(!t||!t.startsWith(NC))return null;let e=t.slice(NC.length),o=e.indexOf("_");if(o<=0)return null;let n=e.slice(0,o),r=e.slice(o+1);return!rH.test(n)||r.length===0?null:{lookupId:sH(n),secretLength:r.length}}function nc(t){return iH(t)!==null}var NC,rH,nb=p(()=>{"use strict";NC="pat_",rH=/^[0-9a-f]{32}$/});function aH(t){try{let e=t.replace(/-/g,"+").replace(/_/g,"/");return Buffer.from(e,"base64").toString("utf8")}catch{return null}}function $C(t){if(!t)return;let e=t.split(".");if(e.length!==3)return;let o=aH(e[1]??"");if(o!==null)try{let n=JSON.parse(o);return typeof n.sub=="string"&&n.sub.length>0?n.sub:void 0}catch{return}}var rb=p(()=>{"use strict"});function UC(t){return JSON.stringify(t)}function jC(t){try{let e=JSON.parse(t);return e.v!==1||e.kind!=="device"&&e.kind!=="pat"?null:e}catch{return null}}function Vm(t,e=Date.now){let o=t.kind==="pat"?"pat_\u2026":"jwt",n=t.kind==="device"?$C(t.access_token):void 0,r=t.kind==="device"&&t.expires_at!==void 0&&t.expires_at<=e();return{kind:t.kind,organization_id:t.organization_id,scopes:t.scopes,...t.expires_at!==void 0?{expires_at:t.expires_at}:{},expired:r,token_hint:o,...n!==void 0?{user:n}:{}}}var Ym,BC,sb=p(()=>{"use strict";rb();Ym="aluy-cli",BC="headless-credential"});var lH,Xm,ib=p(()=>{"use strict";oc();lH="urn:ietf:params:oauth:grant-type:device_code",Xm=class{baseUrl;clientId;doFetch;constructor(e){this.baseUrl=e.baseUrl.replace(/\/+$/,""),this.clientId=e.clientId,this.doFetch=e.fetch??globalThis.fetch}url(e){return`${this.baseUrl}${e}`}async readJson(e,o){try{return await e.json()}catch{throw new Mr(200,`${o} (corpo 2xx n\xE3o \xE9 JSON v\xE1lido)`)}}async deviceAuthorize(e){let o=await this.doFetch(this.url("/identity/device/authorize"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_id:this.clientId,organization_id:e.organizationId,scopes:e.scopes??[]})});if(!o.ok)throw new Mr(o.status,"device/authorize");return await this.readJson(o,"device/authorize")}async pollToken(e,o){let n=await this.doFetch(this.url("/identity/token"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({grant_type:lH,device_code:e,client_id:this.clientId}),...o?{signal:o}:{}});if(n.ok)return{status:"success",tokens:await this.readJson(n,"token")};let r;try{r=await n.json()}catch{r=void 0}let s=r?.error??"";switch(s){case"authorization_pending":return{status:"pending"};case"slow_down":return{status:"slow_down"};case"access_denied":return{status:"denied"};case"expired_token":return{status:"expired"};default:return{status:"error",code:s||`http_${n.status}`,...r?.error_description?{description:r.error_description}:{}}}}async refresh(e){let o=await this.doFetch(this.url("/identity/headless/refresh"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({refresh_token:e})});if(!o.ok)throw new Mr(o.status,"headless/refresh");return await this.readJson(o,"headless/refresh")}async revoke(e){let o=await this.doFetch(this.url("/identity/headless/revoke"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({refresh_token:e})});if(!(o.status===204||o.status===404||o.status===401)&&!o.ok)throw new Mr(o.status,"headless/revoke")}}});function mH(t){let e=typeof t=="number"?t:Number(t);return!Number.isFinite(e)||e<dH?uH:e}async function HC(t,e,o={}){let n=o.now??Date.now,r=o.sleep??fH,s=await t.deviceAuthorize({organizationId:e.organizationId,...e.scopes?{scopes:e.scopes}:{}});await e.onPrompt({userCode:s.user_code,verificationUri:s.verification_uri,verificationUriComplete:s.verification_uri_complete,expiresInSeconds:s.expires_in});let i=Number.isFinite(s.expires_in)?s.expires_in:900,a=n()+i*1e3,l=mH(s.interval);for(;;){if(e.signal?.aborted)throw new ba("cancelled","login cancelado pelo usu\xE1rio.");if(n()>=a)throw new tc;if(await r(l*1e3,e.signal),e.signal?.aborted)throw new ba("cancelled","login cancelado pelo usu\xE1rio.");let c=await t.pollToken(s.device_code,...e.signal?[e.signal]:[]);switch(c.status){case"success":return c.tokens;case"pending":continue;case"slow_down":l+=cH;continue;case"denied":throw new zm;case"expired":throw new tc;case"error":throw new ba(c.code,c.description)}}}var cH,uH,dH,fH,ab=p(()=>{"use strict";oc();cH=5,uH=5,dH=1;fH=(t,e)=>new Promise(o=>{if(e?.aborted)return o();let n=setTimeout(()=>{e?.removeEventListener("abort",r),o()},t),r=()=>{clearTimeout(n),o()};e?.addEventListener("abort",r,{once:!0})})});function pH(t){return t instanceof Mr&&(t.status===400||t.status===401||t.status===403)}function qC(t,e){return{kind:"device",access_token:t.access_token,refresh_token:t.refresh_token,organization_id:t.organization_id,scopes:t.scope.split(" ").filter(Boolean),expires_at:e()+t.expires_in*1e3,v:1}}var eo,WC=p(()=>{"use strict";sb();ab();oc();ib();nb();ob();eo=class{client;store;now;sleep;envToken;inFlightRefresh;constructor(e,o={}){this.client=new Xm(e),this.store=e.store,this.now=o.now??Date.now,this.sleep=o.sleep,this.envToken=o.envToken}async loginWithDeviceFlow(e){let o=await HC(this.client,{organizationId:e.organizationId,scopes:e.scopes??tb,onPrompt:e.onPrompt,...e.signal?{signal:e.signal}:{}},{now:this.now,...this.sleep?{sleep:this.sleep}:{}}),n=qC(o,this.now);return await this.store.set(n),Vm(n)}async loginWithPat(e,o){if(!nc(e))throw new Km;let n={kind:"pat",pat:e,organization_id:o,scopes:[...tb],v:1};return await this.store.set(n),Vm(n)}async whoami(){let e=await this.store.get();return e?Vm(e,this.now):null}async getAccessToken(e=3e4){let o=await this.store.get();if(!o){let r=this.envToken?.()?.trim();if(r&&nc(r))return r;throw new va}if(o.kind==="pat")return o.pat;if(o.access_token!==void 0&&o.expires_at!==void 0&&this.now()+e<o.expires_at)return o.access_token;if(!o.refresh_token)throw new va;return await this.refreshSingleFlight(o.refresh_token)}refreshSingleFlight(e){let o=this.inFlightRefresh;if(o)return o;let n=(async()=>{let s;try{s=await this.client.refresh(e)}catch(a){throw pH(a)?(await this.store.clear(),new va):new ka}let i=qC(s,this.now);return await this.store.set(i),i.access_token})();this.inFlightRefresh=n;let r=()=>{this.inFlightRefresh===n&&(this.inFlightRefresh=void 0)};return n.then(r,r),n}async logout(){let e=await this.store.get();if(!e)return{revoked:!1};let o=!1;if(e.kind==="device"&&e.refresh_token)try{await this.client.revoke(e.refresh_token),o=!0}catch{o=!1}return await this.store.clear(),{revoked:o}}}});function GC(t){let e="";for(let n of t)e+=String.fromCharCode(n);return(typeof btoa=="function"?btoa(e):hH(e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function hH(t){let e=globalThis;if(typeof e.Buffer<"u")return e.Buffer.from(t,"binary").toString("base64");throw new Error("base64 indispon\xEDvel no runtime")}function zC(t,e=32){let o=GC(t.randomBytes(e)),n=t.sha256(new TextEncoder().encode(o)),r=GC(n);return{codeVerifier:o,codeChallenge:r,method:"S256"}}function KC(t,e,o){let n=new URL(t.authorizeUrl);return n.searchParams.set("response_type","code"),n.searchParams.set("client_id",t.clientId),n.searchParams.set("redirect_uri",t.redirectUri),t.scopes.length>0&&n.searchParams.set("scope",t.scopes.join(" ")),n.searchParams.set("state",o),n.searchParams.set("code_challenge",e.codeChallenge),n.searchParams.set("code_challenge_method",e.method),n.toString()}async function YC(t){let e=new URLSearchParams({grant_type:"authorization_code",code:t.code,redirect_uri:t.config.redirectUri,client_id:t.config.clientId,code_verifier:t.codeVerifier});return await XC(t.config.tokenUrl,e,t.fetch,t.now??Date.now)}async function VC(t){let e=new URLSearchParams({grant_type:"refresh_token",refresh_token:t.refreshToken,client_id:t.config.clientId}),o=await XC(t.config.tokenUrl,e,t.fetch,t.now??Date.now);return o.refreshToken===void 0?{...o,refreshToken:t.refreshToken}:o}async function XC(t,e,o,n){let r=await o(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",accept:"application/json"},body:e.toString()});if(!r.ok){let i="";try{i=await r.text()}catch{i=""}throw new rc(`token endpoint respondeu ${r.status}`,r.status,yH(i))}let s=await r.json();return gH(s,n)}function gH(t,e){if(typeof t!="object"||t===null)throw new rc("resposta do token endpoint n\xE3o \xE9 objeto",0);let o=t,n=typeof o.access_token=="string"?o.access_token:void 0;if(n===void 0||n==="")throw new rc("resposta do token endpoint sem access_token",0);let r={accessToken:n};return typeof o.refresh_token=="string"&&o.refresh_token!==""&&(r.refreshToken=o.refresh_token),typeof o.expires_in=="number"&&Number.isFinite(o.expires_in)&&(r.expiresAt=e()+o.expires_in*1e3),typeof o.scope=="string"&&(r.scope=o.scope),r}function JC(t,e,o=6e4){return t.expiresAt===void 0?!1:t.expiresAt-e()<=o}function yH(t){return t.replace(/[A-Za-z0-9_-]{20,}/g,"***").slice(0,200)}var rc,QC=p(()=>{"use strict";rc=class extends Error{status;constructor(e,o,n){super(n!==void 0&&n!==""?`${e}: ${n}`:e),this.name="OAuthError",this.status=o}}});var ZC=p(()=>{"use strict";ob();oc();nb();rb();sb();ib();ab();WC();QC()});var eD=p(()=>{"use strict"});function bH(t){return t===429?!0:t>=500}function qo(t,e){let o=tD(e)?e:{},n=typeof o.code=="string"?o.code:kH(t),r={status:t,code:n};typeof o.title=="string"&&(r.title=o.title),typeof o.detail=="string"&&(r.detail=o.detail),typeof o.type=="string"&&(r.type=o.type),typeof o.instance=="string"&&(r.instance=o.instance);let s=vH(o.errors);return s!==void 0&&(r.errors=s),typeof o.retryable=="boolean"&&(r.retryable=o.retryable),typeof o.retry_after=="number"&&(r.retry_after=o.retry_after),r}function vH(t){if(!Array.isArray(t))return;let e=[];for(let o of t){if(!tD(o))continue;let n={};typeof o.field=="string"&&(n.field=o.field),typeof o.code=="string"&&(n.code=o.code),typeof o.detail=="string"&&(n.detail=o.detail),(n.field!==void 0||n.code!==void 0||n.detail!==void 0)&&e.push(n)}return e.length>0?e:void 0}function kH(t){switch(t){case 401:return"UNAUTHENTICATED";case 402:return"INSUFFICIENT_CREDIT";case 403:return"PERMISSION_DENIED";case 409:return"IDEMPOTENCY_KEY_REUSED";case 422:return"VALIDATION_FAILED";case 429:return"RATE_LIMITED";case 502:return"PROVIDER_ERROR";default:return`HTTP_${t}`}}function tD(t){return typeof t=="object"&&t!==null}var Ge,ze,nt,Wo=p(()=>{"use strict";Ge=class extends Error{status;code;retryable;retryAfter;problem;constructor(e){super(e.detail??e.title??`broker respondeu ${e.status} (${e.code})`),this.name="BrokerError",this.status=e.status,this.code=e.code,this.retryable=e.retryable??bH(e.status),this.retryAfter=e.retry_after,this.problem=e}get isAuth(){return this.status===401||this.code==="UNAUTHENTICATED"}get isQuota(){return this.status===429||this.status===402}get isToolsUnsupported(){return this.status===422&&this.code==="TOOLS_UNSUPPORTED"}};ze=class extends Error{constructor(e,o){super(e,o!==void 0?{cause:o}:void 0),this.name="BrokerTransportError"}},nt=class extends Error{constructor(){super("chamada de modelo cancelada."),this.name="ModelCallAbortedError"}}});var oD=p(()=>{"use strict"});function Jm(t){if(t==null)return;let e=t.trim().toLowerCase();if(e==="local")return"local";if(e==="broker")return"broker"}function Lr(t){return Jm(t.flag)??Jm(t.env)??Jm(t.config)??nD}var nD,rD=p(()=>{"use strict";nD="local"});function lb(){return{toolCalls:new Map,emittedToolCalls:!1}}var cb=p(()=>{"use strict"});function sc(t){let e=sD.get(t);return e===void 0&&(e={},sD.set(t,e)),e}function wH(t){let e=sc(t),o={request_id:e.requestId??"",tier:"local",provider:"anthropic"};return e.model!==void 0&&(o.model=e.model),e.inputTokens!==void 0&&(o.tokens_in=e.inputTokens),e.outputTokens!==void 0&&(o.tokens_out=e.outputTokens),o}function EH(t){if(t.emittedToolCalls||t.toolCalls.size===0)return[];t.emittedToolCalls=!0;let e=[];for(let o of t.toolCalls.values()){if(o.name==="")continue;let n=_H(o.argsText),r={id:o.id,name:o.name,input:n};e.push({type:"tool_call",call:r})}return e}function iD(t){let e=[];for(let o of t){if(o.role==="tool"){e.push({role:"user",content:[{type:"tool_result",tool_use_id:o.tool_call_id??"",content:o.content}]});continue}if(o.role==="assistant"&&o.tool_calls!==void 0&&o.tool_calls.length>0){let r=[];o.content!==""&&r.push({type:"text",text:o.content});for(let s of o.tool_calls)r.push({type:"tool_use",id:s.id,name:s.name,input:s.input??{}});e.push({role:"assistant",content:r});continue}let n=o.role==="system"?"user":o.role;e.push({role:n,content:o.content})}return e}function AH(t){return{name:t.function.name,description:t.function.description,input_schema:t.function.parameters}}function CH(t){return t==="none"?{type:"none"}:t==="required"?{type:"any"}:{type:"auto"}}function DH(t){return t==="tool_use"?"tool_calls":t==="end_turn"||t===void 0||t===null||t===""?"stop":t}function TH(t){let e=t!==void 0?rn(t,"type"):void 0,o=(t!==void 0?rn(t,"message"):void 0)??"provider error",n=e==="overloaded_error"?529:e==="rate_limit_error"?429:502;return new Ge({status:n,code:"PROVIDER_ERROR",detail:o})}function _H(t){if(t.trim()==="")return{};let e=aD(t);return An(e)?e:{}}function aD(t){try{return JSON.parse(t)}catch{return}}function An(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function rn(t,e){if(!An(t))return;let o=t[e];return typeof o=="string"?o:void 0}function Qm(t,e){if(!An(t))return;let o=t[e];return typeof o=="number"?o:void 0}var xH,SH,ic,sD,lD=p(()=>{"use strict";Wo();xH="2023-06-01",SH="oauth-2025-04-20",ic=class{kind="anthropic";defaultBaseUrl="";allowsBaseUrlOverride=!0;buildRequest(e){let{request:o,baseUrl:n,credential:r}=e,i=`${n.replace(/\/+$/,"")}/v1/messages`,a={model:o.model,max_tokens:o.maxTokens,messages:iD(o.messages),stream:!0};o.system!==void 0&&o.system!==""&&(a.system=o.system),o.temperature!==void 0&&(a.temperature=o.temperature),o.tools!==void 0&&o.tools.length>0&&(a.tools=o.tools.map(AH),a.tool_choice=CH(o.toolChoice));let l={"content-type":"application/json",accept:"text/event-stream","anthropic-version":xH};return r.kind==="oauth"?(l.authorization=`Bearer ${r.secret}`,l["anthropic-beta"]=SH):l["x-api-key"]=r.secret,{url:i,headers:l,body:JSON.stringify(a)}}mapSse(e,o,n){let r=aD(o);if(!An(r))return[];switch(e!==""?e:rn(r,"type")??""){case"message_start":{let i=[],a=An(r.message)?r.message:void 0,l=a!==void 0?rn(a,"id"):void 0;i.push({type:"start",request_id:l??""});let c=a!==void 0&&An(a.usage)?a.usage:void 0;if(c!==void 0){let m=Qm(c,"input_tokens");m!==void 0&&(sc(n).inputTokens=m)}let u=a!==void 0?rn(a,"model"):void 0;return u!==void 0&&(sc(n).model=u),l!==void 0&&(sc(n).requestId=l),i}case"content_block_start":{let i=An(r.content_block)?r.content_block:void 0,a=Qm(r,"index")??0;return i!==void 0&&rn(i,"type")==="tool_use"&&n.toolCalls.set(a,{id:rn(i,"id")??"",name:rn(i,"name")??"",argsText:""}),[]}case"content_block_delta":{let i=An(r.delta)?r.delta:void 0;if(i===void 0)return[];let a=rn(i,"type");if(a==="text_delta"){let l=rn(i,"text");return l!==void 0&&l!==""?[{type:"delta",content:l}]:[]}if(a==="input_json_delta"){let l=Qm(r,"index")??0,c=rn(i,"partial_json")??"",u=n.toolCalls.get(l);return u!==void 0&&(u.argsText+=c),[]}return[]}case"message_delta":{let i=[],a=An(r.delta)?r.delta:void 0;i.push(...EH(n));let l=An(r.usage)?r.usage:void 0;if(l!==void 0){let u=Qm(l,"output_tokens");u!==void 0&&(sc(n).outputTokens=u)}let c=a!==void 0?rn(a,"stop_reason"):void 0;return i.push({type:"usage",usage:wH(n)}),i.push({type:"done",finish_reason:DH(c)}),i}case"error":{let i=An(r.error)?r.error:void 0;throw TH(i)}default:return[]}}},sD=new WeakMap});function MH(t,e){for(let o of e){if(!Kn(o))continue;let n=typeof o.index=="number"?o.index:0,r=t.toolCalls.get(n)??{id:"",name:"",argsText:""},s=ps(o,"id");s!==void 0&&s!==""&&(r.id=s);let i=Kn(o.function)?o.function:void 0;if(i!==void 0){let a=ps(i,"name");a!==void 0&&a!==""&&(r.name=a);let l=ps(i,"arguments");l!==void 0&&(r.argsText+=l)}t.toolCalls.set(n,r)}}function LH(t){let e={role:t.role,content:t.content};return t.tool_calls!==void 0&&t.tool_calls.length>0&&(e.tool_calls=t.tool_calls.map(o=>({id:o.id,type:"function",function:{name:o.name,arguments:JSON.stringify(o.input??{})}}))),t.tool_call_id!==void 0&&(e.tool_call_id=t.tool_call_id),e}function PH(t){if(!Array.isArray(t.choices))return;let e=t.choices[0];return Kn(e)?e:void 0}function FH(t){let e=Zm(t,"code")??Zm(t,"status")??502,o=ps(t,"message")??"provider error";return new Ge({status:e,code:"PROVIDER_ERROR",detail:o})}function IH(t){if(t.trim()==="")return{};let e=cD(t);return Kn(e)?e:{}}function cD(t){try{return JSON.parse(t)}catch{return}}function Kn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ps(t,e){if(!Kn(t))return;let o=t[e];return typeof o=="string"?o:void 0}function Zm(t,e){if(!Kn(t))return;let o=t[e];return typeof o=="number"?o:void 0}var RH,OH,ac,uD=p(()=>{"use strict";Wo();RH="https://github.com/hiperplano/aluy-cli",OH="aluy-cli",ac=class{kind;defaultBaseUrl;allowsBaseUrlOverride=!0;provider;constructor(e){this.provider=e.provider,this.kind=e.provider,this.defaultBaseUrl=e.defaultBaseUrl}buildRequest(e){let{request:o,baseUrl:n,credential:r}=e,i=`${n.replace(/\/+$/,"")}/chat/completions`,a=[];o.system!==void 0&&o.system!==""&&a.push({role:"system",content:o.system});for(let u of o.messages)a.push(LH(u));let l={model:o.model,messages:a,max_tokens:o.maxTokens,stream:!0,stream_options:{include_usage:!0}};o.temperature!==void 0&&(l.temperature=o.temperature),o.reasoningEffort!==void 0&&o.reasoningEffort!==""&&(l.reasoning_effort=o.reasoningEffort),o.tools!==void 0&&o.tools.length>0&&(l.tools=o.tools,l.tool_choice=o.toolChoice??"auto");let c={"content-type":"application/json",accept:"text/event-stream"};return r.kind!=="none"&&r.secret!==""&&(c.authorization=`Bearer ${r.secret}`),this.provider==="openrouter"&&(c["http-referer"]=RH,c["x-title"]=OH),{url:i,headers:c,body:JSON.stringify(l)}}mapSse(e,o,n){let r=o.trim();if(r==="")return[];if(r==="[DONE]")return this.flush(n);let s=cD(r);if(!Kn(s))return[];if(Kn(s.error))throw FH(s.error);let i=[],a=PH(s);if(a!==void 0){let l=Kn(a.delta)?a.delta:void 0,c=l!==void 0?ps(l,"content"):void 0;c!==void 0&&c!==""&&i.push({type:"delta",content:c}),l!==void 0&&Array.isArray(l.tool_calls)&&MH(n,l.tool_calls);let u=ps(a,"finish_reason");u!=null&&u!==""&&(i.push(...this.flush(n)),i.push({type:"done",finish_reason:u}))}return Kn(s.usage)&&i.unshift({type:"usage",usage:this.toUsage(s.usage,s)}),i}flush(e){if(e.emittedToolCalls||e.toolCalls.size===0)return[];e.emittedToolCalls=!0;let o=[];for(let n of e.toolCalls.values()){if(n.name==="")continue;let r=IH(n.argsText),s={id:n.id,name:n.name,input:r};o.push({type:"tool_call",call:s})}return o}toUsage(e,o){let n={request_id:ps(o,"id")??"",tier:"local",provider:this.provider},r=ps(o,"model");r!==void 0&&(n.model=r);let s=Zm(e,"prompt_tokens");s!==void 0&&(n.tokens_in=s);let i=Zm(e,"completion_tokens");return i!==void 0&&(n.tokens_out=i),n}}});async function*lc(t){let e=new TextDecoder("utf-8"),o="";for await(let r of t){o+=typeof r=="string"?r:e.decode(r,{stream:!0}),o=o.replace(/\r\n/g,`
|
|
25
25
|
`);let s=o.indexOf(`
|
|
26
26
|
|
|
27
27
|
`);for(;s!==-1;){let i=o.slice(0,s);o=o.slice(s+2);let a=dD(i);a&&(yield a),s=o.indexOf(`
|
|
@@ -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.86"});var oM={};ht(oM,{HELP_TEXT:()=>ZO,parseArgs:()=>Px,suggestFlag:()=>JG,versionText:()=>eM});function dt(t,e,o={}){let n=`--${e}=`;for(let r=0;r<t.length;r++){let s=t[r];if(s===`--${e}`){let i=t[r+1];return i===void 0||(o.allowDashValue?i.startsWith("--"):i.startsWith("-"))?void 0:i}if(s!==void 0&&s.startsWith(n))return s.slice(n.length)}}function KG(t,e){let o=`-${e}=`;for(let n=0;n<t.length;n++){let r=t[n];if(r===`-${e}`){let s=t[n+1];return s!==void 0&&!s.startsWith("-")?s:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function eM(){return`aluy ${tr} (@hiperplano/aluy-cli-core ${Xl})`}function XG(t,e){let o=t.length,n=e.length,r=Array.from({length:n+1},(s,i)=>i);for(let s=1;s<=o;s++){let i=[s];for(let a=1;a<=n;a++){let l=t[s-1]===e[a-1]?0:1;i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+l)}r=i}return r[n]}function JG(t){let e,o=3;for(let n of tM){let r=XG(t,n);r<o&&(o=r,e=n)}return e}function QG(t,e){let o=[];for(let n=0;n<t.length;n++){let r=t[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||e.has(n))continue;let s=r.slice(2).split("=",1)[0];s===""||tM.has(s)||o.push(`--${s}`)}return o}function Px(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let W=t.slice(1),pe=dt(W,"token"),ho=dt(W,"org"),Wt=W.includes("--device"),Ro=dt(W,"provider"),jn=W.includes("--oauth");return{kind:"login",forceDeviceFlow:Wt,...pe!==void 0?{token:pe}:{},...ho!==void 0?{org:ho}:{},...Ro!==void 0?{provider:Ro}:{},...jn?{oauth:!0}:{}}}if(e==="logout"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"logout"};if(e==="whoami"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"whoami"};if(e==="doctor"&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--deep")||t.includes("--test"),pe=t.includes("--json");return{kind:"doctor",deep:W,json:pe}}if(e==="config"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"config",json:t.includes("--json")};if(e==="agents"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"agents"};if(e==="bootstrap"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"bootstrap",agent:!t.includes("--no-agent")};if(e==="uninstall"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"uninstall",agent:t.includes("--agent")};if(e==="onboard"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"onboard"};if(e==="skills"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"skills"};if(e==="workflows"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"workflows"};if((e==="models"||e==="providers")&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--json"),pe=t.findIndex(Wt=>Wt==="--backend"||Wt.startsWith("--backend=")),ho="both";if(pe!==-1){let Ro=(t[pe].includes("=")?t[pe].slice(10):t[pe+1]??"").trim().toLowerCase();Ro==="local"?ho="local":Ro==="broker"&&(ho="broker")}return{kind:"models",scope:ho,json:W,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let W=t[1];if(W===void 0||!["login","logout","allow","deny","status"].includes(W))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ho=t.slice(2);if(W==="login"){let Wt=dt(ho,"token");return{kind:"telegram",sub:"login",...Wt!==void 0?{token:Wt}:{}}}if(W==="allow"||W==="deny"){let Wt=ho.find(jn=>!jn.startsWith("-")),Ro=Wt!==void 0&&/^-?\d+$/.test(Wt)?Number(Wt):void 0;return Ro===void 0?{kind:"usage-error",message:`uso: aluy telegram ${W} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:W,chatId:Ro}}return{kind:"telegram",sub:W}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(pe=>!pe.startsWith("-")).join(" ").trim()};if(e==="mcp")return{kind:"mcp",argv:t.slice(1)};if(e==="cron")return{kind:"cron",argv:t.slice(1)};if(t.includes("-v")||t.includes("--version"))return{kind:"version",text:eM()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:ZO};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--telegram"),c=t.includes("--split")||t.includes("--view")?!0:void 0,u=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,m=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,d=dt(t,"tier"),h=dt(t,"lang"),g=dt(t,"max-tokens"),b=dt(t,"max-iterations"),y=dt(t,"max-output-tokens"),w=!(t.includes("--no-subagents")||t.includes("--no-subagent")),E=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,C=t.includes("--no-autocompact")?"off":dt(t,"autocompact-at"),M=t.includes("--quiet")?!0:void 0,B=t.includes("--cycle")?!0:void 0,q=dt(t,"cycles"),Y=dt(t,"cycle-for"),z=dt(t,"backend"),U=dt(t,"local-provider"),Z=dt(t,"local-model"),te=dt(t,"local-auth"),ee=dt(t,"local-base-url"),L=dt(t,"model"),j=dt(t,"provider");if((t.includes("--provider")||t.some(W=>W.startsWith("--provider=")))&&(L===void 0||L.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((L===void 0||L.trim()==="")&&d!==void 0&&d.trim().toLowerCase()==="custom")return{kind:"usage-error",message:"aluy: --tier custom exige --model <slug> (ex.: --model deepseek-v4-pro). A via Custom precisa do slug do modelo; sem ele use um tier can\xF4nico (aluy-flux, aluy-granito, \u2026).",exitCode:2};let le=dt(t,"effort"),he=t.includes("--effort")||t.some(W=>W.startsWith("--effort=")),se;if(le!==void 0){if(le.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(le.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};se=le}else if(he)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let me=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec=")),O=me?dt(t,"print",{allowDashValue:!0})??dt(t,"exec",{allowDashValue:!0})??KG(t,"p")??void 0:void 0,ue=me?dt(t,"output-format"):void 0;if(ue!==void 0&&!["text","json","stream-json"].includes(ue.trim()))return{kind:"usage-error",message:`aluy: --output-format inv\xE1lido "${ue}" (use text | json | stream-json)`,exitCode:2};let V=t.includes("--new"),ie=t.includes("--continue"),be=t.indexOf("--resume"),ct=t.find(W=>W.startsWith("--resume=")),Ce=be>=0||ct!==void 0,Xe;if(ct!==void 0)Xe=ct.slice(9);else if(be>=0){let W=t[be+1];W!==void 0&&!W.startsWith("-")&&(Xe=W)}let kt=d!==void 0?t.indexOf("--tier")+1:-1,vt=h!==void 0&&!t.some(W=>W.startsWith("--lang="))?t.indexOf("--lang")+1:-1,it=Xe!==void 0&&ct===void 0?be+1:-1,Rt=g!==void 0&&!t.some(W=>W.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,K=b!==void 0&&!t.some(W=>W.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,Se=q!==void 0&&!t.some(W=>W.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Pe=Y!==void 0&&!t.some(W=>W.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,H=y!==void 0&&!t.some(W=>W.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,jt=C!==void 0&&!t.includes("--no-autocompact")&&!t.some(W=>W.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,_o=z!==void 0&&!t.some(W=>W.startsWith("--backend="))?t.indexOf("--backend")+1:-1,k=(W,pe)=>pe!==void 0&&!t.some(ho=>ho.startsWith(`--${W}=`))?t.indexOf(`--${W}`)+1:-1,po=k("local-provider",U),Ot=k("local-model",Z),xt=k("local-auth",te),as=k("local-base-url",ee),ls=L!==void 0&&!t.some(W=>W.startsWith("--model="))?t.indexOf("--model")+1:-1,wr=j!==void 0&&!t.some(W=>W.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Er=se!==void 0&&!t.some(W=>W.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Ht=ue!==void 0&&!t.some(W=>W.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,qt=O!==void 0&&!t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Zo=t.find((W,pe)=>!W.startsWith("-")&&pe!==kt&&pe!==vt&&pe!==_o&&pe!==po&&pe!==Ot&&pe!==xt&&pe!==as&&pe!==ls&&pe!==wr&&pe!==Er&&pe!==Ht&&pe!==qt&&pe!==it&&pe!==Rt&&pe!==K&&pe!==H&&pe!==jt&&pe!==Se&&pe!==Pe),jo=(O??Zo??"").trim();if(jo!==""&&!/\s/.test(jo)&&VG.has(jo.toLowerCase()))return{kind:"usage-error",message:`aluy: "${jo}" \xE9 um comando de SESS\xC3O, n\xE3o um objetivo. Use /${jo} DENTRO do aluy (rode \`aluy\` sem argumentos), ou veja \`aluy --help\`. Se voc\xEA quis MESMO um objetivo com essa palavra, d\xEA mais contexto (ex.: \`aluy "${jo} o arquivo X"\`).`,exitCode:2};let us=ie?{kind:"continue"}:Ce?{kind:"resume",...Xe!==void 0?{id:Xe}:{}}:void 0,xn=new Set([kt,vt,_o,po,Ot,xt,as,ls,wr,Er,Ht,qt,it,Rt,K,H,jt,Se,Pe].filter(W=>W>=0));for(let W of YG){let pe=t.indexOf(W);pe>=0&&!t[pe].includes("=")&&xn.add(pe+1)}let oi=QG(t,xn);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...oi.length>0?{unknownFlags:oi}:{},dense:i,fresh:V,subAgents:w,safeGlyphs:a,telegram:l,print:me,...c!==void 0?{split:c}:{},...u!==void 0?{fullscreen:u}:{},...m!==void 0?{budget:m}:{},...Zo!==void 0?{goal:Zo}:{},...d!==void 0?{tier:d}:{},...z!==void 0?{backend:z}:{},...U!==void 0?{localProvider:U}:{},...Z!==void 0?{localModel:Z}:{},...te!==void 0?{localAuth:te}:{},...ee!==void 0?{localBaseUrl:ee}:{},...L!==void 0?{model:L}:{},...j!==void 0?{provider:j}:{},...se!==void 0?{effort:se}:{},...O!==void 0?{printArg:O}:{},...ue!==void 0?{outputFormat:ue}:{},...h!==void 0?{lang:h}:{},...us!==void 0?{resume:us}:{},...g!==void 0?{maxTokens:g}:{},...b!==void 0?{maxIterations:b}:{},...y!==void 0?{maxOutputTokens:y}:{},...E!==void 0?{selfCheck:E}:{},...C!==void 0?{autoCompactAt:C}:{},...M!==void 0?{quiet:M}:{},...B!==void 0?{cycle:B}:{},...q!==void 0?{cycles:q}:{},...Y!==void 0?{cycleFor:Y}:{}}}var ZO,tM,YG,VG,Fx=p(()=>{"use strict";P();Iu();ZO=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
157
|
+
`);return i.provisionAll(n,r)}var KO,Ya,AG,Rn,WO,_x,GO,IG,BG,UG,Lx=p(()=>{"use strict";P();KO=".aluy",Ya=448,AG=384;Rn="aluy-mem0-server.py";WO="application/vnd.ollama.image.model";_x=class{platform;agentInstaller;constructor(e={}){this.platform=e.platform??process.platform,this.agentInstaller=e.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(e){switch(e){case"ollama":{let o=ke(cn(),Ss,"bin","ollama");return et(o)}case"mem0":{let o=ke(cn(),Ur,"bin","python3");return et(o)&&Fu(o)}case"headroom":{let o=ke(cn(),ws,"bin","headroom");return et(o)}default:return!1}}async provision(e,o){let n=wG().uid;if(Wk(n))return{target:e,hashOk:!1,installed:!1,message:"RECUSA ROOT (uid=0): provisionamento de sidecars \xE9 user-space. Execute como usu\xE1rio normal."};if(this.agentInstaller)return this.agentInstaller(e,o);if(!this.hasPinnedArtifact())return{target:e,hashOk:!1,installed:!1,message:`SO '${this.platform}' sem artefato pinado p/ provisionamento direto. Rode \`aluy bootstrap\` (o aluy instala via o pr\xF3prio agente, \u26A0 --yolo) ou instale manualmente.`};switch(e){case"ollama":return RG();case"mem0":return PG();case"headroom":return FG();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!xu(e))return{profile:e,targets:[],anySuccess:!1,allFailed:!1};let n=[],r=[...o];for(let a=0;a<r.length;a++){let l=r[a],c={index:a+1,total:r.length,plan:r};try{n.push(await this.provision(l,c))}catch(u){let m=u instanceof Error?u.message:String(u);n.push({target:l,hashOk:!1,installed:!1,message:`falha inesperada ao provisionar \u2014 seguindo p/ os pr\xF3ximos (${m}).`})}}let s=n.some(a=>a.installed),i=n.length>0&&n.every(a=>!a.installed);return{profile:e,targets:n,anySuccess:s,allFailed:i}}},GO="na faixa 3.10\u20133.12 (N\xC3O use 3.13+/3.14 \u2014 as depend\xEAncias nativas n\xE3o t\xEAm wheels e o pip falha ao compilar; no Windows prefira `py -3.12` ou `py -3.11`). Se N\xC3O houver um Python 3.10\u20133.12 instalado, INSTALE primeiro (no Windows: `winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements`; no Linux/macOS use o gerenciador do sistema). Se j\xE1 existir um venv nesse caminho numa vers\xE3o incompat\xEDvel (ex.: 3.14), APAGUE e recrie com a vers\xE3o certa",IG="IMPORTANTE \u2014 o usu\xE1rio quer ACOMPANHAR: antes de cada passo, diga em 1 linha o que vai fazer; rode os comandos de instala\xE7\xE3o de forma VIS\xCDVEL (N\xC3O silencie pip/apt/curl com -q; mostre a sa\xEDda/progresso). Sem modo silencioso. ";BG=24,UG=5e3});var tr,Iu=p(()=>{"use strict";tr="1.0.0-rc.88"});var oM={};ht(oM,{HELP_TEXT:()=>ZO,parseArgs:()=>Px,suggestFlag:()=>JG,versionText:()=>eM});function dt(t,e,o={}){let n=`--${e}=`;for(let r=0;r<t.length;r++){let s=t[r];if(s===`--${e}`){let i=t[r+1];return i===void 0||(o.allowDashValue?i.startsWith("--"):i.startsWith("-"))?void 0:i}if(s!==void 0&&s.startsWith(n))return s.slice(n.length)}}function KG(t,e){let o=`-${e}=`;for(let n=0;n<t.length;n++){let r=t[n];if(r===`-${e}`){let s=t[n+1];return s!==void 0&&!s.startsWith("-")?s:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function eM(){return`aluy ${tr} (@hiperplano/aluy-cli-core ${Xl})`}function XG(t,e){let o=t.length,n=e.length,r=Array.from({length:n+1},(s,i)=>i);for(let s=1;s<=o;s++){let i=[s];for(let a=1;a<=n;a++){let l=t[s-1]===e[a-1]?0:1;i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+l)}r=i}return r[n]}function JG(t){let e,o=3;for(let n of tM){let r=XG(t,n);r<o&&(o=r,e=n)}return e}function QG(t,e){let o=[];for(let n=0;n<t.length;n++){let r=t[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||e.has(n))continue;let s=r.slice(2).split("=",1)[0];s===""||tM.has(s)||o.push(`--${s}`)}return o}function Px(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let W=t.slice(1),pe=dt(W,"token"),ho=dt(W,"org"),Wt=W.includes("--device"),Ro=dt(W,"provider"),jn=W.includes("--oauth");return{kind:"login",forceDeviceFlow:Wt,...pe!==void 0?{token:pe}:{},...ho!==void 0?{org:ho}:{},...Ro!==void 0?{provider:Ro}:{},...jn?{oauth:!0}:{}}}if(e==="logout"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"logout"};if(e==="whoami"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"whoami"};if(e==="doctor"&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--deep")||t.includes("--test"),pe=t.includes("--json");return{kind:"doctor",deep:W,json:pe}}if(e==="config"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"config",json:t.includes("--json")};if(e==="agents"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"agents"};if(e==="bootstrap"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"bootstrap",agent:!t.includes("--no-agent")};if(e==="uninstall"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"uninstall",agent:t.includes("--agent")};if(e==="onboard"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"onboard"};if(e==="skills"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"skills"};if(e==="workflows"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"workflows"};if((e==="models"||e==="providers")&&!t.includes("-h")&&!t.includes("--help")){let W=t.includes("--json"),pe=t.findIndex(Wt=>Wt==="--backend"||Wt.startsWith("--backend=")),ho="both";if(pe!==-1){let Ro=(t[pe].includes("=")?t[pe].slice(10):t[pe+1]??"").trim().toLowerCase();Ro==="local"?ho="local":Ro==="broker"&&(ho="broker")}return{kind:"models",scope:ho,json:W,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let W=t[1];if(W===void 0||!["login","logout","allow","deny","status"].includes(W))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ho=t.slice(2);if(W==="login"){let Wt=dt(ho,"token");return{kind:"telegram",sub:"login",...Wt!==void 0?{token:Wt}:{}}}if(W==="allow"||W==="deny"){let Wt=ho.find(jn=>!jn.startsWith("-")),Ro=Wt!==void 0&&/^-?\d+$/.test(Wt)?Number(Wt):void 0;return Ro===void 0?{kind:"usage-error",message:`uso: aluy telegram ${W} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:W,chatId:Ro}}return{kind:"telegram",sub:W}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(pe=>!pe.startsWith("-")).join(" ").trim()};if(e==="mcp")return{kind:"mcp",argv:t.slice(1)};if(e==="cron")return{kind:"cron",argv:t.slice(1)};if(t.includes("-v")||t.includes("--version"))return{kind:"version",text:eM()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:ZO};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--telegram"),c=t.includes("--split")||t.includes("--view")?!0:void 0,u=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,m=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,d=dt(t,"tier"),h=dt(t,"lang"),g=dt(t,"max-tokens"),b=dt(t,"max-iterations"),y=dt(t,"max-output-tokens"),w=!(t.includes("--no-subagents")||t.includes("--no-subagent")),E=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,C=t.includes("--no-autocompact")?"off":dt(t,"autocompact-at"),M=t.includes("--quiet")?!0:void 0,B=t.includes("--cycle")?!0:void 0,q=dt(t,"cycles"),Y=dt(t,"cycle-for"),z=dt(t,"backend"),U=dt(t,"local-provider"),Z=dt(t,"local-model"),te=dt(t,"local-auth"),ee=dt(t,"local-base-url"),L=dt(t,"model"),j=dt(t,"provider");if((t.includes("--provider")||t.some(W=>W.startsWith("--provider=")))&&(L===void 0||L.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((L===void 0||L.trim()==="")&&d!==void 0&&d.trim().toLowerCase()==="custom")return{kind:"usage-error",message:"aluy: --tier custom exige --model <slug> (ex.: --model deepseek-v4-pro). A via Custom precisa do slug do modelo; sem ele use um tier can\xF4nico (aluy-flux, aluy-granito, \u2026).",exitCode:2};let le=dt(t,"effort"),he=t.includes("--effort")||t.some(W=>W.startsWith("--effort=")),se;if(le!==void 0){if(le.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(le.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};se=le}else if(he)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let me=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec=")),O=me?dt(t,"print",{allowDashValue:!0})??dt(t,"exec",{allowDashValue:!0})??KG(t,"p")??void 0:void 0,ue=me?dt(t,"output-format"):void 0;if(ue!==void 0&&!["text","json","stream-json"].includes(ue.trim()))return{kind:"usage-error",message:`aluy: --output-format inv\xE1lido "${ue}" (use text | json | stream-json)`,exitCode:2};let V=t.includes("--new"),ie=t.includes("--continue"),be=t.indexOf("--resume"),ct=t.find(W=>W.startsWith("--resume=")),Ce=be>=0||ct!==void 0,Xe;if(ct!==void 0)Xe=ct.slice(9);else if(be>=0){let W=t[be+1];W!==void 0&&!W.startsWith("-")&&(Xe=W)}let kt=d!==void 0?t.indexOf("--tier")+1:-1,vt=h!==void 0&&!t.some(W=>W.startsWith("--lang="))?t.indexOf("--lang")+1:-1,it=Xe!==void 0&&ct===void 0?be+1:-1,Rt=g!==void 0&&!t.some(W=>W.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,K=b!==void 0&&!t.some(W=>W.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,Se=q!==void 0&&!t.some(W=>W.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Pe=Y!==void 0&&!t.some(W=>W.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,H=y!==void 0&&!t.some(W=>W.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,jt=C!==void 0&&!t.includes("--no-autocompact")&&!t.some(W=>W.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,_o=z!==void 0&&!t.some(W=>W.startsWith("--backend="))?t.indexOf("--backend")+1:-1,k=(W,pe)=>pe!==void 0&&!t.some(ho=>ho.startsWith(`--${W}=`))?t.indexOf(`--${W}`)+1:-1,po=k("local-provider",U),Ot=k("local-model",Z),xt=k("local-auth",te),as=k("local-base-url",ee),ls=L!==void 0&&!t.some(W=>W.startsWith("--model="))?t.indexOf("--model")+1:-1,wr=j!==void 0&&!t.some(W=>W.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Er=se!==void 0&&!t.some(W=>W.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Ht=ue!==void 0&&!t.some(W=>W.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,qt=O!==void 0&&!t.some(W=>W.startsWith("-p=")||W.startsWith("--print=")||W.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Zo=t.find((W,pe)=>!W.startsWith("-")&&pe!==kt&&pe!==vt&&pe!==_o&&pe!==po&&pe!==Ot&&pe!==xt&&pe!==as&&pe!==ls&&pe!==wr&&pe!==Er&&pe!==Ht&&pe!==qt&&pe!==it&&pe!==Rt&&pe!==K&&pe!==H&&pe!==jt&&pe!==Se&&pe!==Pe),jo=(O??Zo??"").trim();if(jo!==""&&!/\s/.test(jo)&&VG.has(jo.toLowerCase()))return{kind:"usage-error",message:`aluy: "${jo}" \xE9 um comando de SESS\xC3O, n\xE3o um objetivo. Use /${jo} DENTRO do aluy (rode \`aluy\` sem argumentos), ou veja \`aluy --help\`. Se voc\xEA quis MESMO um objetivo com essa palavra, d\xEA mais contexto (ex.: \`aluy "${jo} o arquivo X"\`).`,exitCode:2};let us=ie?{kind:"continue"}:Ce?{kind:"resume",...Xe!==void 0?{id:Xe}:{}}:void 0,xn=new Set([kt,vt,_o,po,Ot,xt,as,ls,wr,Er,Ht,qt,it,Rt,K,H,jt,Se,Pe].filter(W=>W>=0));for(let W of YG){let pe=t.indexOf(W);pe>=0&&!t[pe].includes("=")&&xn.add(pe+1)}let oi=QG(t,xn);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...oi.length>0?{unknownFlags:oi}:{},dense:i,fresh:V,subAgents:w,safeGlyphs:a,telegram:l,print:me,...c!==void 0?{split:c}:{},...u!==void 0?{fullscreen:u}:{},...m!==void 0?{budget:m}:{},...Zo!==void 0?{goal:Zo}:{},...d!==void 0?{tier:d}:{},...z!==void 0?{backend:z}:{},...U!==void 0?{localProvider:U}:{},...Z!==void 0?{localModel:Z}:{},...te!==void 0?{localAuth:te}:{},...ee!==void 0?{localBaseUrl:ee}:{},...L!==void 0?{model:L}:{},...j!==void 0?{provider:j}:{},...se!==void 0?{effort:se}:{},...O!==void 0?{printArg:O}:{},...ue!==void 0?{outputFormat:ue}:{},...h!==void 0?{lang:h}:{},...us!==void 0?{resume:us}:{},...g!==void 0?{maxTokens:g}:{},...b!==void 0?{maxIterations:b}:{},...y!==void 0?{maxOutputTokens:y}:{},...E!==void 0?{selfCheck:E}:{},...C!==void 0?{autoCompactAt:C}:{},...M!==void 0?{quiet:M}:{},...B!==void 0?{cycle:B}:{},...q!==void 0?{cycles:q}:{},...Y!==void 0?{cycleFor:Y}:{}}}var ZO,tM,YG,VG,Fx=p(()=>{"use strict";P();Iu();ZO=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
158
158
|
|
|
159
159
|
Uso:
|
|
160
160
|
aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
|
|
@@ -684,7 +684,7 @@ Notas:
|
|
|
684
684
|
`),!0}function s2(t){switch(t.kind){case"testrun":{let e=t.score;return e.unknownFormat?"[testes] placar indispon\xEDvel (formato n\xE3o reconhecido)":`[testes] ${e.passed} \u2713 ${e.failed} \u2717 (${e.total})`}case"you":return`[voc\xEA] ${t.text}`;case"aluy":{let e=sn(t.text);return e.trim()===""?"":`[aluy] ${e}`}case"tool":return t.status==="running"?`[tool] ${t.verb} ${t.target} \u2014 ${t.verbGerund??"rodando"}`:`[tool] ${t.verb} ${t.target} \u2014 ${t.result} ${t.status==="ok"?"ok":"erro"}`;case"bang":{if(t.status==="running")return`[shell] $ ${t.command} \u2014 rodando`;let e=t.status==="blocked"?"bloqueado":t.status==="ok"?"ok":"erro",o=t.output&&t.output.trim()!==""?`
|
|
685
685
|
${t.output}`:"";return`[shell] $ ${t.command} \u2014 ${e}${o}`}case"subagents":{let e=`[sub-agentes] ${t.children.length}:`,o=t.children.map(n=>{let r=n.status==="running"?"rodando":n.status==="done"?"pronto":n.stop==="timeout"?"timeout":n.stop==="limit"?"teto":"falhou",s=n.summary!==void 0&&n.status!=="running"?` \xB7 ${n.summary}`:"";return` [${n.label}] ${r}${s}`});return[e,...o].join(`
|
|
686
686
|
`)}case"deny":return`[negado] ${t.verb} ${t.exact}`;case"broker-error":return`[${NA(t.backend)}] ${t.message}${t.status!==void 0?` (${t.status})`:""}`;case"note":return`[${t.title}] ${t.lines.join(" \xB7 ")}`;case"doctor":{let e="[doctor]",o=t.checks.flatMap(r=>{let s=r.status==="ok"?"\u2713":r.status==="warn"?"\u26A0":r.status==="fail"?"\u2717":"\u25F7",i=r.detail!==void 0&&r.detail!==""?`: ${r.detail}`:": testando\u2026",a=` ${s} ${r.label}${i}`;return r.status!=="ok"&&r.status!=="pending"&&r.fix!==void 0?[a,` \u2192 ${r.fix}`]:[a]}),n=t.summary!==void 0?[` resumo: ${t.summary}`]:[];return[e,...o,...n].join(`
|
|
687
|
-
`)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var ate,$A=p(()=>{"use strict";P();Ed();Yr();MA();LA();FA();IA();ate="-".repeat(12)});import{useEffect as To,useState as tt,useReducer as lte,useCallback as Jt,useMemo as i2,useRef as Qo}from"react";import{Box as ae,Static as cte,Text as a2,useApp as ute,useInput as dte,useStdin as mte,useStdout as fte}from"ink";import{Fragment as u2,jsx as R,jsxs as fo}from"react/jsx-runtime";function d2(t){let{controller:e}=t,{exit:o}=ute(),{stdout:n}=fte(),r=Q(),{lang:s,t:i}=xe(),[,a]=lte(x=>x+1,0);To(()=>{if(!n||typeof n.on!="function")return;let x=()=>a();return n.on("resize",x),()=>{typeof n.off=="function"&&n.off("resize",x)}},[n]);let l=n?.columns??80,c=n?.rows??24,u=r.density!=="compact",m=r.density!=="compact",[d,h]=tt(e.current),[g,b]=tt({text:"",cursor:0}),y=g.text,w=g.cursor,[E,C]=tt(!1),[M,B]=tt(0),[q,Y]=tt(()=>new Set),[z,U]=tt(!1),[Z,te]=tt(""),ee=d.phase==="questioning"?d.pendingQuestion?.spec:void 0,L=Qo(void 0);To(()=>{ee!==L.current&&(L.current=ee,B(0),Y(new Set),te(""),U(ee?.kind==="text"))},[ee]);let[j,Te]=tt(0),[le,he]=tt(!1),[se,me]=tt(0),[O,ue]=tt([]),[V,ie]=tt(-1),[be,ct]=tt([]),Ce=Qo([]),Xe=Qo(0);Ce.current=be,be.length===0&&(Xe.current=0);let kt=Jt(x=>{Ce.current=[...Ce.current,x],ct(v=>[...v,x])},[]),Bt=Jt(()=>{Ce.current=[],ct([]),Xe.current=0},[]),[vt,it]=tt(!1),[Ut,Rt]=tt(0),[I,K]=tt(null),[_e,Se]=tt(t.initialSplitView===!0),[Ne,Pe]=tt(!1),[X,H]=tt("chat"),[de,jt]=tt(()=>new Set),[Sr,_o]=tt(0),[k,po]=tt(!1),[Ot,xt]=tt(t.initialFullscreen===!0),[as,Bl]=tt("conversa"),[ls,cs]=tt(0),[wr,Ul]=tt(!1),Er=Qo(void 0),Zt=Qo(void 0),Ht=Qo(!1),qt=Qo(void 0),Zo=Jt(()=>{Zt.current!==void 0&&(clearTimeout(Zt.current),Zt.current=void 0),Er.current=void 0,Ul(!1)},[]);To(()=>()=>{Zt.current!==void 0&&clearTimeout(Zt.current),qt.current!==void 0&&clearTimeout(qt.current)},[]);let jo=Nh(d.meta.label),us=y.length===0?1:Vo(y,l>jo?l-jo:l),xn=Math.max(3,Math.floor(c/3)),oi=Math.max(0,Math.min(us,xn)-1),W=Ot?e.flowOverview():[],pe=Ot?SA(W,x=>e.drillInFlow(x),{collapsed:de,errorsOnly:k}).sections:[],ho=W.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,Wt=Ot?$g(d.blocks).startupNotes:[],Ro=Wt.length>0?1+Wt.reduce((x,v)=>x+1+v.lines.length,0):0,jn=Ot?{lines:pU(pe)+Ro,hasActivity:pe.length>0||Ro>0,activeAgents:ho,focused:as==="log"}:void 0,en=ei(c,l,us,jn),la=Ot&&en.kind==="cockpit",tn=dU(l,_e),go=tn.layout,jl=go==="side"||go==="tabs"&&X==="log",ca=jl&&Ne,ge=MB({fileIndex:t.fileIndex??pte,attachReader:t.attachReader??hte}),$=FB({catalog:t.catalog??gte,...t.customModels?{customModels:t.customModels}:{},currentTier:d.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),yo=$B(t.permissionControl??vte),ua=t.currentTheme??Oi(r.brightness),Je=HB({currentTheme:ua}),Hl=t.currentLang??s,Mt=zB({currentLang:Hl}),da=(d.meta.provider??"")!==""?d.meta.provider:t.currentProvider,At=VB({...da!==void 0?{currentProvider:da}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Em=i2(()=>z$(Xo,i),[i]),Gt=JB({store:t.sessionStore??yte}),ql=t.rewindSource??bte,Fe=ZB({source:ql}),ma=i2(()=>Fe.target?ql.barriersAfter(Fe.target.id):[],[Fe.target,ql]),ot=tU({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Em}),Wl=t.syncActive??!0,Zg=sU(d.phase,Wl)||Ste(d.blocks),ni=dm({enabled:r.animate&&Zg}),A=iU(d.phase);dm({enabled:A,intervalMs:1e3}),To(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),To(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(ei(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{xt(!1);let v=ei(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let N=Qo(t.initialFullscreen===!0&&en.kind==="cockpit"),Ee=Qo(t.initialFullscreen===!0);To(()=>{let x=Ee.current!==Ot;if(Ee.current=Ot,!Ot){N.current=!1;return}let v=en.kind==="cockpit";if(x){N.current=v;return}let S=N.current;if(S&&!v){t.cockpitScreen?.leave();let D=en.kind==="refuse"&&en.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[D])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();N.current=v},[c,l,Ot]);let{stdin:T}=mte();To(()=>{if(!T)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),Bt();return}let D=EN(S);D==="home"?b(J=>({...J,cursor:0})):D==="end"&&b(J=>({...J,cursor:J.text.length}))};return T.on("data",x),()=>{T.removeListener("data",x)}},[T,e,Bt,b]),To(()=>{if(d.phase!=="boot")return;let x=t.bootMs??900;if(x<=0)return;let v=setTimeout(()=>e.dismissBoot(),x);return()=>clearTimeout(v)},[d.phase,e,t.bootMs]),To(()=>{d.phase!=="stuck"&&E&&C(!1)},[d.phase,E]);let _=t.userCommands??[],G=y.startsWith("/")?y.slice(1):"",ce=Y$(G,_,Em),oe=Jt((x,v)=>{b({text:x,cursor:_t(x,v??x.length)})},[]),$e=Jt(x=>{he(xE(x,t.userCommands??[])),me(0)},[t.userCommands]),Qe=Jt(()=>{Ng("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),Te(x=>x+1)},[n]),at=t.registerClearScreen;To(()=>{at?.(Qe)},[at,Qe]),To(()=>{Ng(`slashOpen=${le} (rows=${c} cols=${l})`)},[le,c,l]);let on=Qo({rows:c,columns:l});To(()=>{if(Ot){on.current={rows:c,columns:l};return}let x=on.current;if(x.rows===c&&x.columns===l)return;Ng(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),on.current={rows:c,columns:l};let v=setTimeout(()=>Qe(),90);return()=>clearTimeout(v)},[c,l,Ot,Qe]);let Sn=Jt(()=>{Se(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(Pe(!1),H("chat")),v})},[t]),Ar=Jt(()=>{if(process.env.ALUY_FULLSCREEN!=="1"){e.replaceNote("fullscreen",["O modo tela cheia (/fullscreen) est\xE1 desativado nesta vers\xE3o \u2014 ainda em ajustes.","A sess\xE3o continua no modo inline (o padr\xE3o), que \xE9 o recomendado."]);return}xt(x=>{let v=!x,S=ei(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let D=ei(c,l),J=D.kind==="refuse"&&D.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[J])}else t.cockpitScreen?.leave(),Qe(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Bl("conversa"),cs(0),_o(0)},[t,e,i,c,l,Qe]),Oo=Jt((x,v)=>{if(x.id==="split"){Sn();return}if(x.id==="fullscreen"){Ar();return}if(x.id==="export"){t.onExportTranscript?t.onExportTranscript().then(S=>{e.pushNote("export",S.ok&&S.path?[`transcript exportado (redigido) \u2192 ${S.path}`]:[S.error??"export indispon\xEDvel"])}):e.replaceNote("export",["export indispon\xEDvel nesta sess\xE3o."]);return}if(x.id==="model"&&v.trim()===""&&d.meta.backend==="local"){e.replaceNote("model-local",["Backend LOCAL (BYO): os tiers do broker n\xE3o se aplicam aqui.","O modelo vem do seu provider \u2014 troque com /provider, ou defina ALUY_LOCAL_MODEL / --model."]);return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){$.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){yo.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){Gt.openPicker();return}Qe(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Fe.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Je.openPicker();return}let D=qr(S);if(D){t.onSelectTheme(D.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){Mt.openPicker();return}let D=Ds(S);if(D){t.onSelectLang(D.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){At.openPicker();return}let D=Lg(S,At.providers);if(D){t.onSelectProvider(D.name);return}}t.onCommand?.(x,v)},[t,$,yo,Je,Mt,At,Gt,Fe,Qe,Sn]),ey=Jt(x=>{if(x.action.kind==="command"){Oo(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[Oo,e]),Ae=Jt(x=>{cs(0),_o(0);let v=Dl(x,_);if(v.kind==="goal"){if(v.text!==""){if(Ui(v.text).length>0&&t.attachReader){let D=ge.attachments.map(J=>J.item);km(v.text,t.attachReader).then(({goal:J,items:Ie})=>{if(J===""&&Ie.length===0){ge.clear();return}let je=[...D,...Ie],Mo=J!==""?J:v.text;ue(qn=>[...qn,Mo]),e.submit(Mo,je),ge.clear()});return}let S=ge.attachments.map(D=>D.item);ue(D=>[...D,v.text]),e.submit(v.text,S),ge.clear()}return}if(v.kind==="command"){Oo(v.command,v.args);return}if(v.kind==="bang"){ue(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,_,ge,Oo,t.attachReader]),Re=Jt(x=>{let v=Dl(x,_);return v.kind!=="goal"||v.text===""||ge.attachments.length>0||Ui(v.text).length>0?!1:e.injectInput("root",v.text)},[e,_,ge]),Cr=Jt(x=>{let v=Dl(x,_);return v.kind!=="command"||!yE(v.command,v.args)?!1:(Oo(v.command,v.args),!0)},[_,Oo]),ri=Jt(x=>{if(Ce.current.length>0){kt(x);return}let v=Dl(x,_),S=v.kind==="goal"?v.text:"";if(cU({subagentsRunning:c2(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:ge.attachments.length>0||S!==""&&Ui(S).length>0})){Re(x);return}!Re(x)&&!Cr(x)&&kt(x)},[kt,Re,Cr,e,_,ge]),si=Qo();si.current||(si.current=XI());let Dr=Qo();Dr.current||(Dr.current=AU());let Tr=Jt(x=>{let v=_U(x,Dr.current);return Dr.current.reset(),v},[]),Am=Jt(x=>{let v=TU(x,Dr.current,"backward");return v.handled?(v.removedId!==void 0&&Dr.current.remove(v.removedId),v.state):Fw(x)},[]),nn=Qo({open:!1}),wn=Jt(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),ge.dismissNotice();let v=EU(x);b(S=>{let D=v?CU(S,x,Dr.current):Gi(S,x);return $e(D.text),ii(D.text),D}),ie(-1)},[e,ge,$e]);To(()=>{if(!T)return;let x=si.current,v=S=>{let D=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!D.includes("\x1B[20"))return;let J=x.feed(D);for(let Ie of J)Ie.kind==="paste"&&wn(Ie.text)};return T.on("data",v),()=>{T.removeListener("data",v)}},[T,wn]);let Gl=ge.open||$.open||yo.open||Je.open||Mt.open||At.open||Gt.open||Fe.open||ot.open,Ho=nF({...d,anyPickerOpen:Gl});To(()=>{if(!Ho||be.length===0)return;let x=be[0]??"",v=Dl(x,_);if(v.kind==="command"&&v.command.id==="clear"){Bt(),Ae(x);return}ct(S=>S.slice(1)),Ae(x)},[Ho,be,Ae,_,Bt]),To(()=>{if(Ho||be.length===0||d.phase!=="thinking"&&d.phase!=="streaming")return;let x=0;for(let v of be){if(!Re(v))break;x+=1}x>0&&ct(v=>v.slice(x))},[Ho,be,d.phase,Re]),dte((x,v)=>{if(!VI(nn.current,x)&&!kU(x)){if(d.phase==="boot"){if(v.ctrl&&x==="c"){o();return}if(x&&!v.ctrl&&!v.meta){e.dismissBoot();let S=x.search(/[\r\n]/);S!==-1?Ae(y+x.slice(0,S)):b(D=>{let J=D.text+x;return he(xE(J,t.userCommands??[])),{text:J,cursor:J.length}});return}e.dismissBoot();return}if(la&&!le&&!ge.open&&!ot.open&&d.phase!=="asking"){if(v.tab&&!v.shift){Bl(D=>D==="conversa"?"log":"conversa");return}if(v.ctrl&&(x==="s"||x==="")){t.onExportTranscript?t.onExportTranscript().then(D=>{D.ok&&D.path?e.pushNote("export",[`${i("cockpit.exported")} ${D.path}`]):e.pushNote("export",[D.error??"export indispon\xEDvel"])}):e.pushNote("export",["export indispon\xEDvel nesta sess\xE3o"]);return}let S=en.kind==="cockpit"?en:void 0;if(S){let D=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(D!==void 0){if(as==="conversa"){let J=Math.max(1,Math.round((S.regions.conversaRows-1)/4)),Ie=D==="up"?1:D==="down"?-1:D==="pageUp"?J:-J;cs(je=>Math.min(Math.max(0,je+Ie),Math.max(0,d.blocks.length-1)))}else{let J=Math.max(1,S.regions.logRows-1);_o(Ie=>bU(D,Ie,pe.length+1,J))}return}}}if(!vt){if(v.ctrl&&x==="l"){_e&&go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Sn();return}if(v.tab&&!v.shift&&jl){go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Pe(S=>!S);return}if(ca){if(v.escape){Pe(!1);return}if(v.upArrow){_o(S=>S+1);return}if(v.downArrow){_o(S=>Math.max(0,S-1));return}if(v.pageUp){_o(S=>S+aa);return}if(v.pageDown){_o(S=>Math.max(0,S-aa));return}if(v.return){jt(S=>{let D=new Set(S);return D.has("root")?D.delete("root"):D.add("root"),D});return}if(x==="e"&&!v.ctrl&&!v.meta){po(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(vt){if(I){if(v.escape||v.return){K(null);return}if(x==="p"){e.cancelFlow(I);return}if(x==="i"){y.trim()!==""&&(e.injectInput(I,y),oe(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){it(!1);return}if(v.upArrow){Rt(D=>Math.max(0,D-1));return}if(v.downArrow){Rt(D=>Math.min(Math.max(0,S.length-1),D+1));return}if(v.return){let D=S[Math.min(Ut,S.length-1)];D&&K(D.id);return}if(x==="p"){let D=S[Math.min(Ut,S.length-1)];D&&e.cancelFlow(D.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let D=S[Math.min(Ut,S.length-1)];D&&y.trim()!==""&&(e.injectInput(D.id,y),oe(""));return}return}if(d.phase==="asking"&&d.pendingAsk){let S=d.pendingAsk.request.alwaysAsk;if(x==="a")return e.resolveAsk({kind:"approve-once"});if(x==="s"&&S===!1)return e.resolveAsk({kind:"approve-session"});if(x==="n")return e.resolveAsk({kind:"deny",reason:"negado pelo usu\xE1rio"});if(v.escape){let D=Date.now(),J=Ce.current.length>0,Ie=D-Xe.current<500;e.resolveAsk({kind:"deny",reason:"cancelado (esc)"}),Ie&&!J&&(e.interrupt(),Bt()),Xe.current=J?0:D;return}return x==="e"?e.resolveAsk({kind:"deny",reason:"editar (n\xE3o aplicado)"}):void 0}if(d.phase==="questioning"&&d.pendingQuestion){let S=d.pendingQuestion.spec,D=S.options??[],J=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(z&&S.kind!=="text"){U(!1),te("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(z){if(v.return){let je=Z.trim();return je===""?void 0:e.resolveQuestion({kind:"text",text:je})}if(v.backspace||v.delete){te(je=>je.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){te(je=>je+x);return}return}let Ie=D.length-1;if(v.upArrow){B(je=>je===fr?Ie:je<=0?J?fr:Ie:je-1);return}if(v.downArrow){B(je=>je===fr?0:je>=Ie?J?fr:0:je+1);return}if(S.kind==="multi"&&x===" "&&M!==fr&&M>=0){Y(je=>{let Mo=new Set(je);return Mo.has(M)?Mo.delete(M):Mo.add(M),Mo});return}if(v.return){if(M===fr){U(!0);return}if(S.kind==="multi"){let Mo=[...q].sort((Wn,l8)=>Wn-l8),qn=Mo.map(Wn=>D[Wn]?.label??"").filter(Wn=>Wn!=="");return e.resolveQuestion({kind:"choices",indices:Mo,labels:qn})}let je=D[M];return je?e.resolveQuestion({kind:"choice",index:M,label:je.label}):void 0}return}if(d.phase==="budget"){if(x==="n")return o();if(x==="c"){e.continueAfterBudget();return}if(x==="k"&&e.canCompact){e.compactAfterBudget();return}return}if(d.phase==="cycle-ceiling"){if(x==="n"||v.escape){e.stopCycleCeiling();return}if(x==="c"){e.continueCycleCeiling();return}return}if(d.pendingUnsafeConfirm===!0){if(x==="s"||x==="y"){e.confirmUnsafe();return}if(x==="n"||v.escape){e.cancelUnsafe();return}return}if(d.phase==="stuck")if(E){if(v.escape){C(!1);return}if(v.return&&!v.shift){let S=g.text;b({text:"",cursor:0}),C(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){C(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(xte(d.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),Bt();return}if(d.phase==="thinking"||d.phase==="streaming"||d.phase==="retrying"){if(v.ctrl&&x==="t"){K(null),Rt(0),it(!0);return}if(le){if(v.upArrow){me(D=>Math.max(0,D-1));return}if(v.downArrow){me(D=>Math.min(ce.length-1,D+1));return}if(v.escape){he(!1),me(0);return}if(v.tab){let D=ce[se];if(D){let J=ag(D);oe(J),$e(J)}return}if(v.return&&!v.shift){let D=ce[se];if(D&&D.kind==="subcommand"&&kE(D)){he(!1),me(0);let J=G$(D);kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1);return}if(D&&D.kind==="subcommand"){let J=ag(D);oe(J),$e(J);return}if(he(!1),me(0),D){if(yE(D.command,"")){Oo(D.command,""),oe(""),ie(-1);return}let J=`/${D.command.name}`;kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1)}return}}if(v.ctrl&&x==="c"){e.interrupt(),Bt();return}if(v.escape){let D=Ce.current.length>0,J=e.current.pendingInjects.length>0,Ie=Tr(y).trim(),je=Ie!=="";if(D||J||je){let Mo=J;if(je){let qn=nU(Ie);qn.kind==="redirect"&&(e.injectInput("root",qn.inject),ue(Wn=>[...Wn,qn.inject]),Mo=!0),oe(""),ie(-1)}if(!d.cycleActive&&Ce.current.length>0){let qn=[];for(let Wn of Ce.current)Re(Wn)?Mo=!0:qn.push(Wn);ct(qn)}Mo&&e.expedite();return}e.interrupt(),Bt();return}if(v.return&&v.ctrl||!v.return&&x===`
|
|
687
|
+
`)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var ate,$A=p(()=>{"use strict";P();Ed();Yr();MA();LA();FA();IA();ate="-".repeat(12)});import{useEffect as To,useState as tt,useReducer as lte,useCallback as Jt,useMemo as i2,useRef as Qo}from"react";import{Box as ae,Static as cte,Text as a2,useApp as ute,useInput as dte,useStdin as mte,useStdout as fte}from"ink";import{Fragment as u2,jsx as R,jsxs as fo}from"react/jsx-runtime";function d2(t){let{controller:e}=t,{exit:o}=ute(),{stdout:n}=fte(),r=Q(),{lang:s,t:i}=xe(),[,a]=lte(x=>x+1,0);To(()=>{if(!n||typeof n.on!="function")return;let x=()=>a();return n.on("resize",x),()=>{typeof n.off=="function"&&n.off("resize",x)}},[n]);let l=n?.columns??80,c=n?.rows??24,u=r.density!=="compact",m=r.density!=="compact",[d,h]=tt(e.current),[g,b]=tt({text:"",cursor:0}),y=g.text,w=g.cursor,[E,C]=tt(!1),[M,B]=tt(0),[q,Y]=tt(()=>new Set),[z,U]=tt(!1),[Z,te]=tt(""),ee=d.phase==="questioning"?d.pendingQuestion?.spec:void 0,L=Qo(void 0);To(()=>{ee!==L.current&&(L.current=ee,B(0),Y(new Set),te(""),U(ee?.kind==="text"))},[ee]);let[j,Te]=tt(0),[le,he]=tt(!1),[se,me]=tt(0),[O,ue]=tt([]),[V,ie]=tt(-1),[be,ct]=tt([]),Ce=Qo([]),Xe=Qo(0);Ce.current=be,be.length===0&&(Xe.current=0);let kt=Jt(x=>{Ce.current=[...Ce.current,x],ct(v=>[...v,x])},[]),Bt=Jt(()=>{Ce.current=[],ct([]),Xe.current=0},[]),[vt,it]=tt(!1),[Ut,Rt]=tt(0),[I,K]=tt(null),[_e,Se]=tt(t.initialSplitView===!0),[Ne,Pe]=tt(!1),[X,H]=tt("chat"),[de,jt]=tt(()=>new Set),[Sr,_o]=tt(0),[k,po]=tt(!1),[Ot,xt]=tt(t.initialFullscreen===!0),[as,Bl]=tt("conversa"),[ls,cs]=tt(0),[wr,Ul]=tt(!1),Er=Qo(void 0),Zt=Qo(void 0),Ht=Qo(!1),qt=Qo(void 0),Zo=Jt(()=>{Zt.current!==void 0&&(clearTimeout(Zt.current),Zt.current=void 0),Er.current=void 0,Ul(!1)},[]);To(()=>()=>{Zt.current!==void 0&&clearTimeout(Zt.current),qt.current!==void 0&&clearTimeout(qt.current)},[]);let jo=Nh(d.meta.label),us=y.length===0?1:Vo(y,l>jo?l-jo:l),xn=Math.max(3,Math.floor(c/3)),oi=Math.max(0,Math.min(us,xn)-1),W=Ot?e.flowOverview():[],pe=Ot?SA(W,x=>e.drillInFlow(x),{collapsed:de,errorsOnly:k}).sections:[],ho=W.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,Wt=Ot?$g(d.blocks).startupNotes:[],Ro=Wt.length>0?1+Wt.reduce((x,v)=>x+1+v.lines.length,0):0,jn=Ot?{lines:pU(pe)+Ro,hasActivity:pe.length>0||Ro>0,activeAgents:ho,focused:as==="log"}:void 0,en=ei(c,l,us,jn),la=Ot&&en.kind==="cockpit",tn=dU(l,_e),go=tn.layout,jl=go==="side"||go==="tabs"&&X==="log",ca=jl&&Ne,ge=MB({fileIndex:t.fileIndex??pte,attachReader:t.attachReader??hte}),$=FB({catalog:t.catalog??gte,...t.customModels?{customModels:t.customModels}:{},currentTier:d.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),yo=$B(t.permissionControl??vte),ua=t.currentTheme??Oi(r.brightness),Je=HB({currentTheme:ua}),Hl=t.currentLang??s,Mt=zB({currentLang:Hl}),da=(d.meta.provider??"")!==""?d.meta.provider:t.currentProvider,At=VB({...da!==void 0?{currentProvider:da}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Em=i2(()=>z$(Xo,i),[i]),Gt=JB({store:t.sessionStore??yte}),ql=t.rewindSource??bte,Fe=ZB({source:ql}),ma=i2(()=>Fe.target?ql.barriersAfter(Fe.target.id):[],[Fe.target,ql]),ot=tU({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Em}),Wl=t.syncActive??!0,Zg=sU(d.phase,Wl)||Ste(d.blocks),ni=dm({enabled:r.animate&&Zg}),A=iU(d.phase);dm({enabled:A,intervalMs:1e3}),To(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),To(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(ei(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{xt(!1);let v=ei(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let N=Qo(t.initialFullscreen===!0&&en.kind==="cockpit"),Ee=Qo(t.initialFullscreen===!0);To(()=>{let x=Ee.current!==Ot;if(Ee.current=Ot,!Ot){N.current=!1;return}let v=en.kind==="cockpit";if(x){N.current=v;return}let S=N.current;if(S&&!v){t.cockpitScreen?.leave();let D=en.kind==="refuse"&&en.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[D])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();N.current=v},[c,l,Ot]);let{stdin:T}=mte();To(()=>{if(!T)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),Bt();return}let D=EN(S);D==="home"?b(J=>({...J,cursor:0})):D==="end"&&b(J=>({...J,cursor:J.text.length}))};return T.on("data",x),()=>{T.removeListener("data",x)}},[T,e,Bt,b]),To(()=>{if(d.phase!=="boot")return;let x=t.bootMs??900;if(x<=0)return;let v=setTimeout(()=>e.dismissBoot(),x);return()=>clearTimeout(v)},[d.phase,e,t.bootMs]),To(()=>{d.phase!=="stuck"&&E&&C(!1)},[d.phase,E]);let _=t.userCommands??[],G=y.startsWith("/")?y.slice(1):"",ce=Y$(G,_,Em),oe=Jt((x,v)=>{b({text:x,cursor:_t(x,v??x.length)})},[]),$e=Jt(x=>{he(xE(x,t.userCommands??[])),me(0)},[t.userCommands]),Qe=Jt(()=>{Ng("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),Te(x=>x+1)},[n]),at=t.registerClearScreen;To(()=>{at?.(Qe)},[at,Qe]),To(()=>{Ng(`slashOpen=${le} (rows=${c} cols=${l})`)},[le,c,l]);let on=Qo({rows:c,columns:l});To(()=>{if(Ot){on.current={rows:c,columns:l};return}let x=on.current;if(x.rows===c&&x.columns===l)return;Ng(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),on.current={rows:c,columns:l};let v=setTimeout(()=>Qe(),90);return()=>clearTimeout(v)},[c,l,Ot,Qe]);let Sn=Jt(()=>{Se(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(Pe(!1),H("chat")),v})},[t]),Ar=Jt(()=>{xt(x=>{let v=!x,S=ei(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let D=ei(c,l),J=D.kind==="refuse"&&D.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[J])}else t.cockpitScreen?.leave(),Qe(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Bl("conversa"),cs(0),_o(0)},[t,e,i,c,l,Qe]),Oo=Jt((x,v)=>{if(x.id==="split"){Sn();return}if(x.id==="fullscreen"){Ar();return}if(x.id==="export"){t.onExportTranscript?t.onExportTranscript().then(S=>{e.pushNote("export",S.ok&&S.path?[`transcript exportado (redigido) \u2192 ${S.path}`]:[S.error??"export indispon\xEDvel"])}):e.replaceNote("export",["export indispon\xEDvel nesta sess\xE3o."]);return}if(x.id==="model"&&v.trim()===""&&d.meta.backend==="local"){e.replaceNote("model-local",["Backend LOCAL (BYO): os tiers do broker n\xE3o se aplicam aqui.","O modelo vem do seu provider \u2014 troque com /provider, ou defina ALUY_LOCAL_MODEL / --model."]);return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){$.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){yo.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){Gt.openPicker();return}Qe(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Fe.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Je.openPicker();return}let D=qr(S);if(D){t.onSelectTheme(D.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){Mt.openPicker();return}let D=Ds(S);if(D){t.onSelectLang(D.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){At.openPicker();return}let D=Lg(S,At.providers);if(D){t.onSelectProvider(D.name);return}}t.onCommand?.(x,v)},[t,$,yo,Je,Mt,At,Gt,Fe,Qe,Sn]),ey=Jt(x=>{if(x.action.kind==="command"){Oo(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[Oo,e]),Ae=Jt(x=>{cs(0),_o(0);let v=Dl(x,_);if(v.kind==="goal"){if(v.text!==""){if(Ui(v.text).length>0&&t.attachReader){let D=ge.attachments.map(J=>J.item);km(v.text,t.attachReader).then(({goal:J,items:Ie})=>{if(J===""&&Ie.length===0){ge.clear();return}let je=[...D,...Ie],Mo=J!==""?J:v.text;ue(qn=>[...qn,Mo]),e.submit(Mo,je),ge.clear()});return}let S=ge.attachments.map(D=>D.item);ue(D=>[...D,v.text]),e.submit(v.text,S),ge.clear()}return}if(v.kind==="command"){Oo(v.command,v.args);return}if(v.kind==="bang"){ue(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,_,ge,Oo,t.attachReader]),Re=Jt(x=>{let v=Dl(x,_);return v.kind!=="goal"||v.text===""||ge.attachments.length>0||Ui(v.text).length>0?!1:e.injectInput("root",v.text)},[e,_,ge]),Cr=Jt(x=>{let v=Dl(x,_);return v.kind!=="command"||!yE(v.command,v.args)?!1:(Oo(v.command,v.args),!0)},[_,Oo]),ri=Jt(x=>{if(Ce.current.length>0){kt(x);return}let v=Dl(x,_),S=v.kind==="goal"?v.text:"";if(cU({subagentsRunning:c2(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:ge.attachments.length>0||S!==""&&Ui(S).length>0})){Re(x);return}!Re(x)&&!Cr(x)&&kt(x)},[kt,Re,Cr,e,_,ge]),si=Qo();si.current||(si.current=XI());let Dr=Qo();Dr.current||(Dr.current=AU());let Tr=Jt(x=>{let v=_U(x,Dr.current);return Dr.current.reset(),v},[]),Am=Jt(x=>{let v=TU(x,Dr.current,"backward");return v.handled?(v.removedId!==void 0&&Dr.current.remove(v.removedId),v.state):Fw(x)},[]),nn=Qo({open:!1}),wn=Jt(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),ge.dismissNotice();let v=EU(x);b(S=>{let D=v?CU(S,x,Dr.current):Gi(S,x);return $e(D.text),ii(D.text),D}),ie(-1)},[e,ge,$e]);To(()=>{if(!T)return;let x=si.current,v=S=>{let D=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!D.includes("\x1B[20"))return;let J=x.feed(D);for(let Ie of J)Ie.kind==="paste"&&wn(Ie.text)};return T.on("data",v),()=>{T.removeListener("data",v)}},[T,wn]);let Gl=ge.open||$.open||yo.open||Je.open||Mt.open||At.open||Gt.open||Fe.open||ot.open,Ho=nF({...d,anyPickerOpen:Gl});To(()=>{if(!Ho||be.length===0)return;let x=be[0]??"",v=Dl(x,_);if(v.kind==="command"&&v.command.id==="clear"){Bt(),Ae(x);return}ct(S=>S.slice(1)),Ae(x)},[Ho,be,Ae,_,Bt]),To(()=>{if(Ho||be.length===0||d.phase!=="thinking"&&d.phase!=="streaming")return;let x=0;for(let v of be){if(!Re(v))break;x+=1}x>0&&ct(v=>v.slice(x))},[Ho,be,d.phase,Re]),dte((x,v)=>{if(!VI(nn.current,x)&&!kU(x)){if(d.phase==="boot"){if(v.ctrl&&x==="c"){o();return}if(x&&!v.ctrl&&!v.meta){e.dismissBoot();let S=x.search(/[\r\n]/);S!==-1?Ae(y+x.slice(0,S)):b(D=>{let J=D.text+x;return he(xE(J,t.userCommands??[])),{text:J,cursor:J.length}});return}e.dismissBoot();return}if(la&&!le&&!ge.open&&!ot.open&&d.phase!=="asking"){if(v.tab&&!v.shift){Bl(D=>D==="conversa"?"log":"conversa");return}if(v.ctrl&&(x==="s"||x==="")){t.onExportTranscript?t.onExportTranscript().then(D=>{D.ok&&D.path?e.pushNote("export",[`${i("cockpit.exported")} ${D.path}`]):e.pushNote("export",[D.error??"export indispon\xEDvel"])}):e.pushNote("export",["export indispon\xEDvel nesta sess\xE3o"]);return}let S=en.kind==="cockpit"?en:void 0;if(S){let D=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(D!==void 0){if(as==="conversa"){let J=Math.max(1,Math.round((S.regions.conversaRows-1)/4)),Ie=D==="up"?1:D==="down"?-1:D==="pageUp"?J:-J;cs(je=>Math.min(Math.max(0,je+Ie),Math.max(0,d.blocks.length-1)))}else{let J=Math.max(1,S.regions.logRows-1);_o(Ie=>bU(D,Ie,pe.length+1,J))}return}}}if(!vt){if(v.ctrl&&x==="l"){_e&&go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Sn();return}if(v.tab&&!v.shift&&jl){go==="tabs"?(H(S=>S==="chat"?"log":"chat"),Pe(S=>!S)):Pe(S=>!S);return}if(ca){if(v.escape){Pe(!1);return}if(v.upArrow){_o(S=>S+1);return}if(v.downArrow){_o(S=>Math.max(0,S-1));return}if(v.pageUp){_o(S=>S+aa);return}if(v.pageDown){_o(S=>Math.max(0,S-aa));return}if(v.return){jt(S=>{let D=new Set(S);return D.has("root")?D.delete("root"):D.add("root"),D});return}if(x==="e"&&!v.ctrl&&!v.meta){po(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(vt){if(I){if(v.escape||v.return){K(null);return}if(x==="p"){e.cancelFlow(I);return}if(x==="i"){y.trim()!==""&&(e.injectInput(I,y),oe(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){it(!1);return}if(v.upArrow){Rt(D=>Math.max(0,D-1));return}if(v.downArrow){Rt(D=>Math.min(Math.max(0,S.length-1),D+1));return}if(v.return){let D=S[Math.min(Ut,S.length-1)];D&&K(D.id);return}if(x==="p"){let D=S[Math.min(Ut,S.length-1)];D&&e.cancelFlow(D.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let D=S[Math.min(Ut,S.length-1)];D&&y.trim()!==""&&(e.injectInput(D.id,y),oe(""));return}return}if(d.phase==="asking"&&d.pendingAsk){let S=d.pendingAsk.request.alwaysAsk;if(x==="a")return e.resolveAsk({kind:"approve-once"});if(x==="s"&&S===!1)return e.resolveAsk({kind:"approve-session"});if(x==="n")return e.resolveAsk({kind:"deny",reason:"negado pelo usu\xE1rio"});if(v.escape){let D=Date.now(),J=Ce.current.length>0,Ie=D-Xe.current<500;e.resolveAsk({kind:"deny",reason:"cancelado (esc)"}),Ie&&!J&&(e.interrupt(),Bt()),Xe.current=J?0:D;return}return x==="e"?e.resolveAsk({kind:"deny",reason:"editar (n\xE3o aplicado)"}):void 0}if(d.phase==="questioning"&&d.pendingQuestion){let S=d.pendingQuestion.spec,D=S.options??[],J=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(z&&S.kind!=="text"){U(!1),te("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(z){if(v.return){let je=Z.trim();return je===""?void 0:e.resolveQuestion({kind:"text",text:je})}if(v.backspace||v.delete){te(je=>je.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){te(je=>je+x);return}return}let Ie=D.length-1;if(v.upArrow){B(je=>je===fr?Ie:je<=0?J?fr:Ie:je-1);return}if(v.downArrow){B(je=>je===fr?0:je>=Ie?J?fr:0:je+1);return}if(S.kind==="multi"&&x===" "&&M!==fr&&M>=0){Y(je=>{let Mo=new Set(je);return Mo.has(M)?Mo.delete(M):Mo.add(M),Mo});return}if(v.return){if(M===fr){U(!0);return}if(S.kind==="multi"){let Mo=[...q].sort((Wn,l8)=>Wn-l8),qn=Mo.map(Wn=>D[Wn]?.label??"").filter(Wn=>Wn!=="");return e.resolveQuestion({kind:"choices",indices:Mo,labels:qn})}let je=D[M];return je?e.resolveQuestion({kind:"choice",index:M,label:je.label}):void 0}return}if(d.phase==="budget"){if(x==="n")return o();if(x==="c"){e.continueAfterBudget();return}if(x==="k"&&e.canCompact){e.compactAfterBudget();return}return}if(d.phase==="cycle-ceiling"){if(x==="n"||v.escape){e.stopCycleCeiling();return}if(x==="c"){e.continueCycleCeiling();return}return}if(d.pendingUnsafeConfirm===!0){if(x==="s"||x==="y"){e.confirmUnsafe();return}if(x==="n"||v.escape){e.cancelUnsafe();return}return}if(d.phase==="stuck")if(E){if(v.escape){C(!1);return}if(v.return&&!v.shift){let S=g.text;b({text:"",cursor:0}),C(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){C(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(xte(d.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),Bt();return}if(d.phase==="thinking"||d.phase==="streaming"||d.phase==="retrying"){if(v.ctrl&&x==="t"){K(null),Rt(0),it(!0);return}if(le){if(v.upArrow){me(D=>Math.max(0,D-1));return}if(v.downArrow){me(D=>Math.min(ce.length-1,D+1));return}if(v.escape){he(!1),me(0);return}if(v.tab){let D=ce[se];if(D){let J=ag(D);oe(J),$e(J)}return}if(v.return&&!v.shift){let D=ce[se];if(D&&D.kind==="subcommand"&&kE(D)){he(!1),me(0);let J=G$(D);kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1);return}if(D&&D.kind==="subcommand"){let J=ag(D);oe(J),$e(J);return}if(he(!1),me(0),D){if(yE(D.command,"")){Oo(D.command,""),oe(""),ie(-1);return}let J=`/${D.command.name}`;kt(J),ue(Ie=>[...Ie,J]),oe(""),ie(-1)}return}}if(v.ctrl&&x==="c"){e.interrupt(),Bt();return}if(v.escape){let D=Ce.current.length>0,J=e.current.pendingInjects.length>0,Ie=Tr(y).trim(),je=Ie!=="";if(D||J||je){let Mo=J;if(je){let qn=nU(Ie);qn.kind==="redirect"&&(e.injectInput("root",qn.inject),ue(Wn=>[...Wn,qn.inject]),Mo=!0),oe(""),ie(-1)}if(!d.cycleActive&&Ce.current.length>0){let qn=[];for(let Wn of Ce.current)Re(Wn)?Mo=!0:qn.push(Wn);ct(qn)}Mo&&e.expedite();return}e.interrupt(),Bt();return}if(v.return&&v.ctrl||!v.return&&x===`
|
|
688
688
|
`&&!v.ctrl&&!v.meta){let D=Tr(y).trim();D!==""&&(e.injectInput("root",D),oe(""),ue(J=>[...J,D]),ie(-1));return}if(v.return&&v.shift){b(D=>Gi(D,`
|
|
689
689
|
`));return}if(v.return){let D=Tr(y).trim();D!==""&&(ri(D),ue(J=>[...J,D]),oe(""),ie(-1));return}if(v.backspace||v.delete){if(y===""&&be.length>0){ct(D=>D.slice(0,-1));return}b(D=>{let J=Am(D);return $e(J.text),J});return}if(v.leftArrow){b(D=>({...D,cursor:v.meta?Ud(D):Iw(D)}));return}if(v.rightArrow){b(D=>({...D,cursor:v.meta?qh(D):Nw(D)}));return}if(v.ctrl&&x==="a"){b(D=>({...D,cursor:0}));return}if(v.ctrl&&x==="e"){b(D=>({...D,cursor:D.text.length}));return}if(x&&!v.ctrl&&!v.meta){if(x.search(/[\r\n]/)!==-1){b(D=>{let J=Bd(D,x),Ie=Tr(J.state.text).trim();return Ie!==""&&(J.newline===`
|
|
690
690
|
`?e.injectInput("root",Ie):ri(Ie),ue(je=>[...je,Ie])),ie(-1),{text:"",cursor:0}}),he(!1),me(0);return}b(D=>{let J=Bd(D,x).state;return $e(J.text),J});return}return}if(d.phase==="error"){if(v.escape){e.dismissError(),Qe();return}if((x==="r"||x==="R")&&!v.ctrl&&!v.meta){e.retryLastGoal(),Qe();return}if(!(v.ctrl&&x==="c"))return}if(ot.open){if(v.escape){ot.closePalette();return}if(v.upArrow){ot.move(-1);return}if(v.downArrow){ot.move(1);return}if(v.return){let S=ot.confirm();S&&ey(S);return}if(v.backspace||v.delete){ot.setQuery(ot.query.slice(0,-1));return}if(v.ctrl&&(x==="p"||x==="x"||x==="c")){ot.closePalette();return}x&&!v.ctrl&&!v.meta&&ot.setQuery(ot.query+x);return}if($.open){if($.effortStepOpen){if($.effortCustomOpen){if(v.escape){$.backFromEffort();return}if(v.return){let S=$.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.backspace||v.delete){$.backspaceEffortCustom();return}x&&!v.ctrl&&!v.meta&&$.appendEffortCustom(x);return}if(v.upArrow){$.effortMove(-1);return}if(v.downArrow){$.effortMove(1);return}if(v.return||v.tab){let S=$.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.escape){$.backFromEffort();return}return}if($.customInputOpen){if(v.escape){$.closePicker();return}if(v.upArrow){$.browseMove(-1);return}if(v.downArrow){$.browseMove(1);return}if(v.return){$.confirm();return}if(v.backspace||v.delete){$.backspaceCustom();return}if(v.ctrl&&x==="t"){$.toggleToolsOnly();return}x&&!v.ctrl&&!v.meta&&$.appendCustom(x);return}if(v.upArrow){$.move(-1);return}if(v.downArrow){$.move(1);return}if(v.return||v.tab){$.confirm();return}if(v.escape){$.closePicker();return}return}if(yo.open){if(v.upArrow){yo.move(-1);return}if(v.downArrow){yo.move(1);return}if(v.return){yo.act();return}if(v.escape){yo.closePanel();return}return}if(Je.open){if(v.upArrow){Je.move(-1);return}if(v.downArrow){Je.move(1);return}if(v.return||v.tab){let S=Je.confirm();S&&t.onSelectTheme?.(S);return}if(v.escape){Je.closePicker();return}return}if(Mt.open){if(v.upArrow){Mt.move(-1);return}if(v.downArrow){Mt.move(1);return}if(v.return||v.tab){let S=Mt.confirm();S&&t.onSelectLang?.(S);return}if(v.escape){Mt.closePicker();return}return}if(At.open){if(v.upArrow){At.move(-1);return}if(v.downArrow){At.move(1);return}if(v.return||v.tab){let S=At.confirm();S&&t.onSelectProvider?.(S);return}if(v.escape){At.closePicker();return}return}if(Gt.open){if(v.upArrow){Gt.move(-1);return}if(v.downArrow){Gt.move(1);return}if(v.return||v.tab){let S=Gt.confirm();S&&(Qe(),t.onResumeSession?.(S));return}if(v.escape){Gt.closePicker();return}return}if(Fe.open){if(v.upArrow){Fe.move(-1);return}if(v.downArrow){Fe.move(1);return}if(v.return){let S=Fe.confirm();S&&t.onRewind?.(S);return}if(v.escape){Fe.back();return}return}if(le){if(v.upArrow){me(S=>Math.max(0,S-1));return}if(v.downArrow){me(S=>Math.min(ce.length-1,S+1));return}if(v.return||v.tab){let S=ce[se];if(S===void 0){if(v.return){let D=y.trim().split(/\s+/)[0]??"";oe(""),he(!1),me(0),e.replaceNote("slash-unknown",[`comando desconhecido: ${D||"/"} \u2014 veja /help para a lista.`])}return}if(S){let D=S.kind==="command"&&S.command.subcommands!==void 0&&S.command.subcommands.length>0;if(S.kind==="subcommand"&&kE(S)&&v.return){oe(""),he(!1),me(0),Oo(S.parent,S.sub.name);return}if(S.kind==="subcommand"||D&&v.tab){let J=ag(S);oe(J),$e(J);return}oe(""),he(!1),me(0),Oo(S.command,"")}return}if(v.escape){he(!1),me(0);return}}if(ge.open){if(v.upArrow){ge.move(-1);return}if(v.downArrow){ge.move(1);return}if(v.return||v.tab){ge.confirm(),oe(XS(y));return}if(v.escape){ge.closePicker();return}}if(v.ctrl&&x==="c"){let S=Date.now(),D=Er.current!==void 0&&S-Er.current<=$w,J=ge.attachments.length>0,Ie=J&&y.trim()===""?"clear":AN(y,D);if(Ie==="clear"){oe(""),J&&ge.clear(),Zo();return}if(Ie==="exit"){Zo(),o();return}Er.current=S,Ul(!0),Zt.current!==void 0&&clearTimeout(Zt.current),Zt.current=setTimeout(Zo,$w);return}if(wr&&Zo(),v.escape){if(t.rewindSource!==void 0&&t.onRewind!==void 0&&y===""){if(Ht.current){Ht.current=!1,qt.current!==void 0&&clearTimeout(qt.current),Fe.openPicker();return}Ht.current=!0,qt.current!==void 0&&clearTimeout(qt.current),qt.current=setTimeout(()=>{Ht.current=!1},600);return}Ht.current=!1}else Ht.current&&(Ht.current=!1,qt.current!==void 0&&clearTimeout(qt.current));if(v.ctrl&&(x==="p"||x==="x")&&!le&&!ge.open){ot.openPalette();return}if(v.tab&&!le){e.cycleMode();return}if(!le&&v.upArrow&&O.length>0){let S=V<0?O.length-1:Math.max(0,V-1);ie(S),oe(O[S]??"");return}if(!le&&v.downArrow&&V>=0){let S=V+1;S>=O.length?(ie(-1),oe("")):(ie(S),oe(O[S]??""));return}if(v.leftArrow){b(S=>({...S,cursor:v.meta?Ud(S):Iw(S)}));return}if(v.rightArrow){b(S=>({...S,cursor:v.meta?qh(S):Nw(S)}));return}if(v.meta&&(x==="b"||x==="f")){b(S=>({...S,cursor:x==="b"?Ud(S):qh(S)}));return}if(v.ctrl&&x==="a"){b(S=>({...S,cursor:0}));return}if(v.ctrl&&x==="e"){b(S=>({...S,cursor:S.text.length}));return}if(v.ctrl&&(x==="u"||x==="k"||x==="w")){b(S=>{let D=x==="u"?xN(S):x==="k"?SN(S):wN(S);return $e(D.text),D}),ie(-1);return}if(v.return&&v.shift){b(S=>Gi(S,`
|