@hiperplano/aluy-cli 1.0.0-rc.32 → 1.0.0-rc.34
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/assets/mem0/aluy-mem0-server.py +438 -0
- package/dist-bundle/bin/aluy.js +240 -237
- package/dist-bundle/index.js +6 -3
- package/package.json +1 -1
package/dist-bundle/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var TN=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 Wf=(t,e)=>{for(var o in e)TN(t,o,{get:e[o],enumerable:!0})};var ca,Ax=S(()=>{"use strict";ca="1.0.0-rc.
|
|
1
|
+
var TN=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 Wf=(t,e)=>{for(var o in e)TN(t,o,{get:e[o],enumerable:!0})};var ca,Ax=S(()=>{"use strict";ca="1.0.0-rc.34"});function Pn(t,e){return t.decide(e)}var qr=S(()=>{"use strict"});var en,Nn,In=S(()=>{"use strict";en="remember",Nn="recall"});var Gf,_N,Ws,zf=S(()=>{"use strict";Gf=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}}},_N=200,Ws=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??_N,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 Gf(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 _x(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"&&RN.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=_x(d,!1);if(typeof f=="string")return f;l.push(f)}r=l}}}if(o===void 0||o.trim()==="")return ON;let s=o.trim().slice(0,CN);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function MN(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=_x(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>Ex?{error:`update_plan: no m\xE1ximo ${Ex} passos (recebidos ${s}).`}:{steps:o}}function LN(t){let e=sd(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${Rx[r.step.status]} ${r.step.title}`).join(`
|
|
2
2
|
`);return`plano (${o}/${e.length}):
|
|
3
3
|
${n}`}function NN(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function IN(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??Ws.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=NN(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 DN(t,e){if(!e)return LN(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?PN[f.horizon]:"",p=f?s(f.id):d,h=" ".repeat(p),g=Rx[l.status];c.push(`${h}${u} ${g} ${l.title}`)}return c.join(`
|
|
4
4
|
`)}var la,RN,Ex,CN,ON,Rx,PN,Tx,$N,Cx,id=S(()=>{"use strict";zf();la="update_plan";RN=new Set(["pending","in_progress","completed"]),Ex=30,CN=120,ON="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";Rx={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};PN={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};Tx=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),$N=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:Tx,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:Tx},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),Cx={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:$N,async run(t,e){let o=MN(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&IN(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:DN(o.steps,e.graph)})}}});function Ox(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)?BN(s):void 0;if(typeof i=="string")return{error:i};let a,c=t.kind??t.type;if(typeof c=="string"&&FN.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 BN(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 UN(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 AT(t,e,o=gc){let{older:n,recent:r}=Cu(t,o);if(n.length===
|
|
|
135
135
|
\u2026[truncado: ${t.length-Dy} chars omitidos]`}function TB(t){return t.length<=Fy?t:`${t.slice(0,Fy)}\u2026`}function a_(t){let e=i_(t.server,t.descriptor.name),o=TB(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:s_(d),display:`${e}(${_B(i)})`}:{ok:!1,observation:s_(`MCP "${e}" erro: ${d}`)}}catch(l){return{ok:!1,observation:`MCP "${e}" falhou: ${l instanceof Error?l.message:String(l)}`}}}}}function By(t,e){let o=[],n=new Set,r=new Map,s=new Map,i=new Set;for(let a of t){let c=a_(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>=$y){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 ${$y} (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 _B(t){if(Object.keys(t).length===0)return"";let o=JSON.stringify(t);return o.length<=200?o:`${o.slice(0,200)}\u2026`}var Dy,$y,Fy,c_=S(()=>{"use strict";ld();jn();Dy=2e4;$y=128,Fy=1024});function u_(t,e){let o=new URL(d_);return t.trim().length>0&&o.searchParams.set("search",t.trim()),o.searchParams.set("limit",String(CB)),e!==void 0&&e.length>0&&o.searchParams.set("cursor",e),o.toString()}async function jy(t,e,o){let n=t.trim(),r=[],s;for(let i=0;i<RB;i++){let a=u_(n,s),c;try{c=await e(a,o)}catch(f){return{ok:!1,query:n,reason:Fu(IB(f))}}if(!c.ok)return{ok:!1,query:n,reason:Fu(c.reason)};if(c.status<200||c.status>=300)return{ok:!1,query:n,reason:Fu(`HTTP ${c.status}`)};let l;try{l=JSON.parse(c.body)}catch{return{ok:!1,query:n,reason:Fu("resposta n\xE3o \xE9 JSON v\xE1lido")}}let d=f_(l);for(let f of d.servers)if(m_(f,n)&&r.push(f),r.length>=Uy)break;if(r.length>=Uy||(s=d.nextCursor,s===void 0||s.length===0))break}return{ok:!0,query:n,results:r}}function Fu(t){return`registro MCP indispon\xEDvel (${vi}): ${t}`}function m_(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 f_(t){if(!Gn(t))return{servers:[]};let e=Array.isArray(t.servers)?t.servers:[],o=[];for(let s of e){let i=OB(s);i!==void 0&&o.push(i)}let n=Gn(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 OB(t){if(!Gn(t))return;let e=Gn(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=MB(e);return{name:o,description:n,run:i,...r!==void 0?{title:r}:{},...s!==void 0?{version:s}:{}}}function MB(t){let e=[],o=Array.isArray(t.remotes)?t.remotes:[];for(let r of o)Gn(r)&&typeof r.url=="string"&&e.push(r.url);let n=Array.isArray(t.packages)?t.packages:[];for(let r of n){if(!Gn(r))continue;let s=LB(r);if(s!==void 0)return{...s,remoteUrls:e}}return{args:[],env:[],remoteUrls:e}}function LB(t){let e=cs(t.registryType)??cs(t.registry_name),o=cs(t.identifier)??cs(t.name);if(o===void 0)return;let n=cs(t.version),r=cs(t.runtimeHint),s=Gn(t.transport)?cs(t.transport.type):void 0,i=NB(t.environmentVariables),a=l_(t.runtimeArguments),c=l_(t.packageArguments),l=n!==void 0?`${o}@${n}`:o;return e==="npm"||r==="npx"?{command:"npx",args:PB(["-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 PB(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 l_(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)Gn(o)&&typeof o.value=="string"&&e.push(o.value);return e}function NB(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)Gn(o)&&typeof o.name=="string"&&o.name.length>0&&e.push({name:o.name,required:o.isRequired===!0});return e}function cs(t){return typeof t=="string"&&t.trim().length>0?t.trim():void 0}function Gn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function IB(t){return t instanceof Error?t.message:String(t)}var vi,d_,RB,CB,Uy,p_=S(()=>{"use strict";vi="registry.modelcontextprotocol.io",d_=`https://${vi}/v0/servers`,RB=5,CB=100,Uy=25});function g_(t){let{command:e,args:o}=t.run;if(e===void 0)return;let n=y_(t.name);return["aluy","mcp","add",h_(n),"--",e,...o.map(h_)].join(" ")}function y_(t){let o=(t.split("/").pop()??t).replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");return o.length>0?o:"server"}function h_(t){return/^[A-Za-z0-9_./@:+=-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`}function Hy(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(DB(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 DB(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(` ${$B(t.description,200)}`);let r=g_(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 $B(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var b_=S(()=>{"use strict"});var v_=S(()=>{"use strict";$u();ZT();e_();t_();o_();r_();c_();ld();p_();b_()});function qy(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 k_(t,e){let o=qy(t),n=qy(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 Wy(t,e){return k_(t,e)===1}var x_=S(()=>{"use strict"});var Gy=S(()=>{"use strict"});var S_=S(()=>{"use strict";Gy()});var w_=S(()=>{"use strict"});var A_=S(()=>{"use strict"});function zy(t){return`connector-${t}-token`}function Ky(t){let e=t.trim(),o=e.indexOf(":");return o<=0?`\u2026(${e.length} chars)`:`${e.slice(0,o)}:\u2026(${e.length-o-1} chars)`}var E_=S(()=>{"use strict"});var H=S(()=>{"use strict";Ax();zx();rS();ww();HT();XT();v_();wy();hu();x_();Gy();S_();w_();A_();E_()});import{posix as sj}from"node:path";function ij(t){return sj.normalize(t)}function Jt(t){let e=ij(t);for(let o of aj)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function mb(t){return Jt(t).kind==="allow"}var aj,wr=S(()=>{"use strict";aj=[{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 Ib={};Wf(Ib,{UserWorkflowsLoader:()=>_i,WORKFLOWS_DIRNAME:()=>Nb});import{homedir as zH}from"node:os";import{join as Pb}from"node:path";import{readdirSync as KH,readFileSync as YH,mkdirSync as VH,statSync as XH}from"node:fs";var JH,Nb,QH,ZH,_i,im=S(()=>{"use strict";H();JH=448,Nb="workflows",QH=64*1024,ZH=256,_i=class{dir;constructor(e={}){let o=e.baseDir??Pb(zH(),".aluy");this.dir=Pb(o,Nb)}get workflowsDir(){return this.dir}ensureDir(){try{VH(this.dir,{mode:JH,recursive:!0})}catch{}}load(){let e;try{e=KH(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>=ZH)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=Pb(this.dir,e);try{let n=XH(o);if(!n.isFile()||n.size>QH)return null;let r=YH(o,"utf8");return ic(e,r,"global")}catch{return null}}}});var $b={};Wf($b,{PROJECT_WORKFLOWS_DIRNAMES:()=>Db,ProjectWorkflowsLoader:()=>Ri});import{join as eq}from"node:path";import{readdirSync as tq,readFileSync as oq,statSync as nq}from"node:fs";var Db,rq,sq,Ri,am=S(()=>{"use strict";H();wr();Db=[".claude/workflows",".aluy/workflows"],rq=64*1024,sq=256,Ri=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of Db){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=tq(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>=sq)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=eq(o,n);try{this.workspace.resolveInside(r);let i=nq(s);if(!i.isFile()||i.size>rq)return null;let a=oq(s,"utf8");return ic(n,a,"project")}catch{return null}}}});var Ln="1.0.0-rc.
|
|
138
|
+
`)}function $B(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var b_=S(()=>{"use strict"});var v_=S(()=>{"use strict";$u();ZT();e_();t_();o_();r_();c_();ld();p_();b_()});function qy(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 k_(t,e){let o=qy(t),n=qy(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 Wy(t,e){return k_(t,e)===1}var x_=S(()=>{"use strict"});var Gy=S(()=>{"use strict"});var S_=S(()=>{"use strict";Gy()});var w_=S(()=>{"use strict"});var A_=S(()=>{"use strict"});function zy(t){return`connector-${t}-token`}function Ky(t){let e=t.trim(),o=e.indexOf(":");return o<=0?`\u2026(${e.length} chars)`:`${e.slice(0,o)}:\u2026(${e.length-o-1} chars)`}var E_=S(()=>{"use strict"});var H=S(()=>{"use strict";Ax();zx();rS();ww();HT();XT();v_();wy();hu();x_();Gy();S_();w_();A_();E_()});import{posix as sj}from"node:path";function ij(t){return sj.normalize(t)}function Jt(t){let e=ij(t);for(let o of aj)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function mb(t){return Jt(t).kind==="allow"}var aj,wr=S(()=>{"use strict";aj=[{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 Ib={};Wf(Ib,{UserWorkflowsLoader:()=>_i,WORKFLOWS_DIRNAME:()=>Nb});import{homedir as zH}from"node:os";import{join as Pb}from"node:path";import{readdirSync as KH,readFileSync as YH,mkdirSync as VH,statSync as XH}from"node:fs";var JH,Nb,QH,ZH,_i,im=S(()=>{"use strict";H();JH=448,Nb="workflows",QH=64*1024,ZH=256,_i=class{dir;constructor(e={}){let o=e.baseDir??Pb(zH(),".aluy");this.dir=Pb(o,Nb)}get workflowsDir(){return this.dir}ensureDir(){try{VH(this.dir,{mode:JH,recursive:!0})}catch{}}load(){let e;try{e=KH(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>=ZH)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=Pb(this.dir,e);try{let n=XH(o);if(!n.isFile()||n.size>QH)return null;let r=YH(o,"utf8");return ic(e,r,"global")}catch{return null}}}});var $b={};Wf($b,{PROJECT_WORKFLOWS_DIRNAMES:()=>Db,ProjectWorkflowsLoader:()=>Ri});import{join as eq}from"node:path";import{readdirSync as tq,readFileSync as oq,statSync as nq}from"node:fs";var Db,rq,sq,Ri,am=S(()=>{"use strict";H();wr();Db=[".claude/workflows",".aluy/workflows"],rq=64*1024,sq=256,Ri=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of Db){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=tq(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>=sq)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=eq(o,n);try{this.workspace.resolveInside(r);let i=nq(s);if(!i.isFile()||i.size>rq)return null;let a=oq(s,"utf8");return ic(n,a,"project")}catch{return null}}}});var Ln="1.0.0-rc.34";H();var T_=`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>]
|
|
@@ -351,6 +351,9 @@ Comandos de auth:
|
|
|
351
351
|
progressivos + como consertar. Exit\u22600 se houver \u2717 (\xFAtil em script/CI).
|
|
352
352
|
--deep/--test: ADICIONA o teste do tier ao vivo (1 chamada m\xEDnima ao
|
|
353
353
|
modelo \u2014 opt-in, pois gasta). Sem --deep, N\xC3O chama o modelo.
|
|
354
|
+
config Vis\xE3o CONSOLIDADA read-only da configura\xE7\xE3o efetiva: cada chave, o valor
|
|
355
|
+
e a ORIGEM (default / env ALUY_* / config.json), na preced\xEAncia real. Mostra
|
|
356
|
+
tamb\xE9m os outros arquivos (mcp/hooks/estado) e seus pap\xE9is. --json p/ script.
|
|
354
357
|
|
|
355
358
|
Conector Telegram (prepara\xE7\xE3o \u2014 a bridge ainda N\xC3O est\xE1 ativa):
|
|
356
359
|
telegram login [--token <t>] Guarda o token do bot (@BotFather) no KEYCHAIN do SO
|
|
@@ -418,7 +421,7 @@ Servers MCP:
|
|
|
418
421
|
Notas:
|
|
419
422
|
- O modelo \xE9 chamado direto pelo seu provider (BYO); o backend broker \xE9 opcional.
|
|
420
423
|
- Credencial S\xD3 no keychain do SO \u2014 nunca em texto em claro.
|
|
421
|
-
- 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 BB(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 __(){return`aluy ${Ln} (@hiperplano/aluy-cli-core ${ca})`}var UB=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"]),jB=["-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 HB(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===""||UB.has(s)||o.push(`--${s}`)}return o}function qB(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let F=t.slice(1),le=Ke(F,"token"),qe=Ke(F,"org"),et=F.includes("--device"),it=Ke(F,"provider"),mt=F.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 F=t.includes("--deep")||t.includes("--test"),le=t.includes("--json");return{kind:"doctor",deep:F,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==="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 F=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:F,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let F=t[1];if(F===void 0||!["login","logout","allow","deny","status"].includes(F))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let qe=t.slice(2);if(F==="login"){let et=Ke(qe,"token");return{kind:"telegram",sub:"login",...et!==void 0?{token:et}:{}}}if(F==="allow"||F==="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 ${F} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:F,chatId:it}}return{kind:"telegram",sub:F}}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:__()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:T_};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"),g=Ke(t,"max-output-tokens"),y=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,R=t.includes("--no-autocompact")?"off":Ke(t,"autocompact-at"),E=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,$=Ke(t,"cycles"),j=Ke(t,"cycle-for"),q=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(F=>F.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"),W=t.includes("--effort")||t.some(F=>F.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(W)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(F=>F.startsWith("-p=")||F.startsWith("--print=")||F.startsWith("--exec=")),re=Y?Ke(t,"print",{allowDashValue:!0})??Ke(t,"exec",{allowDashValue:!0})??BB(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(F=>F.startsWith("--resume=")),No=se>=0||Me!==void 0,lt;if(Me!==void 0)lt=Me.slice(9);else if(se>=0){let F=t[se+1];F!==void 0&&!F.startsWith("-")&&(lt=F)}let Qe=f!==void 0?t.indexOf("--tier")+1:-1,st=u!==void 0&&!t.some(F=>F.startsWith("--lang="))?t.indexOf("--lang")+1:-1,dt=lt!==void 0&&Me===void 0?se+1:-1,no=p!==void 0&&!t.some(F=>F.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,ut=h!==void 0&&!t.some(F=>F.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,so=$!==void 0&&!t.some(F=>F.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,io=j!==void 0&&!t.some(F=>F.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,J=g!==void 0&&!t.some(F=>F.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,v=R!==void 0&&!t.includes("--no-autocompact")&&!t.some(F=>F.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,ao=q!==void 0&&!t.some(F=>F.startsWith("--backend="))?t.indexOf("--backend")+1:-1,Ee=(F,le)=>le!==void 0&&!t.some(qe=>qe.startsWith(`--${F}=`))?t.indexOf(`--${F}`)+1:-1,Ur=Ee("local-provider",G),Ds=Ee("local-model",P),Tt=Ee("local-auth",X),or=Ee("local-base-url",ne),Hr=z!==void 0&&!t.some(F=>F.startsWith("--model="))?t.indexOf("--model")+1:-1,bo=I!==void 0&&!t.some(F=>F.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Do=ie!==void 0&&!t.some(F=>F.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Wt=ce!==void 0&&!t.some(F=>F.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,Lt=re!==void 0&&!t.some(F=>F.startsWith("-p=")||F.startsWith("--print=")||F.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,vo=t.find((F,le)=>!F.startsWith("-")&&le!==Qe&&le!==st&&le!==ao&&le!==Ur&&le!==Ds&&le!==Tt&&le!==or&&le!==Hr&&le!==bo&&le!==Do&&le!==Wt&&le!==Lt&&le!==dt&&le!==no&&le!==ut&&le!==J&&le!==v&&le!==so&&le!==io),$s=Q?{kind:"continue"}:No?{kind:"resume",...lt!==void 0?{id:lt}:{}}:void 0,nr=new Set([Qe,st,ao,Ur,Ds,Tt,or,Hr,bo,Do,Wt,Lt,dt,no,ut,J,v,so,io].filter(F=>F>=0));for(let F of jB){let le=t.indexOf(F);le>=0&&!t[le].includes("=")&&nr.add(le+1)}let $o=HB(t,nr);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...$o.length>0?{unknownFlags:$o}:{},dense:i,fresh:pe,subAgents:y,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}:{},...q!==void 0?{backend:q}:{},...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}:{},...$s!==void 0?{resume:$s}:{},...p!==void 0?{maxTokens:p}:{},...h!==void 0?{maxIterations:h}:{},...g!==void 0?{maxOutputTokens:g}:{},...w!==void 0?{selfCheck:w}:{},...R!==void 0?{autoCompactAt:R}:{},...E!==void 0?{quiet:E}:{},...M!==void 0?{cycle:M}:{},...$!==void 0?{cycles:$}:{},...j!==void 0?{cycleFor:j}:{}}}var Bu="https://broker.dev.aluy.example";function zn(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??Bu).replace(/\/+$/,"")}}H();var Yy="aluy-cli",WB="https://api.aluy.app/api/v1";function Uu(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??WB).replace(/\/+$/,""),clientId:Yy}}H();import{lookup as GB}from"node:dns";import{request as zB}from"node:https";import{request as KB}from"node:http";var Rt=class{async resolve(e){return await new Promise((o,n)=>{GB(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)})})}},vr=class{httpsRequestFn;httpRequestFn;userAgent;constructor(e={}){this.httpsRequestFn=e.httpsRequestFn??zB,this.httpRequestFn=e.httpRequestFn??KB,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(R),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,g=h!==void 0?{"Content-Type":e.contentType??"application/x-www-form-urlencoded","Content-Length":String(Buffer.byteLength(h))}:{},y=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",...g}},E=>{let M=E.statusCode??0,$=R_(E.headers.location),j=R_(E.headers["content-type"]);if(YB(M)&&$){E.resume(),f({status:M,location:$,body:"",...j?{contentType:j}:{}});return}let q=0,G=!1,P=[];E.on("data",X=>{if(G)return;let ne=e.maxBytes-q;if(ne<=0){G=!0,E.destroy();return}if(X.length>ne){P.push(X.subarray(0,ne)),q+=ne,G=!0,E.destroy();return}P.push(X),q+=X.length}),E.on("end",()=>{let X=Buffer.concat(P).toString("utf8");G&&(X+=`
|
|
424
|
+
- 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 BB(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 __(){return`aluy ${Ln} (@hiperplano/aluy-cli-core ${ca})`}var UB=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"]),jB=["-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 HB(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===""||UB.has(s)||o.push(`--${s}`)}return o}function qB(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let F=t.slice(1),le=Ke(F,"token"),qe=Ke(F,"org"),et=F.includes("--device"),it=Ke(F,"provider"),mt=F.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 F=t.includes("--deep")||t.includes("--test"),le=t.includes("--json");return{kind:"doctor",deep:F,json:le}}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 F=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:F,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let F=t[1];if(F===void 0||!["login","logout","allow","deny","status"].includes(F))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let qe=t.slice(2);if(F==="login"){let et=Ke(qe,"token");return{kind:"telegram",sub:"login",...et!==void 0?{token:et}:{}}}if(F==="allow"||F==="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 ${F} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:F,chatId:it}}return{kind:"telegram",sub:F}}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:__()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:T_};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"),g=Ke(t,"max-output-tokens"),y=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,R=t.includes("--no-autocompact")?"off":Ke(t,"autocompact-at"),E=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,$=Ke(t,"cycles"),j=Ke(t,"cycle-for"),q=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(F=>F.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"),W=t.includes("--effort")||t.some(F=>F.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(W)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(F=>F.startsWith("-p=")||F.startsWith("--print=")||F.startsWith("--exec=")),re=Y?Ke(t,"print",{allowDashValue:!0})??Ke(t,"exec",{allowDashValue:!0})??BB(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(F=>F.startsWith("--resume=")),No=se>=0||Me!==void 0,lt;if(Me!==void 0)lt=Me.slice(9);else if(se>=0){let F=t[se+1];F!==void 0&&!F.startsWith("-")&&(lt=F)}let Qe=f!==void 0?t.indexOf("--tier")+1:-1,st=u!==void 0&&!t.some(F=>F.startsWith("--lang="))?t.indexOf("--lang")+1:-1,dt=lt!==void 0&&Me===void 0?se+1:-1,no=p!==void 0&&!t.some(F=>F.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,ut=h!==void 0&&!t.some(F=>F.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,so=$!==void 0&&!t.some(F=>F.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,io=j!==void 0&&!t.some(F=>F.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,J=g!==void 0&&!t.some(F=>F.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,v=R!==void 0&&!t.includes("--no-autocompact")&&!t.some(F=>F.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,ao=q!==void 0&&!t.some(F=>F.startsWith("--backend="))?t.indexOf("--backend")+1:-1,Ee=(F,le)=>le!==void 0&&!t.some(qe=>qe.startsWith(`--${F}=`))?t.indexOf(`--${F}`)+1:-1,Ur=Ee("local-provider",G),Ds=Ee("local-model",P),Tt=Ee("local-auth",X),or=Ee("local-base-url",ne),Hr=z!==void 0&&!t.some(F=>F.startsWith("--model="))?t.indexOf("--model")+1:-1,bo=I!==void 0&&!t.some(F=>F.startsWith("--provider="))?t.indexOf("--provider")+1:-1,Do=ie!==void 0&&!t.some(F=>F.startsWith("--effort="))?t.indexOf("--effort")+1:-1,Wt=ce!==void 0&&!t.some(F=>F.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,Lt=re!==void 0&&!t.some(F=>F.startsWith("-p=")||F.startsWith("--print=")||F.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,vo=t.find((F,le)=>!F.startsWith("-")&&le!==Qe&&le!==st&&le!==ao&&le!==Ur&&le!==Ds&&le!==Tt&&le!==or&&le!==Hr&&le!==bo&&le!==Do&&le!==Wt&&le!==Lt&&le!==dt&&le!==no&&le!==ut&&le!==J&&le!==v&&le!==so&&le!==io),$s=Q?{kind:"continue"}:No?{kind:"resume",...lt!==void 0?{id:lt}:{}}:void 0,nr=new Set([Qe,st,ao,Ur,Ds,Tt,or,Hr,bo,Do,Wt,Lt,dt,no,ut,J,v,so,io].filter(F=>F>=0));for(let F of jB){let le=t.indexOf(F);le>=0&&!t[le].includes("=")&&nr.add(le+1)}let $o=HB(t,nr);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...$o.length>0?{unknownFlags:$o}:{},dense:i,fresh:pe,subAgents:y,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}:{},...q!==void 0?{backend:q}:{},...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}:{},...$s!==void 0?{resume:$s}:{},...p!==void 0?{maxTokens:p}:{},...h!==void 0?{maxIterations:h}:{},...g!==void 0?{maxOutputTokens:g}:{},...w!==void 0?{selfCheck:w}:{},...R!==void 0?{autoCompactAt:R}:{},...E!==void 0?{quiet:E}:{},...M!==void 0?{cycle:M}:{},...$!==void 0?{cycles:$}:{},...j!==void 0?{cycleFor:j}:{}}}var Bu="https://broker.dev.aluy.example";function zn(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??Bu).replace(/\/+$/,"")}}H();var Yy="aluy-cli",WB="https://api.aluy.app/api/v1";function Uu(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??WB).replace(/\/+$/,""),clientId:Yy}}H();import{lookup as GB}from"node:dns";import{request as zB}from"node:https";import{request as KB}from"node:http";var Rt=class{async resolve(e){return await new Promise((o,n)=>{GB(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)})})}},vr=class{httpsRequestFn;httpRequestFn;userAgent;constructor(e={}){this.httpsRequestFn=e.httpsRequestFn??zB,this.httpRequestFn=e.httpRequestFn??KB,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(R),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,g=h!==void 0?{"Content-Type":e.contentType??"application/x-www-form-urlencoded","Content-Length":String(Buffer.byteLength(h))}:{},y=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",...g}},E=>{let M=E.statusCode??0,$=R_(E.headers.location),j=R_(E.headers["content-type"]);if(YB(M)&&$){E.resume(),f({status:M,location:$,body:"",...j?{contentType:j}:{}});return}let q=0,G=!1,P=[];E.on("data",X=>{if(G)return;let ne=e.maxBytes-q;if(ne<=0){G=!0,E.destroy();return}if(X.length>ne){P.push(X.subarray(0,ne)),q+=ne,G=!0,E.destroy();return}P.push(X),q+=X.length}),E.on("end",()=>{let X=Buffer.concat(P).toString("utf8");G&&(X+=`
|
|
422
425
|
\u2026[truncado: corpo maior que ${e.maxBytes} bytes]`),f({status:M,body:X,...j?{contentType:j}:{}})}),E.on("close",()=>{if(l)return;let X=Buffer.concat(P).toString("utf8")+(G?`
|
|
423
426
|
\u2026[truncado: corpo maior que ${e.maxBytes} bytes]`:"");f({status:M,body:X,...j?{contentType:j}:{}})}),E.on("error",X=>{if(G){if(l)return;let ne=Buffer.concat(P).toString("utf8")+`
|
|
424
427
|
\u2026[truncado: corpo maior que ${e.maxBytes} bytes]`;f({status:M,body:ne,...j?{contentType:j}:{}});return}u(X)})}),w=()=>{y.destroy(),u(new Error("cancelado"))},R=setTimeout(()=>{y.destroy(),u(new Error(`timeout de ${e.timeoutMs}ms ao buscar a URL`))},e.timeoutMs);if(R.unref?.(),e.signal){if(e.signal.aborted){y.destroy(),u(new Error("cancelado"));return}e.signal.addEventListener("abort",w)}y.on("error",u),h!==void 0&&y.write(h),y.end()})}},ju=class{constructor(e){this.allowlist=e}allowlist;checkHost(e){let o=e.trim().toLowerCase();return{allowed:this.allowlist.isAllowed(o),host:o}}};function Vy(t){return{safe:{resolver:t.resolver??new Rt,fetcher:t.fetcher??new vr},egress:new ju(t.egress),...t.policy?{policy:t.policy}:{}}}function YB(t){return t===301||t===302||t===303||t===307||t===308}function R_(t){if(t!==void 0)return Array.isArray(t)?t[0]:t}async function Hu(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 is(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 VB=2500;function qu(t=process.env){let e=t.ALUY_HEADROOM_URL?.trim();return e!==void 0&&e!==""?e:void 0}async function C_(t,e){if(t.length===0)return t;let o=e.timeoutMs??VB,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 Hu(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)}}H();var XB=2500,JB={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 ZB(t){let e=t.hash;return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function e1(t){let e=t.query;return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function O_(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:JB,async run(n,r,s){let i=ZB(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=e1(n),c=`headroom_retrieve POST ${o} hash=${i}${a?` query=${JSON.stringify(a)}`:""}`,l=new AbortController,d=!1,f=t.timeoutMs??XB,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 Hu(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 g=h.response;if(g.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(!g.ok)return{ok:!1,display:c,observation:`headroom_retrieve: o proxy respondeu HTTP ${g.status}.`};let y=await g.json(),w=y.original_content;if(typeof w!="string"||w==="")return{ok:!1,display:c,observation:"headroom_retrieve: resposta sem `original_content` utiliz\xE1vel."};let R=typeof y.original_tokens=="number"?y.original_tokens:void 0,E=typeof y.tool_name=="string"?y.tool_name:void 0,M=`[headroom_retrieve \xB7 hash=${i}${E?` \xB7 tool=${E}`:""}${R!==void 0?` \xB7 ${R} 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.34",
|
|
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",
|