@hiperplano/aluy-cli 1.0.0-rc.41 → 1.0.0-rc.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-bundle/bin/aluy.js +4 -4
- package/dist-bundle/index.js +4 -4
- package/package.json +1 -1
package/dist-bundle/bin/aluy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var LU=Object.defineProperty;var p=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var ut=(t,e)=>{for(var o in e)LU(t,o,{get:e[o],enumerable:!0})};import{homedir as PU}from"node:os";import{join as IU}from"node:path";function xl(t=PU()){return IU(t,".aluy")}var qu=p(()=>{"use strict"});var Sl,qA=p(()=>{"use strict";Sl="1.0.0-rc.
|
|
2
|
+
var LU=Object.defineProperty;var p=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var ut=(t,e)=>{for(var o in e)LU(t,o,{get:e[o],enumerable:!0})};import{homedir as PU}from"node:os";import{join as IU}from"node:path";function xl(t=PU()){return IU(t,".aluy")}var qu=p(()=>{"use strict"});var Sl,qA=p(()=>{"use strict";Sl="1.0.0-rc.42"});function ur(t,e){return t.decide(e)}var Ms=p(()=>{"use strict"});var Ln,mr,fr=p(()=>{"use strict";Ln="remember",mr="recall"});var mg,NU,ji,fg=p(()=>{"use strict";mg=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}}},NU=200,ji=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??NU,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 mg(e,o,n,r??null,i);if(r){let l=this.nodes.get(r);l&&l.children.add(e)}return this.nodes.set(e,a),{box:a.snapshot(),created:!0}}closeBox(e){let o=this.nodes.get(e);return o?(o.closed=!0,o.touch(this.now()),o.snapshot()):null}isClosed(e){let o=this.nodes.get(e);return o?o.closed:!1}reopenBox(e){let o=this.nodes.get(e);return o?(o.closed=!1,o.touch(this.now()),o.snapshot()):null}setHorizon(e,o){let n=this.nodes.get(e);return n?(n.horizon=o,n.touch(this.now()),n.snapshot()):null}setParent(e,o){let n=this.nodes.get(e);return n?n.parentId===o?n.snapshot():o!==null&&this.wouldCreateCycle(e,o)?null:(n.parentId&&this.nodes.get(n.parentId)?.children.delete(e),n.parentId=o,o&&this.nodes.get(o)?.children.add(e),n.touch(this.now()),n.snapshot()):null}wouldCreateCycle(e,o){let n=new Set,r=o;for(;r!==null;){if(r===e||n.has(r))return!0;n.add(r),r=this.nodes.get(r)?.parentId??null}return!1}getBox(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),o.snapshot()):null}listBoxes(e="lastAccessedAt"){let o=[...this.nodes.values()].map(n=>n.snapshot());switch(e){case"createdAt":return o.sort((n,r)=>n.createdAt-r.createdAt);case"accessCount":return o.sort((n,r)=>r.accessCount-n.accessCount);default:return o.sort((n,r)=>r.lastAccessedAt-n.lastAccessedAt)}}get size(){return this.nodes.size}addContext(e,o){let n=this.nodes.get(e);return n?(n.context.push({ts:this.now(),text:o}),n.touch(this.now()),n.snapshot()):null}getContext(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),[...o.context]):[]}getContextChain(e){let o=[],n=new Set,r=e;for(;r&&!n.has(r);){n.add(r);let s=this.nodes.get(r);if(!s)break;s.touch(this.now()),o.push({boxId:s.id,entries:[...s.context]}),r=s.parentId}return o}addDependency(e,o){let n=this.nodes.get(e);return!n||!this.nodes.has(o)||n.id===o?!1:(n.dependencies.add(o),n.touch(this.now()),!0)}getDependencies(e){let o=this.nodes.get(e);return o?[...o.dependencies]:[]}pinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!0,o.touch(this.now()),o.snapshot()):null}unpinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!1,o.touch(this.now()),o.snapshot()):null}evictOne(){let e=[];for(let n of this.nodes.values())n.horizon==="longo"||n.pinned||e.push(n);if(e.length===0)return null;e.sort((n,r)=>{let s=n.horizon==="curto"?0:1,i=r.horizon==="curto"?0:1;if(s!==i)return s-i;let a=n.closed?0:1,l=r.closed?0:1;return a!==l?a-l:n.lastAccessedAt!==r.lastAccessedAt?n.lastAccessedAt-r.lastAccessedAt:n.accessCount-r.accessCount});let o=e[0];return this.removeNode(o)}forceEvict(e){let o=this.nodes.get(e);return!o||o.horizon==="longo"||o.pinned?null:this.removeNode(o)}removeBox(e){let o=this.nodes.get(e);return o?this.removeNode(o):null}removeNode(e){if(e.parentId){let o=this.nodes.get(e.parentId);o&&o.children.delete(e.id)}return this.nodes.delete(e.id),e.snapshot()}}});function Wu(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 zA(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"&&DU.has(i.status)&&(n=i.status),e){let l=i.substeps??i.subtasks??i.subpassos??i.children;if(Array.isArray(l)&&l.length>0){let c=[];for(let d of l){let m=zA(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return FU;let s=o.trim().slice(0,$U);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function BU(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=zA(i,!0);if(typeof a=="string")return{error:a};o.push(a)}let n=new Set,r=i=>{if(!n.has(i))return n.add(i),i;for(let a=2;;a++){let l=`${i} #${a}`;if(!n.has(l))return n.add(l),l}};for(let i=0;i<o.length;i++){let a=o[i],l=r(a.title),c=a.substeps?.map(d=>({...d,title:r(d.title)}));o[i]=c!==void 0?{...a,title:l,substeps:c}:{...a,title:l}}let s=Wu(o).length;return s>WA?{error:`update_plan: no m\xE1ximo ${WA} passos (recebidos ${s}).`}:{steps:o}}function UU(t){let e=Wu(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${KA[r.step.status]} ${r.step.title}`).join(`
|
|
3
3
|
`);return`plano (${o}/${e.length}):
|
|
4
4
|
${n}`}function HU(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function qU(t,e){let o=new Map;for(let i of e.listBoxes())o.set(i.label,i.id);let n=t.findIndex(i=>i.status==="in_progress"||(i.substeps??[]).some(a=>a.status==="in_progress")),r=(i,a,l)=>{let c=i.status==="in_progress"?"curto":l,d=o.get(i.title),m=d??ji.boxId(i.title,0);return d?(i.status!=="completed"&&e.isClosed(d)&&e.reopenBox(d),e.setHorizon(d,c),e.setParent(d,a)):e.openBox(m,c,i.title,a),i.status==="completed"&&!e.isClosed(m)&&e.closeBox(m),o.set(i.title,m),m};t.forEach((i,a)=>{let l=HU(a,n),c=r(i,null,l);for(let d of i.substeps??[])r(d,c,l)});let s=new Set;for(let i of t){s.add(i.title);for(let a of i.substeps??[])s.add(a.title)}for(let i of e.listBoxes())s.has(i.label)||e.removeBox(i.id)}function WU(t,e){if(!e)return UU(t);let o=new Map;for(let c of e.listBoxes())o.set(c.label,c);let n=new Map;for(let c of e.listBoxes())n.set(c.id,c);let r=new Map,s=(c,d=new Set)=>{let m=r.get(c);if(m!==void 0)return m;let u=n.get(c);if(!u||!u.parentId||d.has(c))return r.set(c,0),0;let h=s(u.parentId,new Set(d).add(c))+1;return r.set(c,h),h},i=Wu(t),l=[`plano (${i.filter(c=>c.step.status==="completed").length}/${i.length}):`];for(let{step:c,depth:d}of i){let m=o.get(c.title),u=m?jU[m.horizon]:"",h=m?s(m.id):d,g=" ".repeat(h),y=KA[c.status];l.push(`${g}${u} ${y} ${c.title}`)}return l.join(`
|
|
5
5
|
`)}var wl,DU,WA,$U,FU,KA,jU,GA,GU,YA,Gu=p(()=>{"use strict";fg();wl="update_plan";DU=new Set(["pending","in_progress","completed"]),WA=30,$U=120,FU="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";KA={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};jU={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};GA=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),GU=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:GA,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:GA},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),YA={name:wl,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:GU,async run(t,e){let o=BU(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&qU(o.steps,e.graph),e.plan&&e.plan.set(Wu(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:WU(o.steps,e.graph)})}}});function VA(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)?KU(s):void 0;if(typeof i=="string")return{error:i};let a,l=t.kind??t.type;if(typeof l=="string"&&zU.has(l))a=l;else{if(typeof l=="string"&&l.trim()!=="")return{error:`perguntar: "kind" inv\xE1lido "${l}". Use "single", "multi" ou "text".`};a=i!==void 0&&i.length>0?"single":"text"}if((a==="single"||a==="multi")&&(i===void 0||i.length===0))return{error:`perguntar: kind "${a}" requer "options" (uma lista de ao menos 1 op\xE7\xE3o).`};let c=t.allowOther!==!1;return{spec:{kind:a,question:o,...r!==void 0?{header:r}:{},...a!=="text"&&i!==void 0?{options:i}:{},...a!=="text"?{allowOther:c}:{}}}}function KU(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 YU(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(`
|
|
@@ -136,7 +136,7 @@ ${t.trim()}`}}function YC(t,e,o=Nc){let{older:n,recent:r}=hf(t,o);if(n.length===
|
|
|
136
136
|
\u2026[truncado: ${t.length-ek} chars omitidos]`}function $2(t){return t.length<=ok?t:`${t.slice(0,ok)}\u2026`}function RO(t){let e=_O(t.server,t.descriptor.name),o=$2(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,l){try{let c=await t.transport.callTool(t.descriptor.name,i,l?.signal),d=Je(c.content);return c.ok?{ok:!0,observation:TO(d),display:`${e}(${F2(i)})`}:{ok:!1,observation:TO(`MCP "${e}" erro: ${d}`)}}catch(c){return{ok:!1,observation:`MCP "${e}" falhou: ${c instanceof Error?c.message:String(c)}`}}}}}function nk(t,e){let o=[],n=new Set,r=new Map,s=new Map,i=new Set;for(let a of t){let l=RO(a);if(n.has(l.name))continue;n.add(l.name);let c=a.server;s.set(c,(s.get(c)??0)+1);let d=r.get(c)??0;if(d>=tk){i.add(c);continue}r.set(c,d+1),o.push(l)}if(e)for(let a of i){let l=s.get(a)??0;e(`server MCP "${a}" exp\xF4s ${l} tools; usando as primeiras ${tk} (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 F2(t){if(Object.keys(t).length===0)return"";let o=JSON.stringify(t);return o.length<=200?o:`${o.slice(0,200)}\u2026`}var ek,tk,ok,CO=p(()=>{"use strict";Yu();br();ek=2e4;tk=128,ok=1024});function LO(t,e){let o=new URL(MO);return t.trim().length>0&&o.searchParams.set("search",t.trim()),o.searchParams.set("limit",String(U2)),e!==void 0&&e.length>0&&o.searchParams.set("cursor",e),o.toString()}async function sk(t,e,o){let n=t.trim(),r=[],s;for(let i=0;i<B2;i++){let a=LO(n,s),l;try{l=await e(a,o)}catch(m){return{ok:!1,query:n,reason:Of(z2(m))}}if(!l.ok)return{ok:!1,query:n,reason:Of(l.reason)};if(l.status<200||l.status>=300)return{ok:!1,query:n,reason:Of(`HTTP ${l.status}`)};let c;try{c=JSON.parse(l.body)}catch{return{ok:!1,query:n,reason:Of("resposta n\xE3o \xE9 JSON v\xE1lido")}}let d=IO(c);for(let m of d.servers)if(PO(m,n)&&r.push(m),r.length>=rk)break;if(r.length>=rk||(s=d.nextCursor,s===void 0||s.length===0))break}return{ok:!0,query:n,results:r}}function Of(t){return`registro MCP indispon\xEDvel (${ga}): ${t}`}function PO(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 IO(t){if(!Ar(t))return{servers:[]};let e=Array.isArray(t.servers)?t.servers:[],o=[];for(let s of e){let i=j2(s);i!==void 0&&o.push(i)}let n=Ar(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 j2(t){if(!Ar(t))return;let e=Ar(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=H2(e);return{name:o,description:n,run:i,...r!==void 0?{title:r}:{},...s!==void 0?{version:s}:{}}}function H2(t){let e=[],o=Array.isArray(t.remotes)?t.remotes:[];for(let r of o)Ar(r)&&typeof r.url=="string"&&e.push(r.url);let n=Array.isArray(t.packages)?t.packages:[];for(let r of n){if(!Ar(r))continue;let s=q2(r);if(s!==void 0)return{...s,remoteUrls:e}}return{args:[],env:[],remoteUrls:e}}function q2(t){let e=ei(t.registryType)??ei(t.registry_name),o=ei(t.identifier)??ei(t.name);if(o===void 0)return;let n=ei(t.version),r=ei(t.runtimeHint),s=Ar(t.transport)?ei(t.transport.type):void 0,i=G2(t.environmentVariables),a=OO(t.runtimeArguments),l=OO(t.packageArguments),c=n!==void 0?`${o}@${n}`:o;return e==="npm"||r==="npx"?{command:"npx",args:W2(["-y",...a,c,...l]),env:i,...s!==void 0?{transport:s}:{}}:e==="pypi"||r==="uvx"||r==="uv"?{command:"uvx",args:[...a,o,...l],env:i,...s!==void 0?{transport:s}:{}}:e==="oci"||r==="docker"?{command:"docker",args:["run","-i","--rm",...a,c,...l],env:i,...s!==void 0?{transport:s}:{}}:{args:[c],env:i,...s!==void 0?{transport:s}:{}}}function W2(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 OO(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)Ar(o)&&typeof o.value=="string"&&e.push(o.value);return e}function G2(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)Ar(o)&&typeof o.name=="string"&&o.name.length>0&&e.push({name:o.name,required:o.isRequired===!0});return e}function ei(t){return typeof t=="string"&&t.trim().length>0?t.trim():void 0}function Ar(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function z2(t){return t instanceof Error?t.message:String(t)}var ga,MO,B2,U2,rk,NO=p(()=>{"use strict";ga="registry.modelcontextprotocol.io",MO=`https://${ga}/v0/servers`,B2=5,U2=100,rk=25});function $O(t){let{command:e,args:o}=t.run;if(e===void 0)return;let n=FO(t.name);return["aluy","mcp","add",DO(n),"--",e,...o.map(DO)].join(" ")}function FO(t){let o=(t.split("/").pop()??t).replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");return o.length>0?o:"server"}function DO(t){return/^[A-Za-z0-9_./@:+=-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`}function ik(t){if(!t.ok)return`\u26A0 ${t.reason}
|
|
137
137
|
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(K2(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(`
|
|
138
138
|
`)}function K2(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(` ${Y2(t.description,200)}`);let r=$O(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(`
|
|
139
|
-
`)}function Y2(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var BO=p(()=>{"use strict"});var UO=p(()=>{"use strict";Cf();kO();xO();SO();wO();EO();CO();Yu();NO();BO()});function ak(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 jO(t,e){let o=ak(t),n=ak(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 l=typeof i=="number",c=typeof a=="number";return l&&c?i<a?-1:1:l?-1:c?1:i<a?-1:1}return 0}function lk(t,e){return jO(t,e)===1}var HO=p(()=>{"use strict"});var ck=p(()=>{"use strict"});var qO=p(()=>{"use strict";ck()});var WO=p(()=>{"use strict"});var GO=p(()=>{"use strict"});function dk(t){return`connector-${t}-token`}function uk(t){let e=t.trim();return/^\d{5,}:[A-Za-z0-9_-]{30,}$/.test(e)}function ya(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 zO=p(()=>{"use strict"});var N=p(()=>{"use strict";qA();uE();RE();KT();cO();yO();UO();qv();ef();HO();ck();qO();WO();GO();zO()});var Lf,Pf,YO,VO,XO,JO,If=p(()=>{"use strict";Lf={fg:{color:"#F2EEE8"},fgDim:{color:"#8A7F6D",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},Pf={fg:{color:"#1A1712"},fgDim:{color:"#544B3C"},accent:{color:"#82530F",bold:!0},accentDim:{color:"#82530F",bold:!0},danger:{color:"#B23A2A",bold:!0},success:{color:"#1F6B3A"},depth:{color:"#2E6E69"}},YO={fg:{color:"white"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},VO={fg:{color:"black"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},XO={fg:{color:"#F2EEE8"},fgDim:{color:"#B0A593",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},JO={fg:{},fgDim:{dimColor:!0},accent:{bold:!0},accentDim:{bold:!0},danger:{bold:!0,inverse:!0},success:{},depth:{}}});var QO,ZO,e0,t0,o0,n0,r0,Nf=p(()=>{"use strict";QO={you:"\u258C",aluy:"\u039B",tool:"\u23FA",toolInflight:"\u25CB",wave:"~",waveHead:"\u203A",ask:"\u26A0",ok:"\u2713",err:"\u2717",broker:"\u25CF",clock:"\u25F7",gauge:"\u25D4",window:"\u25A1",branch:"\u2387",diffDel:"\u2039",diffAdd:"\u203A",prompt:"\u203A",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u25B0",barEmpty:"\u25B1"},ZO={you:"\u258C",aluy:"\u039B",tool:"\u25CF",toolInflight:"\u25CB",wave:"~",waveHead:">",ask:"!",ok:"\u221A",err:"x",broker:"\u25CF",clock:"o",gauge:"\u25D4",window:"\u25A1",branch:"Y",diffDel:"<",diffAdd:">",prompt:">",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u2588",barEmpty:"\u2591"},e0={you:">",aluy:"/\\",tool:"o",toolInflight:".",wave:"~",waveHead:">",ask:"!",ok:"[ok]",err:"[x]",broker:"(b)",clock:"t:",gauge:"%:",window:"ctx:",branch:"git:",diffDel:"-",diffAdd:"+",prompt:">",cursor:"*",thinkingCursor:"*",planMode:"[plan]",normalMode:"*",subagents:"(+)",sessionDot:"*",barFull:"#",barEmpty:"."},t0=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],o0=["-","\\","|","/"],n0={topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",teeLeft:"\u251C",teeRight:"\u2524"},r0={topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",horizontal:"-",vertical:"|",teeLeft:"+",teeRight:"+"}});function s0(t){return ba.includes(t.trim().toLowerCase())}function mk(t){let e=2166136261,o=t.trim().toLowerCase();for(let r=0;r<o.length;r++)e^=o.charCodeAt(r),e=Math.imul(e,16777619);let n=(e>>>0)%Kc.length;return Kc[n].name}function i0(t,e,o){let n=t.trim().toLowerCase(),r=Kc.find(s=>s.name===n)??Kc.find(s=>s.name===mk(n));return e==="mono"?{bold:!0}:e==="truecolor"?{color:o==="light"?r.lightHex:r.darkHex,bold:!0}:{color:r.ansi,bold:!0}}var Kc,ba,Df=p(()=>{"use strict";Kc=[{name:"ambar",darkHex:"#DDA13F",lightHex:"#82530F",ansi:"yellow"},{name:"verde",darkHex:"#82CF9E",lightHex:"#1F6B3A",ansi:"green"},{name:"teal",darkHex:"#5BA8A2",lightHex:"#2E6E69",ansi:"cyan"},{name:"azul",darkHex:"#6FA8DC",lightHex:"#1F5C99",ansi:"blue"},{name:"violeta",darkHex:"#B08CD9",lightHex:"#6A3FA6",ansi:"magenta"},{name:"rosa",darkHex:"#E59BC0",lightHex:"#A63D74",ansi:"magenta"},{name:"coral",darkHex:"#E5897C",lightHex:"#B23A2A",ansi:"red"},{name:"ardosia",darkHex:"#9AA7B0",lightHex:"#4A5963",ansi:"gray"}],ba=Kc.map(t=>t.name)});function $f(t){return t!==void 0&&t!==""&&t!=="0"&&t.toLowerCase()!=="false"}function aG(t){if(t.NO_COLOR!==void 0)return"mono";let e=(t.COLORTERM??"").toLowerCase();if(e==="truecolor"||e==="24bit")return"truecolor";let o=(t.TERM??"").toLowerCase();return o==="dumb"||o===""?"mono":"ansi16"}function lG(t,e){if(e)return e;let o=t.COLORFGBG;if(o){let n=o.split(";"),r=Number(n[n.length-1]);if(Number.isFinite(r))return r>=8?"light":"dark"}return"dark"}function cG(t){let e=(t.TERM??"").toLowerCase();if(e==="linux"||e==="dumb")return!1;let o=`${t.LC_ALL??""}${t.LC_CTYPE??""}${t.LANG??""}`.toLowerCase();return!($f(t.ALUY_ASCII)||o&&!o.includes("utf"))}function dG(t,e){return e!==void 0?e:$f(t.ALUY_SAFE_GLYPHS)}function uG(t,e,o){return t==="mono"?JO:t==="truecolor"?o??(e==="light"?Pf:Lf):e==="light"?VO:YO}function Vo(t={}){let e=t.env??process.env,o=aG(e),n=lG(e,t.theme),r=cG(e),s=r&&dG(e,t.safeGlyphs),i=t.density??($f(e.ALUY_DENSITY)&&e.ALUY_DENSITY==="compact"?"compact":"comfortable"),a=t.animate??!$f(e.ALUY_NO_ANIM),l=uG(o,n,t.truecolorPalette),c=r?s?ZO:QO:e0;return{colorMode:o,brightness:n,unicode:r,safeGlyphs:s,density:i,animate:a,role:h=>l[h],sessionColor:h=>i0(h,o,n),glyph:h=>c[h],aluyMark:r?"\u039B":"/\\",spinnerFrames:r&&!s?t0:o0,box:r?n0:r0}}var Ff=p(()=>{"use strict";If();Nf();Df()});function ts(t){return Fo.find(e=>e.name===t)}function Er(t){let e=t.trim().toLowerCase();if(e==="")return;let o=Fo.find(r=>r.name===e);if(o)return o;let n=Fo.find(r=>r.name===`aluy-${e}`);return n||Fo.find(r=>r.label.toLowerCase()===e)}function ti(t){return t==="light"?"aluy-light":"aluy-dark"}function a0(t,e={}){let o=ts(t)??ts(hk);return Vo({...e,theme:o.brightness,truecolorPalette:o.palette})}var Fo,hk,os=p(()=>{"use strict";Ff();If();Fo=[{name:"aluy-dark",label:"Aluy Dark",brightness:"dark",summary:"escuro neutro (default) \u2014 fundo quase-preto, accent \xE2mbar",bg:"#070707",palette:Lf},{name:"aluy-light",label:"Aluy Light",brightness:"light",summary:"claro creme \u2014 fundo --stone-50, accent \xE2mbar escurecido (AA)",bg:"#F4ECDC",palette:Pf},{name:"aluy-slate",label:"Aluy Slate",brightness:"dark",summary:"terra escura WARM \u2014 fundo --stone-950, accent \xE2mbar",bg:"#0E0C09",palette:XO}],hk="aluy-dark"});function oi(t){return Dt.find(e=>e.code===t)}function ns(t){let e=t.trim().toLowerCase();if(e==="")return;let o=Dt.find(n=>n.code.toLowerCase()===e);if(o)return o;if(e==="pt"||e==="pt_br"||e==="br"||e==="portugu\xEAs"||e==="portugues")return oi("pt-BR");if(e==="en"||e==="en_us"||e==="english"||e==="ingl\xEAs"||e==="ingles")return oi("en")}function l0(t){let e=(t.LC_ALL??t.LC_MESSAGES??t.LANG??"").trim().toLowerCase();if(e==="")return jn;let o=e.split(".")[0].split("@")[0].replace("_","-");return o==="c"||o==="posix"?jn:o==="en"||o.startsWith("en-")?"en":jn}function gk(t,e,o){if(t!==void 0&&t.trim()!==""){let n=ns(t);if(n)return n.code}return e!==void 0?e:l0(o)}var jn,Dt,va=p(()=>{"use strict";jn="pt-BR",Dt=[{code:"pt-BR",label:"Portugu\xEAs (Brasil)",summary:"idioma padr\xE3o da TUI"},{code:"en",label:"English",summary:"English interface (opt-in)"}]});import{homedir as mG}from"node:os";import{join as c0}from"node:path";import{randomBytes as fG}from"node:crypto";import{openSync as pG,writeSync as hG,closeSync as d0,readFileSync as gG,mkdirSync as yG,renameSync as bG,unlinkSync as vG,constants as yk}from"node:fs";function u0(t){let o=(Array.isArray(t)?t:t!==void 0?[t]:[]).filter(n=>typeof n=="string"&&n.trim()!=="");return o.length>0?o:void 0}function wG(t){if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="localhost"||e==="::1"||/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}function AG(t){return typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=65535}function bk(t){if(typeof t!="object"||t===null)return;let e=t,o={};return wG(e.host)&&(o.host=e.host.trim()),AG(e.port)&&(o.port=e.port),o.host!==void 0||o.port!==void 0?o:void 0}function EG(t){if(typeof t!="object"||t===null)return;let e=t,o=a=>typeof a=="number"&&Number.isInteger(a)&&a>0?a:void 0,n={},r=o(e.maxTokens),s=o(e.maxOutputTokens),i=o(e.maxIterations);return r!==void 0&&(n.maxTokens=r),s!==void 0&&(n.maxOutputTokens=s),i!==void 0&&(n.maxIterations=i),Object.keys(n).length>0?n:void 0}function TG(t){if(typeof t!="object"||t===null)return;let e=t,o={};return typeof e.window=="number"&&Number.isInteger(e.window)&&e.window>0&&(o.window=e.window),typeof e.autocompactAt=="number"&&Number.isFinite(e.autocompactAt)?o.autocompactAt=e.autocompactAt:typeof e.autocompactAt=="string"&&e.autocompactAt.trim()!==""&&(o.autocompactAt=e.autocompactAt.trim()),typeof e.autocompactMax=="number"&&Number.isInteger(e.autocompactMax)&&e.autocompactMax>0&&(o.autocompactMax=e.autocompactMax),Object.keys(o).length>0?o:void 0}function _G(t){if(typeof t!="object"||t===null)return;let e=t,o={};if(typeof e.telegram=="object"&&e.telegram!==null){let n=e.telegram;if(Array.isArray(n.allowlist)){let r=[];for(let s of n.allowlist)typeof s=="number"&&Number.isFinite(s)&&Number.isInteger(s)&&!r.includes(s)&&r.push(s);o.telegram={allowlist:r}}else o.telegram={}}return o.telegram!==void 0?o:void 0}function RG(t){if(typeof t!="object"||t===null)return;let e=t,o={},n=bk(e.ollama),r=bk(e.mem0),s=bk(e.headroom);return n&&(o.ollama=n),r&&(o.mem0=r),s&&(o.headroom=s),Object.keys(o).length>0?o:void 0}function CG(t){if(!Array.isArray(t))return;let e=[];for(let o of t){if(typeof o!="object"||o===null)continue;let n=o,r=typeof n.id=="string"?n.id.trim():"",s=typeof n.baseUrl=="string"?n.baseUrl.trim():"",i=typeof n.defaultModel=="string"?n.defaultModel.trim():"",a=typeof n.wireFormat=="string"?n.wireFormat:"";if(r===""||s===""||i===""||!SG.has(a))continue;let l=u0(n.auth),c=u0(n.models),d={id:r,wireFormat:a,baseUrl:s,defaultModel:i,...typeof n.label=="string"&&n.label.trim()?{label:n.label.trim()}:{},...l?{auth:l}:{},...c?{models:c}:{}};e.push(d)}return e.length>0?e:void 0}function Yc(t){if(typeof t!="string")return!1;let e=t.trim();return e===""||e.length>OG?!1:!/[\u0000-\u001F\u007F]/.test(e)}function m0(t){if(typeof t!="object"||t===null)return{};let e=t,o={};if(typeof e.theme=="string"){let l=ts(e.theme);l&&(o.theme=l.name)}if(Yc(e.tier)&&(o.tier=e.tier.trim()),o.tier==="custom"&&Yc(e.model)&&(o.model=e.model.trim()),typeof e.splitView=="boolean"&&(o.splitView=e.splitView),typeof e.lang=="string"){let l=oi(e.lang);l&&(o.lang=l.code)}if(typeof e.fullscreen=="boolean"&&(o.fullscreen=e.fullscreen),(e.backend==="broker"||e.backend==="local")&&(o.backend=e.backend),Yc(e.localProvider)&&(o.localProvider=e.localProvider.trim()),Yc(e.localModel)&&(o.localModel=e.localModel.trim()),(e.localAuth==="apikey"||e.localAuth==="oauth"||e.localAuth==="none")&&(o.localAuth=e.localAuth),Yc(e.localBaseUrl)&&(o.localBaseUrl=e.localBaseUrl.trim()),typeof e.localBudget=="boolean"&&(o.localBudget=e.localBudget),typeof e.rooms=="object"&&e.rooms!==null){let l=e.rooms;if(typeof l.backend=="string"){let c=l.backend.trim().toLowerCase();c.length>0&&c.length<=32&&(o.rooms={backend:c})}}if((e.profile==="turbo"||e.profile==="leve")&&(o.profile=e.profile),typeof e.embedder=="string"&&Qr(e.embedder.trim())!==void 0&&(o.embedder=e.embedder.trim()),typeof e.sidecarToggles=="object"&&e.sidecarToggles!==null){let l=e.sidecarToggles,c={};typeof l.ollama=="boolean"&&(c.ollama=l.ollama),typeof l.mem0=="boolean"&&(c.mem0=l.mem0),typeof l.headroom=="boolean"&&(c.headroom=l.headroom),Object.keys(c).length>0&&(o.sidecarToggles=c)}let n=CG(e.providers);n&&(o.providers=n);let r=RG(e.services);r&&(o.services=r);let s=_G(e.connectors);s&&(o.connectors=s);let i=EG(e.limits);i&&(o.limits=i);let a=TG(e.context);return a&&(o.context=a),o}function ka(t){return t.connectors?.telegram?.allowlist??[]}function Bf(t,e){let o=ka(t);return o.includes(e)?o:[...o,e]}function Uf(t,e){return ka(t).filter(o=>o!==e)}function Xc(t,e,o){return t!==void 0&&t.trim()!==""?t.trim():e.tier!==void 0&&e.tier.trim()!==""?e.tier.trim():o}function f0(t){return t.lang}function vk(t,e){return t===!0?!0:e.splitView??!1}function kk(t,e){return t===!0?!0:e.fullscreen??!1}function jf(t,e=process.env){let o=e.ALUY_MEM0_EMBEDDER?.trim();return o!==void 0&&o!==""&&Qr(o)!==void 0?o:t.embedder!==void 0&&Qr(t.embedder)!==void 0?t.embedder:pa}var kG,xG,Vc,SG,OG,Qe,Bo=p(()=>{"use strict";os();va();N();kG=448,xG=384,Vc="config.json",SG=new Set(["openai-compat","anthropic","gemini"]);OG=128;Qe=class{base;file;constructor(e={}){this.base=e.baseDir??c0(mG(),".aluy"),this.file=c0(this.base,Vc)}get configPath(){return this.file}load(){let e;try{e=gG(this.file,"utf8")}catch{return{}}let o;try{o=JSON.parse(e)}catch{return{}}return m0(o)}save(e){try{let o=m0({...this.load(),...e});return this.writeAtomic(o),!0}catch{return!1}}saveTheme(e){return this.save({theme:e})}saveLang(e){return this.save({lang:e})}saveTier(e,o){let r=e.trim()==="custom"&&o!==void 0&&o.trim()!==""?o.trim():void 0;return this.save(r!==void 0?{tier:e,model:r}:{tier:e})}saveSplitView(e){return this.save({splitView:e})}saveFullscreen(e){return this.save({fullscreen:e})}saveLocalBudget(e){return this.save({localBudget:e})}writeAtomic(e){yG(this.base,{recursive:!0,mode:kG});let o=`${this.file}.${process.pid}.${fG(6).toString("hex")}.tmp`,n=JSON.stringify(e,null,2)+`
|
|
139
|
+
`)}function Y2(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var BO=p(()=>{"use strict"});var UO=p(()=>{"use strict";Cf();kO();xO();SO();wO();EO();CO();Yu();NO();BO()});function ak(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 jO(t,e){let o=ak(t),n=ak(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 l=typeof i=="number",c=typeof a=="number";return l&&c?i<a?-1:1:l?-1:c?1:i<a?-1:1}return 0}function lk(t,e){return jO(t,e)===1}var HO=p(()=>{"use strict"});var ck=p(()=>{"use strict"});var qO=p(()=>{"use strict";ck()});var WO=p(()=>{"use strict"});var GO=p(()=>{"use strict"});function dk(t){return`connector-${t}-token`}function uk(t){let e=t.trim();return/^\d{5,}:[A-Za-z0-9_-]{30,}$/.test(e)}function ya(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 zO=p(()=>{"use strict"});var N=p(()=>{"use strict";qA();uE();RE();KT();cO();yO();UO();qv();ef();HO();ck();qO();WO();GO();zO()});var Lf,Pf,YO,VO,XO,JO,If=p(()=>{"use strict";Lf={fg:{color:"#F2EEE8"},fgDim:{color:"#8A7F6D",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},Pf={fg:{color:"#1A1712"},fgDim:{color:"#544B3C"},accent:{color:"#82530F",bold:!0},accentDim:{color:"#82530F",bold:!0},danger:{color:"#B23A2A",bold:!0},success:{color:"#1F6B3A"},depth:{color:"#2E6E69"}},YO={fg:{color:"white"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},VO={fg:{color:"black"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},XO={fg:{color:"#F2EEE8"},fgDim:{color:"#B0A593",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},JO={fg:{},fgDim:{dimColor:!0},accent:{bold:!0},accentDim:{bold:!0},danger:{bold:!0,inverse:!0},success:{},depth:{}}});var QO,ZO,e0,t0,o0,n0,r0,Nf=p(()=>{"use strict";QO={you:"\u258C",aluy:"\u039B",tool:"\u23FA",toolInflight:"\u25CB",wave:"~",waveHead:"\u203A",ask:"\u26A0",ok:"\u2713",err:"\u2717",broker:"\u25CF",clock:"\u25F7",gauge:"\u25D4",window:"\u25A1",branch:"\u2387",diffDel:"\u2039",diffAdd:"\u203A",prompt:"\u203A",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u25B0",barEmpty:"\u25B1"},ZO={you:"\u258C",aluy:"\u039B",tool:"\u25CF",toolInflight:"\u25CB",wave:"~",waveHead:">",ask:"!",ok:"\u221A",err:"x",broker:"\u25CF",clock:"o",gauge:"\u25D4",window:"\u25A1",branch:"Y",diffDel:"<",diffAdd:">",prompt:">",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u2588",barEmpty:"\u2591"},e0={you:">",aluy:"/\\",tool:"o",toolInflight:".",wave:"~",waveHead:">",ask:"!",ok:"[ok]",err:"[x]",broker:"(b)",clock:"t:",gauge:"%:",window:"ctx:",branch:"git:",diffDel:"-",diffAdd:"+",prompt:">",cursor:"*",thinkingCursor:"*",planMode:"[plan]",normalMode:"*",subagents:"(+)",sessionDot:"*",barFull:"#",barEmpty:"."},t0=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],o0=["-","\\","|","/"],n0={topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",teeLeft:"\u251C",teeRight:"\u2524"},r0={topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",horizontal:"-",vertical:"|",teeLeft:"+",teeRight:"+"}});function s0(t){return ba.includes(t.trim().toLowerCase())}function mk(t){let e=2166136261,o=t.trim().toLowerCase();for(let r=0;r<o.length;r++)e^=o.charCodeAt(r),e=Math.imul(e,16777619);let n=(e>>>0)%Kc.length;return Kc[n].name}function i0(t,e,o){let n=t.trim().toLowerCase(),r=Kc.find(s=>s.name===n)??Kc.find(s=>s.name===mk(n));return e==="mono"?{bold:!0}:e==="truecolor"?{color:o==="light"?r.lightHex:r.darkHex,bold:!0}:{color:r.ansi,bold:!0}}var Kc,ba,Df=p(()=>{"use strict";Kc=[{name:"ambar",darkHex:"#DDA13F",lightHex:"#82530F",ansi:"yellow"},{name:"verde",darkHex:"#82CF9E",lightHex:"#1F6B3A",ansi:"green"},{name:"teal",darkHex:"#5BA8A2",lightHex:"#2E6E69",ansi:"cyan"},{name:"azul",darkHex:"#6FA8DC",lightHex:"#1F5C99",ansi:"blue"},{name:"violeta",darkHex:"#B08CD9",lightHex:"#6A3FA6",ansi:"magenta"},{name:"rosa",darkHex:"#E59BC0",lightHex:"#A63D74",ansi:"magenta"},{name:"coral",darkHex:"#E5897C",lightHex:"#B23A2A",ansi:"red"},{name:"ardosia",darkHex:"#9AA7B0",lightHex:"#4A5963",ansi:"gray"}],ba=Kc.map(t=>t.name)});function $f(t){return t!==void 0&&t!==""&&t!=="0"&&t.toLowerCase()!=="false"}function aG(t){if(t.NO_COLOR!==void 0)return"mono";let e=(t.COLORTERM??"").toLowerCase();if(e==="truecolor"||e==="24bit")return"truecolor";let o=(t.TERM??"").toLowerCase();return o==="dumb"||o===""?"mono":"ansi16"}function lG(t,e){if(e)return e;let o=t.COLORFGBG;if(o){let n=o.split(";"),r=Number(n[n.length-1]);if(Number.isFinite(r))return r>=8?"light":"dark"}return"dark"}function cG(t){let e=(t.TERM??"").toLowerCase();if(e==="linux"||e==="dumb")return!1;let o=`${t.LC_ALL??""}${t.LC_CTYPE??""}${t.LANG??""}`.toLowerCase();return!($f(t.ALUY_ASCII)||o&&!o.includes("utf"))}function dG(t,e){return e!==void 0?e:$f(t.ALUY_SAFE_GLYPHS)}function uG(t,e,o){return t==="mono"?JO:t==="truecolor"?o??(e==="light"?Pf:Lf):e==="light"?VO:YO}function Vo(t={}){let e=t.env??process.env,o=aG(e),n=lG(e,t.theme),r=cG(e),s=r&&dG(e,t.safeGlyphs),i=t.density??($f(e.ALUY_DENSITY)&&e.ALUY_DENSITY==="compact"?"compact":"comfortable"),a=t.animate??!$f(e.ALUY_NO_ANIM),l=uG(o,n,t.truecolorPalette),c=r?s?ZO:QO:e0;return{colorMode:o,brightness:n,unicode:r,safeGlyphs:s,density:i,animate:a,role:h=>l[h],sessionColor:h=>i0(h,o,n),glyph:h=>c[h],aluyMark:r?"\u039B":"/\\",spinnerFrames:r&&!s?t0:o0,box:r?n0:r0}}var Ff=p(()=>{"use strict";If();Nf();Df()});function ts(t){return Fo.find(e=>e.name===t)}function Er(t){let e=t.trim().toLowerCase();if(e==="")return;let o=Fo.find(r=>r.name===e);if(o)return o;let n=Fo.find(r=>r.name===`aluy-${e}`);return n||Fo.find(r=>r.label.toLowerCase()===e)}function ti(t){return t==="light"?"aluy-light":"aluy-dark"}function a0(t,e={}){let o=ts(t)??ts(hk);return Vo({...e,theme:o.brightness,truecolorPalette:o.palette})}var Fo,hk,os=p(()=>{"use strict";Ff();If();Fo=[{name:"aluy-dark",label:"Aluy Dark",brightness:"dark",summary:"escuro neutro (default) \u2014 fundo quase-preto, accent \xE2mbar",bg:"#070707",palette:Lf},{name:"aluy-light",label:"Aluy Light",brightness:"light",summary:"claro creme \u2014 fundo --stone-50, accent \xE2mbar escurecido (AA)",bg:"#F4ECDC",palette:Pf},{name:"aluy-slate",label:"Aluy Slate",brightness:"dark",summary:"terra escura WARM \u2014 fundo --stone-950, accent \xE2mbar",bg:"#0E0C09",palette:XO}],hk="aluy-dark"});function oi(t){return Dt.find(e=>e.code===t)}function ns(t){let e=t.trim().toLowerCase();if(e==="")return;let o=Dt.find(n=>n.code.toLowerCase()===e);if(o)return o;if(e==="pt"||e==="pt_br"||e==="br"||e==="portugu\xEAs"||e==="portugues")return oi("pt-BR");if(e==="en"||e==="en_us"||e==="english"||e==="ingl\xEAs"||e==="ingles")return oi("en")}function l0(t){let e=(t.LC_ALL??t.LC_MESSAGES??t.LANG??"").trim().toLowerCase();if(e==="")return jn;let o=e.split(".")[0].split("@")[0].replace("_","-");return o==="c"||o==="posix"?jn:o==="en"||o.startsWith("en-")?"en":jn}function gk(t,e,o){if(t!==void 0&&t.trim()!==""){let n=ns(t);if(n)return n.code}return e!==void 0?e:l0(o)}var jn,Dt,va=p(()=>{"use strict";jn="pt-BR",Dt=[{code:"pt-BR",label:"Portugu\xEAs (Brasil)",summary:"idioma padr\xE3o da TUI"},{code:"en",label:"English",summary:"English interface (opt-in)"}]});import{homedir as mG}from"node:os";import{join as c0}from"node:path";import{randomBytes as fG}from"node:crypto";import{openSync as pG,writeSync as hG,closeSync as d0,readFileSync as gG,mkdirSync as yG,renameSync as bG,unlinkSync as vG,constants as yk}from"node:fs";function u0(t){let o=(Array.isArray(t)?t:t!==void 0?[t]:[]).filter(n=>typeof n=="string"&&n.trim()!=="");return o.length>0?o:void 0}function wG(t){if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="localhost"||e==="::1"||/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}function AG(t){return typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=65535}function bk(t){if(typeof t!="object"||t===null)return;let e=t,o={};return wG(e.host)&&(o.host=e.host.trim()),AG(e.port)&&(o.port=e.port),o.host!==void 0||o.port!==void 0?o:void 0}function EG(t){if(typeof t!="object"||t===null)return;let e=t,o=a=>typeof a=="number"&&Number.isInteger(a)&&a>0?a:void 0,n={},r=o(e.maxTokens),s=o(e.maxOutputTokens),i=o(e.maxIterations);return r!==void 0&&(n.maxTokens=r),s!==void 0&&(n.maxOutputTokens=s),i!==void 0&&(n.maxIterations=i),Object.keys(n).length>0?n:void 0}function TG(t){if(typeof t!="object"||t===null)return;let e=t,o={};return typeof e.window=="number"&&Number.isInteger(e.window)&&e.window>0&&(o.window=e.window),typeof e.autocompactAt=="number"&&Number.isFinite(e.autocompactAt)?o.autocompactAt=e.autocompactAt:typeof e.autocompactAt=="string"&&e.autocompactAt.trim()!==""&&(o.autocompactAt=e.autocompactAt.trim()),typeof e.autocompactMax=="number"&&Number.isInteger(e.autocompactMax)&&e.autocompactMax>0&&(o.autocompactMax=e.autocompactMax),Object.keys(o).length>0?o:void 0}function _G(t){if(typeof t!="object"||t===null)return;let e=t,o={};if(typeof e.telegram=="object"&&e.telegram!==null){let n=e.telegram;if(Array.isArray(n.allowlist)){let r=[];for(let s of n.allowlist)typeof s=="number"&&Number.isFinite(s)&&Number.isInteger(s)&&!r.includes(s)&&r.push(s);o.telegram={allowlist:r}}else o.telegram={}}return o.telegram!==void 0?o:void 0}function RG(t){if(typeof t!="object"||t===null)return;let e=t,o={},n=bk(e.ollama),r=bk(e.mem0),s=bk(e.headroom);return n&&(o.ollama=n),r&&(o.mem0=r),s&&(o.headroom=s),Object.keys(o).length>0?o:void 0}function CG(t){if(!Array.isArray(t))return;let e=[];for(let o of t){if(typeof o!="object"||o===null)continue;let n=o,r=typeof n.id=="string"?n.id.trim():"",s=typeof n.baseUrl=="string"?n.baseUrl.trim():"",i=typeof n.defaultModel=="string"?n.defaultModel.trim():"",a=typeof n.wireFormat=="string"?n.wireFormat:"";if(r===""||s===""||i===""||!SG.has(a))continue;let l=u0(n.auth),c=u0(n.models),d={id:r,wireFormat:a,baseUrl:s,defaultModel:i,...typeof n.label=="string"&&n.label.trim()?{label:n.label.trim()}:{},...l?{auth:l}:{},...c?{models:c}:{}};e.push(d)}return e.length>0?e:void 0}function Yc(t){if(typeof t!="string")return!1;let e=t.trim();return e===""||e.length>OG?!1:!/[\u0000-\u001F\u007F]/.test(e)}function m0(t){if(typeof t!="object"||t===null)return{};let e=t,o={};if(typeof e.theme=="string"){let l=ts(e.theme);l&&(o.theme=l.name)}if(Yc(e.tier)&&(o.tier=e.tier.trim()),o.tier==="custom"&&Yc(e.model)&&(o.model=e.model.trim()),typeof e.splitView=="boolean"&&(o.splitView=e.splitView),typeof e.lang=="string"){let l=oi(e.lang);l&&(o.lang=l.code)}if(typeof e.fullscreen=="boolean"&&(o.fullscreen=e.fullscreen),(e.backend==="broker"||e.backend==="local")&&(o.backend=e.backend),Yc(e.localProvider)&&(o.localProvider=e.localProvider.trim()),Yc(e.localModel)&&(o.localModel=e.localModel.trim()),(e.localAuth==="apikey"||e.localAuth==="oauth"||e.localAuth==="none")&&(o.localAuth=e.localAuth),Yc(e.localBaseUrl)&&(o.localBaseUrl=e.localBaseUrl.trim()),typeof e.localBudget=="boolean"&&(o.localBudget=e.localBudget),typeof e.rooms=="object"&&e.rooms!==null){let l=e.rooms;if(typeof l.backend=="string"){let c=l.backend.trim().toLowerCase();c.length>0&&c.length<=32&&(o.rooms={backend:c})}}if((e.profile==="turbo"||e.profile==="leve")&&(o.profile=e.profile),typeof e.embedder=="string"&&Qr(e.embedder.trim())!==void 0&&(o.embedder=e.embedder.trim()),typeof e.recallMinScore=="number"&&Number.isFinite(e.recallMinScore)&&e.recallMinScore>=0&&e.recallMinScore<=1&&(o.recallMinScore=e.recallMinScore),typeof e.sidecarToggles=="object"&&e.sidecarToggles!==null){let l=e.sidecarToggles,c={};typeof l.ollama=="boolean"&&(c.ollama=l.ollama),typeof l.mem0=="boolean"&&(c.mem0=l.mem0),typeof l.headroom=="boolean"&&(c.headroom=l.headroom),Object.keys(c).length>0&&(o.sidecarToggles=c)}let n=CG(e.providers);n&&(o.providers=n);let r=RG(e.services);r&&(o.services=r);let s=_G(e.connectors);s&&(o.connectors=s);let i=EG(e.limits);i&&(o.limits=i);let a=TG(e.context);return a&&(o.context=a),o}function ka(t){return t.connectors?.telegram?.allowlist??[]}function Bf(t,e){let o=ka(t);return o.includes(e)?o:[...o,e]}function Uf(t,e){return ka(t).filter(o=>o!==e)}function Xc(t,e,o){return t!==void 0&&t.trim()!==""?t.trim():e.tier!==void 0&&e.tier.trim()!==""?e.tier.trim():o}function f0(t){return t.lang}function vk(t,e){return t===!0?!0:e.splitView??!1}function kk(t,e){return t===!0?!0:e.fullscreen??!1}function jf(t,e=process.env){let o=e.ALUY_MEM0_EMBEDDER?.trim();return o!==void 0&&o!==""&&Qr(o)!==void 0?o:t.embedder!==void 0&&Qr(t.embedder)!==void 0?t.embedder:pa}var kG,xG,Vc,SG,OG,Qe,Bo=p(()=>{"use strict";os();va();N();kG=448,xG=384,Vc="config.json",SG=new Set(["openai-compat","anthropic","gemini"]);OG=128;Qe=class{base;file;constructor(e={}){this.base=e.baseDir??c0(mG(),".aluy"),this.file=c0(this.base,Vc)}get configPath(){return this.file}load(){let e;try{e=gG(this.file,"utf8")}catch{return{}}let o;try{o=JSON.parse(e)}catch{return{}}return m0(o)}save(e){try{let o=m0({...this.load(),...e});return this.writeAtomic(o),!0}catch{return!1}}saveTheme(e){return this.save({theme:e})}saveLang(e){return this.save({lang:e})}saveTier(e,o){let r=e.trim()==="custom"&&o!==void 0&&o.trim()!==""?o.trim():void 0;return this.save(r!==void 0?{tier:e,model:r}:{tier:e})}saveSplitView(e){return this.save({splitView:e})}saveFullscreen(e){return this.save({fullscreen:e})}saveLocalBudget(e){return this.save({localBudget:e})}writeAtomic(e){yG(this.base,{recursive:!0,mode:kG});let o=`${this.file}.${process.pid}.${fG(6).toString("hex")}.tmp`,n=JSON.stringify(e,null,2)+`
|
|
140
140
|
`,r;try{r=pG(o,yk.O_CREAT|yk.O_EXCL|yk.O_WRONLY,xG),hG(r,n),d0(r),r=void 0,bG(o,this.file)}catch(s){if(r!==void 0)try{d0(r)}catch{}try{vG(o)}catch{}throw s}}}});function xk(t){let e=t.env??process.env,o=e[t.urlKey]?.trim();if(o!==void 0&&o!=="")return o;let n=e[t.hostKey]?.trim()||t.cfg?.host||t.defHost,r=e[t.portKey]?.trim(),s=r&&/^\d+$/.test(r)?Number(r):void 0,i=(s!==void 0&&s>=1&&s<=65535?s:void 0)??t.cfg?.port??t.defPort;return`http://${n}:${i}`}function xa(t,e){return xk({env:t,urlKey:"ALUY_MEM0_URL",hostKey:"ALUY_MEM0_HOST",portKey:"ALUY_MEM0_PORT",cfg:e?.mem0,defHost:Yo,defPort:11435})}function Sa(t,e){return xk({env:t,urlKey:"ALUY_OLLAMA_URL",hostKey:"ALUY_OLLAMA_HOST",portKey:"ALUY_OLLAMA_PORT",cfg:e?.ollama,defHost:Yo,defPort:11434})}function Hf(t,e){return xk({env:t,urlKey:"ALUY_HEADROOM_URL",hostKey:"ALUY_HEADROOM_HOST",portKey:"ALUY_HEADROOM_PORT",cfg:e?.headroom,defHost:Yo,defPort:8787})}function p0(t){let e=t.env??{},o=(e.ALUY_HEADROOM_OFF??"").trim().toLowerCase();if(o==="1"||o==="true"||o==="on")return;if((e.ALUY_HEADROOM_URL??"").trim()!=="")return Hf(t.env,t.services);let r=t.profile==="turbo"&&t.headroomToggle!==!1,s=t.services?.headroom!==void 0;if(r||s)return Hf(t.env,t.services)}var Jc=p(()=>{"use strict";N()});import{createHash as LG}from"node:crypto";import{spawn as PG,spawnSync as so}from"node:child_process";import{existsSync as Ye,mkdirSync as Ak,chmodSync as rs,writeFileSync as IG,readFileSync as qf,rmSync as NG,copyFileSync as Wf,symlinkSync as DG,unlinkSync as $G,realpathSync as g0}from"node:fs";import{join as be,dirname as FG}from"node:path";import{homedir as Gf,userInfo as BG}from"node:os";import{fileURLToPath as UG}from"node:url";function Xo(){return be(Gf(),x0)}function Ek(){let t=Xo();Ye(t)||Ak(t,{mode:wa,recursive:!0});try{rs(t,wa)}catch{}return t}function HG(t){let e=Ek(),o=be(e,t);Ye(o)||Ak(o,{mode:wa});try{rs(o,wa)}catch{}return o}function y0(t){return LG("sha256").update(t).digest("hex")}function Tk(){try{let t=so("python3",["--version"],{encoding:"utf8",timeout:15e3}),e=(t.stdout||"").trim()||(t.stderr||"").trim(),o=e.match(/Python\s+(\d+)\.(\d+)/);if(!o)return{ok:!1,version:e||"desconhecido"};let n=parseInt(o[1],10),r=parseInt(o[2],10);return{ok:n===3&&r>=10,version:`${n}.${r}`}}catch{return{ok:!1,version:"n\xE3o encontrado"}}}function S0(){try{return so("zstd",["--version"],{timeout:1e4}).status===0}catch{return!1}}function w0(){try{return so("tar",["--version"],{timeout:1e4}).status===0}catch{return!1}}function Qc(t){try{return so(t,["-m","pip","--version"],{timeout:15e3}).status===0}catch{return!1}}async function qG(t,e){let o=t.body;if(!o||typeof o.getReader!="function")return Buffer.from(await t.arrayBuffer());let n=Number(t.headers?.get?.("content-length")??0),r=o.getReader(),s=[],i=0,a=-1,l=!!process.stderr.isTTY;for(;;){let{done:c,value:d}=await r.read();if(c)break;if(!d)continue;s.push(Buffer.from(d)),i+=d.length;let m=(i/1e6).toFixed(1);if(n>0){let u=Math.floor(i/n*100);if(u!==a){a=u;let h=(n/1e6).toFixed(1);process.stderr.write(`${l?"\r":""} baixando ${e}... ${u}% (${m}/${h} MB)${l?"":`
|
|
141
141
|
`}`)}}else process.stderr.write(`${l?"\r":""} baixando ${e}... ${m} MB${l?"":`
|
|
142
142
|
`}`)}return l&&process.stderr.write(`
|
|
@@ -152,7 +152,7 @@ ${t.trim()}`}}function YC(t,e,o=Nc){let{older:n,recent:r}=hf(t,o);if(n.length===
|
|
|
152
152
|
`);let i=so(process.execPath,[n,"-p",o,"--yolo","--no-self-check"],{stdio:"inherit",timeout:9e5,env:{...process.env,ALUY_OVERWRITE_RENDER:"0",ALUY_SYNC_OUTPUT:"0",ALUY_NO_WEAK_YOLO_WARN:"1",ALUY_PRINT_VERBOSE:"1"}});if(t==="mem0")try{let l=be(Xo(),Sr),c=be(l,vn);Ye(l)&&Wf(zf(),c)}catch{}t==="ollama"&&(await rz(),sz()),process.stderr.write(`
|
|
153
153
|
verificando "${t}"\u2026 (alguns segundos; a pr\xF3xima etapa vem em seguida)
|
|
154
154
|
`);let a=await k0(t,process.platform,!0);for(let l=0;l<tz&&!a;l++)await nz(oz),a=await k0(t,process.platform,!0);return{target:t,hashOk:a,installed:a,message:a?`complemento "${t}" instalado e verificado.`:`o complemento "${t}" ainda n\xE3o respondeu como esperado. O Aluy CLI funciona sem ele; voc\xEA pode tentar de novo depois com \`aluy bootstrap\`.`}}function nz(t){return new Promise(e=>setTimeout(e,t))}async function rz(){for(let t of[bn,Kf()])try{await(await fetch(`http://${Yo}:${Un}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:t,stream:!1})})).text()}catch{}}function sz(){if(process.platform!=="win32")try{let t=so("sh",["-lc","command -v ollama"],{encoding:"utf8",timeout:1e4});if(t.status===0&&(t.stdout??"").trim()!=="")return;let e=Gf(),n=["/usr/local/bin/ollama","/usr/bin/ollama","/opt/homebrew/bin/ollama",be(e,".ollama","bin","ollama"),be(Xo(),Zr,"bin","ollama")].find(i=>Ye(i));if(n===void 0)return;let r=be(e,".local","bin");Ak(r,{recursive:!0});let s=be(r,"ollama");try{if(g0(s)===g0(n))return;$G(s)}catch{}try{DG(n,s)}catch{}}catch{}}function iz(){try{return so("python3",["-m","venv","--help"],{timeout:1e4}).status===0}catch{return!1}}function az(){try{return so("python3",["-m","pip","--version"],{timeout:1e4}).status===0}catch{return!1}}function lz(t){let e=[],o=[];if(t.has("ollama")&&(S0()||(e.push("zstd (extrair o Ollama)"),o.push("zstd")),w0()||(e.push("tar (extrair o Ollama)"),o.push("tar"))),t.has("mem0")||t.has("headroom")){let r=Tk();r.ok?(iz()||(e.push("m\xF3dulo venv do Python (mem0/headroom criam um virtualenv)"),o.push("python3-venv")),az()||(e.push("pip do Python (mem0/headroom instalam pacotes)"),o.push("python3-pip"))):(e.push(`python3 >= ${Fc} para mem0/headroom (encontrado: ${r.version||"nenhum"})`),o.push("python3","python3-venv","python3-pip"))}if(e.length===0)return[];let n=[...new Set(o)];return["Faltam pr\xE9-requisitos para o modo turbo (o que conseguir, instala; o resto fica de fora):",...e.map(r=>` \u2022 ${r}`),`Instale e rode \`aluy bootstrap\` de novo: sudo apt install -y ${n.join(" ")}`,""]}async function E0(t,e,o){let n=t??"turbo",r=wr(e??{}),s=o?.useAgent!==!1,i=new wk({...o?.platform?{platform:o.platform}:{},...s?{agentInstaller:ez}:{}});if(!s)for(let a of lz(r))process.stderr.write(a+`
|
|
155
|
-
`);return i.provisionAll(n,r)}var x0,wa,jG,vn,b0,wk,v0,QG,tz,oz,_k=p(()=>{"use strict";N();x0=".aluy",wa=448,jG=384;vn="aluy-mem0-server.py";b0="application/vnd.ollama.image.model";wk=class{platform;agentInstaller;constructor(e={}){this.platform=e.platform??process.platform,this.agentInstaller=e.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(e){switch(e){case"ollama":{let o=be(Xo(),Zr,"bin","ollama");return Ye(o)}case"mem0":{let o=be(Xo(),Sr,"bin","python3");return Ye(o)&&Qc(o)}case"headroom":{let o=be(Xo(),es,"bin","headroom");return Ye(o)}default:return!1}}async provision(e,o){let n=BG().uid;if(Hv(n))return{target:e,hashOk:!1,installed:!1,message:"RECUSA ROOT (uid=0): provisionamento de sidecars \xE9 user-space. Execute como usu\xE1rio normal."};if(this.agentInstaller)return this.agentInstaller(e,o);if(!this.hasPinnedArtifact())return{target:e,hashOk:!1,installed:!1,message:`SO '${this.platform}' sem artefato pinado p/ provisionamento direto. Rode \`aluy bootstrap\` (o aluy instala via o pr\xF3prio agente, \u26A0 --yolo) ou instale manualmente.`};switch(e){case"ollama":return zG();case"mem0":return XG();case"headroom":return JG();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!Uc(e))return{profile:e,targets:[],anySuccess:!1,allFailed:!1};let n=[],r=[...o];for(let a=0;a<r.length;a++){let l=r[a],c={index:a+1,total:r.length,plan:r};try{n.push(await this.provision(l,c))}catch(d){let m=d instanceof Error?d.message:String(d);n.push({target:l,hashOk:!1,installed:!1,message:`falha inesperada ao provisionar \u2014 seguindo p/ os pr\xF3ximos (${m}).`})}}let s=n.some(a=>a.installed),i=n.length>0&&n.every(a=>!a.installed);return{profile:e,targets:n,anySuccess:s,allFailed:i}}},v0="na faixa 3.10\u20133.12 (N\xC3O use 3.13+/3.14 \u2014 as depend\xEAncias nativas n\xE3o t\xEAm wheels e o pip falha ao compilar; no Windows prefira `py -3.12` ou `py -3.11`). Se N\xC3O houver um Python 3.10\u20133.12 instalado, INSTALE primeiro (no Windows: `winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements`; no Linux/macOS use o gerenciador do sistema). Se j\xE1 existir um venv nesse caminho numa vers\xE3o incompat\xEDvel (ex.: 3.14), APAGUE e recrie com a vers\xE3o certa",QG="IMPORTANTE \u2014 o usu\xE1rio quer ACOMPANHAR: antes de cada passo, diga em 1 linha o que vai fazer; rode os comandos de instala\xE7\xE3o de forma VIS\xCDVEL (N\xC3O silencie pip/apt/curl com -q; mostre a sa\xEDda/progresso). Sem modo silencioso. ";tz=24,oz=5e3});var Hn,Zc=p(()=>{"use strict";Hn="1.0.0-rc.41"});var O0={};ut(O0,{HELP_TEXT:()=>_0,parseArgs:()=>Rk,suggestFlag:()=>mz,versionText:()=>R0});function it(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 cz(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 R0(){return`aluy ${Hn} (@hiperplano/aluy-cli-core ${Sl})`}function uz(t,e){let o=t.length,n=e.length,r=Array.from({length:n+1},(s,i)=>i);for(let s=1;s<=o;s++){let i=[s];for(let a=1;a<=n;a++){let l=t[s-1]===e[a-1]?0:1;i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+l)}r=i}return r[n]}function mz(t){let e,o=3;for(let n of C0){let r=uz(t,n);r<o&&(o=r,e=n)}return e}function fz(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===""||C0.has(s)||o.push(`--${s}`)}return o}function Rk(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let q=t.slice(1),he=it(q,"token"),ot=it(q,"org"),bt=q.includes("--device"),At=it(q,"provider"),_t=q.includes("--oauth");return{kind:"login",forceDeviceFlow:bt,...he!==void 0?{token:he}:{},...ot!==void 0?{org:ot}:{},...At!==void 0?{provider:At}:{},..._t?{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 q=t.includes("--deep")||t.includes("--test"),he=t.includes("--json");return{kind:"doctor",deep:q,json:he}}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 q=t.includes("--json"),he=t.findIndex(bt=>bt==="--backend"||bt.startsWith("--backend=")),ot="both";if(he!==-1){let At=(t[he].includes("=")?t[he].slice(10):t[he+1]??"").trim().toLowerCase();At==="local"?ot="local":At==="broker"&&(ot="broker")}return{kind:"models",scope:ot,json:q,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let q=t[1];if(q===void 0||!["login","logout","allow","deny","status"].includes(q))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ot=t.slice(2);if(q==="login"){let bt=it(ot,"token");return{kind:"telegram",sub:"login",...bt!==void 0?{token:bt}:{}}}if(q==="allow"||q==="deny"){let bt=ot.find(_t=>!_t.startsWith("-")),At=bt!==void 0&&/^-?\d+$/.test(bt)?Number(bt):void 0;return At===void 0?{kind:"usage-error",message:`uso: aluy telegram ${q} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:q,chatId:At}}return{kind:"telegram",sub:q}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(he=>!he.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:R0()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:_0};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--split")||t.includes("--view")?!0:void 0,c=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,d=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,m=it(t,"tier"),u=it(t,"lang"),h=it(t,"max-tokens"),g=it(t,"max-iterations"),y=it(t,"max-output-tokens"),b=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,T=t.includes("--no-autocompact")?"off":it(t,"autocompact-at"),A=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,B=it(t,"cycles"),H=it(t,"cycle-for"),G=it(t,"backend"),Y=it(t,"local-provider"),$=it(t,"local-model"),te=it(t,"local-auth"),oe=it(t,"local-base-url"),J=it(t,"model"),D=it(t,"provider");if((t.includes("--provider")||t.some(q=>q.startsWith("--provider=")))&&(J===void 0||J.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((J===void 0||J.trim()==="")&&m!==void 0&&m.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 xe=it(t,"effort"),K=t.includes("--effort")||t.some(q=>q.startsWith("--effort=")),ue;if(xe!==void 0){if(xe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(xe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ue=xe}else if(K)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Z=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec=")),ie=Z?it(t,"print",{allowDashValue:!0})??it(t,"exec",{allowDashValue:!0})??cz(t,"p")??void 0:void 0,P=Z?it(t,"output-format"):void 0,ge=t.includes("--new"),ee=t.includes("--continue"),le=t.indexOf("--resume"),Ce=t.find(q=>q.startsWith("--resume=")),Oo=le>=0||Ce!==void 0,Ne;if(Ce!==void 0)Ne=Ce.slice(9);else if(le>=0){let q=t[le+1];q!==void 0&&!q.startsWith("-")&&(Ne=q)}let ct=m!==void 0?t.indexOf("--tier")+1:-1,ht=u!==void 0&&!t.some(q=>q.startsWith("--lang="))?t.indexOf("--lang")+1:-1,gt=Ne!==void 0&&Ce===void 0?le+1:-1,Zt=h!==void 0&&!t.some(q=>q.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,L=g!==void 0&&!t.some(q=>q.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,ke=B!==void 0&&!t.some(q=>q.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Le=H!==void 0&&!t.some(q=>q.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,V=y!==void 0&&!t.some(q=>q.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,k=T!==void 0&&!t.includes("--no-autocompact")&&!t.some(q=>q.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,Mo=G!==void 0&&!t.some(q=>q.startsWith("--backend="))?t.indexOf("--backend")+1:-1,$e=(q,he)=>he!==void 0&&!t.some(ot=>ot.startsWith(`--${q}=`))?t.indexOf(`--${q}`)+1:-1,Rs=$e("local-provider",Y),Pi=$e("local-model",$),Wt=$e("local-auth",te),Dr=$e("local-base-url",oe),Os=J!==void 0&&!t.some(q=>q.startsWith("--model="))?t.indexOf("--model")+1:-1,qo=D!==void 0&&!t.some(q=>q.startsWith("--provider="))?t.indexOf("--provider")+1:-1,un=ue!==void 0&&!t.some(q=>q.startsWith("--effort="))?t.indexOf("--effort")+1:-1,yo=P!==void 0&&!t.some(q=>q.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,to=ie!==void 0&&!t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Wo=t.find((q,he)=>!q.startsWith("-")&&he!==ct&&he!==ht&&he!==Mo&&he!==Rs&&he!==Pi&&he!==Wt&&he!==Dr&&he!==Os&&he!==qo&&he!==un&&he!==yo&&he!==to&&he!==gt&&he!==Zt&&he!==L&&he!==V&&he!==k&&he!==ke&&he!==Le),Ii=ee?{kind:"continue"}:Oo?{kind:"resume",...Ne!==void 0?{id:Ne}:{}}:void 0,$r=new Set([ct,ht,Mo,Rs,Pi,Wt,Dr,Os,qo,un,yo,to,gt,Zt,L,V,k,ke,Le].filter(q=>q>=0));for(let q of dz){let he=t.indexOf(q);he>=0&&!t[he].includes("=")&&$r.add(he+1)}let mn=fz(t,$r);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...mn.length>0?{unknownFlags:mn}:{},dense:i,fresh:ge,subAgents:b,safeGlyphs:a,print:Z,...l!==void 0?{split:l}:{},...c!==void 0?{fullscreen:c}:{},...d!==void 0?{budget:d}:{},...Wo!==void 0?{goal:Wo}:{},...m!==void 0?{tier:m}:{},...G!==void 0?{backend:G}:{},...Y!==void 0?{localProvider:Y}:{},...$!==void 0?{localModel:$}:{},...te!==void 0?{localAuth:te}:{},...oe!==void 0?{localBaseUrl:oe}:{},...J!==void 0?{model:J}:{},...D!==void 0?{provider:D}:{},...ue!==void 0?{effort:ue}:{},...ie!==void 0?{printArg:ie}:{},...P!==void 0?{outputFormat:P}:{},...u!==void 0?{lang:u}:{},...Ii!==void 0?{resume:Ii}:{},...h!==void 0?{maxTokens:h}:{},...g!==void 0?{maxIterations:g}:{},...y!==void 0?{maxOutputTokens:y}:{},...w!==void 0?{selfCheck:w}:{},...T!==void 0?{autoCompactAt:T}:{},...A!==void 0?{quiet:A}:{},...M!==void 0?{cycle:M}:{},...B!==void 0?{cycles:B}:{},...H!==void 0?{cycleFor:H}:{}}}var _0,C0,dz,Ck=p(()=>{"use strict";N();Zc();_0=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
155
|
+
`);return i.provisionAll(n,r)}var x0,wa,jG,vn,b0,wk,v0,QG,tz,oz,_k=p(()=>{"use strict";N();x0=".aluy",wa=448,jG=384;vn="aluy-mem0-server.py";b0="application/vnd.ollama.image.model";wk=class{platform;agentInstaller;constructor(e={}){this.platform=e.platform??process.platform,this.agentInstaller=e.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(e){switch(e){case"ollama":{let o=be(Xo(),Zr,"bin","ollama");return Ye(o)}case"mem0":{let o=be(Xo(),Sr,"bin","python3");return Ye(o)&&Qc(o)}case"headroom":{let o=be(Xo(),es,"bin","headroom");return Ye(o)}default:return!1}}async provision(e,o){let n=BG().uid;if(Hv(n))return{target:e,hashOk:!1,installed:!1,message:"RECUSA ROOT (uid=0): provisionamento de sidecars \xE9 user-space. Execute como usu\xE1rio normal."};if(this.agentInstaller)return this.agentInstaller(e,o);if(!this.hasPinnedArtifact())return{target:e,hashOk:!1,installed:!1,message:`SO '${this.platform}' sem artefato pinado p/ provisionamento direto. Rode \`aluy bootstrap\` (o aluy instala via o pr\xF3prio agente, \u26A0 --yolo) ou instale manualmente.`};switch(e){case"ollama":return zG();case"mem0":return XG();case"headroom":return JG();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!Uc(e))return{profile:e,targets:[],anySuccess:!1,allFailed:!1};let n=[],r=[...o];for(let a=0;a<r.length;a++){let l=r[a],c={index:a+1,total:r.length,plan:r};try{n.push(await this.provision(l,c))}catch(d){let m=d instanceof Error?d.message:String(d);n.push({target:l,hashOk:!1,installed:!1,message:`falha inesperada ao provisionar \u2014 seguindo p/ os pr\xF3ximos (${m}).`})}}let s=n.some(a=>a.installed),i=n.length>0&&n.every(a=>!a.installed);return{profile:e,targets:n,anySuccess:s,allFailed:i}}},v0="na faixa 3.10\u20133.12 (N\xC3O use 3.13+/3.14 \u2014 as depend\xEAncias nativas n\xE3o t\xEAm wheels e o pip falha ao compilar; no Windows prefira `py -3.12` ou `py -3.11`). Se N\xC3O houver um Python 3.10\u20133.12 instalado, INSTALE primeiro (no Windows: `winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements`; no Linux/macOS use o gerenciador do sistema). Se j\xE1 existir um venv nesse caminho numa vers\xE3o incompat\xEDvel (ex.: 3.14), APAGUE e recrie com a vers\xE3o certa",QG="IMPORTANTE \u2014 o usu\xE1rio quer ACOMPANHAR: antes de cada passo, diga em 1 linha o que vai fazer; rode os comandos de instala\xE7\xE3o de forma VIS\xCDVEL (N\xC3O silencie pip/apt/curl com -q; mostre a sa\xEDda/progresso). Sem modo silencioso. ";tz=24,oz=5e3});var Hn,Zc=p(()=>{"use strict";Hn="1.0.0-rc.42"});var O0={};ut(O0,{HELP_TEXT:()=>_0,parseArgs:()=>Rk,suggestFlag:()=>mz,versionText:()=>R0});function it(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 cz(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 R0(){return`aluy ${Hn} (@hiperplano/aluy-cli-core ${Sl})`}function uz(t,e){let o=t.length,n=e.length,r=Array.from({length:n+1},(s,i)=>i);for(let s=1;s<=o;s++){let i=[s];for(let a=1;a<=n;a++){let l=t[s-1]===e[a-1]?0:1;i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+l)}r=i}return r[n]}function mz(t){let e,o=3;for(let n of C0){let r=uz(t,n);r<o&&(o=r,e=n)}return e}function fz(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===""||C0.has(s)||o.push(`--${s}`)}return o}function Rk(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let q=t.slice(1),he=it(q,"token"),ot=it(q,"org"),bt=q.includes("--device"),At=it(q,"provider"),_t=q.includes("--oauth");return{kind:"login",forceDeviceFlow:bt,...he!==void 0?{token:he}:{},...ot!==void 0?{org:ot}:{},...At!==void 0?{provider:At}:{},..._t?{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 q=t.includes("--deep")||t.includes("--test"),he=t.includes("--json");return{kind:"doctor",deep:q,json:he}}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 q=t.includes("--json"),he=t.findIndex(bt=>bt==="--backend"||bt.startsWith("--backend=")),ot="both";if(he!==-1){let At=(t[he].includes("=")?t[he].slice(10):t[he+1]??"").trim().toLowerCase();At==="local"?ot="local":At==="broker"&&(ot="broker")}return{kind:"models",scope:ot,json:q,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let q=t[1];if(q===void 0||!["login","logout","allow","deny","status"].includes(q))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ot=t.slice(2);if(q==="login"){let bt=it(ot,"token");return{kind:"telegram",sub:"login",...bt!==void 0?{token:bt}:{}}}if(q==="allow"||q==="deny"){let bt=ot.find(_t=>!_t.startsWith("-")),At=bt!==void 0&&/^-?\d+$/.test(bt)?Number(bt):void 0;return At===void 0?{kind:"usage-error",message:`uso: aluy telegram ${q} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:q,chatId:At}}return{kind:"telegram",sub:q}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(he=>!he.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:R0()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:_0};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--split")||t.includes("--view")?!0:void 0,c=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,d=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,m=it(t,"tier"),u=it(t,"lang"),h=it(t,"max-tokens"),g=it(t,"max-iterations"),y=it(t,"max-output-tokens"),b=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,T=t.includes("--no-autocompact")?"off":it(t,"autocompact-at"),A=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,B=it(t,"cycles"),H=it(t,"cycle-for"),G=it(t,"backend"),Y=it(t,"local-provider"),$=it(t,"local-model"),te=it(t,"local-auth"),oe=it(t,"local-base-url"),J=it(t,"model"),D=it(t,"provider");if((t.includes("--provider")||t.some(q=>q.startsWith("--provider=")))&&(J===void 0||J.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((J===void 0||J.trim()==="")&&m!==void 0&&m.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 xe=it(t,"effort"),K=t.includes("--effort")||t.some(q=>q.startsWith("--effort=")),ue;if(xe!==void 0){if(xe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(xe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ue=xe}else if(K)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Z=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec=")),ie=Z?it(t,"print",{allowDashValue:!0})??it(t,"exec",{allowDashValue:!0})??cz(t,"p")??void 0:void 0,P=Z?it(t,"output-format"):void 0,ge=t.includes("--new"),ee=t.includes("--continue"),le=t.indexOf("--resume"),Ce=t.find(q=>q.startsWith("--resume=")),Oo=le>=0||Ce!==void 0,Ne;if(Ce!==void 0)Ne=Ce.slice(9);else if(le>=0){let q=t[le+1];q!==void 0&&!q.startsWith("-")&&(Ne=q)}let ct=m!==void 0?t.indexOf("--tier")+1:-1,ht=u!==void 0&&!t.some(q=>q.startsWith("--lang="))?t.indexOf("--lang")+1:-1,gt=Ne!==void 0&&Ce===void 0?le+1:-1,Zt=h!==void 0&&!t.some(q=>q.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,L=g!==void 0&&!t.some(q=>q.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,ke=B!==void 0&&!t.some(q=>q.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Le=H!==void 0&&!t.some(q=>q.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,V=y!==void 0&&!t.some(q=>q.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,k=T!==void 0&&!t.includes("--no-autocompact")&&!t.some(q=>q.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,Mo=G!==void 0&&!t.some(q=>q.startsWith("--backend="))?t.indexOf("--backend")+1:-1,$e=(q,he)=>he!==void 0&&!t.some(ot=>ot.startsWith(`--${q}=`))?t.indexOf(`--${q}`)+1:-1,Rs=$e("local-provider",Y),Pi=$e("local-model",$),Wt=$e("local-auth",te),Dr=$e("local-base-url",oe),Os=J!==void 0&&!t.some(q=>q.startsWith("--model="))?t.indexOf("--model")+1:-1,qo=D!==void 0&&!t.some(q=>q.startsWith("--provider="))?t.indexOf("--provider")+1:-1,un=ue!==void 0&&!t.some(q=>q.startsWith("--effort="))?t.indexOf("--effort")+1:-1,yo=P!==void 0&&!t.some(q=>q.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,to=ie!==void 0&&!t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Wo=t.find((q,he)=>!q.startsWith("-")&&he!==ct&&he!==ht&&he!==Mo&&he!==Rs&&he!==Pi&&he!==Wt&&he!==Dr&&he!==Os&&he!==qo&&he!==un&&he!==yo&&he!==to&&he!==gt&&he!==Zt&&he!==L&&he!==V&&he!==k&&he!==ke&&he!==Le),Ii=ee?{kind:"continue"}:Oo?{kind:"resume",...Ne!==void 0?{id:Ne}:{}}:void 0,$r=new Set([ct,ht,Mo,Rs,Pi,Wt,Dr,Os,qo,un,yo,to,gt,Zt,L,V,k,ke,Le].filter(q=>q>=0));for(let q of dz){let he=t.indexOf(q);he>=0&&!t[he].includes("=")&&$r.add(he+1)}let mn=fz(t,$r);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...mn.length>0?{unknownFlags:mn}:{},dense:i,fresh:ge,subAgents:b,safeGlyphs:a,print:Z,...l!==void 0?{split:l}:{},...c!==void 0?{fullscreen:c}:{},...d!==void 0?{budget:d}:{},...Wo!==void 0?{goal:Wo}:{},...m!==void 0?{tier:m}:{},...G!==void 0?{backend:G}:{},...Y!==void 0?{localProvider:Y}:{},...$!==void 0?{localModel:$}:{},...te!==void 0?{localAuth:te}:{},...oe!==void 0?{localBaseUrl:oe}:{},...J!==void 0?{model:J}:{},...D!==void 0?{provider:D}:{},...ue!==void 0?{effort:ue}:{},...ie!==void 0?{printArg:ie}:{},...P!==void 0?{outputFormat:P}:{},...u!==void 0?{lang:u}:{},...Ii!==void 0?{resume:Ii}:{},...h!==void 0?{maxTokens:h}:{},...g!==void 0?{maxIterations:g}:{},...y!==void 0?{maxOutputTokens:y}:{},...w!==void 0?{selfCheck:w}:{},...T!==void 0?{autoCompactAt:T}:{},...A!==void 0?{quiet:A}:{},...M!==void 0?{cycle:M}:{},...B!==void 0?{cycles:B}:{},...H!==void 0?{cycleFor:H}:{}}}var _0,C0,dz,Ck=p(()=>{"use strict";N();Zc();_0=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
156
156
|
|
|
157
157
|
Uso:
|
|
158
158
|
aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
|
|
@@ -678,7 +678,7 @@ ${o[s]}`).join(`
|
|
|
678
678
|
`)}function dZ(t={}){let e=t.name??"este projeto",o=[];o.push(`# ${e}`),o.push(""),o.push("Instru\xE7\xF5es de projeto para o agente Aluy (lidas no in\xEDcio de cada sess\xE3o).","Edite \xE0 vontade \u2014 voc\xEA \xE9 o dono deste contexto."),o.push(""),o.push("## O que \xE9"),o.push(""),o.push(t.description??"<!-- Descreva o objetivo do projeto em 1\u20132 linhas. -->"),o.push(""),o.push("## Stack"),o.push(""),o.push(t.stack??"<!-- Linguagem/framework principais. -->"),o.push(""),o.push("## Comandos"),o.push("");let n=t.scripts??{},r=Object.keys(n);if(r.length>0){o.push("```bash");for(let s of r)o.push(`npm run ${s} # ${n[s]}`);o.push("```")}else o.push("<!-- Como instalar, buildar, testar e rodar (build/test/lint/start). -->");if(o.push(""),o.push("## Estrutura"),o.push(""),t.topDirs&&t.topDirs.length>0)for(let s of t.topDirs)o.push(`- \`${s}/\``);else o.push("<!-- Os diret\xF3rios principais e o que vive em cada um. -->");return o.push(""),o.push("## Conven\xE7\xF5es"),o.push(""),o.push("<!-- Padr\xF5es de c\xF3digo, idioma de docs/commits, regras de seguran\xE7a, o que N\xC3O fazer. -->"),o.push(""),o.join(`
|
|
679
679
|
`)}function oU(t){return["Voc\xEA \xE9 um especialista em scaffolding de projetos Aluy. Sua tarefa \xE9 gerar a","configura\xE7\xE3o `.aluy/` SOB MEDIDA para o projeto descrito abaixo.","","## O que voc\xEA deve criar","","Analise a descri\xE7\xE3o do projeto e crie os seguintes arquivos em `.aluy/`:","","1. **ALUY.md** (na raiz do projeto) \u2014 instru\xE7\xF5es de projeto para o agente Aluy."," Deve conter: nome do projeto, stack, comandos principais (build/test/lint),"," estrutura de diret\xF3rios e conven\xE7\xF5es. Use o formato:"," ```"," # nome-do-projeto"," Instru\xE7\xF5es de projeto para o agente Aluy\u2026"," ## O que \xE9"," \u2026"," ## Stack"," \u2026"," ## Comandos"," \u2026"," ## Estrutura"," \u2026"," ## Conven\xE7\xF5es"," \u2026"," ```","","2. **Agentes** em `.aluy/agents/` \u2014 perfis de sub-agentes NOMEADOS (`.md`)."," Formato EXATO (frontmatter YAML + corpo = system prompt):"," ```"," ---"," name: nome-do-agente # obrigat\xF3rio, min\xFAsculas, [a-z0-9_-]"," description: O que ele faz (1 frase)"," tools: read_file, grep # opcional \u2014 restringe o toolset (\u2286 pai)"," model: sonnet # opcional \u2014 prefer\xEAncia de tier"," ---"," Voc\xEA \xE9 um [persona]. [Instru\xE7\xF5es claras e objetivas.]"," ```"," - `tools:` AUSENTE = herda o toolset do pai."," - `tools:` PRESENTE = RESTRINGE \xE0 lista declarada."," - Crie agentes RELEVANTES ao stack descrito (ex.: revisor, tester, dev,"," arquiteto\u2026). SEMPRE crie pelo menos 1 agente.","","3. **Workflows** em `.aluy/workflows/` \u2014 fluxos de atividades (`.md`)."," Formato EXATO:"," ```"," ---"," name: nome-do-workflow # obrigat\xF3rio"," description: O que o fluxo entrega (1 frase)"," ---"," 1. passo-um [agente] \u2014 Objetivo claro do primeiro passo."," 2. passo-dois \u2014 Objetivo claro do segundo passo (sem agente = usa o default)."," ```"," - `[agente]` \xE9 OPCIONAL \u2014 se presente, invoca o agente `.md` com esse nome."," - O separador entre id e objetivo \xE9 `\u2014` (em-dash) ou `-`."," - Crie workflows do SDLC relevantes ao stack (ex.: implementar-estoria,"," code-review, deploy, bug-fix\u2026). Crie pelo menos 1 workflow.","","4. **Comandos** em `.aluy/commands/` \u2014 atalhos de prompt (`.md`)."," Formato EXATO:"," ```"," ---"," summary: O que o comando faz (1 frase)"," ---"," Template do prompt. Use $ARGUMENTS para os args do usu\xE1rio."," Ex.: Revise o arquivo $ARGUMENTS e sugira melhorias."," ```"," - O nome do comando vem do NOME DO ARQUIVO (sem `.md`)."," - `$ARGUMENTS` \xE9 substitu\xEDdo pelo que o usu\xE1rio digitar ap\xF3s `/<nome>`."," - Crie comandos \xDATEIS ao stack (ex.: revisar, testar, deploy, explicar\u2026)."," Crie pelo menos 1 comando.","","## IMPORTANTE","","- Escreva CADA arquivo com a ferramenta `write_file` (que passa pela catraca).","- Use caminhos RELATIVOS a partir da raiz do workspace:"," `ALUY.md`, `.aluy/agents/<nome>.md`, `.aluy/workflows/<nome>.md`,"," `.aluy/commands/<nome>.md`.","- N\xC3O crie diret\xF3rios explicitamente \u2014 o `write_file` j\xE1 os cria.","- Se um arquivo j\xE1 existir, use `overwrite: false` (padr\xE3o) \u2014 N\xC3O sobrescreva"," config do dono.","- Seja CRIATIVO e RELEVANTE: os agentes/workflows/comandos devem refletir o"," stack e o dom\xEDnio do projeto descrito.","- Ap\xF3s criar todos os arquivos, fa\xE7a um RESUMO do que foi criado e por qu\xEA.","","## Descri\xE7\xE3o do projeto","",t.trim(),""].join(`
|
|
680
680
|
`)}async function uZ(t,e){let o={},n={};e&&(n.name=e);try{let i=await t.fs.readFile("package.json"),a=JSON.parse(i);if(typeof a.name=="string"&&a.name.trim()!==""&&(n.name=a.name),typeof a.description=="string"&&a.description.trim()!==""&&(n.description=a.description),a.scripts&&typeof a.scripts=="object"){let c={},d=["build","test","lint","typecheck","start","dev","format"];for(let m of d){let u=a.scripts[m];typeof u=="string"&&(c[m]=u)}Object.keys(c).length>0&&(n.scripts=c)}let l={...a.dependencies,...a.devDependencies};n.stack=l&&"typescript"in l?"TypeScript / Node":"Node"}catch{}let r=["src","packages","tests","test","docs","lib","app"],s=[];for(let i of r)try{let{matches:a}=await t.search.search("",i);a.length>0&&s.push(i)}catch{}return s.length>0&&(n.topDirs=s),Object.assign(o,n),o}function mZ(t){return[{path:ci,content:dZ(t)},{path:Z1,content:aZ()},{path:eU,content:lZ()},{path:tU,content:cZ()}]}async function fZ(t,e,o,n,r,s=!1,i){if(e&&!s)return"skipped";let a={name:"write_file",input:{path:t.path,content:t.content,...s?{overwrite:!0}:{}}},l=ur(n,a);if(l.decision==="deny")return"denied";if(l.decision==="ask"){if(!l.effect)return"error";if((await r.resolve({call:a,effect:l.effect,category:l.category??"default",reason:l.reason,alwaysAsk:(l.category??"").startsWith("always-ask:")},i)).kind==="deny")return"denied"}return(await Ym.run(a.input,o)).ok?"created":"error"}function og(t){return t===ci?`${ci} (config do projeto)`:t===Z1?".aluy/agents/exemplo.md (agente de exemplo)":t===eU?".aluy/workflows/exemplo.md (workflow de exemplo)":t===tU?".aluy/commands/exemplo.md (comando de exemplo)":t}async function nU(t){let{ports:e,permission:o,askResolver:n}=t,r=await uZ(e,t.rootName),s=mZ(r),i=[];for(let g of s)try{i.push(await e.fs.exists(g.path))}catch{i.push(!1)}if(i[0]&&t.overwrite!==!0&&i.slice(1).every(Boolean))return{created:!1,note:{title:"init",lines:[`j\xE1 existe um ${ci} e a estrutura .aluy/ est\xE1 completa \u2014 nada a criar.`,"edite os arquivos \xE0 m\xE3o, ou remova-os e rode /init novamente.",`para regenerar o ${ci}, use \`/init --force\`.`]},createdPaths:[],skippedPaths:s.map(g=>g.path)};let l=[],c=[],d=[],m=[];for(let g=0;g<s.length;g++){let y=s[g],b=g===0&&t.overwrite===!0?!1:i[g],w=g===0&&t.overwrite===!0&&i[g];switch(await fZ(y,b,e,o,n,w,t.signal)){case"created":l.push(y.path);break;case"skipped":c.push(y.path);break;case"denied":d.push(y.path);break;case"error":m.push(y.path);break}}let u=l.length>0,h=[];if(u){h.push("scaffold criado com sucesso:");for(let g of l){let y=i[s.findIndex(b=>b.path===g)]?"regenerado":"criado";h.push(` ${y}: ${og(g)}`)}}if(c.length>0){u&&h.push(""),h.push("pulados (j\xE1 existiam \u2014 idempotente, n\xE3o sobrescrevo):");for(let g of c)h.push(` \u21B7 ${og(g)}`)}if(d.length>0){(u||c.length>0)&&h.push(""),h.push("recusados pela catraca de seguran\xE7a:");for(let g of d)h.push(` \u2717 ${og(g)}`)}if(m.length>0){(u||c.length>0||d.length>0)&&h.push(""),h.push("falharam ao escrever:");for(let g of m)h.push(` \u26A0 ${og(g)}`)}return!u&&c.length===s.length&&h.push("tudo j\xE1 existe \u2014 nada a criar (idempotente)."),u&&(h.push(""),h.push("revise e edite os arquivos \u2014 eles s\xE3o seus."),h.push("os exemplos em .aluy/ s\xE3o carregados automaticamente no pr\xF3ximo boot."),r.stack&&h.push(`stack detectada: ${r.stack}`),r.topDirs&&r.topDirs.length>0&&h.push(`estrutura: ${r.topDirs.map(g=>`${g}/`).join(", ")}`)),{created:u,note:{title:"init",lines:h},createdPaths:l,skippedPaths:c}}var PA,Z1,eU,tU,rU=p(()=>{"use strict";N();Ax();PA=".aluy",Z1=`${PA}/agents/exemplo.md`,eU=`${PA}/workflows/exemplo.md`,tU=`${PA}/commands/exemplo.md`});var dU={};ut(dU,{NATIVE_COMMANDS:()=>jo,NO_CYCLE_CEILING_MESSAGE:()=>IA,defaultBootPrompt:()=>lU,describeConfigSources:()=>cU,emitBootClear:()=>pl,isLoggedOut:()=>aU,preflightCycleCeiling:()=>iU,resolveCycleBootCeilings:()=>sU,runSession:()=>gZ});import{render as pZ}from"ink";import{basename as hZ}from"node:path";import{jsx as xZ}from"react/jsx-runtime";function sU(t){let e={};if(t.cycles!==void 0){let o=Number(t.cycles);Number.isFinite(o)&&Number.isInteger(o)&&o>=1&&(e.maxIterations=o)}if(t.cycleFor!==void 0){let o=Jr(t.cycleFor);o!==void 0&&o>0&&(e.maxDurationMs=o)}if(!(e.maxIterations===void 0&&e.maxDurationMs===void 0))return e}function iU(t,e){try{let n={...ia(t).request,...e?.maxIterations!==void 0?{maxIterations:e.maxIterations}:{},...e?.maxDurationMs!==void 0?{maxDurationMs:e.maxDurationMs}:{}};return ca(n),{kind:"ok"}}catch(o){if(o instanceof Bn)return{kind:"no-ceiling"};if(o instanceof zt)return{kind:"parse-error",message:o.message};throw o}}async function gZ(t={}){let e=t.env??process.env,o=t.headless!==void 0,n=!o&&(t.stdout??process.stdout).isTTY===!0,r=t.stdout??process.stdout,s=w1(r,process),i=n&&t.promptYesNo===void 0,a;if(i){let E=t.stdout??process.stdout;pl(E,!0);let W=Vo({env:e,...t.dense?{density:"compact"}:{},...t.safeGlyphs?{safeGlyphs:!0}:{}});a=V1({theme:W,stdout:E});let ye=Y1(e);ye>0&&await new Promise(R=>setTimeout(R,ye))}let l=a?.promptYesNo??t.promptYesNo??lU(t.stdout),c=t.mode,d=!1;t.yoloEntryNotice!==void 0&&n&&(await l(t.yoloEntryNotice)||(c="normal",d=!0,i||(t.stdout??process.stderr).write?.(`aluy: YOLO cancelado \u2014 seguindo em modo normal.
|
|
681
|
-
`)));let m=t.projectInstructions!==void 0?{instructions:t.projectInstructions,sources:[]}:await bZ(t),u=m.instructions,h=m.sources,g=t.configStore??new Qe,y=g.load()
|
|
681
|
+
`)));let m=t.projectInstructions!==void 0?{instructions:t.projectInstructions,sources:[]}:await bZ(t),u=m.instructions,h=m.sources,g=t.configStore??new Qe,y=g.load();e.ALUY_MEM_MIN_SCORE===void 0&&y.recallMinScore!==void 0&&(e.ALUY_MEM_MIN_SCORE=String(y.recallMinScore));let b=gk(t.lang,f0(y),e),w=vk(t.split,y),T=process.env.ALUY_FULLSCREEN==="1"?kk(t.fullscreen,y):!1,A=t.sessionStore??new _d;try{A.gc()}catch{}let M=new Yt(t.workspaceRoot!==void 0?{root:t.workspaceRoot}:{}),B=M.root,H=await N1({request:t.resume,fresh:t.fresh===!0,isTty:n,store:A,cwd:B,promptYesNo:l});H.kind==="not-found"&&process.stderr.write(`aluy: sess\xE3o "${H.requestedId}" n\xE3o encontrada \u2014 iniciando uma nova.
|
|
682
682
|
`);let G=H.kind==="resumed"?H.record:null,Y=G?Nu(G,Zo):void 0,$=P1(y,Zo),te=Y&&Y.tier.trim()!==""?Y.tier:void 0,oe=$.tier.trim()!==""?$.tier:void 0,J=Xc(t.tier,{...y,...oe!==void 0?{tier:oe}:{},...te!==void 0?{tier:te}:{}},Zo),D=J!=="custom"?void 0:t.model!==void 0&&t.model.trim()!==""?t.model.trim():t.tier!==void 0&&t.tier.trim()!==""?void 0:Y?.model??$.model,z=J!=="custom"||D===void 0||t.model!==void 0&&t.model.trim()!==""||t.tier!==void 0&&t.tier.trim()!==""?void 0:Y?.provider??$.provider,xe=Y===void 0&&(t.tier===void 0||t.tier.trim()==="")&&$.warning!==void 0?$.warning:void 0,K=new us({workspace:M}),ue=new ld({workspace:M,readFile:E=>K.readFile(E),exists:E=>K.exists(E)}),Z=t.codexMcpConfigStore??new Qo,ie=!1,P=!1,ge=e.ALUY_SANDBOX_MCP?gp({processEnv:e}):void 0,ee=t.mcpTools!==void 0?void 0:await eg({workspaceRoot:B,parentEnv:e,...ge?{sandboxLauncher:ge}:{},loadProjectConfig:async()=>{let E=await ue.load();return ie=E.config.servers.length>0,E},loadCodexConfig:()=>{let E=Z.load();return P=E.config.servers.length>0,E}}),le=t.mcpTools??ee?.tools??[];ee?.configError&&process.stderr.write(`aluy: MCP \u2014 ${ee.configError}
|
|
683
683
|
`);for(let E of ee?.warnings??[])process.stderr.write(`aluy: MCP \u2014 ${E}
|
|
684
684
|
`);let Ce=t.mcpRegistryFetch??uS(),Oo=t.userAgentsLoader??new Mr,Ne=t.projectAgentsLoader??new ui({workspace:M}),ct=Oo.load(),pt=Ne.load(),ht=new vc(ct.profiles,pt.profiles),gt=[...ct.errors,...pt.errors],dt=Bp({flag:t.backend,env:e,config:y}),Zt=(()=>{if(t.budget!==void 0)return t.budget;if(e.ALUY_BUDGET!==void 0&&e.ALUY_BUDGET.trim()!==""){let E=e.ALUY_BUDGET.trim().toLowerCase();if(E==="1"||E==="true"||E==="on")return!0;if(E==="0"||E==="false"||E==="off")return!1}return y.localBudget!==void 0?y.localBudget:dt!=="local"})(),eo,L;if(dt==="local"&&t.brokerClient===void 0){let E=ss(),W=ja({catalog:E,flags:{...t.localProvider!==void 0?{localProvider:t.localProvider}:{},...t.localModel!==void 0?{localModel:t.localModel}:{},...t.localAuth!==void 0?{localAuth:t.localAuth}:{},...t.localBaseUrl!==void 0?{localBaseUrl:t.localBaseUrl}:{}},env:e,config:y});eo=W.provider,L=await e1({catalog:E,provider:W.provider,model:W.model,auth:W.auth,...W.baseUrl!==void 0?{baseUrl:W.baseUrl}:{},env:e,...W.auth==="oauth"?{oauthAccessToken:q0(W.provider)}:{}})}let{provider:X,backend:ke,localProvider:Se,localModel:Le,localAuth:De,localBaseUrl:V,...U}=t,k=oI({...U,...L!==void 0?{brokerClient:L}:{},...c!==void 0?{mode:c}:{},agentRegistry:ht,tier:J,effectiveBackend:dt,...y.services?{services:y.services}:{},...(()=>{let E=p0({env:e,profile:y.profile??"turbo",...y.sidecarToggles?.headroom!==void 0?{headroomToggle:y.sidecarToggles.headroom}:{},...y.services?{services:y.services}:{}});return E!==void 0?{headroomUrl:E}:{}})(),...y.limits?{limits:y.limits}:{},...y.context?{context:y.context}:{},localBudget:Zt,...D!==void 0?{model:D}:{},...dt==="local"&&eo!==void 0&&eo!==""?{provider:eo}:J==="custom"&&t.provider!==void 0&&t.provider.trim()!==""&&t.model!==void 0&&t.model.trim()!==""&&D===t.model.trim()?{provider:t.provider.trim()}:z!==void 0&&z.trim()!==""?{provider:z.trim()}:{},...G!==null?{sessionId:G.id}:{},...u!==void 0?{projectInstructions:u}:{},...(()=>{let E=ev(ht.list());return E!==void 0?{availableAgents:E}:{}})(),...(()=>{let E=g$();return E!==void 0?{sessionCommands:E}:{}})(),...le.length>0?{mcpTools:le}:{},memoryMonitor:{heapLimitMb:oa(e),sampleHeapUsed:()=>process.memoryUsage().heapUsed}}),tt={id:G?.id??ea(),cwd:B},Mo=G?di(G.blocks):[];G&&k.controller.restoreBlocks(G.blocks),G?.label!==void 0&&k.controller.setLabel(G.label,G.labelColor),Y?.warning&&k.controller.pushNote("model",[Y.warning]),xe!==void 0&&k.controller.pushNote("model",[xe]);let $e=()=>{C1(A,{id:tt.id,cwd:tt.cwd,tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{},...k.controller.provider!==void 0?{provider:k.controller.provider}:{},...k.controller.label!==void 0?{label:k.controller.label}:{},...k.controller.labelColor!==void 0?{labelColor:k.controller.labelColor}:{},blocks:k.controller.blocks})},Rs=t.userCommandsLoader??new Rd,Pi=t.projectCommandsLoader??new Cd({workspace:M}),Wt=Rs.load(),Dr=Pi.load(),Cs=Px(Wt,Dr),Os=Cs.map(E=>({name:E.name,summary:E.summary,source:"user",section:"usu\xE1rio"})),$u=new Map(Cs.map(E=>[E.name,E])),qo=k.hookRunner,dn=k.hooksConfig;if(H.kind==="pick"){(t.stdout??process.stdout).write(M1(H.choices).join(`
|
package/dist-bundle/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var LN=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)LN(t,o,{get:e[o],enumerable:!0})};var ca,Tx=S(()=>{"use strict";ca="1.0.0-rc.
|
|
1
|
+
var LN=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)LN(t,o,{get:e[o],enumerable:!0})};var ca,Tx=S(()=>{"use strict";ca="1.0.0-rc.42"});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,PN,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}}},PN=200,Ws=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??PN,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 Cx(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"&&NN.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=Cx(d,!1);if(typeof f=="string")return f;l.push(f)}r=l}}}if(o===void 0||o.trim()==="")return DN;let s=o.trim().slice(0,IN);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function $N(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=Cx(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>_x?{error:`update_plan: no m\xE1ximo ${_x} passos (recebidos ${s}).`}:{steps:o}}function FN(t){let e=sd(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${Ox[r.step.status]} ${r.step.title}`).join(`
|
|
2
2
|
`);return`plano (${o}/${e.length}):
|
|
3
3
|
${n}`}function UN(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function jN(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=UN(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 HN(t,e){if(!e)return FN(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?BN[f.horizon]:"",p=f?s(f.id):d,h=" ".repeat(p),g=Ox[l.status];c.push(`${h}${u} ${g} ${l.title}`)}return c.join(`
|
|
4
4
|
`)}var la,NN,_x,IN,DN,Ox,BN,Rx,qN,Mx,id=S(()=>{"use strict";zf();la="update_plan";NN=new Set(["pending","in_progress","completed"]),_x=30,IN=120,DN="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";Ox={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};BN={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};Rx=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),qN=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:Rx,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:Rx},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),Mx={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:qN,async run(t,e){let o=$N(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&jN(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:HN(o.steps,e.graph)})}}});function Lx(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)?GN(s):void 0;if(typeof i=="string")return{error:i};let a,c=t.kind??t.type;if(typeof c=="string"&&WN.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 GN(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 zN(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 TT(t,e,o=gc){let{older:n,recent:r}=Cu(t,o);if(n.length===
|
|
|
135
135
|
\u2026[truncado: ${t.length-$y} chars omitidos]`}function PB(t){return t.length<=By?t:`${t.slice(0,By)}\u2026`}function d_(t){let e=l_(t.server,t.descriptor.name),o=PB(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:c_(d),display:`${e}(${NB(i)})`}:{ok:!1,observation:c_(`MCP "${e}" erro: ${d}`)}}catch(l){return{ok:!1,observation:`MCP "${e}" falhou: ${l instanceof Error?l.message:String(l)}`}}}}}function Uy(t,e){let o=[],n=new Set,r=new Map,s=new Map,i=new Set;for(let a of t){let c=d_(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>=Fy){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 ${Fy} (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 NB(t){if(Object.keys(t).length===0)return"";let o=JSON.stringify(t);return o.length<=200?o:`${o.slice(0,200)}\u2026`}var $y,Fy,By,u_=S(()=>{"use strict";ld();jn();$y=2e4;Fy=128,By=1024});function p_(t,e){let o=new URL(f_);return t.trim().length>0&&o.searchParams.set("search",t.trim()),o.searchParams.set("limit",String(DB)),e!==void 0&&e.length>0&&o.searchParams.set("cursor",e),o.toString()}async function Hy(t,e,o){let n=t.trim(),r=[],s;for(let i=0;i<IB;i++){let a=p_(n,s),c;try{c=await e(a,o)}catch(f){return{ok:!1,query:n,reason:Fu(HB(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=g_(l);for(let f of d.servers)if(h_(f,n)&&r.push(f),r.length>=jy)break;if(r.length>=jy||(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 h_(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 g_(t){if(!Gn(t))return{servers:[]};let e=Array.isArray(t.servers)?t.servers:[],o=[];for(let s of e){let i=$B(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 $B(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=FB(e);return{name:o,description:n,run:i,...r!==void 0?{title:r}:{},...s!==void 0?{version:s}:{}}}function FB(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=BB(r);if(s!==void 0)return{...s,remoteUrls:e}}return{args:[],env:[],remoteUrls:e}}function BB(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=jB(t.environmentVariables),a=m_(t.runtimeArguments),c=m_(t.packageArguments),l=n!==void 0?`${o}@${n}`:o;return e==="npm"||r==="npx"?{command:"npx",args:UB(["-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 UB(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 m_(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 jB(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 HB(t){return t instanceof Error?t.message:String(t)}var vi,f_,IB,DB,jy,y_=S(()=>{"use strict";vi="registry.modelcontextprotocol.io",f_=`https://${vi}/v0/servers`,IB=5,DB=100,jy=25});function v_(t){let{command:e,args:o}=t.run;if(e===void 0)return;let n=k_(t.name);return["aluy","mcp","add",b_(n),"--",e,...o.map(b_)].join(" ")}function k_(t){let o=(t.split("/").pop()??t).replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");return o.length>0?o:"server"}function b_(t){return/^[A-Za-z0-9_./@:+=-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`}function qy(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(qB(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 qB(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(` ${WB(t.description,200)}`);let r=v_(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 WB(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var x_=S(()=>{"use strict"});var S_=S(()=>{"use strict";$u();o_();n_();r_();s_();a_();u_();ld();y_();x_()});function Wy(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 w_(t,e){let o=Wy(t),n=Wy(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 Gy(t,e){return w_(t,e)===1}var A_=S(()=>{"use strict"});var zy=S(()=>{"use strict"});var E_=S(()=>{"use strict";zy()});var T_=S(()=>{"use strict"});var __=S(()=>{"use strict"});function Ky(t){return`connector-${t}-token`}function Yy(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 R_=S(()=>{"use strict"});var j=S(()=>{"use strict";Tx();Yx();iS();Ew();GT();ZT();S_();Ay();hu();A_();zy();E_();T_();__();R_()});import{posix as uj}from"node:path";function mj(t){return uj.normalize(t)}function Jt(t){let e=mj(t);for(let o of fj)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function fb(t){return Jt(t).kind==="allow"}var fj,wr=S(()=>{"use strict";fj=[{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 Db={};Wf(Db,{UserWorkflowsLoader:()=>_i,WORKFLOWS_DIRNAME:()=>Ib});import{homedir as QH}from"node:os";import{join as Nb}from"node:path";import{readdirSync as ZH,readFileSync as eq,mkdirSync as tq,statSync as oq}from"node:fs";var nq,Ib,rq,sq,_i,sm=S(()=>{"use strict";j();nq=448,Ib="workflows",rq=64*1024,sq=256,_i=class{dir;constructor(e={}){let o=e.baseDir??Nb(QH(),".aluy");this.dir=Nb(o,Ib)}get workflowsDir(){return this.dir}ensureDir(){try{tq(this.dir,{mode:nq,recursive:!0})}catch{}}load(){let e;try{e=ZH(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>=sq)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=Nb(this.dir,e);try{let n=oq(o);if(!n.isFile()||n.size>rq)return null;let r=eq(o,"utf8");return ic(e,r,"global")}catch{return null}}}});var Fb={};Wf(Fb,{PROJECT_WORKFLOWS_DIRNAMES:()=>$b,ProjectWorkflowsLoader:()=>Ri});import{join as iq}from"node:path";import{readdirSync as aq,readFileSync as cq,statSync as lq}from"node:fs";var $b,dq,uq,Ri,im=S(()=>{"use strict";j();wr();$b=[".claude/workflows",".aluy/workflows"],dq=64*1024,uq=256,Ri=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of $b){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=aq(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>=uq)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=iq(o,n);try{this.workspace.resolveInside(r);let i=lq(s);if(!i.isFile()||i.size>dq)return null;let a=cq(s,"utf8");return ic(n,a,"project")}catch{return null}}}});var Ln="1.0.0-rc.
|
|
138
|
+
`)}function WB(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var x_=S(()=>{"use strict"});var S_=S(()=>{"use strict";$u();o_();n_();r_();s_();a_();u_();ld();y_();x_()});function Wy(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 w_(t,e){let o=Wy(t),n=Wy(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 Gy(t,e){return w_(t,e)===1}var A_=S(()=>{"use strict"});var zy=S(()=>{"use strict"});var E_=S(()=>{"use strict";zy()});var T_=S(()=>{"use strict"});var __=S(()=>{"use strict"});function Ky(t){return`connector-${t}-token`}function Yy(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 R_=S(()=>{"use strict"});var j=S(()=>{"use strict";Tx();Yx();iS();Ew();GT();ZT();S_();Ay();hu();A_();zy();E_();T_();__();R_()});import{posix as uj}from"node:path";function mj(t){return uj.normalize(t)}function Jt(t){let e=mj(t);for(let o of fj)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function fb(t){return Jt(t).kind==="allow"}var fj,wr=S(()=>{"use strict";fj=[{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 Db={};Wf(Db,{UserWorkflowsLoader:()=>_i,WORKFLOWS_DIRNAME:()=>Ib});import{homedir as QH}from"node:os";import{join as Nb}from"node:path";import{readdirSync as ZH,readFileSync as eq,mkdirSync as tq,statSync as oq}from"node:fs";var nq,Ib,rq,sq,_i,sm=S(()=>{"use strict";j();nq=448,Ib="workflows",rq=64*1024,sq=256,_i=class{dir;constructor(e={}){let o=e.baseDir??Nb(QH(),".aluy");this.dir=Nb(o,Ib)}get workflowsDir(){return this.dir}ensureDir(){try{tq(this.dir,{mode:nq,recursive:!0})}catch{}}load(){let e;try{e=ZH(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>=sq)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=Nb(this.dir,e);try{let n=oq(o);if(!n.isFile()||n.size>rq)return null;let r=eq(o,"utf8");return ic(e,r,"global")}catch{return null}}}});var Fb={};Wf(Fb,{PROJECT_WORKFLOWS_DIRNAMES:()=>$b,ProjectWorkflowsLoader:()=>Ri});import{join as iq}from"node:path";import{readdirSync as aq,readFileSync as cq,statSync as lq}from"node:fs";var $b,dq,uq,Ri,im=S(()=>{"use strict";j();wr();$b=[".claude/workflows",".aluy/workflows"],dq=64*1024,uq=256,Ri=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of $b){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=aq(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>=uq)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=iq(o,n);try{this.workspace.resolveInside(r);let i=lq(s);if(!i.isFile()||i.size>dq)return null;let a=cq(s,"utf8");return ic(n,a,"project")}catch{return null}}}});var Ln="1.0.0-rc.42";j();var C_=`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>]
|
|
@@ -447,7 +447,7 @@ ${jo(w)}`}}catch(h){let g=d?`o proxy n\xE3o respondeu em ${f}ms (timeout)`:h ins
|
|
|
447
447
|
`,r=`${this.file}.tmp-${process.pid}-${Date.now().toString(36)}`,s=zU(r,ub.O_CREAT|ub.O_EXCL|ub.O_WRONLY,ZU);try{KU(s,n,0,"utf8")}finally{YU(s)}try{XU(r,this.file)}catch(i){try{JU(r)}catch{}throw i}}ensureDir(e){let o=Ei(e),n=Ei(o);kR(n)||vR(n,{recursive:!0});for(let r of[o,e])try{vR(r,{mode:QU})}catch(s){if(s.code!=="EEXIST")throw s}}};import{writeFileSync as rj,rmSync as sj,readFileSync as ij,existsSync as aj}from"node:fs";var Dc=class{workspace;constructor(e){this.workspace=e.workspace}async writeConfined(e,o){let n=this.workspace.resolveInside(e);return rj(n,o,"utf8"),n}async removeConfined(e){let o=this.workspace.resolveInside(e);return sj(o,{force:!0}),o}},$c=class{workspace;constructor(e){this.workspace=e.workspace}async readCurrent(e){let o;try{o=this.workspace.resolveInside(e)}catch{return}if(aj(o))return ij(o,"utf8")}};var cj="\x1B]9;",xR={attention:"Aluy precisa de voc\xEA",done:"Aluy \u2014 turno conclu\xEDdo"},Fc=class{write;isTty;desktop;on;constructor(e){this.write=e.write,this.isTty=e.isTty??!1,this.desktop=e.desktop??!0,this.on=e.enabled??!0}get enabled(){return this.on&&this.isTty}setEnabled(e){this.on=e}notify(e){if(!this.enabled)return;let o=xR[e];try{this.write("\x07"),this.desktop&&this.write(`${cj}${o}\x07`)}catch{}}},lj={notify:()=>{},enabled:!1,setEnabled:()=>{}};function dj(t){if(t===void 0)return!1;let e=t.trim().toLowerCase();return e==="0"||e==="false"||e==="off"||e==="no"}function mb(t=process.env){let e=!dj(t.ALUY_NOTIFY),o=t.NO_COLOR===void 0;return{enabled:e,desktop:o}}j();wr();var Ar="ALUY.md",SR=["ALUY.md","AGENT.md","AGENTS.md","CLAUDE.md"];async function wR(t,e){let{workspace:o,fs:n}=e;try{o.resolveInside(t)}catch{return}if(Jt(t).kind!=="allow"||!await n.exists(t))return;let r;try{r=await n.readFile(t)}catch{return}return Wd(r)}async function pb(t){let e=[];for(let r of SR){let s=await wR(r,t);s!==void 0&&e.push({filename:r,text:s})}if(e.length===0)return{sources:[]};if(e.length===1)return{instructions:e[0].text,sources:[e[0].filename]};let o=e.map(r=>`<!-- fonte: ${r.filename} -->
|
|
448
448
|
${r.text}`).join(`
|
|
449
449
|
|
|
450
|
-
`),n=Wd(o);return{...n!==void 0?{instructions:n}:{},sources:e.map(r=>r.filename)}}async function pj(t){return wR(Ar,t)}import{homedir as kj}from"node:os";import{join as BR}from"node:path";import{randomBytes as xj}from"node:crypto";import{openSync as Sj,writeSync as wj,closeSync as UR,readFileSync as Aj,mkdirSync as Ej,renameSync as Tj,unlinkSync as _j,constants as kb}from"node:fs";var Qu={fg:{color:"#F2EEE8"},fgDim:{color:"#8A7F6D",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},Zu={fg:{color:"#1A1712"},fgDim:{color:"#544B3C"},accent:{color:"#82530F",bold:!0},accentDim:{color:"#82530F",bold:!0},danger:{color:"#B23A2A",bold:!0},success:{color:"#1F6B3A"},depth:{color:"#2E6E69"}},AR={fg:{color:"white"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},ER={fg:{color:"black"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},TR={fg:{color:"#F2EEE8"},fgDim:{color:"#B0A593",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},_R={fg:{},fgDim:{dimColor:!0},accent:{bold:!0},accentDim:{bold:!0},danger:{bold:!0,inverse:!0},success:{},depth:{}};var RR={you:"\u258C",aluy:"\u039B",tool:"\u23FA",toolInflight:"\u25CB",wave:"~",waveHead:"\u203A",ask:"\u26A0",ok:"\u2713",err:"\u2717",broker:"\u25CF",clock:"\u25F7",gauge:"\u25D4",window:"\u25A1",branch:"\u2387",diffDel:"\u2039",diffAdd:"\u203A",prompt:"\u203A",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u25B0",barEmpty:"\u25B1"},CR={you:"\u258C",aluy:"\u039B",tool:"\u25CF",toolInflight:"\u25CB",wave:"~",waveHead:">",ask:"!",ok:"\u221A",err:"x",broker:"\u25CF",clock:"o",gauge:"\u25D4",window:"\u25A1",branch:"Y",diffDel:"<",diffAdd:">",prompt:">",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u2588",barEmpty:"\u2591"},OR={you:">",aluy:"/\\",tool:"o",toolInflight:".",wave:"~",waveHead:">",ask:"!",ok:"[ok]",err:"[x]",broker:"(b)",clock:"t:",gauge:"%:",window:"ctx:",branch:"git:",diffDel:"-",diffAdd:"+",prompt:">",cursor:"*",thinkingCursor:"*",planMode:"[plan]",normalMode:"*",subagents:"(+)",sessionDot:"*",barFull:"#",barEmpty:"."},MR=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],LR=["-","\\","|","/"],PR={topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",teeLeft:"\u251C",teeRight:"\u2524"},NR={topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",horizontal:"-",vertical:"|",teeLeft:"+",teeRight:"+"};var Bc=[{name:"ambar",darkHex:"#DDA13F",lightHex:"#82530F",ansi:"yellow"},{name:"verde",darkHex:"#82CF9E",lightHex:"#1F6B3A",ansi:"green"},{name:"teal",darkHex:"#5BA8A2",lightHex:"#2E6E69",ansi:"cyan"},{name:"azul",darkHex:"#6FA8DC",lightHex:"#1F5C99",ansi:"blue"},{name:"violeta",darkHex:"#B08CD9",lightHex:"#6A3FA6",ansi:"magenta"},{name:"rosa",darkHex:"#E59BC0",lightHex:"#A63D74",ansi:"magenta"},{name:"coral",darkHex:"#E5897C",lightHex:"#B23A2A",ansi:"red"},{name:"ardosia",darkHex:"#9AA7B0",lightHex:"#4A5963",ansi:"gray"}],Ti=Bc.map(t=>t.name);function IR(t){return Ti.includes(t.trim().toLowerCase())}function hb(t){let e=2166136261,o=t.trim().toLowerCase();for(let r=0;r<o.length;r++)e^=o.charCodeAt(r),e=Math.imul(e,16777619);let n=(e>>>0)%Bc.length;return Bc[n].name}function DR(t,e,o){let n=t.trim().toLowerCase(),r=Bc.find(s=>s.name===n)??Bc.find(s=>s.name===hb(n));return e==="mono"?{bold:!0}:e==="truecolor"?{color:o==="light"?r.lightHex:r.darkHex,bold:!0}:{color:r.ansi,bold:!0}}function em(t){return t!==void 0&&t!==""&&t!=="0"&&t.toLowerCase()!=="false"}function hj(t){if(t.NO_COLOR!==void 0)return"mono";let e=(t.COLORTERM??"").toLowerCase();if(e==="truecolor"||e==="24bit")return"truecolor";let o=(t.TERM??"").toLowerCase();return o==="dumb"||o===""?"mono":"ansi16"}function gj(t,e){if(e)return e;let o=t.COLORFGBG;if(o){let n=o.split(";"),r=Number(n[n.length-1]);if(Number.isFinite(r))return r>=8?"light":"dark"}return"dark"}function yj(t){let e=(t.TERM??"").toLowerCase();if(e==="linux"||e==="dumb")return!1;let o=`${t.LC_ALL??""}${t.LC_CTYPE??""}${t.LANG??""}`.toLowerCase();return!(em(t.ALUY_ASCII)||o&&!o.includes("utf"))}function bj(t,e){return e!==void 0?e:em(t.ALUY_SAFE_GLYPHS)}function vj(t,e,o){return t==="mono"?_R:t==="truecolor"?o??(e==="light"?Zu:Qu):e==="light"?ER:AR}function ln(t={}){let e=t.env??process.env,o=hj(e),n=gj(e,t.theme),r=yj(e),s=r&&bj(e,t.safeGlyphs),i=t.density??(em(e.ALUY_DENSITY)&&e.ALUY_DENSITY==="compact"?"compact":"comfortable"),a=t.animate??!em(e.ALUY_NO_ANIM),c=vj(o,n,t.truecolorPalette),l=r?s?CR:RR:OR;return{colorMode:o,brightness:n,unicode:r,safeGlyphs:s,density:i,animate:a,role:p=>c[p],sessionColor:p=>DR(p,o,n),glyph:p=>l[p],aluyMark:r?"\u039B":"/\\",spinnerFrames:r&&!s?MR:LR,box:r?PR:NR}}var po=[{name:"aluy-dark",label:"Aluy Dark",brightness:"dark",summary:"escuro neutro (default) \u2014 fundo quase-preto, accent \xE2mbar",bg:"#070707",palette:Qu},{name:"aluy-light",label:"Aluy Light",brightness:"light",summary:"claro creme \u2014 fundo --stone-50, accent \xE2mbar escurecido (AA)",bg:"#F4ECDC",palette:Zu},{name:"aluy-slate",label:"Aluy Slate",brightness:"dark",summary:"terra escura WARM \u2014 fundo --stone-950, accent \xE2mbar",bg:"#0E0C09",palette:TR}],bb="aluy-dark";function Er(t){return po.find(e=>e.name===t)}function Jn(t){let e=t.trim().toLowerCase();if(e==="")return;let o=po.find(r=>r.name===e);if(o)return o;let n=po.find(r=>r.name===`aluy-${e}`);return n||po.find(r=>r.label.toLowerCase()===e)}function us(t){return t==="light"?"aluy-light":"aluy-dark"}function $R(t,e={}){let o=Er(t)??Er(bb);return ln({...e,theme:o.brightness,truecolorPalette:o.palette})}var dn="pt-BR",wo=[{code:"pt-BR",label:"Portugu\xEAs (Brasil)",summary:"idioma padr\xE3o da TUI"},{code:"en",label:"English",summary:"English interface (opt-in)"}];function ms(t){return wo.find(e=>e.code===t)}function Tr(t){let e=t.trim().toLowerCase();if(e==="")return;let o=wo.find(n=>n.code.toLowerCase()===e);if(o)return o;if(e==="pt"||e==="pt_br"||e==="br"||e==="portugu\xEAs"||e==="portugues")return ms("pt-BR");if(e==="en"||e==="en_us"||e==="english"||e==="ingl\xEAs"||e==="ingles")return ms("en")}function FR(t){let e=(t.LC_ALL??t.LC_MESSAGES??t.LANG??"").trim().toLowerCase();if(e==="")return dn;let o=e.split(".")[0].split("@")[0].replace("_","-");return o==="c"||o==="posix"?dn:o==="en"||o.startsWith("en-")?"en":dn}function vb(t,e,o){if(t!==void 0&&t.trim()!==""){let n=Tr(t);if(n)return n.code}return e!==void 0?e:FR(o)}j();var Rj=448,Cj=384,jc="config.json",Oj=new Set(["openai-compat","anthropic","gemini"]);function jR(t){let o=(Array.isArray(t)?t:t!==void 0?[t]:[]).filter(n=>typeof n=="string"&&n.trim()!=="");return o.length>0?o:void 0}function Mj(t){if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="localhost"||e==="::1"||/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}function Lj(t){return typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=65535}function xb(t){if(typeof t!="object"||t===null)return;let e=t,o={};return Mj(e.host)&&(o.host=e.host.trim()),Lj(e.port)&&(o.port=e.port),o.host!==void 0||o.port!==void 0?o:void 0}function Pj(t){if(typeof t!="object"||t===null)return;let e=t,o=a=>typeof a=="number"&&Number.isInteger(a)&&a>0?a:void 0,n={},r=o(e.maxTokens),s=o(e.maxOutputTokens),i=o(e.maxIterations);return r!==void 0&&(n.maxTokens=r),s!==void 0&&(n.maxOutputTokens=s),i!==void 0&&(n.maxIterations=i),Object.keys(n).length>0?n:void 0}function Nj(t){if(typeof t!="object"||t===null)return;let e=t,o={};return typeof e.window=="number"&&Number.isInteger(e.window)&&e.window>0&&(o.window=e.window),typeof e.autocompactAt=="number"&&Number.isFinite(e.autocompactAt)?o.autocompactAt=e.autocompactAt:typeof e.autocompactAt=="string"&&e.autocompactAt.trim()!==""&&(o.autocompactAt=e.autocompactAt.trim()),typeof e.autocompactMax=="number"&&Number.isInteger(e.autocompactMax)&&e.autocompactMax>0&&(o.autocompactMax=e.autocompactMax),Object.keys(o).length>0?o:void 0}function Ij(t){if(typeof t!="object"||t===null)return;let e=t,o={};if(typeof e.telegram=="object"&&e.telegram!==null){let n=e.telegram;if(Array.isArray(n.allowlist)){let r=[];for(let s of n.allowlist)typeof s=="number"&&Number.isFinite(s)&&Number.isInteger(s)&&!r.includes(s)&&r.push(s);o.telegram={allowlist:r}}else o.telegram={}}return o.telegram!==void 0?o:void 0}function Dj(t){if(typeof t!="object"||t===null)return;let e=t,o={},n=xb(e.ollama),r=xb(e.mem0),s=xb(e.headroom);return n&&(o.ollama=n),r&&(o.mem0=r),s&&(o.headroom=s),Object.keys(o).length>0?o:void 0}function $j(t){if(!Array.isArray(t))return;let e=[];for(let o of t){if(typeof o!="object"||o===null)continue;let n=o,r=typeof n.id=="string"?n.id.trim():"",s=typeof n.baseUrl=="string"?n.baseUrl.trim():"",i=typeof n.defaultModel=="string"?n.defaultModel.trim():"",a=typeof n.wireFormat=="string"?n.wireFormat:"";if(r===""||s===""||i===""||!Oj.has(a))continue;let c=jR(n.auth),l=jR(n.models),d={id:r,wireFormat:a,baseUrl:s,defaultModel:i,...typeof n.label=="string"&&n.label.trim()?{label:n.label.trim()}:{},...c?{auth:c}:{},...l?{models:l}:{}};e.push(d)}return e.length>0?e:void 0}var Fj=128;function Uc(t){if(typeof t!="string")return!1;let e=t.trim();return e===""||e.length>Fj?!1:!/[\u0000-\u001F\u007F]/.test(e)}function HR(t){if(typeof t!="object"||t===null)return{};let e=t,o={};if(typeof e.theme=="string"){let c=Er(e.theme);c&&(o.theme=c.name)}if(Uc(e.tier)&&(o.tier=e.tier.trim()),o.tier==="custom"&&Uc(e.model)&&(o.model=e.model.trim()),typeof e.splitView=="boolean"&&(o.splitView=e.splitView),typeof e.lang=="string"){let c=ms(e.lang);c&&(o.lang=c.code)}if(typeof e.fullscreen=="boolean"&&(o.fullscreen=e.fullscreen),(e.backend==="broker"||e.backend==="local")&&(o.backend=e.backend),Uc(e.localProvider)&&(o.localProvider=e.localProvider.trim()),Uc(e.localModel)&&(o.localModel=e.localModel.trim()),(e.localAuth==="apikey"||e.localAuth==="oauth"||e.localAuth==="none")&&(o.localAuth=e.localAuth),Uc(e.localBaseUrl)&&(o.localBaseUrl=e.localBaseUrl.trim()),typeof e.localBudget=="boolean"&&(o.localBudget=e.localBudget),typeof e.rooms=="object"&&e.rooms!==null){let c=e.rooms;if(typeof c.backend=="string"){let l=c.backend.trim().toLowerCase();l.length>0&&l.length<=32&&(o.rooms={backend:l})}}if((e.profile==="turbo"||e.profile==="leve")&&(o.profile=e.profile),typeof e.embedder=="string"&&xy(e.embedder.trim())!==void 0&&(o.embedder=e.embedder.trim()),typeof e.sidecarToggles=="object"&&e.sidecarToggles!==null){let c=e.sidecarToggles,l={};typeof c.ollama=="boolean"&&(l.ollama=c.ollama),typeof c.mem0=="boolean"&&(l.mem0=c.mem0),typeof c.headroom=="boolean"&&(l.headroom=c.headroom),Object.keys(l).length>0&&(o.sidecarToggles=l)}let n=$j(e.providers);n&&(o.providers=n);let r=Dj(e.services);r&&(o.services=r);let s=Ij(e.connectors);s&&(o.connectors=s);let i=Pj(e.limits);i&&(o.limits=i);let a=Nj(e.context);return a&&(o.context=a),o}function tm(t){return t.connectors?.telegram?.allowlist??[]}function qR(t,e){let o=tm(t);return o.includes(e)?o:[...o,e]}function WR(t,e){return tm(t).filter(o=>o!==e)}var un=class{base;file;constructor(e={}){this.base=e.baseDir??BR(kj(),".aluy"),this.file=BR(this.base,jc)}get configPath(){return this.file}load(){let e;try{e=Aj(this.file,"utf8")}catch{return{}}let o;try{o=JSON.parse(e)}catch{return{}}return HR(o)}save(e){try{let o=HR({...this.load(),...e});return this.writeAtomic(o),!0}catch{return!1}}saveTheme(e){return this.save({theme:e})}saveLang(e){return this.save({lang:e})}saveTier(e,o){let r=e.trim()==="custom"&&o!==void 0&&o.trim()!==""?o.trim():void 0;return this.save(r!==void 0?{tier:e,model:r}:{tier:e})}saveSplitView(e){return this.save({splitView:e})}saveFullscreen(e){return this.save({fullscreen:e})}saveLocalBudget(e){return this.save({localBudget:e})}writeAtomic(e){Ej(this.base,{recursive:!0,mode:Rj});let o=`${this.file}.${process.pid}.${xj(6).toString("hex")}.tmp`,n=JSON.stringify(e,null,2)+`
|
|
450
|
+
`),n=Wd(o);return{...n!==void 0?{instructions:n}:{},sources:e.map(r=>r.filename)}}async function pj(t){return wR(Ar,t)}import{homedir as kj}from"node:os";import{join as BR}from"node:path";import{randomBytes as xj}from"node:crypto";import{openSync as Sj,writeSync as wj,closeSync as UR,readFileSync as Aj,mkdirSync as Ej,renameSync as Tj,unlinkSync as _j,constants as kb}from"node:fs";var Qu={fg:{color:"#F2EEE8"},fgDim:{color:"#8A7F6D",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},Zu={fg:{color:"#1A1712"},fgDim:{color:"#544B3C"},accent:{color:"#82530F",bold:!0},accentDim:{color:"#82530F",bold:!0},danger:{color:"#B23A2A",bold:!0},success:{color:"#1F6B3A"},depth:{color:"#2E6E69"}},AR={fg:{color:"white"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},ER={fg:{color:"black"},fgDim:{color:"gray",dimColor:!0},accent:{color:"yellow",bold:!0},accentDim:{color:"yellow",bold:!0},danger:{color:"red",bold:!0},success:{color:"green"},depth:{color:"cyan"}},TR={fg:{color:"#F2EEE8"},fgDim:{color:"#B0A593",dimColor:!0},accent:{color:"#DDA13F",bold:!0},accentDim:{color:"#A66A14",bold:!0},danger:{color:"#E5897C",bold:!0},success:{color:"#82CF9E"},depth:{color:"#5BA8A2"}},_R={fg:{},fgDim:{dimColor:!0},accent:{bold:!0},accentDim:{bold:!0},danger:{bold:!0,inverse:!0},success:{},depth:{}};var RR={you:"\u258C",aluy:"\u039B",tool:"\u23FA",toolInflight:"\u25CB",wave:"~",waveHead:"\u203A",ask:"\u26A0",ok:"\u2713",err:"\u2717",broker:"\u25CF",clock:"\u25F7",gauge:"\u25D4",window:"\u25A1",branch:"\u2387",diffDel:"\u2039",diffAdd:"\u203A",prompt:"\u203A",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u25B0",barEmpty:"\u25B1"},CR={you:"\u258C",aluy:"\u039B",tool:"\u25CF",toolInflight:"\u25CB",wave:"~",waveHead:">",ask:"!",ok:"\u221A",err:"x",broker:"\u25CF",clock:"o",gauge:"\u25D4",window:"\u25A1",branch:"Y",diffDel:"<",diffAdd:">",prompt:">",cursor:"\u25CF",thinkingCursor:"\u25CF",planMode:"\u25D1",normalMode:"\u25C7",subagents:"+",sessionDot:"\u25CF",barFull:"\u2588",barEmpty:"\u2591"},OR={you:">",aluy:"/\\",tool:"o",toolInflight:".",wave:"~",waveHead:">",ask:"!",ok:"[ok]",err:"[x]",broker:"(b)",clock:"t:",gauge:"%:",window:"ctx:",branch:"git:",diffDel:"-",diffAdd:"+",prompt:">",cursor:"*",thinkingCursor:"*",planMode:"[plan]",normalMode:"*",subagents:"(+)",sessionDot:"*",barFull:"#",barEmpty:"."},MR=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],LR=["-","\\","|","/"],PR={topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",teeLeft:"\u251C",teeRight:"\u2524"},NR={topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",horizontal:"-",vertical:"|",teeLeft:"+",teeRight:"+"};var Bc=[{name:"ambar",darkHex:"#DDA13F",lightHex:"#82530F",ansi:"yellow"},{name:"verde",darkHex:"#82CF9E",lightHex:"#1F6B3A",ansi:"green"},{name:"teal",darkHex:"#5BA8A2",lightHex:"#2E6E69",ansi:"cyan"},{name:"azul",darkHex:"#6FA8DC",lightHex:"#1F5C99",ansi:"blue"},{name:"violeta",darkHex:"#B08CD9",lightHex:"#6A3FA6",ansi:"magenta"},{name:"rosa",darkHex:"#E59BC0",lightHex:"#A63D74",ansi:"magenta"},{name:"coral",darkHex:"#E5897C",lightHex:"#B23A2A",ansi:"red"},{name:"ardosia",darkHex:"#9AA7B0",lightHex:"#4A5963",ansi:"gray"}],Ti=Bc.map(t=>t.name);function IR(t){return Ti.includes(t.trim().toLowerCase())}function hb(t){let e=2166136261,o=t.trim().toLowerCase();for(let r=0;r<o.length;r++)e^=o.charCodeAt(r),e=Math.imul(e,16777619);let n=(e>>>0)%Bc.length;return Bc[n].name}function DR(t,e,o){let n=t.trim().toLowerCase(),r=Bc.find(s=>s.name===n)??Bc.find(s=>s.name===hb(n));return e==="mono"?{bold:!0}:e==="truecolor"?{color:o==="light"?r.lightHex:r.darkHex,bold:!0}:{color:r.ansi,bold:!0}}function em(t){return t!==void 0&&t!==""&&t!=="0"&&t.toLowerCase()!=="false"}function hj(t){if(t.NO_COLOR!==void 0)return"mono";let e=(t.COLORTERM??"").toLowerCase();if(e==="truecolor"||e==="24bit")return"truecolor";let o=(t.TERM??"").toLowerCase();return o==="dumb"||o===""?"mono":"ansi16"}function gj(t,e){if(e)return e;let o=t.COLORFGBG;if(o){let n=o.split(";"),r=Number(n[n.length-1]);if(Number.isFinite(r))return r>=8?"light":"dark"}return"dark"}function yj(t){let e=(t.TERM??"").toLowerCase();if(e==="linux"||e==="dumb")return!1;let o=`${t.LC_ALL??""}${t.LC_CTYPE??""}${t.LANG??""}`.toLowerCase();return!(em(t.ALUY_ASCII)||o&&!o.includes("utf"))}function bj(t,e){return e!==void 0?e:em(t.ALUY_SAFE_GLYPHS)}function vj(t,e,o){return t==="mono"?_R:t==="truecolor"?o??(e==="light"?Zu:Qu):e==="light"?ER:AR}function ln(t={}){let e=t.env??process.env,o=hj(e),n=gj(e,t.theme),r=yj(e),s=r&&bj(e,t.safeGlyphs),i=t.density??(em(e.ALUY_DENSITY)&&e.ALUY_DENSITY==="compact"?"compact":"comfortable"),a=t.animate??!em(e.ALUY_NO_ANIM),c=vj(o,n,t.truecolorPalette),l=r?s?CR:RR:OR;return{colorMode:o,brightness:n,unicode:r,safeGlyphs:s,density:i,animate:a,role:p=>c[p],sessionColor:p=>DR(p,o,n),glyph:p=>l[p],aluyMark:r?"\u039B":"/\\",spinnerFrames:r&&!s?MR:LR,box:r?PR:NR}}var po=[{name:"aluy-dark",label:"Aluy Dark",brightness:"dark",summary:"escuro neutro (default) \u2014 fundo quase-preto, accent \xE2mbar",bg:"#070707",palette:Qu},{name:"aluy-light",label:"Aluy Light",brightness:"light",summary:"claro creme \u2014 fundo --stone-50, accent \xE2mbar escurecido (AA)",bg:"#F4ECDC",palette:Zu},{name:"aluy-slate",label:"Aluy Slate",brightness:"dark",summary:"terra escura WARM \u2014 fundo --stone-950, accent \xE2mbar",bg:"#0E0C09",palette:TR}],bb="aluy-dark";function Er(t){return po.find(e=>e.name===t)}function Jn(t){let e=t.trim().toLowerCase();if(e==="")return;let o=po.find(r=>r.name===e);if(o)return o;let n=po.find(r=>r.name===`aluy-${e}`);return n||po.find(r=>r.label.toLowerCase()===e)}function us(t){return t==="light"?"aluy-light":"aluy-dark"}function $R(t,e={}){let o=Er(t)??Er(bb);return ln({...e,theme:o.brightness,truecolorPalette:o.palette})}var dn="pt-BR",wo=[{code:"pt-BR",label:"Portugu\xEAs (Brasil)",summary:"idioma padr\xE3o da TUI"},{code:"en",label:"English",summary:"English interface (opt-in)"}];function ms(t){return wo.find(e=>e.code===t)}function Tr(t){let e=t.trim().toLowerCase();if(e==="")return;let o=wo.find(n=>n.code.toLowerCase()===e);if(o)return o;if(e==="pt"||e==="pt_br"||e==="br"||e==="portugu\xEAs"||e==="portugues")return ms("pt-BR");if(e==="en"||e==="en_us"||e==="english"||e==="ingl\xEAs"||e==="ingles")return ms("en")}function FR(t){let e=(t.LC_ALL??t.LC_MESSAGES??t.LANG??"").trim().toLowerCase();if(e==="")return dn;let o=e.split(".")[0].split("@")[0].replace("_","-");return o==="c"||o==="posix"?dn:o==="en"||o.startsWith("en-")?"en":dn}function vb(t,e,o){if(t!==void 0&&t.trim()!==""){let n=Tr(t);if(n)return n.code}return e!==void 0?e:FR(o)}j();var Rj=448,Cj=384,jc="config.json",Oj=new Set(["openai-compat","anthropic","gemini"]);function jR(t){let o=(Array.isArray(t)?t:t!==void 0?[t]:[]).filter(n=>typeof n=="string"&&n.trim()!=="");return o.length>0?o:void 0}function Mj(t){if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="localhost"||e==="::1"||/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}function Lj(t){return typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=65535}function xb(t){if(typeof t!="object"||t===null)return;let e=t,o={};return Mj(e.host)&&(o.host=e.host.trim()),Lj(e.port)&&(o.port=e.port),o.host!==void 0||o.port!==void 0?o:void 0}function Pj(t){if(typeof t!="object"||t===null)return;let e=t,o=a=>typeof a=="number"&&Number.isInteger(a)&&a>0?a:void 0,n={},r=o(e.maxTokens),s=o(e.maxOutputTokens),i=o(e.maxIterations);return r!==void 0&&(n.maxTokens=r),s!==void 0&&(n.maxOutputTokens=s),i!==void 0&&(n.maxIterations=i),Object.keys(n).length>0?n:void 0}function Nj(t){if(typeof t!="object"||t===null)return;let e=t,o={};return typeof e.window=="number"&&Number.isInteger(e.window)&&e.window>0&&(o.window=e.window),typeof e.autocompactAt=="number"&&Number.isFinite(e.autocompactAt)?o.autocompactAt=e.autocompactAt:typeof e.autocompactAt=="string"&&e.autocompactAt.trim()!==""&&(o.autocompactAt=e.autocompactAt.trim()),typeof e.autocompactMax=="number"&&Number.isInteger(e.autocompactMax)&&e.autocompactMax>0&&(o.autocompactMax=e.autocompactMax),Object.keys(o).length>0?o:void 0}function Ij(t){if(typeof t!="object"||t===null)return;let e=t,o={};if(typeof e.telegram=="object"&&e.telegram!==null){let n=e.telegram;if(Array.isArray(n.allowlist)){let r=[];for(let s of n.allowlist)typeof s=="number"&&Number.isFinite(s)&&Number.isInteger(s)&&!r.includes(s)&&r.push(s);o.telegram={allowlist:r}}else o.telegram={}}return o.telegram!==void 0?o:void 0}function Dj(t){if(typeof t!="object"||t===null)return;let e=t,o={},n=xb(e.ollama),r=xb(e.mem0),s=xb(e.headroom);return n&&(o.ollama=n),r&&(o.mem0=r),s&&(o.headroom=s),Object.keys(o).length>0?o:void 0}function $j(t){if(!Array.isArray(t))return;let e=[];for(let o of t){if(typeof o!="object"||o===null)continue;let n=o,r=typeof n.id=="string"?n.id.trim():"",s=typeof n.baseUrl=="string"?n.baseUrl.trim():"",i=typeof n.defaultModel=="string"?n.defaultModel.trim():"",a=typeof n.wireFormat=="string"?n.wireFormat:"";if(r===""||s===""||i===""||!Oj.has(a))continue;let c=jR(n.auth),l=jR(n.models),d={id:r,wireFormat:a,baseUrl:s,defaultModel:i,...typeof n.label=="string"&&n.label.trim()?{label:n.label.trim()}:{},...c?{auth:c}:{},...l?{models:l}:{}};e.push(d)}return e.length>0?e:void 0}var Fj=128;function Uc(t){if(typeof t!="string")return!1;let e=t.trim();return e===""||e.length>Fj?!1:!/[\u0000-\u001F\u007F]/.test(e)}function HR(t){if(typeof t!="object"||t===null)return{};let e=t,o={};if(typeof e.theme=="string"){let c=Er(e.theme);c&&(o.theme=c.name)}if(Uc(e.tier)&&(o.tier=e.tier.trim()),o.tier==="custom"&&Uc(e.model)&&(o.model=e.model.trim()),typeof e.splitView=="boolean"&&(o.splitView=e.splitView),typeof e.lang=="string"){let c=ms(e.lang);c&&(o.lang=c.code)}if(typeof e.fullscreen=="boolean"&&(o.fullscreen=e.fullscreen),(e.backend==="broker"||e.backend==="local")&&(o.backend=e.backend),Uc(e.localProvider)&&(o.localProvider=e.localProvider.trim()),Uc(e.localModel)&&(o.localModel=e.localModel.trim()),(e.localAuth==="apikey"||e.localAuth==="oauth"||e.localAuth==="none")&&(o.localAuth=e.localAuth),Uc(e.localBaseUrl)&&(o.localBaseUrl=e.localBaseUrl.trim()),typeof e.localBudget=="boolean"&&(o.localBudget=e.localBudget),typeof e.rooms=="object"&&e.rooms!==null){let c=e.rooms;if(typeof c.backend=="string"){let l=c.backend.trim().toLowerCase();l.length>0&&l.length<=32&&(o.rooms={backend:l})}}if((e.profile==="turbo"||e.profile==="leve")&&(o.profile=e.profile),typeof e.embedder=="string"&&xy(e.embedder.trim())!==void 0&&(o.embedder=e.embedder.trim()),typeof e.recallMinScore=="number"&&Number.isFinite(e.recallMinScore)&&e.recallMinScore>=0&&e.recallMinScore<=1&&(o.recallMinScore=e.recallMinScore),typeof e.sidecarToggles=="object"&&e.sidecarToggles!==null){let c=e.sidecarToggles,l={};typeof c.ollama=="boolean"&&(l.ollama=c.ollama),typeof c.mem0=="boolean"&&(l.mem0=c.mem0),typeof c.headroom=="boolean"&&(l.headroom=c.headroom),Object.keys(l).length>0&&(o.sidecarToggles=l)}let n=$j(e.providers);n&&(o.providers=n);let r=Dj(e.services);r&&(o.services=r);let s=Ij(e.connectors);s&&(o.connectors=s);let i=Pj(e.limits);i&&(o.limits=i);let a=Nj(e.context);return a&&(o.context=a),o}function tm(t){return t.connectors?.telegram?.allowlist??[]}function qR(t,e){let o=tm(t);return o.includes(e)?o:[...o,e]}function WR(t,e){return tm(t).filter(o=>o!==e)}var un=class{base;file;constructor(e={}){this.base=e.baseDir??BR(kj(),".aluy"),this.file=BR(this.base,jc)}get configPath(){return this.file}load(){let e;try{e=Aj(this.file,"utf8")}catch{return{}}let o;try{o=JSON.parse(e)}catch{return{}}return HR(o)}save(e){try{let o=HR({...this.load(),...e});return this.writeAtomic(o),!0}catch{return!1}}saveTheme(e){return this.save({theme:e})}saveLang(e){return this.save({lang:e})}saveTier(e,o){let r=e.trim()==="custom"&&o!==void 0&&o.trim()!==""?o.trim():void 0;return this.save(r!==void 0?{tier:e,model:r}:{tier:e})}saveSplitView(e){return this.save({splitView:e})}saveFullscreen(e){return this.save({fullscreen:e})}saveLocalBudget(e){return this.save({localBudget:e})}writeAtomic(e){Ej(this.base,{recursive:!0,mode:Rj});let o=`${this.file}.${process.pid}.${xj(6).toString("hex")}.tmp`,n=JSON.stringify(e,null,2)+`
|
|
451
451
|
`,r;try{r=Sj(o,kb.O_CREAT|kb.O_EXCL|kb.O_WRONLY,Cj),wj(r,n),UR(r),r=void 0,Tj(o,this.file)}catch(s){if(r!==void 0)try{UR(r)}catch{}try{_j(o)}catch{}throw s}}};function Sb(t,e,o){return t!==void 0&&t.trim()!==""?t.trim():e.tier!==void 0&&e.tier.trim()!==""?e.tier.trim():o}function Bj(t){return t.theme}function GR(t){return t.lang}function wb(t,e){return t===!0?!0:e.splitView??!1}function Ab(t,e){return t===!0?!0:e.fullscreen??!1}import{homedir as Uj}from"node:os";import{join as Eb,basename as jj}from"node:path";import{openSync as Hj,writeSync as qj,closeSync as zR,mkdirSync as Wj,renameSync as Gj,unlinkSync as zj,constants as Tb}from"node:fs";var Kj=448,Yj=384,KR="exports",Vj=(t,e,o)=>qj(t,e,o,e.length-o);function Xj(t,e){if(t===void 0||t.trim()==="")return e;let o=jj(t.trim());return o=o.replace(/[-/\\]/g,""),o===""||o==="."||o===".."?e:(/\.md$/i.test(o)||(o+=".md"),o)}function Jj(t){return t.toISOString().replace(/[:.]/g,"-").replace(/-\d{3}Z$/,"Z")}var Hc=class{base;now;writeChunk;constructor(e={}){this.base=Eb(e.baseDir??Eb(Uj(),".aluy"),KR),this.now=e.now??(()=>new Date),this.writeChunk=e.writeChunk??Vj}get dir(){return this.base}write(e,o={}){let n=`${(o.sessionId??"sessao").slice(0,40)}-${Jj(this.now())}.md`,r=Xj(o.fileName,n),s=Eb(this.base,r),i=`${s}.${process.pid}.tmp`,a;try{Wj(this.base,{recursive:!0,mode:Kj}),a=Hj(i,Tb.O_CREAT|Tb.O_EXCL|Tb.O_WRONLY,Yj);let c=Buffer.from(e,"utf8"),l=0;for(;l<c.length;){let d=this.writeChunk(a,c,l);if(d<=0)throw new Error(`escrita parou em ${l}/${c.length} bytes (writeSync devolveu ${d})`);l+=d}return zR(a),a=void 0,Gj(i,s),{ok:!0,path:s}}catch(c){if(a!==void 0)try{zR(a)}catch{}try{zj(i)}catch{}return{ok:!1,error:`falha ao exportar: ${String(c)}`}}}};function Qj(t,e,o={}){return t.write(e,o)}import{homedir as iH}from"node:os";import{join as Rb}from"node:path";import{randomBytes as aH}from"node:crypto";import{openSync as cH,writeSync as lH,closeSync as JR,readFileSync as dH,readdirSync as QR,mkdirSync as uH,renameSync as mH,unlinkSync as ZR,statSync as fH,existsSync as ane,constants as Cb}from"node:fs";var Zj=new Set(["you","aluy","tool","deny","bang","broker-error","note","inject","doctor"]);function ct(t){return typeof t=="string"}function YR(t){return typeof t=="number"&&Number.isInteger(t)&&t>=0}function eH(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function tH(t){return t==="ok"||t==="warn"||t==="fail"?t:"warn"}function oH(t){if(typeof t!="object"||t===null)return null;let e=t;return!ct(e.id)||!ct(e.label)?null:{id:e.id,label:e.label,status:tH(e.status),...ct(e.detail)?{detail:e.detail}:{},...ct(e.fix)?{fix:e.fix}:{}}}function VR(t){if(typeof t!="object"||t===null)return null;let e=t,o=e.kind;if(typeof o!="string"||!Zj.has(o))return null;switch(o){case"you":return ct(e.text)?{kind:"you",text:e.text}:null;case"aluy":return ct(e.text)?{kind:"aluy",text:e.text,streaming:!1}:null;case"tool":{if(!ct(e.verb)||!ct(e.target)||!ct(e.result))return null;let n=e.status==="ok"||e.status==="err"?e.status:"err";return{kind:"tool",verb:e.verb,target:e.target,result:e.result,status:n,...ct(e.output)?{output:e.output}:{},...ct(e.verbGerund)?{verbGerund:e.verbGerund}:{},...YR(e.added)?{added:e.added}:{},...YR(e.removed)?{removed:e.removed}:{}}}case"deny":return ct(e.verb)&&ct(e.exact)?{kind:"deny",verb:e.verb,exact:e.exact}:null;case"bang":{if(!ct(e.command))return null;let n=e.status==="ok"||e.status==="err"||e.status==="blocked"?e.status:"err";return{kind:"bang",command:e.command,status:n,...ct(e.output)?{output:e.output}:{}}}case"broker-error":return ct(e.message)?{kind:"broker-error",message:e.message,...typeof e.status=="number"?{status:e.status}:{}}:null;case"note":return ct(e.title)&&eH(e.lines)?{kind:"note",title:e.title,lines:e.lines}:null;case"inject":return ct(e.text)?{kind:"inject",text:e.text}:null;case"doctor":{if(!Array.isArray(e.checks))return null;let n=e.checks.map(oH).filter(r=>r!==null);return n.length===0?null:{kind:"doctor",checks:n,...ct(e.summary)?{summary:e.summary}:{}}}default:return null}}function om(t){if(!Array.isArray(t))return[];let e=[];for(let o of t){let n=VR(o);n&&e.push(n)}return e}var _b="sess\xE3o-anterior";function fs(t){let e=[];for(let o of t)switch(o.kind){case"you":e.push({role:"goal",text:o.text});break;case"aluy":o.text.trim()!==""&&e.push({role:"model",text:o.text});break;case"tool":{let n=[`${o.verb} ${o.target} \u2192 ${o.result||o.status}`];o.output&&n.push(o.output),e.push({role:"observation",toolName:_b,text:n.join(`
|
|
452
452
|
`)});break}case"bang":{let n=[`! ${o.command} (${o.status})`];o.output&&n.push(o.output),e.push({role:"observation",toolName:_b,text:n.join(`
|
|
453
453
|
`)});break}case"broker-error":e.push({role:"observation",toolName:_b,text:`(erro de broker anterior: ${o.message})`});break;case"note":case"deny":case"subagents":case"doctor":case"inject":break}return e}j();var nH=new Set(["bash","run_command"]),rH=new Set(["read","grep","attach","headroom_retrieve"]);function sH(t){return t.kind==="tool"&&rH.has(t.verb)}function XR(t){let e=!1,o=t.map(n=>{if(n.kind==="tool"&&sH(n)){let r=Ue(n.result),s=n.output!==void 0?Ue(n.output):void 0,i=n.liveOutput!==void 0?Ue(n.liveOutput):void 0;return r===n.result&&s===n.output&&i===n.liveOutput?n:(e=!0,{...n,result:r,...s!==void 0?{output:s}:{},...i!==void 0?{liveOutput:i}:{}})}if(n.kind==="bang"){let r=It(n.command);return r===n.command?n:(e=!0,{...n,command:r})}if(n.kind==="tool"&&nH.has(n.verb)){let r=It(n.target);return r===n.target?n:(e=!0,{...n,target:r})}return n});return e?o:t}var pH=448,hH=384,eC="sessions",tC=1,gH=720*60*60*1e3,yH=50,Ob=8*1024*1024,bH=Ob*8,vH=Math.floor(Ob*.9),nm=/^[A-Za-z0-9_-]{1,128}$/,kH=64;function xH(t,e){let o=[...t];return o.length>e?o.slice(0,e).join(""):t}function rm(t){if(typeof t!="string")return;let e="";for(let n of t){let r=n.codePointAt(0)??0;e+=r<32||r===127?" ":n}let o=e.replace(/\s+/g," ").trim();if(o!=="")return xH(o,kH)}function SH(t){for(let e of t)if(e.kind==="you"){let o=e.text.replace(/\s+/g," ").trim();if(o==="")return;let n=[...o];return n.length>60?n.slice(0,57).join("")+"\u2026":o}}var qc=class{base;dir;now;createdAtCache=new Map;constructor(e={}){this.base=e.baseDir??Rb(iH(),".aluy"),this.dir=Rb(this.base,eC),this.now=e.now??(()=>Date.now())}get sessionsDir(){return this.dir}pathFor(e){return Rb(this.dir,`${e}.json`)}save(e){if(!nm.test(e.id))return!1;try{let o=this.now(),n=this.resolveCreatedAt(e.id,o),r=e.tier==="custom"&&typeof e.model=="string"&&e.model.trim()!=="",s=r&&typeof e.provider=="string"&&e.provider.trim()!=="",i=rm(e.label),a=i!==void 0?rm(e.labelColor):void 0,c={id:e.id,version:tC,createdAt:n,updatedAt:o,cwd:e.cwd,tier:e.tier,...r?{model:e.model.trim()}:{},...s?{provider:e.provider.trim()}:{},...i!==void 0?{label:i}:{},...a!==void 0?{labelColor:a}:{}},l=this.fitBlocks(c,XR(om(e.blocks))),d={...c,blocks:l};return this.writeAtomic(d),!0}catch{return!1}}resolveCreatedAt(e,o){let n=this.createdAtCache.get(e);if(n!==void 0)return n;let r=this.load(e)?.createdAt??o;return this.createdAtCache.set(e,r),r}load(e){if(!nm.test(e))return null;let o=this.pathFor(e),n,r=!1;try{let a=fH(o);if(a.size>bH)return null;r=a.size>Ob,n=dH(o,"utf8")}catch{return null}let s;try{s=JSON.parse(n)}catch{return null}let i=this.sanitizeRecord(s);if(i&&r){let{blocks:a,...c}=i,l=this.fitBlocks(c,a),d=a.length-l.length,f={kind:"note",title:"sess\xE3o grande \u2014 contexto antigo omitido no resume",lines:[`Esta sess\xE3o era grande demais p/ recarregar inteira; ${d} bloco(s) antigo(s) foram omitidos e a parte recente foi preservada.`,"O contexto restante ser\xE1 resumido automaticamente na pr\xF3xima intera\xE7\xE3o."]};i={...i,blocks:d>0?[f,...l]:l}}return i&&this.createdAtCache.set(i.id,i.createdAt),i}list(){let e;try{e=QR(this.dir)}catch{return[]}let o=[];for(let n of e){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5),s=this.load(r);s&&o.push({id:s.id,createdAt:s.createdAt,updatedAt:s.updatedAt,cwd:s.cwd,tier:s.tier,...s.model!==void 0?{model:s.model}:{},...s.provider!==void 0?{provider:s.provider}:{},...s.label!==void 0?{label:s.label}:{},...s.labelColor!==void 0?{labelColor:s.labelColor}:{},blockCount:s.blocks.length,title:SH(s.blocks)})}return o.sort((n,r)=>r.updatedAt-n.updatedAt),o}latestForCwd(e){let o;try{o=QR(this.dir)}catch{return null}let n=null;for(let r of o){if(!r.endsWith(".json"))continue;let s=r.slice(0,-5),i=this.load(s);!i||i.cwd!==e||(n===null||i.updatedAt>n.updatedAt)&&(n=i)}return n}remove(e){if(nm.test(e)){this.createdAtCache.delete(e);try{ZR(this.pathFor(e))}catch{}}}gc(e={}){let o=e.maxAgeMs??gH,n=e.maxCount??yH,r=this.list(),s=this.now()-o;r.forEach((i,a)=>{(i.updatedAt<s||a>=n)&&this.remove(i.id)})}sanitizeRecord(e){if(typeof e!="object"||e===null)return null;let o=e;if(typeof o.id!="string"||!nm.test(o.id)||!Array.isArray(o.blocks))return null;let n=typeof o.createdAt=="number"&&o.createdAt>=0?o.createdAt:0,r=typeof o.updatedAt=="number"&&o.updatedAt>=0?o.updatedAt:n,s=typeof o.cwd=="string"?o.cwd:"",i=typeof o.tier=="string"&&o.tier.trim()!==""?o.tier:"",a=typeof o.version=="number"?o.version:0,c=i==="custom"&&typeof o.model=="string"&&o.model.trim()!==""?o.model.trim():void 0,l=c!==void 0&&typeof o.provider=="string"&&o.provider.trim()!==""?o.provider.trim():void 0,d=rm(o.label),f=d!==void 0?rm(o.labelColor):void 0;return{id:o.id,version:a,createdAt:n,updatedAt:r,cwd:s,tier:i,...c!==void 0?{model:c}:{},...l!==void 0?{provider:l}:{},...d!==void 0?{label:d}:{},...f!==void 0?{labelColor:f}:{},blocks:om(o.blocks)}}fitBlocks(e,o){let n=i=>Buffer.byteLength(JSON.stringify({...e,blocks:i})+`
|
|
@@ -625,7 +625,7 @@ Notas:
|
|
|
625
625
|
- Confinamento: o run roda no workspace do job (path-deny ADR-0053).
|
|
626
626
|
- Anti-runaway: tetos do --cycle s\xE3o herdados (CLI-SEC-14).
|
|
627
627
|
`;function r6(t){let e=t[0];if(e===void 0||e==="help"||e==="-h"||e==="--help")return{kind:"help"};if(e==="list")return{kind:"list"};if(e==="add"){let o=t.slice(1),n=o.includes("--yolo"),r=o.filter(c=>c!=="--yolo"),s=r[0],i=r[1];return s?i?s.trim().split(/\s+/).length!==5?{kind:"error",message:`cron add: <quando> inv\xE1lido "${s}" \u2014 use 5 campos cron (ex.: "0 9 * * 1-5").`}:{kind:"add",quando:s,tarefa:i,yolo:n}:{kind:"error",message:'cron add: falta a "<tarefa>".'}:{kind:"error",message:"cron add: falta o <quando> (express\xE3o cron)."}}if(e==="rm"||e==="remove"){let o=t[1];return o?{kind:"rm",id:o}:{kind:"error",message:"cron rm: falta o <id> do job."}}if(e==="run"){let o=t[1];return o?{kind:"run",id:o}:{kind:"error",message:"cron run: falta o <id> do job."}}if(e==="enable"||e==="disable"){let o=t[1];return o?{kind:e,id:o}:{kind:"error",message:`cron ${e}: falta o <id> do job.`}}if(e==="edit"){let o=t.slice(1),n=o[0];if(!n||n.startsWith("--"))return{kind:"error",message:"cron edit: falta o <id> do job."};let r=c=>{let l=o.indexOf(c);return l!==-1?o[l+1]:void 0},s=r("--quando"),i=r("--tarefa"),a=o.includes("--yolo")?!0:o.includes("--no-yolo")?!1:void 0;return s===void 0&&i===void 0&&a===void 0?{kind:"error",message:'cron edit: nada a mudar \u2014 use --quando "<cron>", --tarefa "<txt>" e/ou --yolo|--no-yolo.'}:s!==void 0&&s.trim().split(/\s+/).length!==5?{kind:"error",message:`cron edit: --quando inv\xE1lido "${s}" \u2014 use 5 campos cron (ex.: "0 9 * * 1-5").`}:{kind:"edit",id:n,...s!==void 0?{quando:s}:{},...i!==void 0?{tarefa:i}:{},...a!==void 0?{yolo:a}:{}}}return{kind:"error",message:`cron: subcomando desconhecido "${e}".`}}async function cN(t,e={}){let o=e.io?.out??console.log,n=e.io?.err??console.error,r=r6(t);switch(r.kind){case"help":return o(n6),0;case"error":return n(`aluy: ${r.message}`),n("rode 'aluy cron --help' para ver o uso."),1;case"add":{aN();let s=Is(),i={id:t6(),schedule:r.quando,task:r.tarefa,criado_em:new Date().toISOString(),yolo:r.yolo,workspace:process.cwd()};if(s.jobs.push(i),Pf(s),process.platform==="linux")try{Nf()}catch(a){n(`aluy: erro ao atualizar crontab: ${a instanceof Error?a.message:String(a)}`)}else o("aluy: aviso \u2014 agendamento pelo cron do SO dispon\xEDvel s\xF3 no Linux nesta fatia."),o(" O job foi salvo mas N\xC3O foi instalado no agendador do SO.");return o(`Job "${i.id.slice(0,8)}" adicionado:`),o(` Schedule: ${i.schedule}`),o(` Tarefa: ${i.task}`),o(` Yolo: ${i.yolo?"sim (opt-in)":"n\xE3o (padr\xE3o seguro)"}`),r.yolo&&(o(" \u26A0 --yolo ativo: a tarefa roda SEM pedir confirma\xE7\xE3o."),o(" Categorias sempre-ask seguem n\xE3o-relax\xE1veis.")),0}case"list":{let s=Is();if(s.jobs.length===0)return o('Nenhum job agendado. Use: aluy cron add <quando> "<tarefa>"'),0;o(`Jobs agendados (${s.jobs.length}):`);for(let i of s.jobs){let a=i.id.slice(0,8),c=i.yolo?"yolo":"ask",l=i.enabled===!1?"off":"on ";o(` ${a} [${l}] ${i.schedule} [${c}] ${i.task}`)}return 0}case"rm":{let s=Is(),i=s.jobs.findIndex(c=>c.id.startsWith(r.id));if(i===-1)return n(`aluy: job "${r.id}" n\xE3o encontrado. Use "aluy cron list" para ver os ids.`),1;let a=s.jobs[i];if(s.jobs.splice(i,1),Pf(s),process.platform==="linux")try{Nf()}catch(c){n(`aluy: erro ao atualizar crontab: ${c instanceof Error?c.message:String(c)}`)}return o(`Job "${a.id.slice(0,8)}" removido: ${a.task}`),0}case"run":{let i=Is().jobs.find(l=>l.id.startsWith(r.id));if(!i)return n(`aluy: job "${r.id}" n\xE3o encontrado. Use "aluy cron list" para ver os ids.`),1;o(`Executando job "${i.id.slice(0,8)}": ${i.task}`);let a=i.yolo?" --yolo":"",c=`aluy -p "${i.task.replace(/"/g,'\\"')}"${a}`;o(` Comando: ${c}`);try{return nN(c,{cwd:i.workspace||process.cwd(),stdio:"inherit",encoding:"utf8"}),o(" \u2713 Conclu\xEDdo."),0}catch(l){let d=l.status??2;return n(` \u2717 Falhou (exit code: ${d}).`),d}}case"enable":case"disable":{let s=Is(),i=s.jobs.find(a=>a.id.startsWith(r.id));if(!i)return n(`aluy: job "${r.id}" n\xE3o encontrado. Use "aluy cron list" para ver os ids.`),1;if(i.enabled=r.kind==="enable",Pf(s),process.platform==="linux")try{Nf()}catch(a){n(`aluy: erro ao atualizar crontab: ${a instanceof Error?a.message:String(a)}`)}return o(`Job "${i.id.slice(0,8)}" ${r.kind==="enable"?"HABILITADO":"DESABILITADO"}: ${i.task}`),r.kind==="disable"&&o(" (continua salvo; fora do agendador do SO at\xE9 reabilitar)"),0}case"edit":{let s=Is(),i=s.jobs.find(a=>a.id.startsWith(r.id));if(!i)return n(`aluy: job "${r.id}" n\xE3o encontrado. Use "aluy cron list" para ver os ids.`),1;if(r.quando!==void 0&&(i.schedule=r.quando),r.tarefa!==void 0&&(i.task=r.tarefa),r.yolo!==void 0&&(i.yolo=r.yolo),Pf(s),process.platform==="linux")try{Nf()}catch(a){n(`aluy: erro ao atualizar crontab: ${a instanceof Error?a.message:String(a)}`)}return o(`Job "${i.id.slice(0,8)}" editado:`),o(` Schedule: ${i.schedule}`),o(` Tarefa: ${i.task}`),o(` Yolo: ${i.yolo?"sim (opt-in)":"n\xE3o (padr\xE3o seguro)"}`),0}}}import{basename as i6}from"node:path";import{jsx as y6}from"react/jsx-runtime";var lN='aluy: --cycle exige um teto do ciclo \u2014 sem teto N\xC3O inicia (prote\xE7\xE3o contra execu\xE7\xE3o sem fim). Use --cycles N (n\xBA de ciclos) e/ou --cycle-for <dur> (dura\xE7\xE3o total). Ex.: aluy -p "diga oi" --cycle --cycles 2 \u2014 ou aluy -p "diga oi" --cycle --cycle-for 30m.';function a6(t){let e={};if(t.cycles!==void 0){let o=Number(t.cycles);Number.isFinite(o)&&Number.isInteger(o)&&o>=1&&(e.maxIterations=o)}if(t.cycleFor!==void 0){let o=br(t.cycleFor);o!==void 0&&o>0&&(e.maxDurationMs=o)}if(!(e.maxIterations===void 0&&e.maxDurationMs===void 0))return e}function c6(t,e){try{let n={...li(t).request,...e?.maxIterations!==void 0?{maxIterations:e.maxIterations}:{},...e?.maxDurationMs!==void 0?{maxDurationMs:e.maxDurationMs}:{}};return mi(n),{kind:"ok"}}catch(o){if(o instanceof an)return{kind:"no-ceiling"};if(o instanceof _t)return{kind:"parse-error",message:o.message};throw o}}async function l6(t={}){let e=t.env??process.env,o=t.headless!==void 0,n=!o&&(t.stdout??process.stdout).isTTY===!0,r=t.stdout??process.stdout,s=OP(r,process),i=n&&t.promptYesNo===void 0,a;if(i){let A=t.stdout??process.stdout;Jl(A,!0);let U=ln({env:e,...t.dense?{density:"compact"}:{},...t.safeGlyphs?{safeGlyphs:!0}:{}});a=VP({theme:U,stdout:A});let me=YP(e);me>0&&await new Promise(_=>setTimeout(_,me))}let c=a?.promptYesNo??t.promptYesNo??u6(t.stdout),l=t.mode,d=!1;t.yoloEntryNotice!==void 0&&n&&(await c(t.yoloEntryNotice)||(l="normal",d=!0,i||(t.stdout??process.stderr).write?.(`aluy: YOLO cancelado \u2014 seguindo em modo normal.
|
|
628
|
-
`)));let f=t.projectInstructions!==void 0?{instructions:t.projectInstructions,sources:[]}:await f6(t),u=f.instructions,p=f.sources,h=t.configStore??new un,g=h.load()
|
|
628
|
+
`)));let f=t.projectInstructions!==void 0?{instructions:t.projectInstructions,sources:[]}:await f6(t),u=f.instructions,p=f.sources,h=t.configStore??new un,g=h.load();e.ALUY_MEM_MIN_SCORE===void 0&&g.recallMinScore!==void 0&&(e.ALUY_MEM_MIN_SCORE=String(g.recallMinScore));let y=vb(t.lang,GR(g),e),w=wb(t.split,g),R=process.env.ALUY_FULLSCREEN==="1"?Ab(t.fullscreen,g):!1,E=t.sessionStore??new qc;try{E.gc()}catch{}let M=new xr(t.workspaceRoot!==void 0?{root:t.workspaceRoot}:{}),D=M.root,H=await BP({request:t.resume,fresh:t.fresh===!0,isTty:n,store:E,cwd:D,promptYesNo:c});H.kind==="not-found"&&process.stderr.write(`aluy: sess\xE3o "${H.requestedId}" n\xE3o encontrada \u2014 iniciando uma nova.
|
|
629
629
|
`);let q=H.kind==="resumed"?H.record:null,G=q?Xl(q,Qn):void 0,P=$P(g,Qn),X=G&&G.tier.trim()!==""?G.tier:void 0,ne=P.tier.trim()!==""?P.tier:void 0,z=Sb(t.tier,{...g,...ne!==void 0?{tier:ne}:{},...X!==void 0?{tier:X}:{}},Qn),I=z!=="custom"?void 0:t.model!==void 0&&t.model.trim()!==""?t.model.trim():t.tier!==void 0&&t.tier.trim()!==""?void 0:G?.model??P.model,K=z!=="custom"||I===void 0||t.model!==void 0&&t.model.trim()!==""||t.tier!==void 0&&t.tier.trim()!==""?void 0:G?.provider??P.provider,Oe=G===void 0&&(t.tier===void 0||t.tier.trim()==="")&&P.warning!==void 0?P.warning:void 0,W=new Sr({workspace:M}),ie=new Gl({workspace:M,readFile:A=>W.readFile(A),exists:A=>W.exists(A)}),V=t.codexMcpConfigStore??new tr,re=!1,le=!1,pe=e.ALUY_SANDBOX_MCP?Gu({processEnv:e}):void 0,Q=t.mcpTools!==void 0?void 0:await Rf({workspaceRoot:D,parentEnv:e,...pe?{sandboxLauncher:pe}:{},loadProjectConfig:async()=>{let A=await ie.load();return re=A.config.servers.length>0,A},loadCodexConfig:()=>{let A=V.load();return le=A.config.servers.length>0,A}}),se=t.mcpTools??Q?.tools??[];Q?.configError&&process.stderr.write(`aluy: MCP \u2014 ${Q.configError}
|
|
630
630
|
`);for(let A of Q?.warnings??[])process.stderr.write(`aluy: MCP \u2014 ${A}
|
|
631
631
|
`);let Me=t.mcpRegistryFetch??PM(),No=t.userAgentsLoader??new ps,lt=t.projectAgentsLoader??new zc({workspace:M}),Qe=No.load(),Et=lt.load(),st=new oc(Qe.profiles,Et.profiles),dt=[...Qe.errors,...Et.errors],Ze=bL({flag:t.backend,env:e,config:g}),no=(()=>{if(t.budget!==void 0)return t.budget;if(e.ALUY_BUDGET!==void 0&&e.ALUY_BUDGET.trim()!==""){let A=e.ALUY_BUDGET.trim().toLowerCase();if(A==="1"||A==="true"||A==="on")return!0;if(A==="0"||A==="false"||A==="off")return!1}return g.localBudget!==void 0?g.localBudget:Ze!=="local"})(),ro,ut;if(Ze==="local"&&t.brokerClient===void 0){let A=_L(),U=vL({catalog:A,flags:{...t.localProvider!==void 0?{localProvider:t.localProvider}:{},...t.localModel!==void 0?{localModel:t.localModel}:{},...t.localAuth!==void 0?{localAuth:t.localAuth}:{},...t.localBaseUrl!==void 0?{localBaseUrl:t.localBaseUrl}:{}},env:e,config:g});ro=U.provider,ut=await EL({catalog:A,provider:U.provider,model:U.model,auth:U.auth,...U.baseUrl!==void 0?{baseUrl:U.baseUrl}:{},env:e,...U.auth==="oauth"?{oauthAccessToken:LL(U.provider)}:{}})}let{provider:go,backend:so,localProvider:Tn,localModel:io,localAuth:yo,localBaseUrl:J,...$}=t,v=fv({...$,...ut!==void 0?{brokerClient:ut}:{},...l!==void 0?{mode:l}:{},agentRegistry:st,tier:z,effectiveBackend:Ze,...g.services?{services:g.services}:{},...(()=>{let A=$C({env:e,profile:g.profile??"turbo",...g.sidecarToggles?.headroom!==void 0?{headroomToggle:g.sidecarToggles.headroom}:{},...g.services?{services:g.services}:{}});return A!==void 0?{headroomUrl:A}:{}})(),...g.limits?{limits:g.limits}:{},...g.context?{context:g.context}:{},localBudget:no,...I!==void 0?{model:I}:{},...Ze==="local"&&ro!==void 0&&ro!==""?{provider:ro}:z==="custom"&&t.provider!==void 0&&t.provider.trim()!==""&&t.model!==void 0&&t.model.trim()!==""&&I===t.model.trim()?{provider:t.provider.trim()}:K!==void 0&&K.trim()!==""?{provider:K.trim()}:{},...q!==null?{sessionId:q.id}:{},...u!==void 0?{projectInstructions:u}:{},...(()=>{let A=Dg(st.list());return A!==void 0?{availableAgents:A}:{}})(),...(()=>{let A=R0();return A!==void 0?{sessionCommands:A}:{}})(),...se.length>0?{mcpTools:se}:{},memoryMonitor:{heapLimitMb:eg(e),sampleHeapUsed:()=>process.memoryUsage().heapUsed}}),He={id:q?.id??ri(),cwd:D},ao=q?fs(q.blocks):[];q&&v.controller.restoreBlocks(q.blocks),q?.label!==void 0&&v.controller.setLabel(q.label,q.labelColor),G?.warning&&v.controller.pushNote("model",[G.warning]),Oe!==void 0&&v.controller.pushNote("model",[Oe]);let Ee=()=>{PP(E,{id:He.id,cwd:He.cwd,tier:v.controller.tier,...v.controller.model!==void 0?{model:v.controller.model}:{},...v.controller.provider!==void 0?{provider:v.controller.provider}:{},...v.controller.label!==void 0?{label:v.controller.label}:{},...v.controller.labelColor!==void 0?{labelColor:v.controller.labelColor}:{},blocks:v.controller.blocks})},Ur=t.userCommandsLoader??new Wc,Ds=t.projectCommandsLoader??new Gc({workspace:M}),Tt=Ur.load(),or=Ds.load(),jr=Lb(Tt,or),Hr=jr.map(A=>({name:A.name,summary:A.summary,source:"user",section:"usu\xE1rio"})),Zl=new Map(jr.map(A=>[A.name,A])),bo=v.hookRunner,Io=v.hooksConfig;if(H.kind==="pick"){(t.stdout??process.stdout).write(IP(H.choices).join(`
|
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.42",
|
|
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",
|