@hiperplano/aluy-cli 1.0.0-rc.19 → 1.0.0-rc.20
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 +210 -210
- package/dist-bundle/index.js +3 -3
- package/package.json +1 -1
package/dist-bundle/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var yN=Object.defineProperty;var S=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var jf=(t,e)=>{for(var o in e)yN(t,o,{get:e[o],enumerable:!0})};var ca,vx=S(()=>{"use strict";ca="1.0.0-rc.
|
|
1
|
+
var yN=Object.defineProperty;var S=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var jf=(t,e)=>{for(var o in e)yN(t,o,{get:e[o],enumerable:!0})};var ca,vx=S(()=>{"use strict";ca="1.0.0-rc.20"});function Pn(t,e){return t.decide(e)}var jr=S(()=>{"use strict"});var en,Nn,In=S(()=>{"use strict";en="remember",Nn="recall"});var Hf,bN,qs,qf=S(()=>{"use strict";Hf=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}}},bN=200,qs=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??bN,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 Hf(e,o,n,r??null,i);if(r){let c=this.nodes.get(r);c&&c.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,c=r.closed?0:1;return a!==c?a-c: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 sd(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 Sx(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"&&vN.has(i.status)&&(n=i.status),e){let c=i.substeps??i.subtasks??i.subpassos??i.children;if(Array.isArray(c)&&c.length>0){let l=[];for(let d of c){let f=Sx(d,!1);if(typeof f=="string")return f;l.push(f)}r=l}}}if(o===void 0||o.trim()==="")return xN;let s=o.trim().slice(0,kN);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function SN(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=Sx(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 c=`${i} #${a}`;if(!n.has(c))return n.add(c),c}};for(let i=0;i<o.length;i++){let a=o[i],c=r(a.title),l=a.substeps?.map(d=>({...d,title:r(d.title)}));o[i]=l!==void 0?{...a,title:c,substeps:l}:{...a,title:c}}let s=sd(o).length;return s>kx?{error:`update_plan: no m\xE1ximo ${kx} passos (recebidos ${s}).`}:{steps:o}}function wN(t){let e=sd(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${wx[r.step.status]} ${r.step.title}`).join(`
|
|
2
2
|
`);return`plano (${o}/${e.length}):
|
|
3
3
|
${n}`}function EN(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function TN(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,c)=>{let l=i.status==="in_progress"?"curto":c,d=o.get(i.title),f=d??qs.boxId(i.title,0);return d?(i.status!=="completed"&&e.isClosed(d)&&e.reopenBox(d),e.setHorizon(d,l),e.setParent(d,a)):e.openBox(f,l,i.title,a),i.status==="completed"&&!e.isClosed(f)&&e.closeBox(f),o.set(i.title,f),f};t.forEach((i,a)=>{let c=EN(a,n),l=r(i,null,c);for(let d of i.substeps??[])r(d,l,c)});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 _N(t,e){if(!e)return wN(t);let o=new Map;for(let l of e.listBoxes())o.set(l.label,l);let n=new Map;for(let l of e.listBoxes())n.set(l.id,l);let r=new Map,s=(l,d=new Set)=>{let f=r.get(l);if(f!==void 0)return f;let u=n.get(l);if(!u||!u.parentId||d.has(l))return r.set(l,0),0;let p=s(u.parentId,new Set(d).add(l))+1;return r.set(l,p),p},i=sd(t),c=[`plano (${i.filter(l=>l.step.status==="completed").length}/${i.length}):`];for(let{step:l,depth:d}of i){let f=o.get(l.title),u=f?AN[f.horizon]:"",p=f?s(f.id):d,h=" ".repeat(p),y=wx[l.status];c.push(`${h}${u} ${y} ${l.title}`)}return c.join(`
|
|
4
4
|
`)}var la,vN,kx,kN,xN,wx,AN,xx,RN,Ax,id=S(()=>{"use strict";qf();la="update_plan";vN=new Set(["pending","in_progress","completed"]),kx=30,kN=120,xN="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";wx={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};AN={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};xx=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),RN=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:xx,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:xx},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),Ax={name:la,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:RN,async run(t,e){let o=SN(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&TN(o.steps,e.graph),e.plan&&e.plan.set(sd(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:_N(o.steps,e.graph)})}}});function Ex(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)?ON(s):void 0;if(typeof i=="string")return{error:i};let a,c=t.kind??t.type;if(typeof c=="string"&&CN.has(c))a=c;else{if(typeof c=="string"&&c.trim()!=="")return{error:`perguntar: "kind" inv\xE1lido "${c}". 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 l=t.allowOther!==!1;return{spec:{kind:a,question:o,...r!==void 0?{header:r}:{},...a!=="text"&&i!==void 0?{options:i}:{},...a!=="text"?{allowOther:l}:{}}}}function ON(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 MN(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(`
|
|
@@ -135,7 +135,7 @@ ${t.trim()}`}}function kT(t,e,o=gc){let{older:n,recent:r}=Ru(t,o);if(n.length===
|
|
|
135
135
|
\u2026[truncado: ${t.length-Py} chars omitidos]`}function yB(t){return t.length<=Iy?t:`${t.slice(0,Iy)}\u2026`}function n_(t){let e=o_(t.server,t.descriptor.name),o=yB(t.descriptor.description.trim()),n=`[tool de um SERVER MCP de terceiro "${t.server}" \u2014 efeito n\xE3o-confi\xE1vel, passa pela catraca] ${o||"(sem descri\xE7\xE3o)"}`,r=t.descriptor.inputSchema,s=r!==null&&typeof r=="object"&&!Array.isArray(r)?r:void 0;return{name:e,effect:"mcp",description:n,...s?{parameters:s}:{},async run(i,a,c){try{let l=await t.transport.callTool(t.descriptor.name,i,c?.signal),d=Ue(l.content);return l.ok?{ok:!0,observation:t_(d),display:`${e}(${bB(i)})`}:{ok:!1,observation:t_(`MCP "${e}" erro: ${d}`)}}catch(l){return{ok:!1,observation:`MCP "${e}" falhou: ${l instanceof Error?l.message:String(l)}`}}}}}function Dy(t,e){let o=[],n=new Set,r=new Map,s=new Map,i=new Set;for(let a of t){let c=n_(a);if(n.has(c.name))continue;n.add(c.name);let l=a.server;s.set(l,(s.get(l)??0)+1);let d=r.get(l)??0;if(d>=Ny){i.add(l);continue}r.set(l,d+1),o.push(c)}if(e)for(let a of i){let c=s.get(a)??0;e(`server MCP "${a}" exp\xF4s ${c} tools; usando as primeiras ${Ny} (teto por server, anti-estouro de contexto). As demais foram ignoradas \u2014 revise o server ou reduza as tools que ele exp\xF5e.`)}return o}function bB(t){if(Object.keys(t).length===0)return"";let o=JSON.stringify(t);return o.length<=200?o:`${o.slice(0,200)}\u2026`}var Py,Ny,Iy,r_=S(()=>{"use strict";ld();Un();Py=2e4;Ny=128,Iy=1024});function a_(t,e){let o=new URL(i_);return t.trim().length>0&&o.searchParams.set("search",t.trim()),o.searchParams.set("limit",String(kB)),e!==void 0&&e.length>0&&o.searchParams.set("cursor",e),o.toString()}async function Fy(t,e,o){let n=t.trim(),r=[],s;for(let i=0;i<vB;i++){let a=a_(n,s),c;try{c=await e(a,o)}catch(f){return{ok:!1,query:n,reason:$u(TB(f))}}if(!c.ok)return{ok:!1,query:n,reason:$u(c.reason)};if(c.status<200||c.status>=300)return{ok:!1,query:n,reason:$u(`HTTP ${c.status}`)};let l;try{l=JSON.parse(c.body)}catch{return{ok:!1,query:n,reason:$u("resposta n\xE3o \xE9 JSON v\xE1lido")}}let d=l_(l);for(let f of d.servers)if(c_(f,n)&&r.push(f),r.length>=$y)break;if(r.length>=$y||(s=d.nextCursor,s===void 0||s.length===0))break}return{ok:!0,query:n,results:r}}function $u(t){return`registro MCP indispon\xEDvel (${bi}): ${t}`}function c_(t,e){if(e.length===0)return!0;let o=e.toLowerCase();return[t.name,t.title??"",t.description,t.run.command??"",t.run.args.join(" ")].join(" ").toLowerCase().includes(o)}function l_(t){if(!Wn(t))return{servers:[]};let e=Array.isArray(t.servers)?t.servers:[],o=[];for(let s of e){let i=xB(s);i!==void 0&&o.push(i)}let n=Wn(t.metadata)?t.metadata:void 0,r=n!==void 0&&typeof n.nextCursor=="string"?n.nextCursor:void 0;return{servers:o,...r!==void 0?{nextCursor:r}:{}}}function xB(t){if(!Wn(t))return;let e=Wn(t.server)?t.server:t,o=typeof e.name=="string"?e.name.trim():"";if(o.length===0)return;let n=typeof e.description=="string"?e.description.trim():"",r=typeof e.title=="string"&&e.title.trim().length>0?e.title.trim():void 0,s=typeof e.version=="string"?e.version.trim():void 0,i=SB(e);return{name:o,description:n,run:i,...r!==void 0?{title:r}:{},...s!==void 0?{version:s}:{}}}function SB(t){let e=[],o=Array.isArray(t.remotes)?t.remotes:[];for(let r of o)Wn(r)&&typeof r.url=="string"&&e.push(r.url);let n=Array.isArray(t.packages)?t.packages:[];for(let r of n){if(!Wn(r))continue;let s=wB(r);if(s!==void 0)return{...s,remoteUrls:e}}return{args:[],env:[],remoteUrls:e}}function wB(t){let e=as(t.registryType)??as(t.registry_name),o=as(t.identifier)??as(t.name);if(o===void 0)return;let n=as(t.version),r=as(t.runtimeHint),s=Wn(t.transport)?as(t.transport.type):void 0,i=EB(t.environmentVariables),a=s_(t.runtimeArguments),c=s_(t.packageArguments),l=n!==void 0?`${o}@${n}`:o;return e==="npm"||r==="npx"?{command:"npx",args:AB(["-y",...a,l,...c]),env:i,...s!==void 0?{transport:s}:{}}:e==="pypi"||r==="uvx"||r==="uv"?{command:"uvx",args:[...a,o,...c],env:i,...s!==void 0?{transport:s}:{}}:e==="oci"||r==="docker"?{command:"docker",args:["run","-i","--rm",...a,l,...c],env:i,...s!==void 0?{transport:s}:{}}:{args:[l],env:i,...s!==void 0?{transport:s}:{}}}function AB(t){let e=[],o=!1;for(let n of t){if(n==="-y"||n==="--yes"){if(o)continue;o=!0}e.push(n)}return e}function s_(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)Wn(o)&&typeof o.value=="string"&&e.push(o.value);return e}function EB(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)Wn(o)&&typeof o.name=="string"&&o.name.length>0&&e.push({name:o.name,required:o.isRequired===!0});return e}function as(t){return typeof t=="string"&&t.trim().length>0?t.trim():void 0}function Wn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function TB(t){return t instanceof Error?t.message:String(t)}var bi,i_,vB,kB,$y,d_=S(()=>{"use strict";bi="registry.modelcontextprotocol.io",i_=`https://${bi}/v0/servers`,vB=5,kB=100,$y=25});function m_(t){let{command:e,args:o}=t.run;if(e===void 0)return;let n=f_(t.name);return["aluy","mcp","add",u_(n),"--",e,...o.map(u_)].join(" ")}function f_(t){let o=(t.split("/").pop()??t).replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");return o.length>0?o:"server"}function u_(t){return/^[A-Za-z0-9_./@:+=-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`}function By(t){if(!t.ok)return`\u26A0 ${t.reason}
|
|
136
136
|
Tente de novo em instantes; a busca no registro n\xE3o bloqueia o resto do aluy.`;if(t.results.length===0)return`nenhum server encontrado para "${t.query}" no registro oficial MCP.`;let e=[],o=t.results.length;e.push(`${o} server${o===1?"":"s"} para "${t.query}" (registro oficial MCP):`),e.push("");for(let n of t.results)e.push(_B(n)),e.push("");return e.push('Para instalar, copie a linha "\u2192 aluy mcp add \u2026" do server desejado.'),e.push("A sa\xEDda do registro \xE9 apenas informativa \u2014 nada \xE9 executado pela busca."),e.join(`
|
|
137
137
|
`)}function _B(t){let o=[`\u2022 ${t.version!==void 0?`${t.name} (v${t.version})`:t.name}`],n=t.title!==void 0&&t.title!==t.name?t.title:void 0;n!==void 0&&o.push(` ${n}`),t.description.length>0&&o.push(` ${RB(t.description,200)}`);let r=m_(t);if(r!==void 0){o.push(` \u2192 ${r}`),t.run.transport!==void 0&&t.run.transport!=="stdio"&&o.push(` (transporte "${t.run.transport}" \u2014 v1 do aluy s\xF3 pluga servers stdio LOCAIS)`);let s=t.run.env.filter(i=>i.required).map(i=>i.name);s.length>0&&o.push(` requer env: ${s.join(", ")} (defina por-server no mcp.json)`)}else t.run.remoteUrls.length>0?o.push(` (server REMOTO: ${t.run.remoteUrls.join(", ")} \u2014 fora do v1 de \`aluy mcp add\`)`):o.push(" (sem pacote local conhecido \u2014 nada a instalar pelo aluy)");return o.join(`
|
|
138
|
-
`)}function RB(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var p_=S(()=>{"use strict"});var h_=S(()=>{"use strict";Du();VT();XT();JT();QT();e_();r_();ld();d_();p_()});function Uy(t){let e=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(t.trim());if(!e)return null;let o=e[4]?e[4].split(".").map(n=>/^\d+$/.test(n)?Number(n):n):[];return{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),pre:o}}function g_(t,e){let o=Uy(t),n=Uy(e);if(!o||!n)return null;for(let s of["major","minor","patch"])if(o[s]!==n[s])return o[s]<n[s]?-1:1;if(o.pre.length===0&&n.pre.length===0)return 0;if(o.pre.length===0)return 1;if(n.pre.length===0)return-1;let r=Math.max(o.pre.length,n.pre.length);for(let s=0;s<r;s++){let i=o.pre[s],a=n.pre[s];if(i===void 0)return-1;if(a===void 0)return 1;if(i===a)continue;let c=typeof i=="number",l=typeof a=="number";return c&&l?i<a?-1:1:c?-1:l?1:i<a?-1:1}return 0}function jy(t,e){return g_(t,e)===1}var y_=S(()=>{"use strict"});var Hy=S(()=>{"use strict"});var b_=S(()=>{"use strict";Hy()});var v_=S(()=>{"use strict"});var k_=S(()=>{"use strict"});var x_=S(()=>{"use strict"});var j=S(()=>{"use strict";vx();jx();eS();vw();FT();zT();h_();ky();pu();y_();Hy();b_();v_();k_();x_()});import{posix as XU}from"node:path";function JU(t){return XU.normalize(t)}function Jt(t){let e=JU(t);for(let o of QU)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function ab(t){return Jt(t).kind==="allow"}var QU,xr=S(()=>{"use strict";QU=[{re:/(?:^|\/|~\/)\.ssh(?:\/|$)/,why:"chaves SSH (~/.ssh)",deny:!0},{re:/(?:^|\/|~\/)\.aws(?:\/|$)/,why:"credenciais AWS (~/.aws)",deny:!0},{re:/(?:^|\/|~\/)\.gnupg(?:\/|$)/,why:"chaves GPG (~/.gnupg)",deny:!0},{re:/(?:~\/|\$\{?HOME\}?\/|\/(?:home|Users)\/[^/]+\/)\.aluy\/rooms(?:\/|$)/,why:"arquivos de sala do Aluy (~/.aluy/rooms)",deny:!0},{re:/~\/\.aluy(?:\/|$)/,why:"estado/credencial do Aluy (~/.aluy)",deny:!0},{re:/(?:^|\/)\.aluy(?:\/(?!agents\/|workflows\/|commands\/)|$)/,why:"estado/credencial do Aluy (.aluy/)",deny:!0},{re:/(?:^|\/|~\/)\.config\/gh\/hosts\.yml$/,why:"token do gh CLI",deny:!0},{re:/(?:^|\/|~\/)\.docker\/config\.json$/,why:"credenciais Docker",deny:!0},{re:/(?:^|\/|~\/)\.kube\/config$/,why:"kubeconfig",deny:!0},{re:/(?:^|\/)id_(?:rsa|ed25519|ecdsa|dsa)\b/,why:"chave privada",deny:!0},{re:/\.pem$|\.p12$|\.pfx$|\.key$/i,why:"material de chave privada",deny:!0},{re:/(?:^|[/\w.-])\.env(?:\.(?!example$|sample$|template$|dist$)[\w.-]+)?$/,why:"arquivo .env (segredos)",deny:!1},{re:/(?:^|\/)[^/]*(?:secret|credential|token|apikey|api_key|password|passwd)[^/]*$/i,why:"arquivo com nome sens\xEDvel (token/secret)",deny:!1}]});var Ob={};jf(Ob,{UserWorkflowsLoader:()=>_i,WORKFLOWS_DIRNAME:()=>Cb});import{homedir as $H}from"node:os";import{join as Rb}from"node:path";import{readdirSync as FH,readFileSync as BH,mkdirSync as UH,statSync as jH}from"node:fs";var HH,Cb,qH,WH,_i,rm=S(()=>{"use strict";j();HH=448,Cb="workflows",qH=64*1024,WH=256,_i=class{dir;constructor(e={}){let o=e.baseDir??Rb($H(),".aluy");this.dir=Rb(o,Cb)}get workflowsDir(){return this.dir}ensureDir(){try{UH(this.dir,{mode:HH,recursive:!0})}catch{}}load(){let e;try{e=FH(this.dir,{withFileTypes:!0})}catch{return{workflows:[],errors:[]}}let o=e.filter(i=>i.isFile()&&i.name.toLowerCase().endsWith(".md")).map(i=>i.name).sort((i,a)=>i.localeCompare(a)),n=new Set,r=[],s=[];for(let i of o){if(r.length>=WH)break;let a=this.readOne(i);if(a!==null){if(sc(a)){s.push(a);continue}n.has(a.name)||(n.add(a.name),r.push(a))}}return{workflows:r,errors:s}}readOne(e){let o=Rb(this.dir,e);try{let n=jH(o);if(!n.isFile()||n.size>qH)return null;let r=BH(o,"utf8");return ic(e,r,"global")}catch{return null}}}});var Lb={};jf(Lb,{PROJECT_WORKFLOWS_DIRNAMES:()=>Mb,ProjectWorkflowsLoader:()=>Ri});import{join as GH}from"node:path";import{readdirSync as zH,readFileSync as KH,statSync as YH}from"node:fs";var Mb,VH,XH,Ri,sm=S(()=>{"use strict";j();xr();Mb=[".claude/workflows",".aluy/workflows"],VH=64*1024,XH=256,Ri=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of Mb){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=zH(s,{withFileTypes:!0})}catch{continue}let a=i.filter(c=>c.isFile()&&c.name.toLowerCase().endsWith(".md")).map(c=>c.name).sort((c,l)=>c.localeCompare(l));for(let c of a){if(o.length>=XH)break;let l=this.readOne(r,s,c);if(l!==null){if(sc(l)){n.push(l);continue}e.has(l.name)||(e.add(l.name),o.push(l))}}}return{workflows:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(Jt(r).kind!=="allow")return null;let s=GH(o,n);try{this.workspace.resolveInside(r);let i=YH(s);if(!i.isFile()||i.size>VH)return null;let a=KH(s,"utf8");return ic(n,a,"project")}catch{return null}}}});var Ln="1.0.0-rc.
|
|
138
|
+
`)}function RB(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var p_=S(()=>{"use strict"});var h_=S(()=>{"use strict";Du();VT();XT();JT();QT();e_();r_();ld();d_();p_()});function Uy(t){let e=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(t.trim());if(!e)return null;let o=e[4]?e[4].split(".").map(n=>/^\d+$/.test(n)?Number(n):n):[];return{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),pre:o}}function g_(t,e){let o=Uy(t),n=Uy(e);if(!o||!n)return null;for(let s of["major","minor","patch"])if(o[s]!==n[s])return o[s]<n[s]?-1:1;if(o.pre.length===0&&n.pre.length===0)return 0;if(o.pre.length===0)return 1;if(n.pre.length===0)return-1;let r=Math.max(o.pre.length,n.pre.length);for(let s=0;s<r;s++){let i=o.pre[s],a=n.pre[s];if(i===void 0)return-1;if(a===void 0)return 1;if(i===a)continue;let c=typeof i=="number",l=typeof a=="number";return c&&l?i<a?-1:1:c?-1:l?1:i<a?-1:1}return 0}function jy(t,e){return g_(t,e)===1}var y_=S(()=>{"use strict"});var Hy=S(()=>{"use strict"});var b_=S(()=>{"use strict";Hy()});var v_=S(()=>{"use strict"});var k_=S(()=>{"use strict"});var x_=S(()=>{"use strict"});var j=S(()=>{"use strict";vx();jx();eS();vw();FT();zT();h_();ky();pu();y_();Hy();b_();v_();k_();x_()});import{posix as XU}from"node:path";function JU(t){return XU.normalize(t)}function Jt(t){let e=JU(t);for(let o of QU)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function ab(t){return Jt(t).kind==="allow"}var QU,xr=S(()=>{"use strict";QU=[{re:/(?:^|\/|~\/)\.ssh(?:\/|$)/,why:"chaves SSH (~/.ssh)",deny:!0},{re:/(?:^|\/|~\/)\.aws(?:\/|$)/,why:"credenciais AWS (~/.aws)",deny:!0},{re:/(?:^|\/|~\/)\.gnupg(?:\/|$)/,why:"chaves GPG (~/.gnupg)",deny:!0},{re:/(?:~\/|\$\{?HOME\}?\/|\/(?:home|Users)\/[^/]+\/)\.aluy\/rooms(?:\/|$)/,why:"arquivos de sala do Aluy (~/.aluy/rooms)",deny:!0},{re:/~\/\.aluy(?:\/|$)/,why:"estado/credencial do Aluy (~/.aluy)",deny:!0},{re:/(?:^|\/)\.aluy(?:\/(?!agents\/|workflows\/|commands\/)|$)/,why:"estado/credencial do Aluy (.aluy/)",deny:!0},{re:/(?:^|\/|~\/)\.config\/gh\/hosts\.yml$/,why:"token do gh CLI",deny:!0},{re:/(?:^|\/|~\/)\.docker\/config\.json$/,why:"credenciais Docker",deny:!0},{re:/(?:^|\/|~\/)\.kube\/config$/,why:"kubeconfig",deny:!0},{re:/(?:^|\/)id_(?:rsa|ed25519|ecdsa|dsa)\b/,why:"chave privada",deny:!0},{re:/\.pem$|\.p12$|\.pfx$|\.key$/i,why:"material de chave privada",deny:!0},{re:/(?:^|[/\w.-])\.env(?:\.(?!example$|sample$|template$|dist$)[\w.-]+)?$/,why:"arquivo .env (segredos)",deny:!1},{re:/(?:^|\/)[^/]*(?:secret|credential|token|apikey|api_key|password|passwd)[^/]*$/i,why:"arquivo com nome sens\xEDvel (token/secret)",deny:!1}]});var Ob={};jf(Ob,{UserWorkflowsLoader:()=>_i,WORKFLOWS_DIRNAME:()=>Cb});import{homedir as $H}from"node:os";import{join as Rb}from"node:path";import{readdirSync as FH,readFileSync as BH,mkdirSync as UH,statSync as jH}from"node:fs";var HH,Cb,qH,WH,_i,rm=S(()=>{"use strict";j();HH=448,Cb="workflows",qH=64*1024,WH=256,_i=class{dir;constructor(e={}){let o=e.baseDir??Rb($H(),".aluy");this.dir=Rb(o,Cb)}get workflowsDir(){return this.dir}ensureDir(){try{UH(this.dir,{mode:HH,recursive:!0})}catch{}}load(){let e;try{e=FH(this.dir,{withFileTypes:!0})}catch{return{workflows:[],errors:[]}}let o=e.filter(i=>i.isFile()&&i.name.toLowerCase().endsWith(".md")).map(i=>i.name).sort((i,a)=>i.localeCompare(a)),n=new Set,r=[],s=[];for(let i of o){if(r.length>=WH)break;let a=this.readOne(i);if(a!==null){if(sc(a)){s.push(a);continue}n.has(a.name)||(n.add(a.name),r.push(a))}}return{workflows:r,errors:s}}readOne(e){let o=Rb(this.dir,e);try{let n=jH(o);if(!n.isFile()||n.size>qH)return null;let r=BH(o,"utf8");return ic(e,r,"global")}catch{return null}}}});var Lb={};jf(Lb,{PROJECT_WORKFLOWS_DIRNAMES:()=>Mb,ProjectWorkflowsLoader:()=>Ri});import{join as GH}from"node:path";import{readdirSync as zH,readFileSync as KH,statSync as YH}from"node:fs";var Mb,VH,XH,Ri,sm=S(()=>{"use strict";j();xr();Mb=[".claude/workflows",".aluy/workflows"],VH=64*1024,XH=256,Ri=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of Mb){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=zH(s,{withFileTypes:!0})}catch{continue}let a=i.filter(c=>c.isFile()&&c.name.toLowerCase().endsWith(".md")).map(c=>c.name).sort((c,l)=>c.localeCompare(l));for(let c of a){if(o.length>=XH)break;let l=this.readOne(r,s,c);if(l!==null){if(sc(l)){n.push(l);continue}e.has(l.name)||(e.add(l.name),o.push(l))}}}return{workflows:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(Jt(r).kind!=="allow")return null;let s=GH(o,n);try{this.workspace.resolveInside(r);let i=YH(s);if(!i.isFile()||i.size>VH)return null;let a=KH(s,"utf8");return ic(n,a,"project")}catch{return null}}}});var Ln="1.0.0-rc.20";j();var S_=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
139
139
|
|
|
140
140
|
Uso:
|
|
141
141
|
aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
|
|
@@ -417,7 +417,7 @@ Servers MCP:
|
|
|
417
417
|
Notas:
|
|
418
418
|
- O modelo \xE9 chamado direto pelo seu provider (BYO); o backend broker \xE9 opcional.
|
|
419
419
|
- Credencial S\xD3 no keychain do SO \u2014 nunca em texto em claro.
|
|
420
|
-
- Loop de agente + ferramentas nativas + controle de permiss\xE3o integrados.`;function Ke(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 OB(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 w_(){return`aluy ${Ln} (@hiperplano/aluy-cli-core ${ca})`}var MB=new Set(["agent","ascii","autocompact-at","backend","budget","cockpit","continue","cycle","cycle-for","cycles","deep","dense","device","effort","exec","fullscreen","help","json","lang","local-auth","local-base-url","local-model","local-provider","max-iterations","max-output-tokens","max-tokens","model","new","no-autocompact","no-budget","no-self-check","no-subagent","no-subagents","nome","oauth","output-format","plan","print","provider","quiet","resume","self-check","split","test","tier","unsafe","version","view","yolo"]),LB=["-p","--print","--exec","--tier","--lang","--model","--provider","--effort","--output-format","--backend","--local-provider","--local-model","--local-auth","--local-base-url","--max-tokens","--max-iterations","--max-output-tokens","--autocompact-at","--cycles","--cycle-for","--resume"];function PB(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===""||MB.has(s)||o.push(`--${s}`)}return o}function NB(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let $=t.slice(1),le=Ke($,"token"),qe=Ke($,"org"),et=$.includes("--device"),it=Ke($,"provider"),mt=$.includes("--oauth");return{kind:"login",forceDeviceFlow:et,...le!==void 0?{token:le}:{},...qe!==void 0?{org:qe}:{},...it!==void 0?{provider:it}:{},...mt?{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 $=t.includes("--deep")||t.includes("--test"),le=t.includes("--json");return{kind:"doctor",deep:$,json:le}}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("--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 $=t.includes("--json"),le=t.findIndex(et=>et==="--backend"||et.startsWith("--backend=")),qe="both";if(le!==-1){let it=(t[le].includes("=")?t[le].slice(10):t[le+1]??"").trim().toLowerCase();it==="local"?qe="local":it==="broker"&&(qe="broker")}return{kind:"models",scope:qe,json:$,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let $=t[1];if($===void 0||!["login","logout","allow","deny","status"].includes($))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let qe=t.slice(2);if($==="login"){let et=Ke(qe,"token");return{kind:"telegram",sub:"login",...et!==void 0?{token:et}:{}}}if($==="allow"||$==="deny"){let et=qe.find(mt=>!mt.startsWith("-")),it=et!==void 0&&/^-?\d+$/.test(et)?Number(et):void 0;return it===void 0?{kind:"usage-error",message:`uso: aluy telegram ${$} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:$,chatId:it}}return{kind:"telegram",sub:$}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(le=>!le.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:w_()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:S_};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"),c=t.includes("--split")||t.includes("--view")?!0:void 0,l=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,d=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,f=Ke(t,"tier"),u=Ke(t,"lang"),p=Ke(t,"max-tokens"),h=Ke(t,"max-iterations"),y=Ke(t,"max-output-tokens"),g=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,C=t.includes("--no-autocompact")?"off":Ke(t,"autocompact-at"),E=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,U=Ke(t,"cycles"),H=Ke(t,"cycle-for"),W=Ke(t,"backend"),G=Ke(t,"local-provider"),P=Ke(t,"local-model"),X=Ke(t,"local-auth"),ne=Ke(t,"local-base-url"),z=Ke(t,"model"),I=Ke(t,"provider");if((t.includes("--provider")||t.some($=>$.startsWith("--provider=")))&&(z===void 0||z.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((z===void 0||z.trim()==="")&&f!==void 0&&f.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 Oe=Ke(t,"effort"),q=t.includes("--effort")||t.some($=>$.startsWith("--effort=")),ie;if(Oe!==void 0){if(Oe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(Oe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ie=Oe}else if(q)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Y=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some($=>$.startsWith("-p=")||$.startsWith("--print=")||$.startsWith("--exec=")),re=Y?Ke(t,"print",{allowDashValue:!0})??Ke(t,"exec",{allowDashValue:!0})??OB(t,"p")??void 0:void 0,ce=Y?Ke(t,"output-format"):void 0,pe=t.includes("--new"),Q=t.includes("--continue"),se=t.indexOf("--resume"),Me=t.find($=>$.startsWith("--resume=")),No=se>=0||Me!==void 0,lt;if(Me!==void 0)lt=Me.slice(9);else if(se>=0){let $=t[se+1];$!==void 0&&!$.startsWith("-")&&(lt=$)}let Qe=f!==void 0?t.indexOf("--tier")+1:-1,st=u!==void 0&&!t.some($=>$.startsWith("--lang="))?t.indexOf("--lang")+1:-1,dt=lt!==void 0&&Me===void 0?se+1:-1,no=p!==void 0&&!t.some($=>$.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,ut=h!==void 0&&!t.some($=>$.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,so=U!==void 0&&!t.some($=>$.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,io=H!==void 0&&!t.some($=>$.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,J=y!==void 0&&!t.some($=>$.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,v=C!==void 0&&!t.includes("--no-autocompact")&&!t.some($=>$.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,ao=W!==void 0&&!t.some($=>$.startsWith("--backend="))?t.indexOf("--backend")+1:-1,Ee=($,le)=>le!==void 0&&!t.some(qe=>qe.startsWith(`--${$}=`))?t.indexOf(`--${$}`)+1:-1,Fr=Ee("local-provider",G),Is=Ee("local-model",P),Tt=Ee("local-auth",X),er=Ee("local-base-url",ne),Ur=z!==void 0&&!t.some($=>$.startsWith("--model="))?t.indexOf("--model")+1:-1,bo=I!==void 0&&!t.some($=>$.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Do=ie!==void 0&&!t.some($=>$.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Wt=ce!==void 0&&!t.some($=>$.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,Lt=re!==void 0&&!t.some($=>$.startsWith("-p=")||$.startsWith("--print=")||$.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,vo=t.find(($,le)=>!$.startsWith("-")&&le!==Qe&&le!==st&&le!==ao&&le!==Fr&&le!==Is&&le!==Tt&&le!==er&&le!==Ur&&le!==bo&&le!==Do&&le!==Wt&&le!==Lt&&le!==dt&&le!==no&&le!==ut&&le!==J&&le!==v&&le!==so&&le!==io),Ds=Q?{kind:"continue"}:No?{kind:"resume",...lt!==void 0?{id:lt}:{}}:void 0,tr=new Set([Qe,st,ao,Fr,Is,Tt,er,Ur,bo,Do,Wt,Lt,dt,no,ut,J,v,so,io].filter($=>$>=0));for(let $ of LB){let le=t.indexOf($);le>=0&&!t[le].includes("=")&&tr.add(le+1)}let $o=PB(t,tr);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...$o.length>0?{unknownFlags:$o}:{},dense:i,fresh:pe,subAgents:g,safeGlyphs:a,print:Y,...c!==void 0?{split:c}:{},...l!==void 0?{fullscreen:l}:{},...d!==void 0?{budget:d}:{},...vo!==void 0?{goal:vo}:{},...f!==void 0?{tier:f}:{},...W!==void 0?{backend:W}:{},...G!==void 0?{localProvider:G}:{},...P!==void 0?{localModel:P}:{},...X!==void 0?{localAuth:X}:{},...ne!==void 0?{localBaseUrl:ne}:{},...z!==void 0?{model:z}:{},...I!==void 0?{provider:I}:{},...ie!==void 0?{effort:ie}:{},...re!==void 0?{printArg:re}:{},...ce!==void 0?{outputFormat:ce}:{},...u!==void 0?{lang:u}:{},...Ds!==void 0?{resume:Ds}:{},...p!==void 0?{maxTokens:p}:{},...h!==void 0?{maxIterations:h}:{},...y!==void 0?{maxOutputTokens:y}:{},...w!==void 0?{selfCheck:w}:{},...C!==void 0?{autoCompactAt:C}:{},...E!==void 0?{quiet:E}:{},...M!==void 0?{cycle:M}:{},...U!==void 0?{cycles:U}:{},...H!==void 0?{cycleFor:H}:{}}}var Fu="https://broker.dev.aluy.example";function Gn(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??Fu).replace(/\/+$/,"")}}j();var qy="aluy-cli",IB="https://api.aluy.app/api/v1";function Bu(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??IB).replace(/\/+$/,""),clientId:qy}}j();import{lookup as DB}from"node:dns";import{request as $B}from"node:https";import{request as FB}from"node:http";var Rt=class{async resolve(e){return await new Promise((o,n)=>{DB(e,{all:!0,verbatim:!0},(r,s)=>{if(r){n(r);return}let i=(s??[]).map(a=>a.address).filter(a=>a.length>0);o(i)})})}},yr=class{httpsRequestFn;httpRequestFn;userAgent;constructor(e={}){this.httpsRequestFn=e.httpsRequestFn??$B,this.httpRequestFn=e.httpRequestFn??FB,this.userAgent=e.userAgent??"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36 aluy-vau/web"}async fetchPinned(e){let o=new URL(e.url),n=o.protocol==="https:",r=e.pinnedIp.includes(":")?6:4,s=((a,c,l)=>{typeof c=="object"&&c!==null&&c.all===!0?l(null,[{address:e.pinnedIp,family:r}]):l(null,e.pinnedIp,r)}),i=n?this.httpsRequestFn:this.httpRequestFn;return await new Promise((a,c)=>{let l=!1,d=()=>{clearTimeout(C),e.signal&&w&&e.signal.removeEventListener("abort",w)},f=E=>{l||(l=!0,d(),a(E))},u=E=>{l||(l=!0,d(),c(E))},p=e.method??"GET",h=p==="POST"?e.body??"":void 0,y=h!==void 0?{"Content-Type":e.contentType??"application/x-www-form-urlencoded","Content-Length":String(Buffer.byteLength(h))}:{},g=i({protocol:o.protocol,host:e.host,servername:e.host,port:o.port?Number(o.port):n?443:80,path:o.pathname+o.search,method:p,lookup:s,headers:{Host:o.port?`${e.host}:${o.port}`:e.host,"User-Agent":this.userAgent,Accept:"text/html,application/xhtml+xml,text/plain,*/*","Accept-Language":"en-US,en;q=0.9",...y}},E=>{let M=E.statusCode??0,U=A_(E.headers.location),H=A_(E.headers["content-type"]);if(BB(M)&&U){E.resume(),f({status:M,location:U,body:"",...H?{contentType:H}:{}});return}let W=0,G=!1,P=[];E.on("data",X=>{if(G)return;let ne=e.maxBytes-W;if(ne<=0){G=!0,E.destroy();return}if(X.length>ne){P.push(X.subarray(0,ne)),W+=ne,G=!0,E.destroy();return}P.push(X),W+=X.length}),E.on("end",()=>{let X=Buffer.concat(P).toString("utf8");G&&(X+=`
|
|
420
|
+
- Loop de agente + ferramentas nativas + controle de permiss\xE3o integrados.`;function Ke(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 OB(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 w_(){return`aluy ${Ln} (@hiperplano/aluy-cli-core ${ca})`}var MB=new Set(["agent","no-agent","ascii","autocompact-at","backend","budget","cockpit","continue","cycle","cycle-for","cycles","deep","dense","device","effort","exec","fullscreen","help","json","lang","local-auth","local-base-url","local-model","local-provider","max-iterations","max-output-tokens","max-tokens","model","new","no-autocompact","no-budget","no-self-check","no-subagent","no-subagents","nome","oauth","output-format","plan","print","provider","quiet","resume","self-check","split","test","tier","unsafe","version","view","yolo"]),LB=["-p","--print","--exec","--tier","--lang","--model","--provider","--effort","--output-format","--backend","--local-provider","--local-model","--local-auth","--local-base-url","--max-tokens","--max-iterations","--max-output-tokens","--autocompact-at","--cycles","--cycle-for","--resume"];function PB(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===""||MB.has(s)||o.push(`--${s}`)}return o}function NB(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let $=t.slice(1),le=Ke($,"token"),qe=Ke($,"org"),et=$.includes("--device"),it=Ke($,"provider"),mt=$.includes("--oauth");return{kind:"login",forceDeviceFlow:et,...le!==void 0?{token:le}:{},...qe!==void 0?{org:qe}:{},...it!==void 0?{provider:it}:{},...mt?{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 $=t.includes("--deep")||t.includes("--test"),le=t.includes("--json");return{kind:"doctor",deep:$,json:le}}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==="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 $=t.includes("--json"),le=t.findIndex(et=>et==="--backend"||et.startsWith("--backend=")),qe="both";if(le!==-1){let it=(t[le].includes("=")?t[le].slice(10):t[le+1]??"").trim().toLowerCase();it==="local"?qe="local":it==="broker"&&(qe="broker")}return{kind:"models",scope:qe,json:$,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let $=t[1];if($===void 0||!["login","logout","allow","deny","status"].includes($))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let qe=t.slice(2);if($==="login"){let et=Ke(qe,"token");return{kind:"telegram",sub:"login",...et!==void 0?{token:et}:{}}}if($==="allow"||$==="deny"){let et=qe.find(mt=>!mt.startsWith("-")),it=et!==void 0&&/^-?\d+$/.test(et)?Number(et):void 0;return it===void 0?{kind:"usage-error",message:`uso: aluy telegram ${$} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:$,chatId:it}}return{kind:"telegram",sub:$}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(le=>!le.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:w_()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:S_};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"),c=t.includes("--split")||t.includes("--view")?!0:void 0,l=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,d=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,f=Ke(t,"tier"),u=Ke(t,"lang"),p=Ke(t,"max-tokens"),h=Ke(t,"max-iterations"),y=Ke(t,"max-output-tokens"),g=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,C=t.includes("--no-autocompact")?"off":Ke(t,"autocompact-at"),E=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,U=Ke(t,"cycles"),H=Ke(t,"cycle-for"),W=Ke(t,"backend"),G=Ke(t,"local-provider"),P=Ke(t,"local-model"),X=Ke(t,"local-auth"),ne=Ke(t,"local-base-url"),z=Ke(t,"model"),I=Ke(t,"provider");if((t.includes("--provider")||t.some($=>$.startsWith("--provider=")))&&(z===void 0||z.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((z===void 0||z.trim()==="")&&f!==void 0&&f.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 Oe=Ke(t,"effort"),q=t.includes("--effort")||t.some($=>$.startsWith("--effort=")),ie;if(Oe!==void 0){if(Oe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(Oe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ie=Oe}else if(q)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Y=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some($=>$.startsWith("-p=")||$.startsWith("--print=")||$.startsWith("--exec=")),re=Y?Ke(t,"print",{allowDashValue:!0})??Ke(t,"exec",{allowDashValue:!0})??OB(t,"p")??void 0:void 0,ce=Y?Ke(t,"output-format"):void 0,pe=t.includes("--new"),Q=t.includes("--continue"),se=t.indexOf("--resume"),Me=t.find($=>$.startsWith("--resume=")),No=se>=0||Me!==void 0,lt;if(Me!==void 0)lt=Me.slice(9);else if(se>=0){let $=t[se+1];$!==void 0&&!$.startsWith("-")&&(lt=$)}let Qe=f!==void 0?t.indexOf("--tier")+1:-1,st=u!==void 0&&!t.some($=>$.startsWith("--lang="))?t.indexOf("--lang")+1:-1,dt=lt!==void 0&&Me===void 0?se+1:-1,no=p!==void 0&&!t.some($=>$.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,ut=h!==void 0&&!t.some($=>$.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,so=U!==void 0&&!t.some($=>$.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,io=H!==void 0&&!t.some($=>$.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,J=y!==void 0&&!t.some($=>$.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,v=C!==void 0&&!t.includes("--no-autocompact")&&!t.some($=>$.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,ao=W!==void 0&&!t.some($=>$.startsWith("--backend="))?t.indexOf("--backend")+1:-1,Ee=($,le)=>le!==void 0&&!t.some(qe=>qe.startsWith(`--${$}=`))?t.indexOf(`--${$}`)+1:-1,Fr=Ee("local-provider",G),Is=Ee("local-model",P),Tt=Ee("local-auth",X),er=Ee("local-base-url",ne),Ur=z!==void 0&&!t.some($=>$.startsWith("--model="))?t.indexOf("--model")+1:-1,bo=I!==void 0&&!t.some($=>$.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Do=ie!==void 0&&!t.some($=>$.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Wt=ce!==void 0&&!t.some($=>$.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,Lt=re!==void 0&&!t.some($=>$.startsWith("-p=")||$.startsWith("--print=")||$.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,vo=t.find(($,le)=>!$.startsWith("-")&&le!==Qe&&le!==st&&le!==ao&&le!==Fr&&le!==Is&&le!==Tt&&le!==er&&le!==Ur&&le!==bo&&le!==Do&&le!==Wt&&le!==Lt&&le!==dt&&le!==no&&le!==ut&&le!==J&&le!==v&&le!==so&&le!==io),Ds=Q?{kind:"continue"}:No?{kind:"resume",...lt!==void 0?{id:lt}:{}}:void 0,tr=new Set([Qe,st,ao,Fr,Is,Tt,er,Ur,bo,Do,Wt,Lt,dt,no,ut,J,v,so,io].filter($=>$>=0));for(let $ of LB){let le=t.indexOf($);le>=0&&!t[le].includes("=")&&tr.add(le+1)}let $o=PB(t,tr);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...$o.length>0?{unknownFlags:$o}:{},dense:i,fresh:pe,subAgents:g,safeGlyphs:a,print:Y,...c!==void 0?{split:c}:{},...l!==void 0?{fullscreen:l}:{},...d!==void 0?{budget:d}:{},...vo!==void 0?{goal:vo}:{},...f!==void 0?{tier:f}:{},...W!==void 0?{backend:W}:{},...G!==void 0?{localProvider:G}:{},...P!==void 0?{localModel:P}:{},...X!==void 0?{localAuth:X}:{},...ne!==void 0?{localBaseUrl:ne}:{},...z!==void 0?{model:z}:{},...I!==void 0?{provider:I}:{},...ie!==void 0?{effort:ie}:{},...re!==void 0?{printArg:re}:{},...ce!==void 0?{outputFormat:ce}:{},...u!==void 0?{lang:u}:{},...Ds!==void 0?{resume:Ds}:{},...p!==void 0?{maxTokens:p}:{},...h!==void 0?{maxIterations:h}:{},...y!==void 0?{maxOutputTokens:y}:{},...w!==void 0?{selfCheck:w}:{},...C!==void 0?{autoCompactAt:C}:{},...E!==void 0?{quiet:E}:{},...M!==void 0?{cycle:M}:{},...U!==void 0?{cycles:U}:{},...H!==void 0?{cycleFor:H}:{}}}var Fu="https://broker.dev.aluy.example";function Gn(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??Fu).replace(/\/+$/,"")}}j();var qy="aluy-cli",IB="https://api.aluy.app/api/v1";function Bu(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??IB).replace(/\/+$/,""),clientId:qy}}j();import{lookup as DB}from"node:dns";import{request as $B}from"node:https";import{request as FB}from"node:http";var Rt=class{async resolve(e){return await new Promise((o,n)=>{DB(e,{all:!0,verbatim:!0},(r,s)=>{if(r){n(r);return}let i=(s??[]).map(a=>a.address).filter(a=>a.length>0);o(i)})})}},yr=class{httpsRequestFn;httpRequestFn;userAgent;constructor(e={}){this.httpsRequestFn=e.httpsRequestFn??$B,this.httpRequestFn=e.httpRequestFn??FB,this.userAgent=e.userAgent??"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36 aluy-vau/web"}async fetchPinned(e){let o=new URL(e.url),n=o.protocol==="https:",r=e.pinnedIp.includes(":")?6:4,s=((a,c,l)=>{typeof c=="object"&&c!==null&&c.all===!0?l(null,[{address:e.pinnedIp,family:r}]):l(null,e.pinnedIp,r)}),i=n?this.httpsRequestFn:this.httpRequestFn;return await new Promise((a,c)=>{let l=!1,d=()=>{clearTimeout(C),e.signal&&w&&e.signal.removeEventListener("abort",w)},f=E=>{l||(l=!0,d(),a(E))},u=E=>{l||(l=!0,d(),c(E))},p=e.method??"GET",h=p==="POST"?e.body??"":void 0,y=h!==void 0?{"Content-Type":e.contentType??"application/x-www-form-urlencoded","Content-Length":String(Buffer.byteLength(h))}:{},g=i({protocol:o.protocol,host:e.host,servername:e.host,port:o.port?Number(o.port):n?443:80,path:o.pathname+o.search,method:p,lookup:s,headers:{Host:o.port?`${e.host}:${o.port}`:e.host,"User-Agent":this.userAgent,Accept:"text/html,application/xhtml+xml,text/plain,*/*","Accept-Language":"en-US,en;q=0.9",...y}},E=>{let M=E.statusCode??0,U=A_(E.headers.location),H=A_(E.headers["content-type"]);if(BB(M)&&U){E.resume(),f({status:M,location:U,body:"",...H?{contentType:H}:{}});return}let W=0,G=!1,P=[];E.on("data",X=>{if(G)return;let ne=e.maxBytes-W;if(ne<=0){G=!0,E.destroy();return}if(X.length>ne){P.push(X.subarray(0,ne)),W+=ne,G=!0,E.destroy();return}P.push(X),W+=X.length}),E.on("end",()=>{let X=Buffer.concat(P).toString("utf8");G&&(X+=`
|
|
421
421
|
\u2026[truncado: corpo maior que ${e.maxBytes} bytes]`),f({status:M,body:X,...H?{contentType:H}:{}})}),E.on("close",()=>{if(l)return;let X=Buffer.concat(P).toString("utf8")+(G?`
|
|
422
422
|
\u2026[truncado: corpo maior que ${e.maxBytes} bytes]`:"");f({status:M,body:X,...H?{contentType:H}:{}})}),E.on("error",X=>{if(G){if(l)return;let ne=Buffer.concat(P).toString("utf8")+`
|
|
423
423
|
\u2026[truncado: corpo maior que ${e.maxBytes} bytes]`;f({status:M,body:ne,...H?{contentType:H}:{}});return}u(X)})}),w=()=>{g.destroy(),u(new Error("cancelado"))},C=setTimeout(()=>{g.destroy(),u(new Error(`timeout de ${e.timeoutMs}ms ao buscar a URL`))},e.timeoutMs);if(C.unref?.(),e.signal){if(e.signal.aborted){g.destroy(),u(new Error("cancelado"));return}e.signal.addEventListener("abort",w)}g.on("error",u),h!==void 0&&g.write(h),g.end()})}},Uu=class{constructor(e){this.allowlist=e}allowlist;checkHost(e){let o=e.trim().toLowerCase();return{allowed:this.allowlist.isAllowed(o),host:o}}};function Wy(t){return{safe:{resolver:t.resolver??new Rt,fetcher:t.fetcher??new yr},egress:new Uu(t.egress),...t.policy?{policy:t.policy}:{}}}function BB(t){return t===301||t===302||t===303||t===307||t===308}function A_(t){if(t!==void 0)return Array.isArray(t)?t[0]:t}async function ju(t,e,o,n={}){let r=n.resolver??new Rt,s=n.fetchFn??globalThis.fetch;if(typeof s!="function")return{ok:!1,reason:"fetch indispon\xEDvel neste runtime."};let i=await ss(t,r);if(!i.ok)return{ok:!1,reason:i.reason};let a="";try{a=new URL(t).port}catch{}let c=i.pinnedIp.includes(":")?`[${i.pinnedIp}]`:i.pinnedIp,l=`${i.scheme}://${c}${a!==""?`:${a}`:""}${e}`;return{ok:!0,response:await s(l,o)}}var UB=2500;function Hu(t=process.env){let e=t.ALUY_HEADROOM_URL?.trim();return e!==void 0&&e!==""?e:void 0}async function E_(t,e){if(t.length===0)return t;let o=e.timeoutMs??UB,n=new AbortController,r=o>0?setTimeout(()=>n.abort(),o):void 0,s=()=>n.abort();e.signal?.addEventListener("abort",s,{once:!0}),e.signal?.aborted&&n.abort();try{let i=await ju(e.baseUrl,"/v1/compress",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({messages:t,model:e.model??"claude-3-5-sonnet"}),signal:n.signal},{...e.resolver?{resolver:e.resolver}:{},...e.fetchFn?{fetchFn:e.fetchFn}:{}});if(!i.ok)return e.onRefused?.(i.reason),t;let a=i.response;if(!a.ok)return t;let c=await a.json(),l=c.messages;if(!Array.isArray(l)||l.length!==t.length)return t;for(let d=0;d<t.length;d++){let f=t[d],u=l[d];if(u===void 0)return t;if(u.role!==void 0&&u.role!==f.role)return e.onRefused?.(`proxy adulterou o role da mensagem ${d} (${String(u.role)})`),t;if(u.tool_calls!==void 0&&f.tool_calls===void 0)return e.onRefused?.(`proxy injetou tool_calls na mensagem ${d}`),t;if(u.tool_call_id!==void 0&&f.tool_call_id===void 0)return e.onRefused?.(`proxy injetou tool_call_id na mensagem ${d}`),t}return e.onSavings?.({before:c.tokens_before??0,after:c.tokens_after??0,ratio:c.compression_ratio??1}),t.map((d,f)=>{let u=l[f]?.content;return typeof u=="string"&&d.content!==""&&u!==d.content?{...d,content:u}:d})}catch{return t}finally{r!==void 0&&clearTimeout(r),e.signal?.removeEventListener("abort",s)}}j();var jB=2500,HB={type:"object",properties:{hash:{type:"string",description:"O hash do marcador de compress\xE3o (ex.: `[\u2026 hash=abc123]`). Obrigat\xF3rio."},query:{type:"string",description:"Opcional: busca BM25 DENTRO do conte\xFAdo cacheado \u2014 recorta resultados grandes p/ s\xF3 o trecho relevante."}},required:["hash"],additionalProperties:!1},qB='Recupera o conte\xFAdo ORIGINAL que a compress\xE3o headroom dedupou/truncou. Quando uma observa\xE7\xE3o de tool trouxer um marcador como `[N items compressed \u2026 hash=abc123]` e voc\xEA precisar do conte\xFAdo completo, chame com `{hash:"abc123"}`. Passe `query` p/ buscar (BM25) s\xF3 o trecho relevante dentro de um cache grande.';function WB(t){let e=t.hash;return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function GB(t){let e=t.query;return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function T_(t){let e={...t.resolver?{resolver:t.resolver}:{},...t.fetchFn?{fetchFn:t.fetchFn}:{}},o=`${t.baseUrl.replace(/\/+$/,"")}/v1/retrieve`;return{name:"headroom_retrieve",effect:"network",description:qB,parameters:HB,async run(n,r,s){let i=WB(n);if(i===void 0)return{ok:!1,observation:"headroom_retrieve: `hash` \xE9 obrigat\xF3rio (copie o valor do marcador `\u2026 hash=\u2026`)."};let a=GB(n),c=`headroom_retrieve POST ${o} hash=${i}${a?` query=${JSON.stringify(a)}`:""}`,l=new AbortController,d=!1,f=t.timeoutMs??jB,u=setTimeout(()=>{d=!0,l.abort()},f),p=()=>l.abort();s?.signal?.addEventListener("abort",p,{once:!0}),s?.signal?.aborted&&l.abort();try{let h=await ju(t.baseUrl,"/v1/retrieve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(a!==void 0?{hash:i,query:a}:{hash:i}),signal:l.signal},e);if(!h.ok)return{ok:!1,display:c,observation:`headroom_retrieve: destino recusado (${h.reason}).`};let y=h.response;if(y.status===404)return{ok:!1,display:c,observation:`headroom_retrieve: conte\xFAdo do hash "${i}" EXPIROU (TTL do cache ou rein\xEDcio do proxy). N\xE3o h\xE1 o que recuperar \u2014 RErode o comando/tool original p/ regerar.`};if(!y.ok)return{ok:!1,display:c,observation:`headroom_retrieve: o proxy respondeu HTTP ${y.status}.`};let g=await y.json(),w=g.original_content;if(typeof w!="string"||w==="")return{ok:!1,display:c,observation:"headroom_retrieve: resposta sem `original_content` utiliz\xE1vel."};let C=typeof g.original_tokens=="number"?g.original_tokens:void 0,E=typeof g.tool_name=="string"?g.tool_name:void 0,M=`[headroom_retrieve \xB7 hash=${i}${E?` \xB7 tool=${E}`:""}${C!==void 0?` \xB7 ${C} tokens`:""}]`;return{ok:!0,display:c,observation:`${M}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hiperplano/aluy-cli",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.20",
|
|
4
4
|
"description": "Aluy CLI — TUI (Ink) + binário `aluy` + wiring. Consome @hiperplano/aluy-cli-core (engine portável). Credenciais só no keychain do SO.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|