@hiperplano/aluy-cli 1.0.0-rc.30 → 1.0.0-rc.31

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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- var pU=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)pU(t,o,{get:e[o],enumerable:!0})};import{homedir as hU}from"node:os";import{join as gU}from"node:path";function bl(t=hU()){return gU(t,".aluy")}var $u=p(()=>{"use strict"});var vl,OA=p(()=>{"use strict";vl="1.0.0-rc.30"});function ar(t,e){return t.decide(e)}var Cs=p(()=>{"use strict"});var Cn,lr,cr=p(()=>{"use strict";Cn="remember",lr="recall"});var Qh,yU,ji,Zh=p(()=>{"use strict";Qh=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}}},yU=200,ji=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??yU,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 Qh(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 Fu(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 PA(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"&&bU.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=PA(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return kU;let s=o.trim().slice(0,vU);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function xU(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=PA(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=Fu(o).length;return s>MA?{error:`update_plan: no m\xE1ximo ${MA} passos (recebidos ${s}).`}:{steps:o}}function SU(t){let e=Fu(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${IA[r.step.status]} ${r.step.title}`).join(`
2
+ var pU=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 dt=(t,e)=>{for(var o in e)pU(t,o,{get:e[o],enumerable:!0})};import{homedir as hU}from"node:os";import{join as gU}from"node:path";function bl(t=hU()){return gU(t,".aluy")}var $u=p(()=>{"use strict"});var vl,OA=p(()=>{"use strict";vl="1.0.0-rc.31"});function ar(t,e){return t.decide(e)}var Cs=p(()=>{"use strict"});var Cn,lr,cr=p(()=>{"use strict";Cn="remember",lr="recall"});var Qh,yU,ji,Zh=p(()=>{"use strict";Qh=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}}},yU=200,ji=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??yU,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 Qh(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 Fu(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 PA(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"&&bU.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=PA(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return kU;let s=o.trim().slice(0,vU);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function xU(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=PA(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=Fu(o).length;return s>MA?{error:`update_plan: no m\xE1ximo ${MA} passos (recebidos ${s}).`}:{steps:o}}function SU(t){let e=Fu(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${IA[r.step.status]} ${r.step.title}`).join(`
3
3
  `);return`plano (${o}/${e.length}):
4
4
  ${n}`}function AU(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function EU(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=AU(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 TU(t,e){if(!e)return SU(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=Fu(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?wU[m.horizon]:"",h=m?s(m.id):d,g=" ".repeat(h),y=IA[c.status];l.push(`${g}${u} ${y} ${c.title}`)}return l.join(`
5
5
  `)}var kl,bU,MA,vU,kU,IA,wU,LA,_U,NA,Bu=p(()=>{"use strict";Zh();kl="update_plan";bU=new Set(["pending","in_progress","completed"]),MA=30,vU=120,kU="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";IA={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};wU={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};LA=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),_U=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:LA,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:LA},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),NA={name:kl,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:_U,async run(t,e){let o=xU(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&EU(o.steps,e.graph),e.plan&&e.plan.set(Fu(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:TU(o.steps,e.graph)})}}});function DA(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)?CU(s):void 0;if(typeof i=="string")return{error:i};let a,l=t.kind??t.type;if(typeof l=="string"&&RU.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 CU(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 OU(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(`
@@ -53,7 +53,7 @@ ${l}`;r.enqueue({monitorId:e,label:o,type:"command",condition:c,payload:d,firedA
53
53
  ${r.map(i=>`- ${i.text}`).join(`
54
54
  `)}`}]}catch{return[]}}async storeMemory(e,o){if(!(!this.memory||!this.memoryScope))try{let n=Ye(e),r=Ye(o);await this.memory.add({content:[{kind:"text",text:`Objetivo: ${n}
55
55
  Resultado: ${r}`}],scope:this.memoryScope,metadata:{sessionId:this.sessionId}})}catch{}}async run(e,o,n=[],r,s){let i=await this.recallMemory(e),a=[...n,...i,{role:"goal",text:e}],l=await this.runLoop(a,o,r,s);if(l.stop.kind==="final"){let c=this.storeMemory(e,l.stop.answer).finally(()=>this.pendingMemoryWrites.delete(c));this.pendingMemoryWrites.add(c)}return l}pendingMemoryWrites=new Set;async drainMemoryWrites(){await Promise.allSettled([...this.pendingMemoryWrites])}async resume(e,o,n){return this.runLoop([...e],o,void 0,n)}async runLoop(e,o,n,r){let s=r??this.sharedBudget??new qi(this.limits),i={iterations:0,toolCalls:0,tokens:0},a=n??this.sessionId,l=this.tools.list(),c=this.stuckResolver?Gy(this.watchdogEnv):void 0,d=Yy(),m,u=0,h=jH(e),g=0,y=!1,b=0,w=0,T,E=0;for(;;){if(o?.aborted)throw Nm(this.maestro?.bus,"ESC/Ctrl+C no topo da itera\xE7\xE3o"),new tt;let L=s.peekExceeded();if(L)return this.stopAtLimit(s,i,e,L,a);let B=s.tryConsumeIteration();if(!B.ok)return this.stopAtLimit(s,i,e,B.limit??"iterations",a);i.iterations+=1,this.onUsage?.({...i});let j=Em(a,u);if(u+=1,this.onProgress?.({kind:"iteration",iteration:u}),c?.noteIteration(),this.pollInjected){let Y=this.pollInjected().filter(ce=>ce.role==="user_inject");Y.length>0&&(e.push(...Y),this.onProgress?.({kind:"inject",count:Y.length}),c?.noteRedirect())}if(this.monitorQueue&&this.monitorQueue.pending()>0){let Y=this.monitorQueue.drain();Y.length>0&&(e.push(...Y.map(ec)),this.onProgress?.({kind:"monitor",count:Y.length}),c?.noteProgress())}if(this.selfCheck.enabled&&b>0&&u%this.selfCheck.reanchorEveryK===0&&e.push({role:"reanchor",text:$y(h,HH(e))}),this.weakYoloGuardrail&&!y&&Uy({yolo:this.permission instanceof to&&this.permission.isUnsafe,tier:this.weakYoloGuardrail.tier(),history:e})){y=!0,f_(this.maestro?.bus,this.weakYoloGuardrail.tier()??"unknown");try{this.weakYoloGuardrail.onWarn(jy(this.weakYoloGuardrail.tier()))}catch{}e.push({role:"reanchor",text:Hy()})}if(this.maestro)try{let Y=this.maestro.bus.poll(),ce=await this.maestro.rege(Y);if(await this.applyMaestroDecision(ce,e,d,o,c)==="stop")return this.stopByMaestro(i,e,a)}catch(Y){if(Y instanceof tt||o?.aborted)throw Y}await this.maybeAutoCompact(e,m,d,o);let z=this.ports.cwd?this.ports.cwd.roots??[this.ports.cwd.root]:void 0,V=Am(l,e,this.projectInstructions,z,this.availableAgents,this.sessionCommands),I;try{I=await this.model.call({messages:V,idempotencyKey:j,...o?{signal:o}:{}})}catch(Y){if(Y instanceof Ls)return u_(this.maestro?.bus,Y.kind,Y.repeats,Y.sample),this.stopAtDegenerate(i,e,Y,a);throw Y}let J=WH(I.usage);s.addTokens(J),I.usage&&Number.isFinite(I.usage.tokens_in)&&I.usage.tokens_in>0&&(m=I.usage.tokens_in),Number.isFinite(J)&&J>0&&(i.tokens+=J,this.onUsage?.({...i})),this.onProgress?.({kind:"model",tokens:J});let Q=I.content.trim().length>0;Q&&c?.noteModelContent(I.content);let K=I.tool_calls!==void 0?GH(I.tool_calls):void 0;if(K!==void 0&&K.length>0){e.push({role:"model_tool_calls",text:I.content,calls:K});for(let ce=0;ce<K.length;ce+=1){let O=K[ce];if(o?.aborted)throw Nm(this.maestro?.bus,"ESC/Ctrl+C durante batch de tool-calls"),new tt;let se=await this.executeToolCall(O.name,O.input,s,i,o,c);if(se.kind==="limit"){for(let de=ce;de<K.length;de+=1){let ye=K[de];e.push({role:"tool_result",toolCallId:ye.id,toolName:ye.name,text:"A\xC7\xC3O N\xC3O EXECUTADA \u2014 teto de tool-calls da sess\xE3o atingido ANTES de rodar esta ferramenta. N\xC3O \xE9 erro t\xE9cnico nem bloqueio de pol\xEDtica; o turno foi pausado para confirma\xE7\xE3o. A a\xE7\xE3o n\xE3o teve efeito."})}return this.stopAtLimit(s,i,e,se.limit,a)}se.ok&&(b+=1),e.push({role:"tool_result",toolCallId:O.id,toolName:O.name,text:se.observation})}if(await this.checkStuck(c,e,o)==="end")return this.stopByStuck(i,e,a);continue}e.push({role:"model",text:I.content});let D=$T(I.content);if(D.kind==="final"){let Y=this.selfCheck.enabled&&b>0;if(Y&&g<this.selfCheck.maxVerifications){g+=1,(T===void 0||b>E)&&(T=D.text),E=b,e.push({role:"reanchor",text:Fy(h,g,this.selfCheck.maxVerifications)}),this.onProgress?.({kind:"self-check",attempt:g,max:this.selfCheck.maxVerifications});continue}if(Y&&g>=this.selfCheck.maxVerifications&&e.push({role:"reanchor",text:By(this.selfCheck.maxVerifications)}),!Q){c?.noteEmptyTurn();let O=await this.checkStuck(c,e,o);if(O==="redirect"||O==="continue")continue}if(this.maestro&&this.continuationCfg&&Q){let O=o?.aborted??!1,se=nb(D.text,!1),de=tb(this.ports.graph?.listBoxes()??[]),ye=!1;if(se||de){let Z=eb({continuationsThisTurn:w,signalAborted:O,askedUser:ye},this.continuationCfg);if(Z.action==="continue"){w+=1;let te=se?rb(Z.reason):ob();e.push({role:"reanchor",text:te}),this.onProgress?.({kind:"continue",reason:se?Z.reason:"plano-pendente"});continue}}}let ce=T!==void 0&&b===E?T:D.text;return{sessionId:a,stop:{kind:"final",answer:ce},history:e,usage:{...i}}}if(D.kind==="malformed"){if(e.push({role:"observation",toolName:"parser",text:`bloco de tool-call inv\xE1lido: ${D.reason}`}),c?.noteToolResult("parser",!1,`bloco de tool-call inv\xE1lido: ${D.reason}`),await this.checkStuck(c,e,o)==="end")return this.stopByStuck(i,e,a);continue}let X=await this.executeToolCall(D.call.name,D.call.input,s,i,o,c);if(X.kind==="limit")return this.stopAtLimit(s,i,e,X.limit,a);if(X.ok&&(b+=1),e.push({role:"observation",toolName:D.call.name,text:X.observation}),await this.checkStuck(c,e,o)==="end")return this.stopByStuck(i,e,a)}}async maybeAutoCompact(e,o,n,r){if(this.autoCompact.at<=0||!this.autoCompactPort)return;let s=Ky(o,this.autoCompact.contextWindow),i=Vy(this.autoCompact,s,n),a=Math.round(s*100);if(i.action==="none"){s<this.autoCompact.at&&(n.consecutive=0);return}if(i.action==="give-up"){i.firstTime&&(n.gaveUp=!0,this.autoCompactObserver?.onGiveUp?.({ratioPct:a}));return}this.autoCompactObserver?.onStart?.({ratioPct:a});let l=await this.autoCompactPort(e,r);if(!l){n.consecutive+=1,this.autoCompactObserver?.onSkip?.({ratioPct:a});return}e.splice(0,e.length,...l.history),n.consecutive+=1,this.autoCompactObserver?.onDone?.({summarizedTurns:l.summarizedTurns,ratioPct:a})}async executeToolCall(e,o,n,r,s,i){i?.noteToolCall(e,o);let a=this.tools.get(e);if(!a){let h=`tool desconhecida: "${e}". Tools v\xE1lidas: ${this.tools.list().map(g=>g.name).join(", ")}.`;return i?.noteToolResult(e,!1,"unknown-tool"),{kind:"observation",observation:h}}let l={name:e,input:o},c=ar(this.permission,l);if(c.decision==="deny")return i?.noteToolResult(e,!1,`blocked:${c.decision}`),{kind:"observation",observation:b_(e,c)};if(c.decision==="ask"&&!await this.resolveAsk(l,c,s))return i?.noteToolResult(e,!1,`blocked:${c.decision}`),{kind:"observation",observation:b_(e,c)};if(this.preToolGate){let h=await this.preToolGate(l,s);if(h.blocked)return i?.noteToolResult(e,!1,"blocked:hook-gate"),{kind:"observation",observation:h.observation}}let d=n.tryConsumeToolCall();if(!d.ok)return{kind:"limit",limit:d.limit??"tool_calls"};r.toolCalls+=1,this.onUsage?.({...r}),this.toolObserver?.onToolStart?.(l),this.onProgress?.({kind:"tool-start",tool:e});let m=this.toolObserver,u={...s?{signal:s}:{},...m?.onToolChunk||this.onProgress?{onShellChunk:h=>{m?.onToolChunk?.(l,h),this.onProgress?.({kind:"tool-chunk",tool:e})}}:{},...m?.onTestProgress?{onTestProgress:(h,g)=>{m.onTestProgress(l,h,g)}}:{}};try{let h=await a.run(o,this.ports,u);return e===Cn&&h.ok&&this.permission instanceof to&&this.permission.noteMemoryWrite(),this.toolObserver?.onToolEnd?.(l,h.ok),this.onProgress?.({kind:"tool-end",tool:e}),i?.noteToolResult(e,h.ok,h.observation),{kind:"observation",observation:h.observation,ok:h.ok}}catch(h){throw this.toolObserver?.onToolEnd?.(l,!1),this.onProgress?.({kind:"tool-end",tool:e}),h}}async resolveAsk(e,o,n){if(!this.askResolver||!o.effect)return!1;let r=(o.category??"").startsWith("always-ask:"),s=await this.askResolver.resolve({call:e,effect:o.effect,category:o.category??"default",reason:o.reason,alwaysAsk:r},n);return s.kind==="deny"?!1:(s.kind==="approve-session"&&this.permission instanceof to&&this.permission.grantSession(e),!0)}stopAtLimit(e,o,n,r,s=this.sessionId){return p_(this.maestro?.bus,r,{...o}),{sessionId:s,stop:{kind:"limit",limit:r,message:e.reasonFor(r)},history:n,usage:{...o}}}stopAtDegenerate(e,o,n,r=this.sessionId){let s=qH(n);return o.push({role:"observation",toolName:"anti-runaway",text:s}),{sessionId:r,stop:{kind:"degenerate",reason:n.kind,message:s},history:o,usage:{...e}}}async checkStuck(e,o,n){if(!e||!this.stuckResolver)return"continue";let r=e.take();if(!r)return"continue";if(m_(this.maestro?.bus,r.kind,r.count,r.sample),n?.aborted)return Nm(this.maestro?.bus,"ESC/Ctrl+C durante verifica\xE7\xE3o de travamento"),"end";let s=await this.stuckResolver.resolve(r,n);if(s.kind==="end")return"end";if(s.kind==="redirect"){let i=ta(s.text);if(i)return o.push(i),e.noteRedirect(),"redirect"}return e.reset(),"continue"}stopByStuck(e,o,n=this.sessionId){let r="Turno encerrado pelo usu\xE1rio a partir do aviso de travamento (o agente estava repetindo sem avan\xE7ar). Nenhum efeito novo foi executado por esta decis\xE3o.";return o.push({role:"observation",toolName:"watchdog",text:r}),{sessionId:n,stop:{kind:"final",answer:r},history:o,usage:{...e}}}stopByMaestro(e,o,n=this.sessionId){let r="Turno encerrado pelo Maestro (reg\xEAncia de fluxo). O supervisor detectou condi\xE7\xE3o que requer parada. Nenhum efeito novo foi executado por esta decis\xE3o.";return o.push({role:"observation",toolName:"maestro",text:r}),{sessionId:n,stop:{kind:"final",answer:r},history:o,usage:{...e}}}async applyMaestroDecision(e,o,n,r,s){let{action:i}=e;if(i==="continuar"||i==="delegar"||i==="convergir")return"continue";if(i==="parar")return"stop";if(i==="pausar"){if(!this.stuckResolver)return"stop";let l={kind:"no-progress",count:1,sample:`Maestro: ${e.reason}`},c=await this.stuckResolver.resolve(l,r);if(c.kind==="end")return"stop";if(c.kind==="redirect"){let d=ta(c.text);d&&(o.push(d),s?.noteRedirect())}return s?.reset(),"continue"}if(this.autoCompact.at<=0||!this.autoCompactPort)return"continue";let a=await this.autoCompactPort(o,r);return a&&(o.splice(0,o.length,...a.history),n.consecutive+=1),"continue"}},FH=2500,y_=.6});function S_(){return globalThis.process?.env??{}}function zH(t,e,o){if(t===void 0)return;let n=t.trim();if(n==="")return;let r=Number(n);if(!(!Number.isFinite(r)||r<=0))return Math.min(o,Math.max(e,Math.floor(r)))}function oa(t=S_(),e,o){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.min(32768,Math.max(512,Math.floor(e)));let n=zH(t[v_],512,32768);return n!==void 0?n:o!==void 0&&Number.isFinite(o)&&o>0?Math.min(32768,Math.max(512,Math.floor(o*.7))):4096}function w_(t){if(t==null)return;let e=String(t).trim().toLowerCase();if(e==="")return;let o=Number(e);if(!Number.isFinite(o)||o<=0)return;let n=o>1?o/100:o;if(!(!Number.isFinite(n)||n<=0))return n}function ab(t=S_()){let e=(t[k_]??"").trim().toLowerCase();return!(e==="1"||e==="true"||e==="yes"||e==="on")}function lb(t){let e=Math.max(0,Math.floor(t.heapLimitMb*x_));if(e<=0)return $m;let o=w_(t.pressureAtEnv)??.8,n=.88-.8,r=.95-.8,s=Math.min(.99-2*Dm,Math.max(.5,o)),i=Math.min(.99-Dm,Math.max(s+Dm,o+n)),a=Math.min(.99,Math.max(i+Dm,o+r));return{heapLimitBytes:e,compactAt:s,warnAt:i,shutdownAt:a}}function cb(t,e){return!Number.isFinite(t)||t===void 0||t<=0||!Number.isFinite(e)||e<=0?0:Math.max(0,Math.min(1,t/e))}function db(){return{compactedThisEpisode:!1,warnedThisEpisode:!1,shutdownInitiated:!1}}function ub(t,e,o){return t.heapLimitBytes<=0?{action:"none"}:o.shutdownInitiated?{action:"none"}:e>=t.shutdownAt?{action:"shutdown",firstTime:!0}:e>=t.warnAt&&!o.warnedThisEpisode?{action:"warn"}:e>=t.compactAt&&!o.compactedThisEpisode?{action:"compact"}:{action:"none"}}function ic(t,e){e==="compact"?t.compactedThisEpisode=!0:e==="warn"?t.warnedThisEpisode=!0:e==="shutdown"&&(t.shutdownInitiated=!0)}function mb(t,e,o){e<t.compactAt&&(o.compactedThisEpisode=!1),e<t.warnAt&&(o.warnedThisEpisode=!1)}function Yr(t){return!Number.isFinite(t)||t<=0?0:Math.round(t/x_)}var v_,k_,$m,x_,Dm,ac,fb,A_=p(()=>{"use strict";v_="ALUY_MAX_HEAP_MB",k_="ALUY_MEM_PRESSURE_OFF",$m={heapLimitBytes:0,compactAt:.8,warnAt:.88,shutdownAt:.95},x_=1024*1024;Dm=.01;ac="mem\xF3ria apertada",fb="mem\xF3ria esgotada"});var lc,pb=p(()=>{"use strict";Po();lc=class{tools;aPrioriSupported;parallel;disabled=!1;constructor(e={}){this.tools=e.tools??[],this.aPrioriSupported=e.supportsTools!==!1,this.parallel=e.parallelToolCalls??!1}shouldSendTools(){return this.tools.length>0&&this.aPrioriSupported&&!this.disabled}get isDisabled(){return this.disabled}requestFields(){return{tools:this.tools,tool_choice:"auto",parallel_tool_calls:this.parallel}}degradeOnUnsupported(e){return e instanceof Ue&&e.isToolsUnsupported?(this.disabled=!0,!0):!1}}});var Ln,E_=p(()=>{"use strict";Po();pb();Ln=class{client;opts;brokerSessionId;nativeTools;constructor(e){this.client=e.client,this.opts=e,this.brokerSessionId=e.sessionId,e.nativeTools&&(this.nativeTools=e.nativeTools)}attachNativeTools(e){this.nativeTools=e}async call(e){let o=Math.max(1,this.opts.transportRetries??1),n=this.opts.tierSource?.tier??this.opts.tier,r=n==="custom"?this.opts.tierSource?.model:void 0,s=n==="custom"&&r!==void 0?this.opts.tierSource?.provider:void 0,i;for(let a=0;a<2;a++){let l=this.nativeTools?.shouldSendTools()??!1,c=l?this.nativeTools.requestFields():void 0;try{for(let d=0;d<o;d++)try{let m=await this.client.call({request:{tier:n,...r!==void 0?{model:r}:{},...s!==void 0?{provider:s}:{},messages:e.messages,...this.brokerSessionId!==void 0?{session_id:this.brokerSessionId}:{},...this.opts.maxTokens!==void 0?{max_tokens:this.opts.maxTokens}:{},...this.opts.temperature!==void 0?{temperature:this.opts.temperature}:{},...this.opts.context!==void 0?{context:this.opts.context}:{},...c??{}},idempotencyKey:e.idempotencyKey,...e.signal?{signal:e.signal}:{}});return m.session_id!==void 0&&(this.brokerSessionId=m.session_id),m}catch(m){if(i=m,!(m instanceof je)||d===o-1)throw m}throw i}catch(d){if(l&&this.nativeTools?.degradeOnUnsupported(d)){i=d;continue}throw d}}throw i}}});var T_=p(()=>{"use strict"});function C_(t){return/[.*+?^${}()|[\]\\]/.test(t)?`\\${t}`:t}function O_(t){return t==="\\"||t==="]"?`\\${t}`:t}function KH(t){let e="",o=0,n=t.length;for(;o<n;){let r=t[o];if(r==="\\"){let s=t[o+1];if(s===void 0)throw new Io('escape "\\" no fim do segmento (sem char para escapar).');e+=C_(s),o+=2;continue}if(r==="*"){for(e+="[^/]*",o+=1;t[o]==="*";)o+=1;continue}if(r==="?"){e+="[^/]",o+=1;continue}if(r==="["){let s=o+1,i="",a=!1;(t[s]==="!"||t[s]==="^")&&(a=!0,s+=1),t[s]==="]"&&(i+="\\]",s+=1);let l=!1;for(;s<n;){let c=t[s];if(c==="]"){l=!0;break}if(c==="\\"){let d=t[s+1];if(d===void 0)throw new Io('escape "\\" n\xE3o terminado dentro de "[...]".');i+=O_(d),s+=2;continue}i+=O_(c),s+=1}if(!l)throw new Io(`classe de chars "[" n\xE3o fechada (falta "]") em "${t}".`);e+=a?`[^/${i}]`:`[${i}]`,o=s+1;continue}e+=C_(r),o+=1}return new RegExp(`^${e}$`)}function YH(t){let e=t.split("/"),o=[];for(let n of e)if(n==="**"){if(o.length>0&&o[o.length-1].star2)continue;o.push({star2:!0})}else o.push({star2:!1,re:KH(n)});return o}function VH(t,e){let o=0,n=0,r=-1,s=0;for(;n<e.length;){let i=t[o];if(i&&!i.star2&&i.re.test(e[n]))o+=1,n+=1;else if(i&&i.star2)r=o,s=n,o+=1;else if(r!==-1)o=r+1,s+=1,n=s;else return!1}for(;o<t.length&&t[o].star2;)o+=1;return o===t.length}function gb(t,e=0){if(e>__)throw new Io(`aninhamento de "{...}" excede o teto (${__}).`);let o=XH(t,"{",0);if(o===-1)return[t];let n=JH(t,o);if(n===-1)throw new Io(`"{" sem "}" correspondente em "${t}".`);let r=t.slice(0,o),s=t.slice(o+1,n),i=t.slice(n+1),a=QH(s),l=[];for(let c of a)for(let d of gb(`${r}${c}${i}`,e+1)){if(l.length>=R_)throw new Io(`expans\xE3o de "{...}" gera alternativas demais (> ${R_}).`);l.push(d)}return l}function XH(t,e,o){for(let n=o;n<t.length;n++){if(t[n]==="\\"){n+=1;continue}if(t[n]===e)return n}return-1}function JH(t,e){let o=0;for(let n=e;n<t.length;n++){if(t[n]==="\\"){n+=1;continue}if(t[n]==="{")o+=1;else if(t[n]==="}"&&(o-=1,o===0))return n}return-1}function QH(t){let e=[],o=0,n="";for(let r=0;r<t.length;r++){let s=t[r];if(s==="\\"){n+=s+(t[r+1]??""),r+=1;continue}if(s==="{"?o+=1:s==="}"&&(o-=1),s===","&&o===0){e.push(n),n="";continue}n+=s}return e.push(n),e}function yb(t){if(t==="")throw new Io("padr\xE3o vazio.");if(t.length>hb)throw new Io(`padr\xE3o longo demais (${t.length} > ${hb} chars).`);let e=gb(t).map(o=>YH(o));return o=>{let n=o.split("\\").join("/"),r=n===""?[""]:n.split("/");return e.some(s=>VH(s,r))}}var Io,hb,__,R_,bb=p(()=>{"use strict";Io=class extends Error{constructor(e){super(e),this.name="GlobSyntaxError"}},hb=1024,__=5,R_=1024});var vb,kb,xb,Sb=p(()=>{"use strict";vb="add_todo",kb="list_todos",xb="done_todo"});function P_(t,e){let o=t[e];return typeof o=="string"&&o.length>0?o:void 0}function L_(t){return`${t.done?"\u2713":"\u25CB"} ${t.id} ${t.text}`}var ZH,eq,tq,M_,Fm,Bm,Um,wb=p(()=>{"use strict";Sb();ZH=Object.freeze({type:"object",properties:{item:{type:"string",description:"OBRIGAT\xD3RIO. O texto do item a anotar no backlog (curto e acion\xE1vel)."}},required:["item"]}),eq=Object.freeze({type:"object",properties:{}}),tq=Object.freeze({type:"object",properties:{id:{type:"string",description:"OBRIGAT\xD3RIO. O id do item a marcar como conclu\xEDdo (do list_todos)."}},required:["id"]}),M_=500;Fm={name:vb,effect:"memory",parameters:ZH,description:'Anota um item PENDENTE no backlog/TODO para fazer DEPOIS. Use quando o usu\xE1rio pedir algo que voc\xEA far\xE1 depois (especialmente no MEIO de outra tarefa), ou mencionar uma tarefa futura que n\xE3o cabe agora. Input: { "item": string }. NUNCA recebe um path \u2014 escreve s\xF3 no backlog local (~/.aluy/todos.json). Consulte com list_todos.',async run(t,e){let o=e.todo;if(!o)return{ok:!1,observation:"backlog/TODO indispon\xEDvel neste contexto (sem porta de TODO)."};let n=P_(t,"item");if(!n)return{ok:!1,observation:'add_todo requer "item" (string n\xE3o-vazia).'};if(n.length>M_)return{ok:!1,observation:`item muito longo (>${M_} caracteres).`};try{let r=await o.add(n.trim());return{ok:!0,observation:`TODO anotado (id: ${r}). Use list_todos para ver o backlog, done_todo para marcar feito.`,display:`[TODO] ${r}: ${n.trim()}`}}catch(r){return{ok:!1,observation:`falha ao anotar TODO: ${r instanceof Error?r.message:String(r)}`}}}},Bm={name:kb,effect:"read",parameters:eq,description:"Lista o backlog/TODO persistente (itens pendentes e conclu\xEDdos). Use para ver o que est\xE1 anotado, especialmente ao terminar uma tarefa \u2014 veja se h\xE1 itens pendentes para fazer. Input: {} (sem argumentos). NUNCA recebe um path. Leitura local pura.",async run(t,e){let o=e.todo;if(!o)return{ok:!1,observation:"backlog/TODO indispon\xEDvel neste contexto (sem porta de TODO)."};try{let n=await o.list();if(n.length===0)return{ok:!0,observation:"backlog/TODO vazio \u2014 nenhum item anotado ainda.",display:"[TODO] vazio"};let r=n.filter(a=>!a.done),s=n.filter(a=>a.done);return{ok:!0,observation:[`Backlog/TODO (${n.length} itens: ${r.length} pendentes, ${s.length} feitos):`,...r.length>0?["","\u2500\u2500 Pendentes \u2500\u2500",...r.map(L_)]:["","(nenhum pendente)"],...s.length>0?["","\u2500\u2500 Feitos \u2500\u2500",...s.map(L_)]:[],"","Use done_todo { id } para marcar um item como feito."].join(`
56
- `),display:`[TODO] ${r.length} pendentes, ${s.length} feitos`}}catch(n){return{ok:!1,observation:`falha ao listar TODOs: ${n instanceof Error?n.message:String(n)}`}}}},Um={name:xb,effect:"memory",parameters:tq,description:'Marca um item do backlog/TODO como CONCLU\xCDDO. Use ao terminar uma tarefa que estava anotada. Input: { "id": string } \u2014 o id do item (do list_todos). NUNCA recebe um path.',async run(t,e){let o=e.todo;if(!o)return{ok:!1,observation:"backlog/TODO indispon\xEDvel neste contexto (sem porta de TODO)."};let n=P_(t,"id");if(!n)return{ok:!1,observation:'done_todo requer "id" (string, do list_todos).'};try{let r=await o.done(n);return{ok:!0,observation:r?`TODO ${n} marcado como conclu\xEDdo. \u2713`:`id n\xE3o encontrado no backlog: ${n}. Use list_todos para ver os ids.`,display:r?`[TODO] ${n} \u2713 conclu\xEDdo`:`[TODO] ${n} n\xE3o encontrado`}}catch(r){return{ok:!1,observation:`falha ao concluir TODO: ${r instanceof Error?r.message:String(r)}`}}}}});var N_={};ut(N_,{MAX_FAILURES_SHOWN:()=>nq,MAX_FAIL_MESSAGE_BYTES:()=>rq,MAX_LINE_BYTES:()=>oq,TestRunAccumulator:()=>Ab,detectDialect:()=>I_,renderTestSummary:()=>Sq});function I_(t){for(let e of xq)if(e.matches(t))return e;return null}function Sq(t){if(t.unknownFormat)return"resultado dos testes: formato n\xE3o reconhecido \u2014 placar indispon\xEDvel.";let e=`resultado dos testes: ${t.passed} passaram, ${t.failed} falharam`;if(t.total>0&&(e+=` (total: ${t.total})`),t.durationMs!==void 0&&(e+=` em ${(t.durationMs/1e3).toFixed(2)}s`),t.failures.length>0){e+=`
56
+ `),display:`[TODO] ${r.length} pendentes, ${s.length} feitos`}}catch(n){return{ok:!1,observation:`falha ao listar TODOs: ${n instanceof Error?n.message:String(n)}`}}}},Um={name:xb,effect:"memory",parameters:tq,description:'Marca um item do backlog/TODO como CONCLU\xCDDO. Use ao terminar uma tarefa que estava anotada. Input: { "id": string } \u2014 o id do item (do list_todos). NUNCA recebe um path.',async run(t,e){let o=e.todo;if(!o)return{ok:!1,observation:"backlog/TODO indispon\xEDvel neste contexto (sem porta de TODO)."};let n=P_(t,"id");if(!n)return{ok:!1,observation:'done_todo requer "id" (string, do list_todos).'};try{let r=await o.done(n);return{ok:!0,observation:r?`TODO ${n} marcado como conclu\xEDdo. \u2713`:`id n\xE3o encontrado no backlog: ${n}. Use list_todos para ver os ids.`,display:r?`[TODO] ${n} \u2713 conclu\xEDdo`:`[TODO] ${n} n\xE3o encontrado`}}catch(r){return{ok:!1,observation:`falha ao concluir TODO: ${r instanceof Error?r.message:String(r)}`}}}}});var N_={};dt(N_,{MAX_FAILURES_SHOWN:()=>nq,MAX_FAIL_MESSAGE_BYTES:()=>rq,MAX_LINE_BYTES:()=>oq,TestRunAccumulator:()=>Ab,detectDialect:()=>I_,renderTestSummary:()=>Sq});function I_(t){for(let e of xq)if(e.matches(t))return e;return null}function Sq(t){if(t.unknownFormat)return"resultado dos testes: formato n\xE3o reconhecido \u2014 placar indispon\xEDvel.";let e=`resultado dos testes: ${t.passed} passaram, ${t.failed} falharam`;if(t.total>0&&(e+=` (total: ${t.total})`),t.durationMs!==void 0&&(e+=` em ${(t.durationMs/1e3).toFixed(2)}s`),t.failures.length>0){e+=`
57
57
  falhas (${Math.min(t.failures.length,t.failed)}):`;for(let o of t.failures)if(e+=`
58
58
  \u2717 ${o.name}`,o.message){let n=o.message.split(`
59
59
  `)[0]??"";e+=`: ${n.slice(0,120)}`}}return e}var oq,nq,rq,sq,iq,aq,lq,cq,dq,uq,mq,fq,pq,hq,gq,yq,bq,vq,kq,xq,Ab,Eb=p(()=>{"use strict";oq=8192,nq=50,rq=2048,sq={id:"vitest",matches(t){return/^\s*RUN\s+v[\d.]+\s|^\s*vitest\s+v[\d.]+/m.test(t)},parseLine(t){let e=t.match(/^\s*✓\s+(.+?)(?:\s+\d+ms)?\s*$/);if(e)return{kind:"pass",name:e[1].trim()};let o=t.match(/^\s*[✗×x]\s+(.+?)(?:\s+\d+ms)?\s*$/);if(o)return{kind:"fail",name:o[1].trim()};let n=t.match(/^\s*Tests\s+(\d+)\s+passed\s*(?:\(\d+\))?\s*\|\s*(\d+)\s+failed/);if(n){let i=parseInt(n[1],10),a=parseInt(n[2],10);return{kind:"file-done",file:"",passed:i,failed:a}}let r=t.match(/^\s*Test\s+Files\s+(\d+)\s+passed(?:\s*\(\d+\))?\s*\|\s*(\d+)\s+failed/);if(r){let i=parseInt(r[1],10),a=parseInt(r[2],10);return{kind:"summary",passed:i,failed:a,total:i+a}}let s=t.match(/^\s*Tests\s+(\d+)\s+passed(?:\s*\(\d+\))?\s*\|\s*(\d+)\s+total/);if(s){let i=parseInt(s[1],10),a=parseInt(s[2],10);return{kind:"summary",passed:i,failed:a-i,total:a}}return null}},iq={id:"jest",matches(t){return/PASS\s|FAIL\s|jest\s+v[\d.]+|Test\s+Suites:/m.test(t)},parseLine(t){let e=t.match(/^\s*✓\s+(.+?)(?:\s+\(\d+\s*ms?\))?\s*$/);if(e)return{kind:"pass",name:e[1].trim()};let o=t.match(/^\s*[✕×✗x]\s+(.+?)(?:\s+\(\d+\s*ms?\))?\s*$/);if(o)return{kind:"fail",name:o[1].trim()};let n=t.match(/^\s*PASS\s+(\S+)/);if(n)return{kind:"file-done",file:n[1],passed:0,failed:0};let r=t.match(/^\s*FAIL\s+(\S+)/);if(r)return{kind:"file-done",file:r[1],passed:0,failed:0};if(t.match(/^\s*Test\s+Suites:\s+(\d+)\s+passed,\s+(\d+)\s+failed,\s+(\d+)\s+total/))return null;let i=t.match(/^\s*Tests:\s+(\d+)\s+passed,\s+(\d+)\s+failed,\s+(\d+)\s+total/);if(i){let l=parseInt(i[1],10),c=parseInt(i[2],10),d=parseInt(i[3],10);return{kind:"summary",passed:l,failed:c,total:d}}let a=t.match(/^\s*●\s+(.+)/);return a?{kind:"fail",name:a[1].trim()}:null}},aq={id:"pytest",matches(t){return/^={3,}\s+test\s+session\s+starts\s+={3,}/m.test(t)||/^platform\s+(linux|darwin|win32)/m.test(t)||/^rootdir:/m.test(t)||/^collected\s+\d+\s+items?/m.test(t)||/^test_.+\.py\s+\./m.test(t)},parseLine(t){let e=t.match(/^(\S+?)::(\S+?)\s+PASSED\s+\[\s*\d+%\]/);if(e)return{kind:"pass",name:`${e[1]}::${e[2]}`};let o=t.match(/^(\S+?)::(\S+?)\s+FAILED\s+\[\s*\d+%\]/);if(o)return{kind:"fail",name:`${o[1]}::${o[2]}`};let n=t.match(/^(\S+?)::(\S+?)\s+PASSED\s*$/);if(n)return{kind:"pass",name:`${n[1]}::${n[2]}`};let r=t.match(/^(\S+?)::(\S+?)\s+FAILED\s*$/);if(r)return{kind:"fail",name:`${r[1]}::${r[2]}`};let s=t.match(/^={3,}\s+([\d,]+)\s+passed(?:,\s+([\d,]+)\s+failed)?(?:,\s+([\d,]+)\s+errors?)?(?:.*?in\s+([\d.]+)s)?\s+={3,}/);if(s){let c=s[1]?parseInt(s[1].replace(/,/g,""),10):0,d=s[2]?parseInt(s[2].replace(/,/g,""),10):0,m=s[3]?parseInt(s[3].replace(/,/g,""),10):0,u=s[4]?parseFloat(s[4])*1e3:void 0,h={kind:"summary",passed:c,failed:d+m,total:c+d+m};return u!==void 0&&(h.durationMs=u),h}let i=t.match(/^([\d,]+)\s+passed\s+in\s+([\d.]+)s\s*$/);if(i){let c=parseInt(i[1].replace(/,/g,""),10),d=parseFloat(i[2])*1e3,m={kind:"summary",passed:c,failed:0,total:c};return d!==void 0&&(m.durationMs=d),m}let a=t.match(/^([\d,]+)\s+failed,\s+([\d,]+)\s+passed\s+in\s+([\d.]+)s\s*$/);if(a){let c=parseInt(a[1].replace(/,/g,""),10),d=parseInt(a[2].replace(/,/g,""),10),m=parseFloat(a[3])*1e3,u={kind:"summary",passed:d,failed:c,total:d+c};return m!==void 0&&(u.durationMs=m),u}let l=t.match(/^FAILED\s+(\S+)/);return l?{kind:"fail",name:l[1]}:null}},lq={id:"go-test",matches(t){return!!(/^ok\s+\S+\s+[\d.]+s/m.test(t)||/^ok\s+\S+\s+\(cached\)/m.test(t)||/^FAIL\s+\S+\s+[\d.]+s/m.test(t)||/^FAIL\s+\S+\s+\[build failed\]/m.test(t)||/^\?\s+\S+\s+\[no test files\]/m.test(t)||/^---\s+(PASS|FAIL):/m.test(t)||/^=== RUN\s+/m.test(t))},parseLine(t){let e=t.match(/^---\s+PASS:\s+(\S+)\s/);if(e)return{kind:"pass",name:e[1]};let o=t.match(/^---\s+FAIL:\s+(\S+)\s/);if(o)return{kind:"fail",name:o[1]};let n=t.match(/^ok\s+(\S+)\s+(?:\(cached\)\s+)?([\d.]+)s/);if(n)return{kind:"file-done",file:n[1],passed:0,failed:0};let r=t.match(/^ok\s+(\S+)\s+\(cached\)/);if(r)return{kind:"file-done",file:r[1],passed:0,failed:0};let s=t.match(/^FAIL\s+(\S+)\s+([\d.]+)s/);if(s)return{kind:"file-done",file:s[1],passed:0,failed:0};let i=t.match(/^FAIL\s+(\S+)\s+\[build failed\]/);return i?{kind:"file-done",file:i[1],passed:0,failed:0}:null}},cq={id:"mocha",matches(t){return!(!(/^\s*(?:✓|[✗×x])\s+.+$/m.test(t)||/^\s+\d+\s+passing/m.test(t)||/^\s+\d+\s+failing/m.test(t))||/^\s*RUN\s+v[\d.]+/m.test(t)||/^\s*(?:PASS|FAIL)\s+\S+/m.test(t)||/Test\s+Suites:/m.test(t)||/^\s*Test\s+Files\s+/m.test(t))},parseLine(t){let e=t.match(/^\s*✓\s+(.+?)(?:\s+\(\d+\s*ms?\))?\s*$/);if(e)return{kind:"pass",name:e[1].trim()};let o=t.match(/^\s*[✗×x]\s+(.+?)(?:\s+\(\d+\s*ms?\))?\s*$/);if(o)return{kind:"fail",name:o[1].trim()};let n=t.match(/^\s+(\d+)\s+passing\s*(?:\(([\d.]+)\s*ms?\))?/);if(n){let s=parseInt(n[1],10);return{kind:"summary",passed:s,failed:0,total:s}}let r=t.match(/^\s+(\d+)\s+failing\s*$/);if(r){let s=parseInt(r[1],10);return{kind:"summary",passed:0,failed:s,total:s}}return null}},dq={id:"node-test",matches(t){return!!(/^TAP\s+version\s+\d+/m.test(t)||/^▶\s+\S+/m.test(t)||/^\s*(?:ok|not ok)\s+\d+\s+-/m.test(t)||/^#\s+(?:pass|fail|tests)\s+\d+/m.test(t)||/^ℹ\s+(?:pass|fail|tests)\s+\d+/m.test(t))},parseLine(t){let e=t.match(/^\s*ok\s+\d+\s+-\s+(.+?)\s*$/);if(e)return{kind:"pass",name:e[1].trim()};let o=t.match(/^\s*not ok\s+\d+\s+-\s+(.+?)\s*$/);if(o)return{kind:"fail",name:o[1].trim()};let n=t.match(/^\s*✔\s+(.+?)(?:\s+\(\d+\.?\d*ms\))?\s*$/);if(n)return{kind:"pass",name:n[1].trim()};let r=t.match(/^\s*✖\s+(.+?)(?:\s+\(\d+\.?\d*ms\))?\s*$/);if(r)return{kind:"fail",name:r[1].trim()};let s=t.match(/^#\s+pass\s+(\d+)/);if(s){let m=parseInt(s[1],10);return{kind:"summary",passed:m,failed:0,total:m}}let i=t.match(/^#\s+fail\s+(\d+)/);if(i){let m=parseInt(i[1],10);return{kind:"summary",passed:0,failed:m,total:m}}let a=t.match(/^#\s+tests\s+(\d+)/);if(a)return{kind:"summary",passed:0,failed:0,total:parseInt(a[1],10)};let l=t.match(/^ℹ\s+pass\s+(\d+)/);if(l){let m=parseInt(l[1],10);return{kind:"summary",passed:m,failed:0,total:m}}let c=t.match(/^ℹ\s+fail\s+(\d+)/);if(c){let m=parseInt(c[1],10);return{kind:"summary",passed:0,failed:m,total:m}}let d=t.match(/^ℹ\s+tests\s+(\d+)/);return d?{kind:"summary",passed:0,failed:0,total:parseInt(d[1],10)}:null}},uq={id:"unittest",matches(t){return!!(/^Ran\s+\d+\s+tests?\s+in\s+[\d.]+s/m.test(t)||/^FAILED\s*\(failures=\d+/m.test(t)||/^OK\s*$/m.test(t)||/^test_\S+\s+\(.*\)\s+\.\.\.\s+/m.test(t))},parseLine(t){if(/^[.FEs]+$/.test(t)){for(let r=0;r<t.length;r++){let s=t[r];if(s==="F"||s==="E")return{kind:"fail",name:`fail #${r}`}}if(t.length>0&&t[0]===".")return{kind:"pass",name:"pass"}}let e=t.match(/^Ran\s+(\d+)\s+tests?\s+in\s+([\d.]+)s/);if(e){let r=parseInt(e[1],10),s=parseFloat(e[2])*1e3,i={kind:"summary",passed:0,failed:0,total:r};return i.durationMs=s,i}let o=t.match(/^FAILED\s*\(failures=(\d+)(?:,\s*errors=(\d+))?\)/);if(o){let r=parseInt(o[1],10),s=o[2]?parseInt(o[2],10):0;return{kind:"summary",passed:0,failed:r+s,total:0}}if(t.trim()==="OK")return{kind:"summary",passed:0,failed:0,total:0};let n=t.match(/^(?:FAIL|ERROR):\s+(.+?)\s+\(/);return n?{kind:"fail",name:n[1].trim()}:null}},mq={id:"cargo-test",matches(t){return!!(/^running\s+\d+\s+tests?/m.test(t)||/^test\s+result:\s+(?:ok|FAILED)/m.test(t)||/^test\s+\S+::\S+\s+\.{3}\s+(?:ok|FAILED)/m.test(t))},parseLine(t){let e=t.match(/^test\s+(\S+)\s+\.{3}\s+ok\s*$/);if(e)return{kind:"pass",name:e[1]};let o=t.match(/^test\s+(\S+)\s+\.{3}\s+FAILED\s*$/);if(o)return{kind:"fail",name:o[1]};let n=t.match(/^test\s+result:\s+(?:ok|FAILED)\.\s+(\d+)\s+passed;\s+(\d+)\s+failed;\s+(\d+)\s+ignored.*?(?:finished\s+in\s+([\d.]+)s)?/);if(n){let r=parseInt(n[1],10),s=parseInt(n[2],10),i=parseInt(n[3],10),a=n[4]?parseFloat(n[4])*1e3:void 0,l={kind:"summary",passed:r,failed:s,total:r+s+i};return a!==void 0&&(l.durationMs=a),l}return null}},fq={id:"rspec",matches(t){return!!(/^\s*\d+\s+examples?,\s+\d+\s+failures?/m.test(t)||/^Failures:/m.test(t)&&/^\s+\d+\)\s+/m.test(t)||/^Finished\s+in\s+[\d.]+\s+seconds?\s+\(files\s+took/m.test(t))},parseLine(t){if(/^[.F*]+$/.test(t)){for(let n=0;n<t.length;n++)if(t[n]==="F")return{kind:"fail",name:`fail #${n+1}`};if(t.length>0&&t[0]===".")return{kind:"pass",name:"pass"}}let e=t.match(/^\s*(\d+)\s+examples?,\s+(\d+)\s+failures?/);if(e){let n=parseInt(e[1],10),r=parseInt(e[2],10);return{kind:"summary",passed:n-r,failed:r,total:n}}let o=t.match(/^Finished\s+in\s+([\d.]+)\s+seconds?/);if(o){let n=parseFloat(o[1])*1e3,r={kind:"summary",passed:0,failed:0,total:0};return r.durationMs=n,r}return null}},pq={id:"minitest",matches(t){return!!(/^Run\s+options:/m.test(t)||/^#\s+Running:/m.test(t)||/^\d+\s+runs?,\s+\d+\s+assertions?/m.test(t))},parseLine(t){if(/^[.FES]+$/.test(t)){for(let n=0;n<t.length;n++){let r=t[n];if(r==="F"||r==="E")return{kind:"fail",name:`fail #${n+1}`}}if(t.length>0&&t[0]===".")return{kind:"pass",name:"pass"}}let e=t.match(/^\s*(\d+)\s+runs?,\s+(\d+)\s+assertions?,\s+(\d+)\s+failures?,\s+(\d+)\s+errors?(?:,\s+(\d+)\s+skips?)?/);if(e){let n=parseInt(e[1],10),r=parseInt(e[3],10),s=parseInt(e[4],10),i=r+s;return{kind:"summary",passed:n-i,failed:i,total:n}}let o=t.match(/^Finished\s+in\s+([\d.]+)s/);if(o){let n=parseFloat(o[1])*1e3,r={kind:"summary",passed:0,failed:0,total:0};return r.durationMs=n,r}return null}},hq={id:"junit",matches(t){return!!(/^>\s+Task\s+:test/m.test(t)||/^Tests\s+run:\s+\d+,\s+Failures:\s+\d+/m.test(t)||/^\s*\S+\s*>\s*\S+\(\)\s+(?:PASSED|FAILED)/m.test(t)||/^BUILD\s+(?:SUCCESSFUL|FAILED)/m.test(t))},parseLine(t){let e=t.match(/^\s*(\S+\s*>\s*\S+\(\))\s+PASSED/);if(e)return{kind:"pass",name:e[1].trim()};let o=t.match(/^\s*(\S+\s*>\s*\S+\(\))\s+FAILED/);if(o)return{kind:"fail",name:o[1].trim()};let n=t.match(/^Tests\s+run:\s+(\d+),\s+Failures:\s+(\d+),\s+Errors:\s+(\d+),\s+Skipped:\s+(\d+)/);if(n){let s=parseInt(n[1],10),i=parseInt(n[2],10),a=parseInt(n[3],10),l=i+a;return{kind:"summary",passed:s-l,failed:l,total:s}}let r=t.match(/^\s*(\d+)\s+tests?\s+completed,\s+(\d+)\s+failed/);if(r){let s=parseInt(r[1],10),i=parseInt(r[2],10);return{kind:"summary",passed:s-i,failed:i,total:s}}return null}},gq={id:"dotnet-test",matches(t){return!!(/Microsoft\s+\(R\)\s+Test\s+Execution/m.test(t)||/^(?:Passed|Failed)!\s*-/m.test(t)||/^A\s+total\s+of\s+\d+\s+test\s+files?/m.test(t))},parseLine(t){let e=t.match(/^Passed!\s*-\s*Failed:\s*(\d+),\s*Passed:\s*(\d+),\s*Skipped:\s*(\d+),\s*Total:\s*(\d+)/);if(e){let s=parseInt(e[1],10),i=parseInt(e[2],10),a=parseInt(e[4],10);return{kind:"summary",passed:i,failed:s,total:a}}let o=t.match(/^Failed!\s*-\s*Failed:\s*(\d+),\s*Passed:\s*(\d+),\s*Skipped:\s*(\d+),\s*Total:\s*(\d+)/);if(o){let s=parseInt(o[1],10),i=parseInt(o[2],10),a=parseInt(o[4],10);return{kind:"summary",passed:i,failed:s,total:a}}let n=t.match(/^\s+Passed\s+(.+?)\s+\[/);if(n)return{kind:"pass",name:n[1].trim()};let r=t.match(/^\s+Failed\s+(.+?)\s+\[/);return r?{kind:"fail",name:r[1].trim()}:null}},yq={id:"phpunit",matches(t){return!!(/^PHPUnit\s+[\d.]+/m.test(t)||/^\s*\d+\s*\/\s*\d+\s*\(\s*\d+%\s*\)/m.test(t)||/^OK\s*\(\d+\s+tests?/m.test(t)||/^Tests:\s+\d+,\s+Assertions:/m.test(t))},parseLine(t){let e=t.match(/^([.FESI]+)\s+\d+\s*\/\s*\d+/);if(e){let s=e[1];for(let i=0;i<s.length;i++){let a=s[i];if(a==="F"||a==="E")return{kind:"fail",name:`fail #${i+1}`}}if(s.length>0&&s[0]===".")return{kind:"pass",name:"pass"}}let o=t.match(/^OK\s*\(\s*(\d+)\s+tests?,\s*(\d+)\s+assertions?\)/);if(o){let s=parseInt(o[1],10);return{kind:"summary",passed:s,failed:0,total:s}}let n=t.match(/^Tests:\s*(\d+),\s*Assertions:\s*(?:\d+),\s*(?:Errors:\s*(\d+),\s*)?Failures:\s*(\d+)\.?/);if(n){let s=parseInt(n[1],10),i=n[2]?parseInt(n[2],10):0,l=parseInt(n[3],10)+i;return{kind:"summary",passed:s-l,failed:l,total:s}}let r=t.match(/^\s*\d+\)\s+(\S+)/);return r&&t.includes("::")?{kind:"fail",name:r[1].trim()}:null}},bq={id:"pest",matches(t){return!!(/^\s*PASS\s+Tests\\/m.test(t)||/^\s*FAIL\s+Tests\\/m.test(t)||/^PEST/m.test(t)||/^\s*Tests:\s+\d+\s+failed,\s+\d+\s+passed/m.test(t))},parseLine(t){let e=t.match(/^\s*✓\s+(.+?)\s*$/);if(e)return{kind:"pass",name:e[1].trim()};let o=t.match(/^\s*⨯\s+(.+?)\s*$/);if(o)return{kind:"fail",name:o[1].trim()};let n=t.match(/^\s*PASS\s+(Tests\\.+)/);if(n)return{kind:"file-done",file:n[1],passed:0,failed:0};let r=t.match(/^\s*FAIL\s+(Tests\\.+)/);if(r)return{kind:"file-done",file:r[1],passed:0,failed:0};let s=t.match(/^\s*Tests:\s+(\d+)\s+failed,\s+(\d+)\s+passed/);if(s){let a=parseInt(s[1],10),l=parseInt(s[2],10);return{kind:"summary",passed:l,failed:a,total:l+a}}let i=t.match(/^\s*Tests:\s+(\d+)\s+passed,\s+(\d+)\s+failed/);if(i){let a=parseInt(i[1],10),l=parseInt(i[2],10);return{kind:"summary",passed:a,failed:l,total:a+l}}return null}},vq={id:"exunit",matches(t){return!!(/^Randomized\s+with\s+seed/m.test(t)||/^\s+\d+\)\s+test\s+.+\(.+\)\s*$/m.test(t)&&/_test\.exs:\d+/m.test(t)||/^\s*\d+\s+tests?,\s+\d+\s+failures?/m.test(t))},parseLine(t){if(/^[.F]+$/.test(t)){for(let r=0;r<t.length;r++)if(t[r]==="F")return{kind:"fail",name:`fail #${r+1}`};if(t.length>0&&t[0]===".")return{kind:"pass",name:"pass"}}let e=t.match(/^\s*(\d+)\s+tests?,\s+(\d+)\s+failures?/);if(e){let r=parseInt(e[1],10),s=parseInt(e[2],10);return{kind:"summary",passed:r-s,failed:s,total:r}}let o=t.match(/^Finished\s+in\s+([\d.]+)\s+seconds?/);if(o){let r=parseFloat(o[1])*1e3,s={kind:"summary",passed:0,failed:0,total:0};return s.durationMs=r,s}let n=t.match(/^\s*\d+\)\s+(.+?)\s+\(/);return n?{kind:"fail",name:n[1].trim()}:null}},kq={id:"gtest",matches(t){return!!(/^\[=+\]\s+Running\s+\d+\s+tests?/m.test(t)||/^\[ RUN\s+\]\s+\S+/m.test(t)||/^\[ {3,}OK\s+\]\s+\S+/m.test(t)||/^\[ {1,2}FAILED\s+\]\s+\S+/m.test(t))},parseLine(t){let e=t.match(/^\[ {3,}OK\s+\]\s+(\S+?)\s*(?:\(\d+\s*ms\))?\s*$/);if(e)return{kind:"pass",name:e[1]};let o=t.match(/^\[ {1,2}FAILED\s+\]\s+(\S+?)\s*(?:\(\d+\s*ms\))?\s*$/);if(o)return{kind:"fail",name:o[1]};let n=t.match(/^\[ {1,2}PASSED\s+\]\s+(\d+)\s+tests?\./);if(n){let i=parseInt(n[1],10);return{kind:"summary",passed:i,failed:0,total:i}}let r=t.match(/^\[ {1,2}FAILED\s+\]\s+(\d+)\s+tests?\./);if(r){let i=parseInt(r[1],10);return{kind:"summary",passed:0,failed:i,total:i}}let s=t.match(/^\[=+\]\s+(\d+)\s+tests?\s+from/);return s?{kind:"summary",passed:0,failed:0,total:parseInt(s[1],10)}:null}},xq=[sq,bq,iq,aq,mq,kq,dq,lq,hq,gq,cq,uq,fq,pq,yq,vq];Ab=class{dialect=null;_passed=0;_failed=0;_total=0;_durationMs;_failures=[];_currentFile="";_filePassed=0;_fileFailed=0;_headBuffer="";_detected=!1;_detectAttempts=0;_lastFailName="";_summaryEmitted=!1;_pendingSummary={};feed(e){if(e.length>8192||(this.dialect===null&&this._headBuffer.length<4096&&(this._headBuffer+=e+`
@@ -137,7 +137,7 @@ ${t.trim()}`}}function NC(t,e,o=Lc){let{older:n,recent:r}=cf(t,o);if(n.length===
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(C2(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 C2(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(` ${O2(t.description,200)}`);let r=AO(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
139
  `)}function O2(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var TO=p(()=>{"use strict"});var _O=p(()=>{"use strict";xf();aO();lO();cO();dO();mO();gO();Hu();SO();TO()});function Kv(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 RO(t,e){let o=Kv(t),n=Kv(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 Yv(t,e){return RO(t,e)===1}var CO=p(()=>{"use strict"});var Vv=p(()=>{"use strict"});var OO=p(()=>{"use strict";Vv()});var MO=p(()=>{"use strict"});var LO=p(()=>{"use strict"});function Xv(t){return`connector-${t}-token`}function Jv(t){let e=t.trim();return/^\d{5,}:[A-Za-z0-9_-]{30,}$/.test(e)}function ga(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 PO=p(()=>{"use strict"});var N=p(()=>{"use strict";OA();QA();hE();IT();XC();rO();_O();Cv();Ym();CO();Vv();OO();MO();LO();PO()});var Af,Ef,NO,DO,$O,FO,Tf=p(()=>{"use strict";Af={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"}},Ef={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"}},NO={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"}},DO={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"}},$O={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"}},FO={fg:{},fgDim:{dimColor:!0},accent:{bold:!0},accentDim:{bold:!0},danger:{bold:!0,inverse:!0},success:{},depth:{}}});var BO,UO,jO,HO,qO,WO,GO,_f=p(()=>{"use strict";BO={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"},UO={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"},jO={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:"."},HO=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],qO=["-","\\","|","/"],WO={topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",teeLeft:"\u251C",teeRight:"\u2524"},GO={topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",horizontal:"-",vertical:"|",teeLeft:"+",teeRight:"+"}});function zO(t){return ya.includes(t.trim().toLowerCase())}function Qv(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)%Wc.length;return Wc[n].name}function KO(t,e,o){let n=t.trim().toLowerCase(),r=Wc.find(s=>s.name===n)??Wc.find(s=>s.name===Qv(n));return e==="mono"?{bold:!0}:e==="truecolor"?{color:o==="light"?r.lightHex:r.darkHex,bold:!0}:{color:r.ansi,bold:!0}}var Wc,ya,Rf=p(()=>{"use strict";Wc=[{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"}],ya=Wc.map(t=>t.name)});function Cf(t){return t!==void 0&&t!==""&&t!=="0"&&t.toLowerCase()!=="false"}function q2(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 W2(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 G2(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!(Cf(t.ALUY_ASCII)||o&&!o.includes("utf"))}function z2(t,e){return e!==void 0?e:Cf(t.ALUY_SAFE_GLYPHS)}function K2(t,e,o){return t==="mono"?FO:t==="truecolor"?o??(e==="light"?Ef:Af):e==="light"?DO:NO}function Ko(t={}){let e=t.env??process.env,o=q2(e),n=W2(e,t.theme),r=G2(e),s=r&&z2(e,t.safeGlyphs),i=t.density??(Cf(e.ALUY_DENSITY)&&e.ALUY_DENSITY==="compact"?"compact":"comfortable"),a=t.animate??!Cf(e.ALUY_NO_ANIM),l=K2(o,n,t.truecolorPalette),c=r?s?UO:BO:jO;return{colorMode:o,brightness:n,unicode:r,safeGlyphs:s,density:i,animate:a,role:h=>l[h],sessionColor:h=>KO(h,o,n),glyph:h=>c[h],aluyMark:r?"\u039B":"/\\",spinnerFrames:r&&!s?HO:qO,box:r?WO:GO}}var Of=p(()=>{"use strict";Tf();_f();Rf()});function es(t){return Do.find(e=>e.name===t)}function Sr(t){let e=t.trim().toLowerCase();if(e==="")return;let o=Do.find(r=>r.name===e);if(o)return o;let n=Do.find(r=>r.name===`aluy-${e}`);return n||Do.find(r=>r.label.toLowerCase()===e)}function ei(t){return t==="light"?"aluy-light":"aluy-dark"}function YO(t,e={}){let o=es(t)??es(tk);return Ko({...e,theme:o.brightness,truecolorPalette:o.palette})}var Do,tk,ts=p(()=>{"use strict";Of();Tf();Do=[{name:"aluy-dark",label:"Aluy Dark",brightness:"dark",summary:"escuro neutro (default) \u2014 fundo quase-preto, accent \xE2mbar",bg:"#070707",palette:Af},{name:"aluy-light",label:"Aluy Light",brightness:"light",summary:"claro creme \u2014 fundo --stone-50, accent \xE2mbar escurecido (AA)",bg:"#F4ECDC",palette:Ef},{name:"aluy-slate",label:"Aluy Slate",brightness:"dark",summary:"terra escura WARM \u2014 fundo --stone-950, accent \xE2mbar",bg:"#0E0C09",palette:$O}],tk="aluy-dark"});function ti(t){return Pt.find(e=>e.code===t)}function os(t){let e=t.trim().toLowerCase();if(e==="")return;let o=Pt.find(n=>n.code.toLowerCase()===e);if(o)return o;if(e==="pt"||e==="pt_br"||e==="br"||e==="portugu\xEAs"||e==="portugues")return ti("pt-BR");if(e==="en"||e==="en_us"||e==="english"||e==="ingl\xEAs"||e==="ingles")return ti("en")}function VO(t){let e=(t.LC_ALL??t.LC_MESSAGES??t.LANG??"").trim().toLowerCase();if(e==="")return $n;let o=e.split(".")[0].split("@")[0].replace("_","-");return o==="c"||o==="posix"?$n:o==="en"||o.startsWith("en-")?"en":$n}function ok(t,e,o){if(t!==void 0&&t.trim()!==""){let n=os(t);if(n)return n.code}return e!==void 0?e:VO(o)}var $n,Pt,ba=p(()=>{"use strict";$n="pt-BR",Pt=[{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 Y2}from"node:os";import{join as XO}from"node:path";import{randomBytes as V2}from"node:crypto";import{openSync as X2,writeSync as J2,closeSync as JO,readFileSync as Q2,mkdirSync as Z2,renameSync as eG,unlinkSync as tG,constants as nk}from"node:fs";function QO(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 sG(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 iG(t){return typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=65535}function rk(t){if(typeof t!="object"||t===null)return;let e=t,o={};return sG(e.host)&&(o.host=e.host.trim()),iG(e.port)&&(o.port=e.port),o.host!==void 0||o.port!==void 0?o:void 0}function aG(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 lG(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 cG(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 dG(t){if(typeof t!="object"||t===null)return;let e=t,o={},n=rk(e.ollama),r=rk(e.mem0),s=rk(e.headroom);return n&&(o.ollama=n),r&&(o.mem0=r),s&&(o.headroom=s),Object.keys(o).length>0?o:void 0}function uG(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===""||!rG.has(a))continue;let l=QO(n.auth),c=QO(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 Gc(t){if(typeof t!="string")return!1;let e=t.trim();return e===""||e.length>mG?!1:!/[\u0000-\u001F\u007F]/.test(e)}function ZO(t){if(typeof t!="object"||t===null)return{};let e=t,o={};if(typeof e.theme=="string"){let l=es(e.theme);l&&(o.theme=l.name)}if(Gc(e.tier)&&(o.tier=e.tier.trim()),o.tier==="custom"&&Gc(e.model)&&(o.model=e.model.trim()),typeof e.splitView=="boolean"&&(o.splitView=e.splitView),typeof e.lang=="string"){let l=ti(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),Gc(e.localProvider)&&(o.localProvider=e.localProvider.trim()),Gc(e.localModel)&&(o.localModel=e.localModel.trim()),(e.localAuth==="apikey"||e.localAuth==="oauth"||e.localAuth==="none")&&(o.localAuth=e.localAuth),Gc(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.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=uG(e.providers);n&&(o.providers=n);let r=dG(e.services);r&&(o.services=r);let s=cG(e.connectors);s&&(o.connectors=s);let i=aG(e.limits);i&&(o.limits=i);let a=lG(e.context);return a&&(o.context=a),o}function va(t){return t.connectors?.telegram?.allowlist??[]}function Mf(t,e){let o=va(t);return o.includes(e)?o:[...o,e]}function Lf(t,e){return va(t).filter(o=>o!==e)}function Kc(t,e,o){return t!==void 0&&t.trim()!==""?t.trim():e.tier!==void 0&&e.tier.trim()!==""?e.tier.trim():o}function e0(t){return t.lang}function sk(t,e){return t===!0?!0:e.splitView??!1}function ik(t,e){return t===!0?!0:e.fullscreen??!1}var oG,nG,zc,rG,mG,ot,Yo=p(()=>{"use strict";ts();ba();oG=448,nG=384,zc="config.json",rG=new Set(["openai-compat","anthropic","gemini"]);mG=128;ot=class{base;file;constructor(e={}){this.base=e.baseDir??XO(Y2(),".aluy"),this.file=XO(this.base,zc)}get configPath(){return this.file}load(){let e;try{e=Q2(this.file,"utf8")}catch{return{}}let o;try{o=JSON.parse(e)}catch{return{}}return ZO(o)}save(e){try{let o=ZO({...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){Z2(this.base,{recursive:!0,mode:oG});let o=`${this.file}.${process.pid}.${V2(6).toString("hex")}.tmp`,n=JSON.stringify(e,null,2)+`
140
- `,r;try{r=X2(o,nk.O_CREAT|nk.O_EXCL|nk.O_WRONLY,nG),J2(r,n),JO(r),r=void 0,eG(o,this.file)}catch(s){if(r!==void 0)try{JO(r)}catch{}try{tG(o)}catch{}throw s}}}});function ak(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 ka(t,e){return ak({env:t,urlKey:"ALUY_MEM0_URL",hostKey:"ALUY_MEM0_HOST",portKey:"ALUY_MEM0_PORT",cfg:e?.mem0,defHost:zo,defPort:11435})}function xa(t,e){return ak({env:t,urlKey:"ALUY_OLLAMA_URL",hostKey:"ALUY_OLLAMA_HOST",portKey:"ALUY_OLLAMA_PORT",cfg:e?.ollama,defHost:zo,defPort:11434})}function t0(t,e){return ak({env:t,urlKey:"ALUY_HEADROOM_URL",hostKey:"ALUY_HEADROOM_HOST",portKey:"ALUY_HEADROOM_PORT",cfg:e?.headroom,defHost:zo,defPort:8787})}var Pf=p(()=>{"use strict";N()});var Fn,Yc=p(()=>{"use strict";Fn="1.0.0-rc.30"});var a0={};ut(a0,{HELP_TEXT:()=>r0,parseArgs:()=>lk,suggestFlag:()=>yG,versionText:()=>s0});function nt(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 pG(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 s0(){return`aluy ${Fn} (@hiperplano/aluy-cli-core ${vl})`}function gG(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 yG(t){let e,o=3;for(let n of i0){let r=gG(t,n);r<o&&(o=r,e=n)}return e}function bG(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===""||i0.has(s)||o.push(`--${s}`)}return o}function lk(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let H=t.slice(1),he=nt(H,"token"),Je=nt(H,"org"),gt=H.includes("--device"),xt=nt(H,"provider"),Et=H.includes("--oauth");return{kind:"login",forceDeviceFlow:gt,...he!==void 0?{token:he}:{},...Je!==void 0?{org:Je}:{},...xt!==void 0?{provider:xt}:{},...Et?{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 H=t.includes("--deep")||t.includes("--test"),he=t.includes("--json");return{kind:"doctor",deep:H,json:he}}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 H=t.includes("--json"),he=t.findIndex(gt=>gt==="--backend"||gt.startsWith("--backend=")),Je="both";if(he!==-1){let xt=(t[he].includes("=")?t[he].slice(10):t[he+1]??"").trim().toLowerCase();xt==="local"?Je="local":xt==="broker"&&(Je="broker")}return{kind:"models",scope:Je,json:H,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let H=t[1];if(H===void 0||!["login","logout","allow","deny","status"].includes(H))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let Je=t.slice(2);if(H==="login"){let gt=nt(Je,"token");return{kind:"telegram",sub:"login",...gt!==void 0?{token:gt}:{}}}if(H==="allow"||H==="deny"){let gt=Je.find(Et=>!Et.startsWith("-")),xt=gt!==void 0&&/^-?\d+$/.test(gt)?Number(gt):void 0;return xt===void 0?{kind:"usage-error",message:`uso: aluy telegram ${H} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:H,chatId:xt}}return{kind:"telegram",sub:H}}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:s0()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:r0};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=nt(t,"tier"),u=nt(t,"lang"),h=nt(t,"max-tokens"),g=nt(t,"max-iterations"),y=nt(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":nt(t,"autocompact-at"),E=t.includes("--quiet")?!0:void 0,L=t.includes("--cycle")?!0:void 0,B=nt(t,"cycles"),j=nt(t,"cycle-for"),z=nt(t,"backend"),V=nt(t,"local-provider"),I=nt(t,"local-model"),J=nt(t,"local-auth"),Q=nt(t,"local-base-url"),K=nt(t,"model"),D=nt(t,"provider");if((t.includes("--provider")||t.some(H=>H.startsWith("--provider=")))&&(K===void 0||K.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((K===void 0||K.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 Oe=nt(t,"effort"),Y=t.includes("--effort")||t.some(H=>H.startsWith("--effort=")),ce;if(Oe!==void 0){if(Oe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(Oe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ce=Oe}else if(Y)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let O=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(H=>H.startsWith("-p=")||H.startsWith("--print=")||H.startsWith("--exec=")),se=O?nt(t,"print",{allowDashValue:!0})??nt(t,"exec",{allowDashValue:!0})??pG(t,"p")??void 0:void 0,de=O?nt(t,"output-format"):void 0,ye=t.includes("--new"),Z=t.includes("--continue"),te=t.indexOf("--resume"),Me=t.find(H=>H.startsWith("--resume=")),Ht=te>=0||Me!==void 0,pt;if(Me!==void 0)pt=Me.slice(9);else if(te>=0){let H=t[te+1];H!==void 0&&!H.startsWith("-")&&(pt=H)}let at=m!==void 0?t.indexOf("--tier")+1:-1,dt=u!==void 0&&!t.some(H=>H.startsWith("--lang="))?t.indexOf("--lang")+1:-1,ht=pt!==void 0&&Me===void 0?te+1:-1,W=h!==void 0&&!t.some(H=>H.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,ue=g!==void 0&&!t.some(H=>H.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,Ze=B!==void 0&&!t.some(H=>H.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Ro=j!==void 0&&!t.some(H=>H.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,oe=y!==void 0&&!t.some(H=>H.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,k=T!==void 0&&!t.includes("--no-autocompact")&&!t.some(H=>H.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,Co=z!==void 0&&!t.some(H=>H.startsWith("--backend="))?t.indexOf("--backend")+1:-1,Ie=(H,he)=>he!==void 0&&!t.some(Je=>Je.startsWith(`--${H}=`))?t.indexOf(`--${H}`)+1:-1,Ts=Ie("local-provider",V),Pi=Ie("local-model",I),qt=Ie("local-auth",J),Nr=Ie("local-base-url",Q),Rs=K!==void 0&&!t.some(H=>H.startsWith("--model="))?t.indexOf("--model")+1:-1,jo=D!==void 0&&!t.some(H=>H.startsWith("--provider="))?t.indexOf("--provider")+1:-1,dn=ce!==void 0&&!t.some(H=>H.startsWith("--effort="))?t.indexOf("--effort")+1:-1,po=de!==void 0&&!t.some(H=>H.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,Zt=se!==void 0&&!t.some(H=>H.startsWith("-p=")||H.startsWith("--print=")||H.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Ho=t.find((H,he)=>!H.startsWith("-")&&he!==at&&he!==dt&&he!==Co&&he!==Ts&&he!==Pi&&he!==qt&&he!==Nr&&he!==Rs&&he!==jo&&he!==dn&&he!==po&&he!==Zt&&he!==ht&&he!==W&&he!==ue&&he!==oe&&he!==k&&he!==Ze&&he!==Ro),Ii=Z?{kind:"continue"}:Ht?{kind:"resume",...pt!==void 0?{id:pt}:{}}:void 0,Dr=new Set([at,dt,Co,Ts,Pi,qt,Nr,Rs,jo,dn,po,Zt,ht,W,ue,oe,k,Ze,Ro].filter(H=>H>=0));for(let H of hG){let he=t.indexOf(H);he>=0&&!t[he].includes("=")&&Dr.add(he+1)}let un=bG(t,Dr);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...un.length>0?{unknownFlags:un}:{},dense:i,fresh:ye,subAgents:b,safeGlyphs:a,print:O,...l!==void 0?{split:l}:{},...c!==void 0?{fullscreen:c}:{},...d!==void 0?{budget:d}:{},...Ho!==void 0?{goal:Ho}:{},...m!==void 0?{tier:m}:{},...z!==void 0?{backend:z}:{},...V!==void 0?{localProvider:V}:{},...I!==void 0?{localModel:I}:{},...J!==void 0?{localAuth:J}:{},...Q!==void 0?{localBaseUrl:Q}:{},...K!==void 0?{model:K}:{},...D!==void 0?{provider:D}:{},...ce!==void 0?{effort:ce}:{},...se!==void 0?{printArg:se}:{},...de!==void 0?{outputFormat:de}:{},...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}:{},...E!==void 0?{quiet:E}:{},...L!==void 0?{cycle:L}:{},...B!==void 0?{cycles:B}:{},...j!==void 0?{cycleFor:j}:{}}}var r0,i0,hG,ck=p(()=>{"use strict";N();Yc();r0=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
140
+ `,r;try{r=X2(o,nk.O_CREAT|nk.O_EXCL|nk.O_WRONLY,nG),J2(r,n),JO(r),r=void 0,eG(o,this.file)}catch(s){if(r!==void 0)try{JO(r)}catch{}try{tG(o)}catch{}throw s}}}});function ak(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 ka(t,e){return ak({env:t,urlKey:"ALUY_MEM0_URL",hostKey:"ALUY_MEM0_HOST",portKey:"ALUY_MEM0_PORT",cfg:e?.mem0,defHost:zo,defPort:11435})}function xa(t,e){return ak({env:t,urlKey:"ALUY_OLLAMA_URL",hostKey:"ALUY_OLLAMA_HOST",portKey:"ALUY_OLLAMA_PORT",cfg:e?.ollama,defHost:zo,defPort:11434})}function t0(t,e){return ak({env:t,urlKey:"ALUY_HEADROOM_URL",hostKey:"ALUY_HEADROOM_HOST",portKey:"ALUY_HEADROOM_PORT",cfg:e?.headroom,defHost:zo,defPort:8787})}var Pf=p(()=>{"use strict";N()});var Fn,Yc=p(()=>{"use strict";Fn="1.0.0-rc.31"});var a0={};dt(a0,{HELP_TEXT:()=>r0,parseArgs:()=>lk,suggestFlag:()=>yG,versionText:()=>s0});function nt(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 pG(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 s0(){return`aluy ${Fn} (@hiperplano/aluy-cli-core ${vl})`}function gG(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 yG(t){let e,o=3;for(let n of i0){let r=gG(t,n);r<o&&(o=r,e=n)}return e}function bG(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===""||i0.has(s)||o.push(`--${s}`)}return o}function lk(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let H=t.slice(1),he=nt(H,"token"),Je=nt(H,"org"),gt=H.includes("--device"),xt=nt(H,"provider"),Et=H.includes("--oauth");return{kind:"login",forceDeviceFlow:gt,...he!==void 0?{token:he}:{},...Je!==void 0?{org:Je}:{},...xt!==void 0?{provider:xt}:{},...Et?{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 H=t.includes("--deep")||t.includes("--test"),he=t.includes("--json");return{kind:"doctor",deep:H,json:he}}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 H=t.includes("--json"),he=t.findIndex(gt=>gt==="--backend"||gt.startsWith("--backend=")),Je="both";if(he!==-1){let xt=(t[he].includes("=")?t[he].slice(10):t[he+1]??"").trim().toLowerCase();xt==="local"?Je="local":xt==="broker"&&(Je="broker")}return{kind:"models",scope:Je,json:H,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let H=t[1];if(H===void 0||!["login","logout","allow","deny","status"].includes(H))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let Je=t.slice(2);if(H==="login"){let gt=nt(Je,"token");return{kind:"telegram",sub:"login",...gt!==void 0?{token:gt}:{}}}if(H==="allow"||H==="deny"){let gt=Je.find(Et=>!Et.startsWith("-")),xt=gt!==void 0&&/^-?\d+$/.test(gt)?Number(gt):void 0;return xt===void 0?{kind:"usage-error",message:`uso: aluy telegram ${H} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:H,chatId:xt}}return{kind:"telegram",sub:H}}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:s0()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:r0};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=nt(t,"tier"),u=nt(t,"lang"),h=nt(t,"max-tokens"),g=nt(t,"max-iterations"),y=nt(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":nt(t,"autocompact-at"),E=t.includes("--quiet")?!0:void 0,L=t.includes("--cycle")?!0:void 0,B=nt(t,"cycles"),j=nt(t,"cycle-for"),z=nt(t,"backend"),V=nt(t,"local-provider"),I=nt(t,"local-model"),J=nt(t,"local-auth"),Q=nt(t,"local-base-url"),K=nt(t,"model"),D=nt(t,"provider");if((t.includes("--provider")||t.some(H=>H.startsWith("--provider=")))&&(K===void 0||K.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((K===void 0||K.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 Oe=nt(t,"effort"),Y=t.includes("--effort")||t.some(H=>H.startsWith("--effort=")),ce;if(Oe!==void 0){if(Oe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(Oe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ce=Oe}else if(Y)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let O=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(H=>H.startsWith("-p=")||H.startsWith("--print=")||H.startsWith("--exec=")),se=O?nt(t,"print",{allowDashValue:!0})??nt(t,"exec",{allowDashValue:!0})??pG(t,"p")??void 0:void 0,de=O?nt(t,"output-format"):void 0,ye=t.includes("--new"),Z=t.includes("--continue"),te=t.indexOf("--resume"),Me=t.find(H=>H.startsWith("--resume=")),Ht=te>=0||Me!==void 0,pt;if(Me!==void 0)pt=Me.slice(9);else if(te>=0){let H=t[te+1];H!==void 0&&!H.startsWith("-")&&(pt=H)}let it=m!==void 0?t.indexOf("--tier")+1:-1,ct=u!==void 0&&!t.some(H=>H.startsWith("--lang="))?t.indexOf("--lang")+1:-1,ht=pt!==void 0&&Me===void 0?te+1:-1,W=h!==void 0&&!t.some(H=>H.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,ue=g!==void 0&&!t.some(H=>H.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,Ze=B!==void 0&&!t.some(H=>H.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Ro=j!==void 0&&!t.some(H=>H.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,oe=y!==void 0&&!t.some(H=>H.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,k=T!==void 0&&!t.includes("--no-autocompact")&&!t.some(H=>H.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,Co=z!==void 0&&!t.some(H=>H.startsWith("--backend="))?t.indexOf("--backend")+1:-1,Ie=(H,he)=>he!==void 0&&!t.some(Je=>Je.startsWith(`--${H}=`))?t.indexOf(`--${H}`)+1:-1,Ts=Ie("local-provider",V),Pi=Ie("local-model",I),qt=Ie("local-auth",J),Nr=Ie("local-base-url",Q),Rs=K!==void 0&&!t.some(H=>H.startsWith("--model="))?t.indexOf("--model")+1:-1,jo=D!==void 0&&!t.some(H=>H.startsWith("--provider="))?t.indexOf("--provider")+1:-1,dn=ce!==void 0&&!t.some(H=>H.startsWith("--effort="))?t.indexOf("--effort")+1:-1,po=de!==void 0&&!t.some(H=>H.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,Zt=se!==void 0&&!t.some(H=>H.startsWith("-p=")||H.startsWith("--print=")||H.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Ho=t.find((H,he)=>!H.startsWith("-")&&he!==it&&he!==ct&&he!==Co&&he!==Ts&&he!==Pi&&he!==qt&&he!==Nr&&he!==Rs&&he!==jo&&he!==dn&&he!==po&&he!==Zt&&he!==ht&&he!==W&&he!==ue&&he!==oe&&he!==k&&he!==Ze&&he!==Ro),Ii=Z?{kind:"continue"}:Ht?{kind:"resume",...pt!==void 0?{id:pt}:{}}:void 0,Dr=new Set([it,ct,Co,Ts,Pi,qt,Nr,Rs,jo,dn,po,Zt,ht,W,ue,oe,k,Ze,Ro].filter(H=>H>=0));for(let H of hG){let he=t.indexOf(H);he>=0&&!t[he].includes("=")&&Dr.add(he+1)}let un=bG(t,Dr);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...un.length>0?{unknownFlags:un}:{},dense:i,fresh:ye,subAgents:b,safeGlyphs:a,print:O,...l!==void 0?{split:l}:{},...c!==void 0?{fullscreen:c}:{},...d!==void 0?{budget:d}:{},...Ho!==void 0?{goal:Ho}:{},...m!==void 0?{tier:m}:{},...z!==void 0?{backend:z}:{},...V!==void 0?{localProvider:V}:{},...I!==void 0?{localModel:I}:{},...J!==void 0?{localAuth:J}:{},...Q!==void 0?{localBaseUrl:Q}:{},...K!==void 0?{model:K}:{},...D!==void 0?{provider:D}:{},...ce!==void 0?{effort:ce}:{},...se!==void 0?{printArg:se}:{},...de!==void 0?{outputFormat:de}:{},...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}:{},...E!==void 0?{quiet:E}:{},...L!==void 0?{cycle:L}:{},...B!==void 0?{cycles:B}:{},...j!==void 0?{cycleFor:j}:{}}}var r0,i0,hG,ck=p(()=>{"use strict";N();Yc();r0=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
141
141
 
142
142
  Uso:
143
143
  aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
@@ -425,11 +425,11 @@ Notas:
425
425
  `)},prompt:async(t,e)=>{let{createInterface:o}=await import("node:readline"),n=o({input:wG,output:dk,terminal:!0});try{if(e?.secret){let s=n,i=s.output?.write?.bind(s.output);s.output&&i&&(s.output.write=a=>{(a.includes(t)||a===`
426
426
  `||a===`\r
427
427
  `)&&i(a)})}let r=await new Promise(s=>{n.question(t,i=>s(i))});return e?.secret&&dk.write(`
428
- `),r.trim()}finally{n.close()}}}}var wr=p(()=>{"use strict"});import{Entry as AG}from"@napi-rs/keyring";function Nf(t){return`${t}:apikey`}function Df(t){return`${t}:oauth`}function u0(t,e,o){return t!==void 0?t(e,o):new AG(e,o)}function EG(t,e){try{let n=u0(t,oi,e).getPassword();return n!==""?n:void 0}catch{return}}function m0(t){let e=t.provider,o=t.auth??"apikey",n=t.env??process.env;return async()=>{if(o==="none")return{kind:"none",secret:""};if(o==="oauth"){let c=t.oauthAccessToken!==void 0?await t.oauthAccessToken():void 0;if(c===void 0||c==="")throw new If(e,"oauth");return{kind:"oauth",secret:c}}let r=EG(t.entryFactory,Nf(e)),s=d0[e],i=`ALUY_${e.toUpperCase().replace(/[^A-Z0-9]+/g,"_")}_API_KEY`,a=(s!==void 0?n[s]:void 0)??n[i]??n.ALUY_LOCAL_API_KEY,l=r??(a!==void 0&&a!==""?a:void 0);if(l===void 0)throw new If(e,"apikey");return{kind:"apikey",secret:l}}}function wa(t,e,o){u0(o,oi,Nf(t)).setPassword(e)}var oi,d0,If,Aa=p(()=>{"use strict";oi="aluy-cli-local",d0={anthropic:"ANTHROPIC_API_KEY",openrouter:"OPENROUTER_API_KEY",openai:"OPENAI_API_KEY"};If=class extends Error{constructor(e,o){let n=o==="apikey"?`configure a chave: \`${d0[e]}=...\` (env) ou \`aluy login --provider ${e}\` (keychain)`:`fa\xE7a login por assinatura: \`aluy login --provider ${e} --oauth\``;super(`backend local: sem credencial ${o} p/ "${e}". ${n}`),this.name="MissingLocalCredentialError"}}});import{homedir as TG}from"node:os";import{join as f0}from"node:path";import{readFileSync as _G,renameSync as RG}from"node:fs";function p0(t){let e=new ot(t?{baseDir:t}:{}),o=e.load().providers;if(o&&o.length>0)return o;let n=OG(t),r;try{r=JSON.parse(_G(n,"utf8"))}catch{return o??[]}let s=Array.isArray(r)?r:typeof r=="object"&&r!==null&&Array.isArray(r.providers)?r.providers:[];if(s.length===0)return o??[];e.save({providers:s});try{RG(n,n+".migrated")}catch{}return e.load().providers??[]}function OG(t){return f0(t??f0(TG(),".aluy"),CG)}function ns(t={}){let e=p0(t.baseDir);return e.length===0?zr():cy(e)}function h0(t,e){let o=new ot(e?{baseDir:e}:{}),n=p0(e),r={id:t.id,label:t.label??t.id,wireFormat:t.wireFormat,baseUrl:t.baseUrl,auth:t.auth??["apikey"],defaultModel:t.defaultModel,models:t.models??[t.defaultModel]},s=n.filter(i=>i.id!==t.id);s.push(r),o.save({providers:s})}var CG,Vc=p(()=>{"use strict";N();Yo();CG="providers.json"});function uk(t,e=process.env){let o=b0[t];if(o===void 0)throw new Error(`backend local: provider "${t}" n\xE3o tem via OAuth (use --provider com API key).`);let n=(e[y0[t]]??o.clientId).trim();if(n==="")throw new Error(`backend local: OAuth de "${t}" exige um client_id \u2014 defina ${y0[t]}.`);let r=(e.ALUY_OAUTH_REDIRECT_URI??o.redirectUri).trim();return{...o,clientId:n,redirectUri:r}}var g0,b0,y0,v0,mk=p(()=>{"use strict";g0="http://127.0.0.1:49876/callback",b0={anthropic:{authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://console.anthropic.com/v1/oauth/token",clientId:"",redirectUri:g0,scopes:["org:create_api_key","user:profile","user:inference"]},openai:{authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",clientId:"",redirectUri:g0,scopes:["openid","profile","offline_access"]}},y0={anthropic:"ALUY_OAUTH_ANTHROPIC_CLIENT_ID",openai:"ALUY_OAUTH_OPENAI_CLIENT_ID",openrouter:"ALUY_OAUTH_OPENROUTER_CLIENT_ID"};v0=new Proxy(b0,{get(t,e){let o=e;if(t[o]!==void 0)try{return uk(o)}catch{return t[o]}}})});import{Entry as MG}from"@napi-rs/keyring";function fk(t,e){return t!==void 0?t(oi,e):new MG(oi,e)}function k0(t,e={}){let o=new Xc({provider:t,...e});return()=>o.getAccessToken()}var Xc,pk=p(()=>{"use strict";N();Aa();mk();Xc=class{provider;config;entryFactory;doFetch;now;inFlight;constructor(e){this.provider=e.provider;let o=e.config??v0[e.provider];if(o===void 0)throw new Error(`backend local: provider "${e.provider}" n\xE3o tem config OAuth`);this.config=o,this.entryFactory=e.entryFactory,this.doFetch=e.fetch??globalThis.fetch,this.now=e.now??Date.now}read(){try{let o=fk(this.entryFactory,Df(this.provider)).getPassword();if(o==="")return;let n=JSON.parse(o);return typeof n.accessToken!="string"||n.accessToken===""?void 0:n}catch{return}}write(e){fk(this.entryFactory,Df(this.provider)).setPassword(JSON.stringify(e))}clear(){try{fk(this.entryFactory,Df(this.provider)).deletePassword()}catch{}}async getAccessToken(){let e=this.read();return e===void 0?void 0:fE(e,this.now)?e.refreshToken===void 0?void 0:(await this.refreshSingleFlight(e.refreshToken)).accessToken:e.accessToken}async refreshSingleFlight(e){return this.inFlight!==void 0?this.inFlight:(this.inFlight=(async()=>{try{let o=await uE({config:this.config,refreshToken:e,fetch:this.doFetch,now:this.now});return this.write(o),o}finally{this.inFlight=void 0}})(),this.inFlight)}}});var S0={};ut(S0,{rejectNonGetCallback:()=>x0,runLocalLogin:()=>FG});import{createServer as LG}from"node:http";import{createHash as PG,randomBytes as IG}from"node:crypto";function $G(t,e){let o=e.trim().toLowerCase(),n=ns();if(n.entries.some(s=>s.id===o))return o;let r=n.entries.map(s=>s.id).join(", ");t.err(`login: provider desconhecido "${e}". Conhecidos: ${r}.
428
+ `),r.trim()}finally{n.close()}}}}var wr=p(()=>{"use strict"});import{Entry as AG}from"@napi-rs/keyring";function Nf(t){return`${t}:apikey`}function Df(t){return`${t}:oauth`}function u0(t,e,o){return t!==void 0?t(e,o):new AG(e,o)}function EG(t,e){try{let n=u0(t,oi,e).getPassword();return n!==""?n:void 0}catch{return}}function m0(t){let e=t.provider,o=t.auth??"apikey",n=t.env??process.env;return async()=>{if(o==="none")return{kind:"none",secret:""};if(o==="oauth"){let c=t.oauthAccessToken!==void 0?await t.oauthAccessToken():void 0;if(c===void 0||c==="")throw new If(e,"oauth");return{kind:"oauth",secret:c}}let r=EG(t.entryFactory,Nf(e)),s=d0[e],i=`ALUY_${e.toUpperCase().replace(/[^A-Z0-9]+/g,"_")}_API_KEY`,a=(s!==void 0?n[s]:void 0)??n[i]??n.ALUY_LOCAL_API_KEY,l=r??(a!==void 0&&a!==""?a:void 0);if(l===void 0)throw new If(e,"apikey");return{kind:"apikey",secret:l}}}function wa(t,e,o){u0(o,oi,Nf(t)).setPassword(e)}var oi,d0,If,Aa=p(()=>{"use strict";oi="aluy-cli-local",d0={anthropic:"ANTHROPIC_API_KEY",openrouter:"OPENROUTER_API_KEY",openai:"OPENAI_API_KEY"};If=class extends Error{constructor(e,o){let n=o==="apikey"?`configure a chave: \`${d0[e]}=...\` (env) ou \`aluy login --provider ${e}\` (keychain)`:`fa\xE7a login por assinatura: \`aluy login --provider ${e} --oauth\``;super(`backend local: sem credencial ${o} p/ "${e}". ${n}`),this.name="MissingLocalCredentialError"}}});import{homedir as TG}from"node:os";import{join as f0}from"node:path";import{readFileSync as _G,renameSync as RG}from"node:fs";function p0(t){let e=new ot(t?{baseDir:t}:{}),o=e.load().providers;if(o&&o.length>0)return o;let n=OG(t),r;try{r=JSON.parse(_G(n,"utf8"))}catch{return o??[]}let s=Array.isArray(r)?r:typeof r=="object"&&r!==null&&Array.isArray(r.providers)?r.providers:[];if(s.length===0)return o??[];e.save({providers:s});try{RG(n,n+".migrated")}catch{}return e.load().providers??[]}function OG(t){return f0(t??f0(TG(),".aluy"),CG)}function ns(t={}){let e=p0(t.baseDir);return e.length===0?zr():cy(e)}function h0(t,e){let o=new ot(e?{baseDir:e}:{}),n=p0(e),r={id:t.id,label:t.label??t.id,wireFormat:t.wireFormat,baseUrl:t.baseUrl,auth:t.auth??["apikey"],defaultModel:t.defaultModel,models:t.models??[t.defaultModel]},s=n.filter(i=>i.id!==t.id);s.push(r),o.save({providers:s})}var CG,Vc=p(()=>{"use strict";N();Yo();CG="providers.json"});function uk(t,e=process.env){let o=b0[t];if(o===void 0)throw new Error(`backend local: provider "${t}" n\xE3o tem via OAuth (use --provider com API key).`);let n=(e[y0[t]]??o.clientId).trim();if(n==="")throw new Error(`backend local: OAuth de "${t}" exige um client_id \u2014 defina ${y0[t]}.`);let r=(e.ALUY_OAUTH_REDIRECT_URI??o.redirectUri).trim();return{...o,clientId:n,redirectUri:r}}var g0,b0,y0,v0,mk=p(()=>{"use strict";g0="http://127.0.0.1:49876/callback",b0={anthropic:{authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://console.anthropic.com/v1/oauth/token",clientId:"",redirectUri:g0,scopes:["org:create_api_key","user:profile","user:inference"]},openai:{authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",clientId:"",redirectUri:g0,scopes:["openid","profile","offline_access"]}},y0={anthropic:"ALUY_OAUTH_ANTHROPIC_CLIENT_ID",openai:"ALUY_OAUTH_OPENAI_CLIENT_ID",openrouter:"ALUY_OAUTH_OPENROUTER_CLIENT_ID"};v0=new Proxy(b0,{get(t,e){let o=e;if(t[o]!==void 0)try{return uk(o)}catch{return t[o]}}})});import{Entry as MG}from"@napi-rs/keyring";function fk(t,e){return t!==void 0?t(oi,e):new MG(oi,e)}function k0(t,e={}){let o=new Xc({provider:t,...e});return()=>o.getAccessToken()}var Xc,pk=p(()=>{"use strict";N();Aa();mk();Xc=class{provider;config;entryFactory;doFetch;now;inFlight;constructor(e){this.provider=e.provider;let o=e.config??v0[e.provider];if(o===void 0)throw new Error(`backend local: provider "${e.provider}" n\xE3o tem config OAuth`);this.config=o,this.entryFactory=e.entryFactory,this.doFetch=e.fetch??globalThis.fetch,this.now=e.now??Date.now}read(){try{let o=fk(this.entryFactory,Df(this.provider)).getPassword();if(o==="")return;let n=JSON.parse(o);return typeof n.accessToken!="string"||n.accessToken===""?void 0:n}catch{return}}write(e){fk(this.entryFactory,Df(this.provider)).setPassword(JSON.stringify(e))}clear(){try{fk(this.entryFactory,Df(this.provider)).deletePassword()}catch{}}async getAccessToken(){let e=this.read();return e===void 0?void 0:fE(e,this.now)?e.refreshToken===void 0?void 0:(await this.refreshSingleFlight(e.refreshToken)).accessToken:e.accessToken}async refreshSingleFlight(e){return this.inFlight!==void 0?this.inFlight:(this.inFlight=(async()=>{try{let o=await uE({config:this.config,refreshToken:e,fetch:this.doFetch,now:this.now});return this.write(o),o}finally{this.inFlight=void 0}})(),this.inFlight)}}});var S0={};dt(S0,{rejectNonGetCallback:()=>x0,runLocalLogin:()=>FG});import{createServer as LG}from"node:http";import{createHash as PG,randomBytes as IG}from"node:crypto";function $G(t,e){let o=e.trim().toLowerCase(),n=ns();if(n.entries.some(s=>s.id===o))return o;let r=n.entries.map(s=>s.id).join(", ");t.err(`login: provider desconhecido "${e}". Conhecidos: ${r}.
429
429
  Custom (OpenAI-compat\xEDvel)? Registre antes: \`aluy onboard\` (ou edite ~/.aluy/providers.json).`)}async function FG(t,e={}){let o=e.io??zt(),n=$G(o,t.provider);return n===void 0?2:t.oauth===!0?await UG(n,o,e):await BG(n,t.token,o,e)}async function BG(t,e,o,n){let r=e?.trim();if((r===void 0||r==="")&&(r=(await o.prompt(`Cole a API key de ${t}: `,{secret:!0})).trim()),r==="")return o.err("login: nenhuma chave informada."),1;try{wa(t,r,n.entryFactory)}catch(s){return o.err(`login: falha ao gravar no keychain do SO: ${Jc(s)}`),o.err(" (Por seguran\xE7a, a credencial nunca \xE9 gravada em texto em claro. Instale/ative o Secret Service no Linux.)"),1}o.out(`\u2713 API key de ${t} guardada no keychain do SO.`);try{new ot().save({backend:"local",localProvider:t}),o.out(` backend local + provider "${t}" configurados. Rode: aluy`)}catch{o.out(` Use: aluy --backend local --local-provider ${t} (ou ALUY_BACKEND=local)`)}return 0}async function UG(t,e,o){let n=o.env??process.env;e.err(NG);let r;try{r=uk(t,n)}catch(u){return e.err(`login: ${Jc(u)}`),2}let s=o.crypto??DG,i=lE(s),a=WG(s.randomBytes(16)),l=cE(r,i,a),c;try{c=await jG({authorizeUrl:l,state:a,io:e,deps:o})}catch(u){return e.err(`login: ${Jc(u)}`),1}let d=o.fetch??globalThis.fetch,m;try{m=await dE({config:r,code:c,codeVerifier:i.codeVerifier,fetch:d,...o.now?{now:o.now}:{}})}catch(u){return e.err(`login: troca de token falhou: ${Jc(u)}`),1}try{new Xc({provider:t,config:r,...o.entryFactory?{entryFactory:o.entryFactory}:{},...o.fetch?{fetch:o.fetch}:{},...o.now?{now:o.now}:{}}).write(m)}catch(u){return e.err(`login: falha ao gravar tokens no keychain: ${Jc(u)}`),1}return e.out(`\u2713 login OAuth de ${t} conclu\xEDdo (token no keychain; refresh autom\xE1tico).`),e.out(` Use: aluy --backend local --local-provider ${t} --local-auth oauth`),0}async function jG(t){let{authorizeUrl:e,state:o,io:n,deps:r}=t;try{return await HG(e,o,n,r)}catch{n.out("N\xE3o foi poss\xEDvel abrir o servidor loopback \u2014 modo colar-c\xF3digo."),n.out(`Abra esta URL no navegador e autorize:
430
430
  ${e}`);let s=await n.prompt("Cole o c\xF3digo de autoriza\xE7\xE3o: ");if(s.trim()==="")throw new Error("nenhum c\xF3digo colado");return s.trim()}}function x0(t,e){return(t??"GET").toUpperCase()==="GET"?!1:(e.statusCode=405,e.setHeader("allow","GET"),e.end("method not allowed"),!0)}function HG(t,e,o,n){return new Promise((r,s)=>{let i=LG((l,c)=>{if(x0(l.method,c))return;let d=new URL(l.url??"/",`http://127.0.0.1:${49876}`);if(d.pathname!=="/callback"){c.statusCode=404,c.end("not found");return}let m=d.searchParams.get("code"),u=d.searchParams.get("state");if(c.setHeader("content-type","text/html; charset=utf-8"),u!==e||m===null||m===""){c.statusCode=400,c.end("<h3>Falha na autoriza\xE7\xE3o (state inv\xE1lido ou sem c\xF3digo). Volte ao terminal.</h3>"),i.close(),s(new Error("redirect sem c\xF3digo v\xE1lido (state mismatch)"));return}c.end("<h3>Autorizado. Pode fechar esta aba e voltar ao terminal.</h3>"),i.close(),r(m)});i.on("error",l=>s(l)),i.listen(49876,"127.0.0.1",()=>{o.out(`Aguardando autoriza\xE7\xE3o no navegador (loopback :${49876})\u2026`),(n.openBrowser??qG(o))(t).catch(()=>{o.out(`Abra manualmente:
431
431
  ${t}`)})}),setTimeout(()=>{i.close(),s(new Error("tempo esgotado aguardando a autoriza\xE7\xE3o (5 min)"))},300*1e3).unref?.()})}function qG(t){return async e=>{let{spawn:o}=await import("node:child_process"),n=process.platform,r=n==="darwin"?"open":n==="win32"?"cmd":"xdg-open",s=n==="win32"?["/c","start","",e]:[e];try{o(r,s,{stdio:"ignore",detached:!0}).unref()}catch{t.out(`Abra manualmente:
432
- ${e}`)}}}function WG(t){return Buffer.from(t).toString("base64url")}function Jc(t){return t instanceof Error?t.message:String(t)}var NG,DG,w0=p(()=>{"use strict";N();wr();Aa();Vc();Yo();pk();mk();NG="\u26A0 AVISO: usar token de ASSINATURA (Claude Pro/Max, ChatGPT) em cliente n\xE3o-oficial \xE9\n zona cinzenta dos Termos do provider. \xC9 uma op\xE7\xE3o consciente sua. A via API key\n (`aluy login --provider <p>` sem --oauth) \xE9 paga-por-uso e n\xE3o tem essa ressalva.",DG={randomBytes:t=>new Uint8Array(IG(t)),sha256:t=>new Uint8Array(PG("sha256").update(t).digest())}});function ko(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??GG).replace(/\/+$/,""),clientId:gk}}var gk,GG,rs=p(()=>{"use strict";gk="aluy-cli",GG="https://api.aluy.app/api/v1"});function Vo(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??$f).replace(/\/+$/,"")}}var $f,ni=p(()=>{"use strict";$f="https://broker.dev.aluy.example"});import{Entry as zG}from"@napi-rs/keyring";function A0(t){let e=String(t?.message??t).toLowerCase();return e.includes("no matching entry")||e.includes("not found")||e.includes("no such")||e.includes("no entry")}var It,Kt,Bn=p(()=>{"use strict";N();It=class extends Error{constructor(e){super("keychain do SO indispon\xEDvel. A credencial n\xE3o foi gravada \u2014 por seguran\xE7a, ela nunca \xE9 guardada em texto em claro. No Linux, instale/ative o Secret Service (gnome-keyring/libsecret) e tente de novo.",e!==void 0?{cause:e}:void 0),this.name="NoKeychainError"}};Kt=class{service;account;makeEntry;constructor(e={}){this.service=e.service??nm,this.account=e.account??tE,this.makeEntry=e.entryFactory??((o,n)=>new zG(o,n))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new It(e)}}async get(){let e=this.entry(),o;try{o=e.getPassword()}catch(n){return A0(n),null}return nE(o)}async set(e){let o=this.entry();try{o.setPassword(oE(e))}catch(n){throw new It(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){return A0(o),void 0}}}});var R0={};ut(R0,{runLogin:()=>YG,validatePatOnBroker:()=>_0});async function _0(t,e,o){let{brokerBaseUrl:n}=Vo(e);try{let r=await o(`${n}/v1/quota`,{method:"GET",headers:{authorization:`Bearer ${t}`}});return r.status===401?"rejected":r.status===403||r.status>=200&&r.status<300?"valid":"unverified"}catch{return"unverified"}}function E0(t,e){t.out(""),t.out("\u2713 login conclu\xEDdo \u2014 credencial guardada no keychain do SO."),t.out(` org: ${e.organization_id}`),t.out(` escopos: ${e.scopes.join(", ")}`),t.out(` tipo: ${e.kind==="pat"?"PAT":"sess\xE3o device-flow"}`)}async function YG(t={},e={}){let o=e.env??process.env,n=e.io??zt(),r=e.store??new Kt,s=ko(o),i=new Wt({...s,baseUrl:s.identityBaseUrl,store:r,...e.fetch?{fetch:e.fetch}:{}},e.sleep?{sleep:e.sleep}:{}),a=o.ALUY_TOKEN,l=t.token??(t.forceDeviceFlow?void 0:a);if(l){let d=t.org??o.ALUY_ORG;if(!d)return n.err("login --token requer a org-alvo: use --org <id> (ou ALUY_ORG)."),1;if(!Tl(l))return n.err("PAT inv\xE1lido: esperado o formato `pat_<id>_<segredo>`."),1;let m=e.fetch??globalThis.fetch,u=await _0(l,o,m);if(u==="rejected")return n.err("PAT recusado pelo broker (inv\xE1lido, expirado ou sem permiss\xE3o para esta org). Confira o token / a org \u2014 N\xC3O foi salvo."),1;try{let h=await i.loginWithPat(l,d);return E0(n,h),u==="unverified"&&n.err("aviso: n\xE3o consegui validar o PAT agora (broker fora?) \u2014 salvei mesmo assim; se o token estiver errado, vai falhar no uso."),0}catch(h){return T0(n,h)}}let c=t.org??o.ALUY_ORG;if(!c)return n.err("login device-flow requer a org-alvo: use --org <id> (ou ALUY_ORG)."),1;try{let d=await i.loginWithDeviceFlow({organizationId:c,onPrompt:m=>{n.out(""),n.out("Para autenticar, abra esta URL no navegador e confirme o c\xF3digo:"),n.out(` URL: ${m.verificationUri}`),n.out(` c\xF3digo: ${m.userCode}`),n.out(` (link direto: ${m.verificationUriComplete})`),n.out(` ${KG}`),n.out("Aguardando aprova\xE7\xE3o\u2026")}});return E0(n,d),0}catch(d){return T0(n,d)}}function T0(t,e){return e instanceof It?(t.err(`erro: ${e.message}`),1):e instanceof Error?(t.err(`erro: ${e.message}`),1):(t.err("erro inesperado no login."),1)}var KG,C0=p(()=>{"use strict";N();rs();ni();Bn();wr();KG="escopo m\xEDnimo: assistant:session + llm:call (quota:read \xE9 opt-in). Sem admin/`*`."});var O0={};ut(O0,{runLogout:()=>VG});async function VG(t={}){let e=t.env??process.env,o=t.io??zt(),n=t.store??new Kt,r=ko(e),s=new Wt({...r,baseUrl:r.identityBaseUrl,store:n,...t.fetch?{fetch:t.fetch}:{}});try{let i=await s.whoami();if(!i)return o.out("nenhuma credencial ativa \u2014 nada a fazer."),0;let{revoked:a}=await s.logout();return a?o.out("\u2713 logout: credencial revogada no identity e apagada do keychain."):i.kind==="pat"?o.out("\u2713 logout: PAT apagado do keychain. (Revogue o PAT no painel web se quiser invalid\xE1-lo.)"):o.out("\u2713 logout: credencial apagada do keychain. (Revoga\xE7\xE3o no servidor n\xE3o confirmada \u2014 poss\xEDvel offline.)"),0}catch(i){return i instanceof It?(o.err(`erro: ${i.message}`),1):(o.err(`erro no logout: ${i instanceof Error?i.message:String(i)}`),1)}}var M0=p(()=>{"use strict";N();rs();Bn();wr()});import{Entry as XG}from"@napi-rs/keyring";function L0(t){let e=String(t?.message??t).toLowerCase();return e.includes("no matching entry")||e.includes("not found")||e.includes("no such")||e.includes("no entry")}var Ea,yk=p(()=>{"use strict";N();Bn();Ea=class{service;account;makeEntry;constructor(e,o={}){this.service=o.service??nm,this.account=Xv(e),this.makeEntry=o.entryFactory??((n,r)=>new XG(n,r))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new It(e)}}async get(){let e=this.entry();try{let o=e.getPassword();return o!==""?o:null}catch(o){return L0(o),null}}async set(e){let o=this.entry();try{o.setPassword(e)}catch(n){throw new It(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){if(L0(o))return}}}});var I0={};ut(I0,{runTelegram:()=>JG});async function JG(t,e={}){let o=e.io??zt(),n=e.secretStore??new Ea("telegram"),r=e.configStore??new ot,s=e.env??process.env;switch(t.sub){case"login":return QG(t,o,n,s);case"logout":return ZG(o,n);case"allow":return P0(t,o,r,!0);case"deny":return P0(t,o,r,!1);case"status":return ez(o,n,r)}}async function QG(t,e,o,n){let r=t.token??n.ALUY_TELEGRAM_TOKEN;if((r===void 0||r.trim()==="")&&(r=await e.prompt("cole o token do bot (@BotFather): ",{secret:!0})),r=(r??"").trim(),!Jv(r))return e.err("token com forma inv\xE1lida (esperado `<bot_id>:<auth>`) \u2014 N\xC3O foi salvo."),1;try{await o.set(r)}catch(s){return s instanceof It?(e.err(s.message),1):(e.err("falha ao guardar o token no keychain \u2014 N\xC3O foi salvo."),1)}return e.out(`\u2713 token do bot guardado no keychain do SO (${ga(r)}).`),e.out(" pr\xF3ximo: autorize seu chat com `aluy telegram allow <chat-id>` (default fechado)."),0}async function ZG(t,e){return await e.clear(),t.out("\u2713 token do bot removido do keychain (a bridge n\xE3o autentica mais)."),0}async function P0(t,e,o,n){if(t.chatId===void 0)return e.err(`uso: aluy telegram ${n?"allow":"deny"} <chat-id> (um inteiro)`),1;let r=o.load(),s=n?Mf(r,t.chatId):Lf(r,t.chatId);return o.save({connectors:{telegram:{allowlist:s}}}),n?e.out(`\u2713 chat-id ${t.chatId} autorizado. Allowlist: [${s.join(", ")}].`):e.out(`\u2713 chat-id ${t.chatId} removido. Allowlist: [${s.join(", ")}].`),0}async function ez(t,e,o){let n=await e.get(),r=va(o.load());return t.out("Telegram (conector):"),t.out(` token: ${n?`presente (${ga(n)})`:"ausente \u2014 rode `aluy telegram login`"}`),t.out(` allowlist: ${r.length>0?`[${r.join(", ")}]`:"VAZIA (bridge fechada \u2014 autorize com `aluy telegram allow <chat-id>`)"}`),t.out(" estado: a bridge ainda N\xC3O est\xE1 ativa (o `--telegram` chega numa pr\xF3xima vers\xE3o)."),0}var N0=p(()=>{"use strict";N();wr();yk();Bn();Yo()});var D0={};ut(D0,{runWhoami:()=>tz});async function tz(t={}){let e=t.env??process.env,o=t.io??zt(),n=t.store??new Kt,r=ko(e),s=new Wt({...r,baseUrl:r.identityBaseUrl,store:n});try{let i=await s.whoami();if(!i)return o.out("n\xE3o autenticado \u2014 rode `aluy login`."),1;if(i.user!==void 0?o.out(`user: ${i.user}`):i.kind==="pat"?o.out("user: \u2014 (PAT \u2014 use `aluy login` device pra ver o usu\xE1rio)"):o.out("user: \u2014"),o.out(`org: ${i.organization_id}`),o.out(`escopos: ${i.scopes.join(", ")}`),o.out(`tipo: ${i.kind==="pat"?"PAT":"sess\xE3o device-flow"}`),i.expires_at!==void 0){let a=new Date(i.expires_at).toISOString();o.out(i.expired?`estado: expirado (${a}) \u2014 rode \`aluy login\``:`expira: ${a}`)}return o.out(`token: ${i.token_hint} (redigido \u2014 o segredo vive s\xF3 no keychain)`),0}catch(i){return i instanceof It?(o.err(`erro: ${i.message}`),1):(o.err(`erro no whoami: ${i instanceof Error?i.message:String(i)}`),1)}}var $0=p(()=>{"use strict";N();rs();Bn();wr()});import{realpathSync as bk,statSync as F0,lstatSync as oz,readlinkSync as nz}from"node:fs";import{homedir as B0}from"node:os";import{isAbsolute as Zc,resolve as xo,relative as rz,sep as sz,dirname as iz,parse as az}from"node:path";function Qc(t,e=0){try{return bk(t)}catch{let o=t,n=[];for(;;){let r=xo(o,"..");if(r===o)return t;let s=o.slice(r.length).replace(/^[/\\]/,"");n.unshift(s);let i;try{i=bk(r)}catch{o=r;continue}let a=n[0],l=xo(i,a);if(e<lz&&cz(l)){let c;try{c=nz(l)}catch{return xo(i,...n)}let d=Zc(c)?c:xo(iz(l),c),m=n.slice(1),u=Qc(d,e+1);return m.length>0?xo(u,...m):u}return xo(i,...n)}}}function cz(t){try{return oz(t).isSymbolicLink()}catch{return!1}}function dz(t,e){if(e===t)return!0;let o=rz(t,e);return o!==""&&!o.startsWith(".."+sz)&&o!==".."&&!Zc(o)}var Ar,Ta,lz,Yt,_a=p(()=>{"use strict";Ar=class extends Error{constructor(o,n){super(`acesso fora do workspace bloqueado: "${o}" (${n}). o efeito foi recusado \u2014 o agente s\xF3 atua dentro da raiz do projeto.`);this.requested=o;this.reason=n;this.name="WorkspaceEscapeError"}requested;reason},Ta=class extends Error{constructor(o,n){super(`n\xE3o foi poss\xEDvel autorizar "${o}": ${n}`);this.requested=o;this.reason=n;this.name="AddRootError"}requested;reason};lz=40;Yt=class{root;extraRoots=[];sessionCwd;constructor(e={}){let o=e.root??process.cwd(),n=Qc(xo(o));e.unconfined===!0?(this.root=Qc(az(n).root),this.sessionCwd=n):(this.root=n,this.sessionCwd=this.root)}get cwd(){return this.sessionCwd}get roots(){return[this.root,...this.extraRoots]}addRoot(e){let o=e.trim();if(o==="")throw new Ta(e,"path vazio");let n=o==="~"?B0():o.startsWith("~/")?xo(B0(),o.slice(2)):o,r=Zc(n)?xo(n):xo(this.sessionCwd,n),s;try{s=bk(r)}catch{throw new Ta(e,"o diret\xF3rio n\xE3o existe")}let i=!1;try{i=F0(s).isDirectory()}catch{i=!1}if(!i)throw new Ta(e,"n\xE3o \xE9 um diret\xF3rio");return this.rootContaining(s)!==null||this.extraRoots.push(s),s}rootContaining(e){for(let o of this.roots)if(dz(o,e))return o;return null}setCwd(e){if(e==="")throw new Ar(e,"path vazio");let o=Zc(e)?xo(e):xo(this.sessionCwd,e),n;try{n=Qc(o)}catch{throw new Ar(e,"falha ao canonicalizar o caminho")}let r=this.rootContaining(n)!==null?n:this.rootContaining(this.sessionCwd)??this.root,s=!1;try{s=F0(r).isDirectory()}catch{s=!1}if(!s)throw new Ar(e,"n\xE3o \xE9 um diret\xF3rio existente dentro do projeto");return this.sessionCwd=r,this.sessionCwd}resolveInside(e){if(e==="")throw new Ar(e,"path vazio");let o=Zc(e)?xo(e):xo(this.sessionCwd,e),n;try{n=Qc(o)}catch{throw new Ar(e,"falha ao canonicalizar o caminho")}if(this.rootContaining(n)===null)throw new Ar(e,"caminho resolve para fora das ra\xEDzes autorizadas do workspace");return n}contains(e){try{return this.resolveInside(e),!0}catch{return!1}}}});import*as Un from"node:fs/promises";function mz(t,e){return e-t.createdAt>U0||t.createdAt>e+U0}async function H0(t,e){let o=`${t}.steal.${process.pid}.${e}`;try{await Un.rename(t,o)}catch{return}try{await Un.unlink(o)}catch{}}async function fz(t){let e=Date.now()+j0;for(;;){let o=Date.now();if(o>=e)throw new Error(`Timeout ao adquirir lock "${t}" (${j0}ms).`);try{let n={pid:process.pid,createdAt:o};return await Un.writeFile(t,JSON.stringify(n),{flag:"wx",mode:384}),n}catch(n){if(n.code!=="EEXIST")throw n;try{let r=await Un.readFile(t,"utf-8");mz(JSON.parse(r),o)&&await H0(t,o)}catch{await H0(t,o)}}await new Promise(n=>setTimeout(n,uz))}}async function pz(t,e){if(e!==void 0)try{let o=await Un.readFile(t,"utf-8"),n=JSON.parse(o);if(n.pid!==e.pid||n.createdAt!==e.createdAt)return}catch{return}try{await Un.unlink(t)}catch{}}async function Er(t,e){let o=await fz(t);try{return await e()}finally{await pz(t,o)}}var U0,uz,j0,vk=p(()=>{"use strict";U0=3e4,uz=50,j0=1e4});import{homedir as hz}from"node:os";import{join as ed,dirname as q0}from"node:path";import{openSync as gz,writeSync as yz,closeSync as bz,readFileSync as vz,mkdirSync as kk,renameSync as kz,unlinkSync as xz,existsSync as W0,constants as xk}from"node:fs";function Ez(t){return t.replace(/\\/g,"\\\\").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/<!--aluy-mem /g,"\\<!--aluy-mem ").replace(/-->/g,"\\-->")}function Tz(t){let e="";for(let o=0;o<t.length;o++){let n=t[o];if(n!=="\\"){e+=n;continue}let r=t[o+1];r==="\\"?(e+="\\",o++):r==="r"?(e+="\r",o++):r==="n"?(e+=`
432
+ ${e}`)}}}function WG(t){return Buffer.from(t).toString("base64url")}function Jc(t){return t instanceof Error?t.message:String(t)}var NG,DG,w0=p(()=>{"use strict";N();wr();Aa();Vc();Yo();pk();mk();NG="\u26A0 AVISO: usar token de ASSINATURA (Claude Pro/Max, ChatGPT) em cliente n\xE3o-oficial \xE9\n zona cinzenta dos Termos do provider. \xC9 uma op\xE7\xE3o consciente sua. A via API key\n (`aluy login --provider <p>` sem --oauth) \xE9 paga-por-uso e n\xE3o tem essa ressalva.",DG={randomBytes:t=>new Uint8Array(IG(t)),sha256:t=>new Uint8Array(PG("sha256").update(t).digest())}});function ko(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??GG).replace(/\/+$/,""),clientId:gk}}var gk,GG,rs=p(()=>{"use strict";gk="aluy-cli",GG="https://api.aluy.app/api/v1"});function Vo(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??$f).replace(/\/+$/,"")}}var $f,ni=p(()=>{"use strict";$f="https://broker.dev.aluy.example"});import{Entry as zG}from"@napi-rs/keyring";function A0(t){let e=String(t?.message??t).toLowerCase();return e.includes("no matching entry")||e.includes("not found")||e.includes("no such")||e.includes("no entry")}var It,Kt,Bn=p(()=>{"use strict";N();It=class extends Error{constructor(e){super("keychain do SO indispon\xEDvel. A credencial n\xE3o foi gravada \u2014 por seguran\xE7a, ela nunca \xE9 guardada em texto em claro. No Linux, instale/ative o Secret Service (gnome-keyring/libsecret) e tente de novo.",e!==void 0?{cause:e}:void 0),this.name="NoKeychainError"}};Kt=class{service;account;makeEntry;constructor(e={}){this.service=e.service??nm,this.account=e.account??tE,this.makeEntry=e.entryFactory??((o,n)=>new zG(o,n))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new It(e)}}async get(){let e=this.entry(),o;try{o=e.getPassword()}catch(n){return A0(n),null}return nE(o)}async set(e){let o=this.entry();try{o.setPassword(oE(e))}catch(n){throw new It(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){return A0(o),void 0}}}});var R0={};dt(R0,{runLogin:()=>YG,validatePatOnBroker:()=>_0});async function _0(t,e,o){let{brokerBaseUrl:n}=Vo(e);try{let r=await o(`${n}/v1/quota`,{method:"GET",headers:{authorization:`Bearer ${t}`}});return r.status===401?"rejected":r.status===403||r.status>=200&&r.status<300?"valid":"unverified"}catch{return"unverified"}}function E0(t,e){t.out(""),t.out("\u2713 login conclu\xEDdo \u2014 credencial guardada no keychain do SO."),t.out(` org: ${e.organization_id}`),t.out(` escopos: ${e.scopes.join(", ")}`),t.out(` tipo: ${e.kind==="pat"?"PAT":"sess\xE3o device-flow"}`)}async function YG(t={},e={}){let o=e.env??process.env,n=e.io??zt(),r=e.store??new Kt,s=ko(o),i=new Wt({...s,baseUrl:s.identityBaseUrl,store:r,...e.fetch?{fetch:e.fetch}:{}},e.sleep?{sleep:e.sleep}:{}),a=o.ALUY_TOKEN,l=t.token??(t.forceDeviceFlow?void 0:a);if(l){let d=t.org??o.ALUY_ORG;if(!d)return n.err("login --token requer a org-alvo: use --org <id> (ou ALUY_ORG)."),1;if(!Tl(l))return n.err("PAT inv\xE1lido: esperado o formato `pat_<id>_<segredo>`."),1;let m=e.fetch??globalThis.fetch,u=await _0(l,o,m);if(u==="rejected")return n.err("PAT recusado pelo broker (inv\xE1lido, expirado ou sem permiss\xE3o para esta org). Confira o token / a org \u2014 N\xC3O foi salvo."),1;try{let h=await i.loginWithPat(l,d);return E0(n,h),u==="unverified"&&n.err("aviso: n\xE3o consegui validar o PAT agora (broker fora?) \u2014 salvei mesmo assim; se o token estiver errado, vai falhar no uso."),0}catch(h){return T0(n,h)}}let c=t.org??o.ALUY_ORG;if(!c)return n.err("login device-flow requer a org-alvo: use --org <id> (ou ALUY_ORG)."),1;try{let d=await i.loginWithDeviceFlow({organizationId:c,onPrompt:m=>{n.out(""),n.out("Para autenticar, abra esta URL no navegador e confirme o c\xF3digo:"),n.out(` URL: ${m.verificationUri}`),n.out(` c\xF3digo: ${m.userCode}`),n.out(` (link direto: ${m.verificationUriComplete})`),n.out(` ${KG}`),n.out("Aguardando aprova\xE7\xE3o\u2026")}});return E0(n,d),0}catch(d){return T0(n,d)}}function T0(t,e){return e instanceof It?(t.err(`erro: ${e.message}`),1):e instanceof Error?(t.err(`erro: ${e.message}`),1):(t.err("erro inesperado no login."),1)}var KG,C0=p(()=>{"use strict";N();rs();ni();Bn();wr();KG="escopo m\xEDnimo: assistant:session + llm:call (quota:read \xE9 opt-in). Sem admin/`*`."});var O0={};dt(O0,{runLogout:()=>VG});async function VG(t={}){let e=t.env??process.env,o=t.io??zt(),n=t.store??new Kt,r=ko(e),s=new Wt({...r,baseUrl:r.identityBaseUrl,store:n,...t.fetch?{fetch:t.fetch}:{}});try{let i=await s.whoami();if(!i)return o.out("nenhuma credencial ativa \u2014 nada a fazer."),0;let{revoked:a}=await s.logout();return a?o.out("\u2713 logout: credencial revogada no identity e apagada do keychain."):i.kind==="pat"?o.out("\u2713 logout: PAT apagado do keychain. (Revogue o PAT no painel web se quiser invalid\xE1-lo.)"):o.out("\u2713 logout: credencial apagada do keychain. (Revoga\xE7\xE3o no servidor n\xE3o confirmada \u2014 poss\xEDvel offline.)"),0}catch(i){return i instanceof It?(o.err(`erro: ${i.message}`),1):(o.err(`erro no logout: ${i instanceof Error?i.message:String(i)}`),1)}}var M0=p(()=>{"use strict";N();rs();Bn();wr()});import{Entry as XG}from"@napi-rs/keyring";function L0(t){let e=String(t?.message??t).toLowerCase();return e.includes("no matching entry")||e.includes("not found")||e.includes("no such")||e.includes("no entry")}var Ea,yk=p(()=>{"use strict";N();Bn();Ea=class{service;account;makeEntry;constructor(e,o={}){this.service=o.service??nm,this.account=Xv(e),this.makeEntry=o.entryFactory??((n,r)=>new XG(n,r))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new It(e)}}async get(){let e=this.entry();try{let o=e.getPassword();return o!==""?o:null}catch(o){return L0(o),null}}async set(e){let o=this.entry();try{o.setPassword(e)}catch(n){throw new It(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){if(L0(o))return}}}});var I0={};dt(I0,{runTelegram:()=>JG});async function JG(t,e={}){let o=e.io??zt(),n=e.secretStore??new Ea("telegram"),r=e.configStore??new ot,s=e.env??process.env;switch(t.sub){case"login":return QG(t,o,n,s);case"logout":return ZG(o,n);case"allow":return P0(t,o,r,!0);case"deny":return P0(t,o,r,!1);case"status":return ez(o,n,r)}}async function QG(t,e,o,n){let r=t.token??n.ALUY_TELEGRAM_TOKEN;if((r===void 0||r.trim()==="")&&(r=await e.prompt("cole o token do bot (@BotFather): ",{secret:!0})),r=(r??"").trim(),!Jv(r))return e.err("token com forma inv\xE1lida (esperado `<bot_id>:<auth>`) \u2014 N\xC3O foi salvo."),1;try{await o.set(r)}catch(s){return s instanceof It?(e.err(s.message),1):(e.err("falha ao guardar o token no keychain \u2014 N\xC3O foi salvo."),1)}return e.out(`\u2713 token do bot guardado no keychain do SO (${ga(r)}).`),e.out(" pr\xF3ximo: autorize seu chat com `aluy telegram allow <chat-id>` (default fechado)."),0}async function ZG(t,e){return await e.clear(),t.out("\u2713 token do bot removido do keychain (a bridge n\xE3o autentica mais)."),0}async function P0(t,e,o,n){if(t.chatId===void 0)return e.err(`uso: aluy telegram ${n?"allow":"deny"} <chat-id> (um inteiro)`),1;let r=o.load(),s=n?Mf(r,t.chatId):Lf(r,t.chatId);return o.save({connectors:{telegram:{allowlist:s}}}),n?e.out(`\u2713 chat-id ${t.chatId} autorizado. Allowlist: [${s.join(", ")}].`):e.out(`\u2713 chat-id ${t.chatId} removido. Allowlist: [${s.join(", ")}].`),0}async function ez(t,e,o){let n=await e.get(),r=va(o.load());return t.out("Telegram (conector):"),t.out(` token: ${n?`presente (${ga(n)})`:"ausente \u2014 rode `aluy telegram login`"}`),t.out(` allowlist: ${r.length>0?`[${r.join(", ")}]`:"VAZIA (bridge fechada \u2014 autorize com `aluy telegram allow <chat-id>`)"}`),t.out(" estado: a bridge ainda N\xC3O est\xE1 ativa (o `--telegram` chega numa pr\xF3xima vers\xE3o)."),0}var N0=p(()=>{"use strict";N();wr();yk();Bn();Yo()});var D0={};dt(D0,{runWhoami:()=>tz});async function tz(t={}){let e=t.env??process.env,o=t.io??zt(),n=t.store??new Kt,r=ko(e),s=new Wt({...r,baseUrl:r.identityBaseUrl,store:n});try{let i=await s.whoami();if(!i)return o.out("n\xE3o autenticado \u2014 rode `aluy login`."),1;if(i.user!==void 0?o.out(`user: ${i.user}`):i.kind==="pat"?o.out("user: \u2014 (PAT \u2014 use `aluy login` device pra ver o usu\xE1rio)"):o.out("user: \u2014"),o.out(`org: ${i.organization_id}`),o.out(`escopos: ${i.scopes.join(", ")}`),o.out(`tipo: ${i.kind==="pat"?"PAT":"sess\xE3o device-flow"}`),i.expires_at!==void 0){let a=new Date(i.expires_at).toISOString();o.out(i.expired?`estado: expirado (${a}) \u2014 rode \`aluy login\``:`expira: ${a}`)}return o.out(`token: ${i.token_hint} (redigido \u2014 o segredo vive s\xF3 no keychain)`),0}catch(i){return i instanceof It?(o.err(`erro: ${i.message}`),1):(o.err(`erro no whoami: ${i instanceof Error?i.message:String(i)}`),1)}}var $0=p(()=>{"use strict";N();rs();Bn();wr()});import{realpathSync as bk,statSync as F0,lstatSync as oz,readlinkSync as nz}from"node:fs";import{homedir as B0}from"node:os";import{isAbsolute as Zc,resolve as xo,relative as rz,sep as sz,dirname as iz,parse as az}from"node:path";function Qc(t,e=0){try{return bk(t)}catch{let o=t,n=[];for(;;){let r=xo(o,"..");if(r===o)return t;let s=o.slice(r.length).replace(/^[/\\]/,"");n.unshift(s);let i;try{i=bk(r)}catch{o=r;continue}let a=n[0],l=xo(i,a);if(e<lz&&cz(l)){let c;try{c=nz(l)}catch{return xo(i,...n)}let d=Zc(c)?c:xo(iz(l),c),m=n.slice(1),u=Qc(d,e+1);return m.length>0?xo(u,...m):u}return xo(i,...n)}}}function cz(t){try{return oz(t).isSymbolicLink()}catch{return!1}}function dz(t,e){if(e===t)return!0;let o=rz(t,e);return o!==""&&!o.startsWith(".."+sz)&&o!==".."&&!Zc(o)}var Ar,Ta,lz,Yt,_a=p(()=>{"use strict";Ar=class extends Error{constructor(o,n){super(`acesso fora do workspace bloqueado: "${o}" (${n}). o efeito foi recusado \u2014 o agente s\xF3 atua dentro da raiz do projeto.`);this.requested=o;this.reason=n;this.name="WorkspaceEscapeError"}requested;reason},Ta=class extends Error{constructor(o,n){super(`n\xE3o foi poss\xEDvel autorizar "${o}": ${n}`);this.requested=o;this.reason=n;this.name="AddRootError"}requested;reason};lz=40;Yt=class{root;extraRoots=[];sessionCwd;constructor(e={}){let o=e.root??process.cwd(),n=Qc(xo(o));e.unconfined===!0?(this.root=Qc(az(n).root),this.sessionCwd=n):(this.root=n,this.sessionCwd=this.root)}get cwd(){return this.sessionCwd}get roots(){return[this.root,...this.extraRoots]}addRoot(e){let o=e.trim();if(o==="")throw new Ta(e,"path vazio");let n=o==="~"?B0():o.startsWith("~/")?xo(B0(),o.slice(2)):o,r=Zc(n)?xo(n):xo(this.sessionCwd,n),s;try{s=bk(r)}catch{throw new Ta(e,"o diret\xF3rio n\xE3o existe")}let i=!1;try{i=F0(s).isDirectory()}catch{i=!1}if(!i)throw new Ta(e,"n\xE3o \xE9 um diret\xF3rio");return this.rootContaining(s)!==null||this.extraRoots.push(s),s}rootContaining(e){for(let o of this.roots)if(dz(o,e))return o;return null}setCwd(e){if(e==="")throw new Ar(e,"path vazio");let o=Zc(e)?xo(e):xo(this.sessionCwd,e),n;try{n=Qc(o)}catch{throw new Ar(e,"falha ao canonicalizar o caminho")}let r=this.rootContaining(n)!==null?n:this.rootContaining(this.sessionCwd)??this.root,s=!1;try{s=F0(r).isDirectory()}catch{s=!1}if(!s)throw new Ar(e,"n\xE3o \xE9 um diret\xF3rio existente dentro do projeto");return this.sessionCwd=r,this.sessionCwd}resolveInside(e){if(e==="")throw new Ar(e,"path vazio");let o=Zc(e)?xo(e):xo(this.sessionCwd,e),n;try{n=Qc(o)}catch{throw new Ar(e,"falha ao canonicalizar o caminho")}if(this.rootContaining(n)===null)throw new Ar(e,"caminho resolve para fora das ra\xEDzes autorizadas do workspace");return n}contains(e){try{return this.resolveInside(e),!0}catch{return!1}}}});import*as Un from"node:fs/promises";function mz(t,e){return e-t.createdAt>U0||t.createdAt>e+U0}async function H0(t,e){let o=`${t}.steal.${process.pid}.${e}`;try{await Un.rename(t,o)}catch{return}try{await Un.unlink(o)}catch{}}async function fz(t){let e=Date.now()+j0;for(;;){let o=Date.now();if(o>=e)throw new Error(`Timeout ao adquirir lock "${t}" (${j0}ms).`);try{let n={pid:process.pid,createdAt:o};return await Un.writeFile(t,JSON.stringify(n),{flag:"wx",mode:384}),n}catch(n){if(n.code!=="EEXIST")throw n;try{let r=await Un.readFile(t,"utf-8");mz(JSON.parse(r),o)&&await H0(t,o)}catch{await H0(t,o)}}await new Promise(n=>setTimeout(n,uz))}}async function pz(t,e){if(e!==void 0)try{let o=await Un.readFile(t,"utf-8"),n=JSON.parse(o);if(n.pid!==e.pid||n.createdAt!==e.createdAt)return}catch{return}try{await Un.unlink(t)}catch{}}async function Er(t,e){let o=await fz(t);try{return await e()}finally{await pz(t,o)}}var U0,uz,j0,vk=p(()=>{"use strict";U0=3e4,uz=50,j0=1e4});import{homedir as hz}from"node:os";import{join as ed,dirname as q0}from"node:path";import{openSync as gz,writeSync as yz,closeSync as bz,readFileSync as vz,mkdirSync as kk,renameSync as kz,unlinkSync as xz,existsSync as W0,constants as xk}from"node:fs";function Ez(t){return t.replace(/\\/g,"\\\\").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/<!--aluy-mem /g,"\\<!--aluy-mem ").replace(/-->/g,"\\-->")}function Tz(t){let e="";for(let o=0;o<t.length;o++){let n=t[o];if(n!=="\\"){e+=n;continue}let r=t[o+1];r==="\\"?(e+="\\",o++):r==="r"?(e+="\r",o++):r==="n"?(e+=`
433
433
  `,o++):r==="<"||r==="-"?(e+=r,o++):e+="\\"}return e}function _z(t){let e=JSON.stringify({id:t.id,p:t.provenance,pin:t.pinned,ts:t.ts});return`- ${t.pinned?"\u{1F4CC} ":""}${Ez(t.text)} ${Ff}${e}${z0}`}function Rz(t,e){let o=-1;for(let l=t.lastIndexOf(Ff);l>=0;l=t.lastIndexOf(Ff,l-1))if(l===0||t[l-1]!=="\\"){o=l;break}if(o<0)return null;let n=t.lastIndexOf(z0);if(n<=o)return null;let r=t.slice(0,o),s=t.slice(o+Ff.length,n),i=r.match(/^- (.*?)\s*$/);if(!i)return null;let a=i[1]??"";a=a.replace(/^📌\s*/,""),a=Tz(a);try{let l=JSON.parse(s);if(typeof l!="object"||l===null)return null;let c=l;if(typeof c.id!="string"||c.id.length===0||typeof c.ts!="number"||!Number.isFinite(c.ts))return null;let d=c.p==="usuario"?"usuario":"derivado";return{id:c.id,text:a,scope:e,provenance:d,pinned:!!c.pin,ts:c.ts}}catch{return null}}var G0,Sz,Sk,wz,Az,Ff,z0,ri,wk=p(()=>{"use strict";vk();G0=448,Sz=384,Sk="memory",wz="global.md",Az="project.md",Ff="<!--aluy-mem ",z0="-->";ri=class{base;globalDir;globalFile;projectDir;projectFile;constructor(e){this.base=e.baseDir??ed(hz(),".aluy"),this.globalDir=ed(this.base,Sk),this.globalFile=ed(this.globalDir,wz),this.projectDir=e.workspace.resolveInside(ed(".aluy",Sk)),this.projectFile=ed(this.projectDir,Az)}get paths(){return{global:this.globalFile,project:this.projectFile}}async readAll(){return[...this.readScope("global"),...this.readScope("projeto")]}lockFor(e){return`${this.fileFor(e)}.lock`}async append(e){this.ensureDir(e.scope,this.dirFor(e.scope)),await Er(this.lockFor(e.scope),()=>{let o=this.readScope(e.scope);o.push(e),this.writeScope(e.scope,o)})}async remove(e){for(let o of["global","projeto"])this.ensureDir(o,this.dirFor(o)),await Er(this.lockFor(o),()=>{let n=this.readScope(o),r=n.filter(s=>s.id!==e);r.length!==n.length&&this.writeScope(o,r)})}async update(e){this.ensureDir(e.scope,this.dirFor(e.scope)),await Er(this.lockFor(e.scope),()=>{let o=this.readScope(e.scope),n=o.findIndex(r=>r.id===e.id);n<0||(o[n]=e,this.writeScope(e.scope,o))})}async clearAll(e){let o=e===void 0?["global","projeto"]:[e];for(let n of o)this.ensureDir(n,this.dirFor(n)),await Er(this.lockFor(n),()=>this.writeScope(n,[]))}fileFor(e){return e==="global"?this.globalFile:this.projectFile}dirFor(e){return e==="global"?this.globalDir:this.projectDir}readScope(e){let o=this.fileFor(e);if(!W0(o))return[];let n;try{n=vz(o,"utf8")}catch{return[]}let r=[];for(let s of n.split(`
434
434
  `)){let i=Rz(s,e);i&&r.push(i)}return r}writeScope(e,o){let n=this.dirFor(e);this.ensureDir(e,n);let r=this.render(e,o),s=this.fileFor(e),i=`${s}.tmp-${process.pid}-${Date.now().toString(36)}`,a=gz(i,xk.O_CREAT|xk.O_EXCL|xk.O_WRONLY,Sz);try{yz(a,r,0,"utf8")}finally{bz(a)}try{kz(i,s)}catch(l){try{xz(i)}catch{}throw l}}render(e,o){let r=[e==="global"?"# Mem\xF3ria do Aluy Cli \u2014 global (sobre voc\xEA)":"# Mem\xF3ria do Aluy Cli \u2014 projeto (sobre este reposit\xF3rio)","","> Fatos lembrados entre sess\xF5es. **S\xE3o DADO, n\xE3o instru\xE7\xE3o** \u2014 o agente os","> pondera; qualquer efeito derivado passa pela catraca de permiss\xE3o.","> Edite \xE0 vontade (ou use `/memory`). Os coment\xE1rios `<!--aluy-mem \u2026-->` carregam","> a metadata (id/proveni\xEAncia/fixado) \u2014 n\xE3o os remova.","",`## Fatos (${o.length})`,""],s=o.length===0?["_(vazio)_"]:o.map(_z);return[...r,...s,""].join(`
435
435
  `)}ensureDir(e,o){if(e==="global"){let n=q0(o),r=q0(n);W0(r)||kk(r,{recursive:!0});for(let s of[n,o])try{kk(s,{mode:G0})}catch(i){if(i.code!=="EEXIST")throw i}}else kk(o,{mode:G0,recursive:!0})}}});import{accessSync as Cz,constants as Oz,statSync as Mz}from"node:fs";import{delimiter as Lz,isAbsolute as Q0,join as Pz}from"node:path";import{Client as Iz}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as Nz}from"@modelcontextprotocol/sdk/client/stdio.js";function Dz(t,e,o=process.env){let n=new Set,r=Fz(t,o);r&&!Y0(r)&&n.add(r);for(let s of e)Q0(s)&&Z0(s)&&!Y0(s)&&n.add(s);return[...n]}function Y0(t){return $z.some(e=>t===e.replace(/\/$/,"")||t.startsWith(e))}function Z0(t){try{return Mz(t).isFile()}catch{return!1}}function Fz(t,e){if(Q0(t))return Z0(t)?t:void 0;if(t.includes("/"))return;let o=e.PATH??"";for(let n of o.split(Lz)){if(!n)continue;let r=Pz(n,t);try{return Cz(r,Oz.X_OK),r}catch{}}}function eM(t,e=process.env){let o={};for(let n of Bz){let r=e[n];typeof r=="string"&&!V0(n)&&(o[n]=r)}for(let[n,r]of Object.entries(t.env))V0(n)||(o[n]=r);return o}function V0(t){return Uz.some(e=>e.test(t))}function qz(t=process.env){let e=t.ALUY_MCP_TIMEOUT_MS;if(typeof e!="string"||e.trim()==="")return X0;let o=Number(e);return!Number.isFinite(o)||o<=0?X0:Math.min(Hz,Math.max(jz,Math.round(o)))}function zz(t=process.env){let e=t.ALUY_MCP_CONNECT_TIMEOUT_MS;if(typeof e!="string"||e.trim()==="")return J0;let o=Number(e);return!Number.isFinite(o)||o<=0?J0:Math.min(Gz,Math.max(Wz,Math.round(o)))}function Kz(){return new Iz({name:"aluy-cli",version:vl})}function Vz(t,e){if(t.length<=e&&Buffer.byteLength(t,"utf8")<=e)return{text:t,truncated:0};let o=0,n=Math.min(t.length,e);for(;o<n;){let s=o+n+1>>1;Buffer.byteLength(t.slice(0,s),"utf8")<=e?o=s:n=s-1}return{text:t.slice(0,o),truncated:t.length-o}}function Xz(t){if(!Array.isArray(t))return"";let e=[],o=0;for(let n of t){if(o>=Yz){e.push("\u2026[conte\xFAdo MCP truncado: limite agregado de bytes atingido]");break}if(n!==null&&typeof n=="object"){let r=n;if(r.type==="text"&&typeof r.text=="string"){let{text:s,truncated:i}=Vz(r.text,tM),a=i>0?`${s}
@@ -475,7 +475,7 @@ ${r.text}`).join(`
475
475
  `)});break}case"bang":{let n=[`! ${o.command} (${o.status})`];o.output&&n.push(o.output),e.push({role:"observation",toolName:lx,text:n.join(`
476
476
  `)});break}case"broker-error":e.push({role:"observation",toolName:lx,text:`(erro de broker anterior: ${o.message})`});break;case"note":case"deny":case"subagents":case"doctor":case"inject":break}return e}var sX,lx,cx=p(()=>{"use strict";sX=new Set(["you","aluy","tool","deny","bang","broker-error","note","inject","doctor"]);lx="sess\xE3o-anterior"});function uX(t){return t.kind==="tool"&&dX.has(t.verb)}function NL(t){let e=!1,o=t.map(n=>{if(n.kind==="tool"&&uX(n)){let r=Ye(n.result),s=n.output!==void 0?Ye(n.output):void 0,i=n.liveOutput!==void 0?Ye(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=oo(n.command);return r===n.command?n:(e=!0,{...n,command:r})}if(n.kind==="tool"&&cX.has(n.verb)){let r=oo(n.target);return r===n.target?n:(e=!0,{...n,target:r})}return n});return e?o:t}var cX,dX,DL=p(()=>{"use strict";N();cX=new Set(["bash","run_command"]),dX=new Set(["read","grep","attach","headroom_retrieve"])});import{homedir as mX}from"node:os";import{join as dx}from"node:path";import{randomBytes as fX}from"node:crypto";import{openSync as pX,writeSync as hX,closeSync as $L,readFileSync as gX,readdirSync as FL,mkdirSync as yX,renameSync as bX,unlinkSync as BL,statSync as vX,existsSync as Hfe,constants as ux}from"node:fs";function _X(t,e){let o=[...t];return o.length>e?o.slice(0,e).join(""):t}function pp(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 _X(o,TX)}function RX(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 kX,xX,UL,jL,SX,wX,mx,AX,EX,fp,TX,Sd,HL=p(()=>{"use strict";cx();DL();kX=448,xX=384,UL="sessions",jL=1,SX=720*60*60*1e3,wX=50,mx=8*1024*1024,AX=mx*8,EX=Math.floor(mx*.9),fp=/^[A-Za-z0-9_-]{1,128}$/,TX=64;Sd=class{base;dir;now;createdAtCache=new Map;constructor(e={}){this.base=e.baseDir??dx(mX(),".aluy"),this.dir=dx(this.base,UL),this.now=e.now??(()=>Date.now())}get sessionsDir(){return this.dir}pathFor(e){return dx(this.dir,`${e}.json`)}save(e){if(!fp.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=pp(e.label),a=i!==void 0?pp(e.labelColor):void 0,l={id:e.id,version:jL,createdAt:n,updatedAt:o,cwd:e.cwd,tier:e.tier,...r?{model:e.model.trim()}:{},...s?{provider:e.provider.trim()}:{},...i!==void 0?{label:i}:{},...a!==void 0?{labelColor:a}:{}},c=this.fitBlocks(l,NL(mp(e.blocks))),d={...l,blocks:c};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(!fp.test(e))return null;let o=this.pathFor(e),n,r=!1;try{let a=vX(o);if(a.size>AX)return null;r=a.size>mx,n=gX(o,"utf8")}catch{return null}let s;try{s=JSON.parse(n)}catch{return null}let i=this.sanitizeRecord(s);if(i&&r){let{blocks:a,...l}=i,c=this.fitBlocks(l,a),d=a.length-c.length,m={kind:"note",title:"sess\xE3o grande \u2014 contexto antigo omitido no resume",lines:[`Esta sess\xE3o era grande demais p/ recarregar inteira; ${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?[m,...c]:c}}return i&&this.createdAtCache.set(i.id,i.createdAt),i}list(){let e;try{e=FL(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:RX(s.blocks)})}return o.sort((n,r)=>r.updatedAt-n.updatedAt),o}latestForCwd(e){let o;try{o=FL(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(fp.test(e)){this.createdAtCache.delete(e);try{BL(this.pathFor(e))}catch{}}}gc(e={}){let o=e.maxAgeMs??SX,n=e.maxCount??wX,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"||!fp.test(o.id)||!Array.isArray(o.blocks))return null;let n=typeof o.createdAt=="number"&&o.createdAt>=0?o.createdAt:0,r=typeof o.updatedAt=="number"&&o.updatedAt>=0?o.updatedAt:n,s=typeof o.cwd=="string"?o.cwd:"",i=typeof o.tier=="string"&&o.tier.trim()!==""?o.tier:"",a=typeof o.version=="number"?o.version:0,l=i==="custom"&&typeof o.model=="string"&&o.model.trim()!==""?o.model.trim():void 0,c=l!==void 0&&typeof o.provider=="string"&&o.provider.trim()!==""?o.provider.trim():void 0,d=pp(o.label),m=d!==void 0?pp(o.labelColor):void 0;return{id:o.id,version:a,createdAt:n,updatedAt:r,cwd:s,tier:i,...l!==void 0?{model:l}:{},...c!==void 0?{provider:c}:{},...d!==void 0?{label:d}:{},...m!==void 0?{labelColor:m}:{},blocks:mp(o.blocks)}}fitBlocks(e,o){let n=i=>Buffer.byteLength(JSON.stringify({...e,blocks:i})+`
477
477
  `,"utf8")<=EX;if(n(o))return o;let r=1,s=o.length;for(;r<s;){let i=r+s>>1;n(o.slice(i))?s=i:r=i+1}return o.slice(r)}writeAtomic(e){yX(this.dir,{recursive:!0,mode:kX});let o=this.pathFor(e.id),n=`${o}.${process.pid}.${fX(6).toString("hex")}.tmp`,r=JSON.stringify(e)+`
478
- `,s;try{s=pX(n,ux.O_CREAT|ux.O_EXCL|ux.O_WRONLY,xX),hX(s,r),$L(s),s=void 0,bX(n,o)}catch(i){if(s!==void 0)try{$L(s)}catch{}try{BL(n)}catch{}throw i}}}});import{homedir as CX}from"node:os";import{join as fx}from"node:path";import{readdirSync as OX,readFileSync as MX,mkdirSync as LX,statSync as PX}from"node:fs";var IX,qL,NX,DX,wd,WL=p(()=>{"use strict";N();IX=448,qL="commands",NX=64*1024,DX=256,wd=class{dir;constructor(e={}){let o=e.baseDir??fx(CX(),".aluy");this.dir=fx(o,qL)}get commandsDir(){return this.dir}ensureDir(){try{LX(this.dir,{mode:IX,recursive:!0})}catch{}}load(){let e;try{e=OX(this.dir,{withFileTypes:!0})}catch{return[]}let o=e.filter(s=>s.isFile()&&s.name.toLowerCase().endsWith(".md")).map(s=>s.name).sort((s,i)=>s.localeCompare(i)),n=new Set,r=[];for(let s of o){if(r.length>=DX)break;let i=this.readOne(s);i&&(n.has(i.name)||(n.add(i.name),r.push(i)))}return r}readOne(e){let o=fx(this.dir,e);try{let n=PX(o);if(!n.isFile()||n.size>NX)return null;let r=MX(o,"utf8");return Ec(e,r)}catch{return null}}}});import{join as $X}from"node:path";import{readdirSync as FX,readFileSync as BX,statSync as UX}from"node:fs";function px(t,e){let o=new Map;for(let n of t)o.set(n.name,n);for(let n of e)o.set(n.name,n);return[...o.values()]}var GL,jX,HX,Ad,zL=p(()=>{"use strict";N();ss();GL=[".claude/commands",".aluy/commands"],jX=64*1024,HX=256,Ad=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[];for(let n of GL){let r;try{r=this.workspace.resolveInside(n)}catch{continue}let s;try{s=FX(r,{withFileTypes:!0})}catch{continue}let i=s.filter(a=>a.isFile()&&a.name.toLowerCase().endsWith(".md")).map(a=>a.name).sort((a,l)=>a.localeCompare(l));for(let a of i){if(o.length>=HX)break;let l=this.readOne(n,r,a);l&&(e.has(l.name)||(e.add(l.name),o.push(l)))}}return o}readOne(e,o,n){let r=`${e}/${n}`;if(So(r).kind!=="allow")return null;let s=$X(o,n);try{this.workspace.resolveInside(r);let i=UX(s);if(!i.isFile()||i.size>jX)return null;let a=BX(s,"utf8");return Ec(n,a)}catch{return null}}}});import{join as qX}from"node:path";import{readdirSync as WX,readFileSync as GX,statSync as zX}from"node:fs";var KL,KX,YX,di,hx=p(()=>{"use strict";N();ss();KL=[".claude/agents",".aluy/agents"],KX=64*1024,YX=256,di=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of KL){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=WX(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>l.isFile()&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=YX)break;let c=this.readOne(r,s,l);if(c!==null){if(pc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{profiles:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(So(r).kind!=="allow")return null;let s=qX(o,n);try{this.workspace.resolveInside(r);let i=zX(s);if(!i.isFile()||i.size>KX)return null;let a=GX(s,"utf8");return hc(n,a,"project")}catch{return null}}}});var yx={};ut(yx,{UserWorkflowsLoader:()=>ds,WORKFLOWS_DIRNAME:()=>Na});import{homedir as VX}from"node:os";import{join as gx}from"node:path";import{readdirSync as XX,readFileSync as JX,mkdirSync as QX,statSync as ZX}from"node:fs";var e3,Na,t3,o3,ds,Ed=p(()=>{"use strict";N();e3=448,Na="workflows",t3=64*1024,o3=256,ds=class{dir;constructor(e={}){let o=e.baseDir??gx(VX(),".aluy");this.dir=gx(o,Na)}get workflowsDir(){return this.dir}ensureDir(){try{QX(this.dir,{mode:e3,recursive:!0})}catch{}}load(){let e;try{e=XX(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>=o3)break;let a=this.readOne(i);if(a!==null){if(xc(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=gx(this.dir,e);try{let n=ZX(o);if(!n.isFile()||n.size>t3)return null;let r=JX(o,"utf8");return Sc(e,r,"global")}catch{return null}}}});var vx={};ut(vx,{PROJECT_WORKFLOWS_DIRNAMES:()=>bx,ProjectWorkflowsLoader:()=>us});import{join as n3}from"node:path";import{readdirSync as r3,readFileSync as s3,statSync as i3}from"node:fs";var bx,a3,l3,us,Td=p(()=>{"use strict";N();ss();bx=[".claude/workflows",".aluy/workflows"],a3=64*1024,l3=256,us=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of bx){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=r3(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>l.isFile()&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=l3)break;let c=this.readOne(r,s,l);if(c!==null){if(xc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{workflows:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(So(r).kind!=="allow")return null;let s=n3(o,n);try{this.workspace.resolveInside(r);let i=i3(s);if(!i.isFile()||i.size>a3)return null;let a=s3(s,"utf8");return Sc(n,a,"project")}catch{return null}}}});import{homedir as c3}from"node:os";import{join as kx}from"node:path";import{readdirSync as d3,readFileSync as u3,mkdirSync as m3,statSync as f3}from"node:fs";var p3,_d,Rd,h3,g3,ui,hp=p(()=>{"use strict";N();p3=448,_d="skills",Rd="SKILL.md",h3=256*1024,g3=256,ui=class{dir;constructor(e={}){let o=e.baseDir??kx(c3(),".aluy");this.dir=kx(o,_d)}get skillsDir(){return this.dir}ensureDir(){try{m3(this.dir,{mode:p3,recursive:!0})}catch{}}load(){let e;try{e=d3(this.dir,{withFileTypes:!0})}catch{return{skills:[],errors:[]}}let o=e.filter(i=>i.isDirectory()).map(i=>i.name).sort((i,a)=>i.localeCompare(a)),n=new Set,r=[],s=[];for(let i of o){if(r.length>=g3)break;let a=this.readOne(i);if(a!==null){if(bc(a)){s.push(a);continue}n.has(a.name)||(n.add(a.name),r.push(a))}}return{skills:r,errors:s}}readOne(e){let o=kx(this.dir,e,Rd);try{let n=f3(o);if(!n.isFile()||n.size>h3)return null;let r=u3(o,"utf8");return vc(e,r,"global")}catch{return null}}}});import{join as y3}from"node:path";import{readdirSync as b3,readFileSync as v3,statSync as k3}from"node:fs";var YL,x3,S3,mi,xx=p(()=>{"use strict";N();hp();YL=[".claude/skills",".aluy/skills"],x3=256*1024,S3=256,mi=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of YL){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=b3(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>l.isDirectory()).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=S3)break;let c=this.readOne(r,s,l);if(c!==null){if(bc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{skills:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}/${Rd}`,s=y3(o,n,Rd);try{this.workspace.resolveInside(r);let i=k3(s);if(!i.isFile()||i.size>x3)return null;let a=v3(s,"utf8");return vc(n,a,"project")}catch{return null}}}});import{homedir as w3}from"node:os";import{join as Sx}from"node:path";import{readFileSync as A3,statSync as E3}from"node:fs";var VL,T3,_3,Cd,XL=p(()=>{"use strict";N();VL="hooks.json",T3="settings.json",_3=256*1024,Cd=class{file;claudeProjectFile;constructor(e={}){let o=e.baseDir??Sx(w3(),".aluy");this.file=Sx(o,VL),e.workspaceRoot!==void 0&&(this.claudeProjectFile=Sx(e.workspaceRoot,".claude",T3))}get configPath(){return this.file}load(){let e=qb(this.readJson(this.file));if(this.claudeProjectFile===void 0)return e;let o=Gb(this.readJson(this.claudeProjectFile));return zb(e,o)}readJson(e){let o;try{let n=E3(e);if(!n.isFile()||n.size>_3)return;o=A3(e,"utf8")}catch{return}try{return JSON.parse(o)}catch{return}}}});var Od=p(()=>{"use strict";_a();rL();sp();aL();uL();hL();lp();as();wL();wk();Ik();TL();_L();nx();sx();Yo();LL();HL();cx();WL();zL();qf();hx();Ed();Td();hp();xx();XL()});function Md(t,e){let o=t.toLowerCase(),n=e.toLowerCase();if(o==="")return{score:0,matched:[]};let r=[],s=0,i=0,a=-1,l=e.lastIndexOf("/")+1;for(let d=0;d<o.length;d++){let m=o[d],u=n.indexOf(m,s);if(u===-1)return null;r.push(u),a>=0&&u===a+1?i+=5:i+=1,u>=l&&(i+=2);let h=u>0?e[u-1]:"/";(h==="/"||h==="-"||h==="_"||h===".")&&(i+=3),a=u,s=u+1}let c=(r[r.length-1]??0)-(r[0]??0);return i-=c*.1,i-=e.length*.01,{score:i,matched:r}}function wx(t,e){let o=t.trim();if(o==="")return e.map(r=>({path:r,score:0,matched:[]}));let n=[];for(let r of e){let s=Md(o,r);s&&n.push({path:r,score:s.score,matched:s.matched})}return n.sort((r,s)=>s.score-r.score||r.path.length-s.path.length||r.path.localeCompare(s.path)),n}var Ax=p(()=>{"use strict"});function C3(t){return t.replace(/\\ /g," ")}function O3(t){return t.includes("/")?!0:/\.[A-Za-z0-9]+$/.test(t)}function M3(t){let e=t.replace(/\.+$/,"");return{token:e,trimmed:t.length-e.length}}function fi(t){let e=[];for(let o of t.matchAll(R3)){let n=o[1],r=o[4],s=o[2]??o[3]??r,{token:i,trimmed:a}=r!==void 0?M3(s):{token:s,trimmed:0},l=C3(i);if(!O3(l))continue;let c=(o.index??0)+o[0].indexOf(n);e.push({path:l,start:c,end:c+n.length-a})}return e}function Ex(t,e){if(e.length===0)return t;let o=t;for(let n of[...e].sort((r,s)=>s.start-r.start))o=o.slice(0,n.start)+o.slice(n.end);return o.replace(/\s{2,}/g," ").trim()}var R3,JL=p(()=>{"use strict";R3=/(?:^|\s)(@(?:"([^"]+)"|'([^']+)'|((?:[\p{L}\p{N}._/-]|\\ )+)))/gu});function gp(t){let e=t.lastIndexOf("@");if(e<0)return null;let o=e>0?t[e-1]:" ";if(o!==" "&&o!==`
478
+ `,s;try{s=pX(n,ux.O_CREAT|ux.O_EXCL|ux.O_WRONLY,xX),hX(s,r),$L(s),s=void 0,bX(n,o)}catch(i){if(s!==void 0)try{$L(s)}catch{}try{BL(n)}catch{}throw i}}}});import{homedir as CX}from"node:os";import{join as fx}from"node:path";import{readdirSync as OX,readFileSync as MX,mkdirSync as LX,statSync as PX}from"node:fs";var IX,qL,NX,DX,wd,WL=p(()=>{"use strict";N();IX=448,qL="commands",NX=64*1024,DX=256,wd=class{dir;constructor(e={}){let o=e.baseDir??fx(CX(),".aluy");this.dir=fx(o,qL)}get commandsDir(){return this.dir}ensureDir(){try{LX(this.dir,{mode:IX,recursive:!0})}catch{}}load(){let e;try{e=OX(this.dir,{withFileTypes:!0})}catch{return[]}let o=e.filter(s=>s.isFile()&&s.name.toLowerCase().endsWith(".md")).map(s=>s.name).sort((s,i)=>s.localeCompare(i)),n=new Set,r=[];for(let s of o){if(r.length>=DX)break;let i=this.readOne(s);i&&(n.has(i.name)||(n.add(i.name),r.push(i)))}return r}readOne(e){let o=fx(this.dir,e);try{let n=PX(o);if(!n.isFile()||n.size>NX)return null;let r=MX(o,"utf8");return Ec(e,r)}catch{return null}}}});import{join as $X}from"node:path";import{readdirSync as FX,readFileSync as BX,statSync as UX}from"node:fs";function px(t,e){let o=new Map;for(let n of t)o.set(n.name,n);for(let n of e)o.set(n.name,n);return[...o.values()]}var GL,jX,HX,Ad,zL=p(()=>{"use strict";N();ss();GL=[".claude/commands",".aluy/commands"],jX=64*1024,HX=256,Ad=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[];for(let n of GL){let r;try{r=this.workspace.resolveInside(n)}catch{continue}let s;try{s=FX(r,{withFileTypes:!0})}catch{continue}let i=s.filter(a=>a.isFile()&&a.name.toLowerCase().endsWith(".md")).map(a=>a.name).sort((a,l)=>a.localeCompare(l));for(let a of i){if(o.length>=HX)break;let l=this.readOne(n,r,a);l&&(e.has(l.name)||(e.add(l.name),o.push(l)))}}return o}readOne(e,o,n){let r=`${e}/${n}`;if(So(r).kind!=="allow")return null;let s=$X(o,n);try{this.workspace.resolveInside(r);let i=UX(s);if(!i.isFile()||i.size>jX)return null;let a=BX(s,"utf8");return Ec(n,a)}catch{return null}}}});import{join as qX}from"node:path";import{readdirSync as WX,readFileSync as GX,statSync as zX}from"node:fs";var KL,KX,YX,di,hx=p(()=>{"use strict";N();ss();KL=[".claude/agents",".aluy/agents"],KX=64*1024,YX=256,di=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of KL){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=WX(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>l.isFile()&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=YX)break;let c=this.readOne(r,s,l);if(c!==null){if(pc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{profiles:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(So(r).kind!=="allow")return null;let s=qX(o,n);try{this.workspace.resolveInside(r);let i=zX(s);if(!i.isFile()||i.size>KX)return null;let a=GX(s,"utf8");return hc(n,a,"project")}catch{return null}}}});var yx={};dt(yx,{UserWorkflowsLoader:()=>ds,WORKFLOWS_DIRNAME:()=>Na});import{homedir as VX}from"node:os";import{join as gx}from"node:path";import{readdirSync as XX,readFileSync as JX,mkdirSync as QX,statSync as ZX}from"node:fs";var e3,Na,t3,o3,ds,Ed=p(()=>{"use strict";N();e3=448,Na="workflows",t3=64*1024,o3=256,ds=class{dir;constructor(e={}){let o=e.baseDir??gx(VX(),".aluy");this.dir=gx(o,Na)}get workflowsDir(){return this.dir}ensureDir(){try{QX(this.dir,{mode:e3,recursive:!0})}catch{}}load(){let e;try{e=XX(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>=o3)break;let a=this.readOne(i);if(a!==null){if(xc(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=gx(this.dir,e);try{let n=ZX(o);if(!n.isFile()||n.size>t3)return null;let r=JX(o,"utf8");return Sc(e,r,"global")}catch{return null}}}});var vx={};dt(vx,{PROJECT_WORKFLOWS_DIRNAMES:()=>bx,ProjectWorkflowsLoader:()=>us});import{join as n3}from"node:path";import{readdirSync as r3,readFileSync as s3,statSync as i3}from"node:fs";var bx,a3,l3,us,Td=p(()=>{"use strict";N();ss();bx=[".claude/workflows",".aluy/workflows"],a3=64*1024,l3=256,us=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of bx){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=r3(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>l.isFile()&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=l3)break;let c=this.readOne(r,s,l);if(c!==null){if(xc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{workflows:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(So(r).kind!=="allow")return null;let s=n3(o,n);try{this.workspace.resolveInside(r);let i=i3(s);if(!i.isFile()||i.size>a3)return null;let a=s3(s,"utf8");return Sc(n,a,"project")}catch{return null}}}});import{homedir as c3}from"node:os";import{join as kx}from"node:path";import{readdirSync as d3,readFileSync as u3,mkdirSync as m3,statSync as f3}from"node:fs";var p3,_d,Rd,h3,g3,ui,hp=p(()=>{"use strict";N();p3=448,_d="skills",Rd="SKILL.md",h3=256*1024,g3=256,ui=class{dir;constructor(e={}){let o=e.baseDir??kx(c3(),".aluy");this.dir=kx(o,_d)}get skillsDir(){return this.dir}ensureDir(){try{m3(this.dir,{mode:p3,recursive:!0})}catch{}}load(){let e;try{e=d3(this.dir,{withFileTypes:!0})}catch{return{skills:[],errors:[]}}let o=e.filter(i=>i.isDirectory()).map(i=>i.name).sort((i,a)=>i.localeCompare(a)),n=new Set,r=[],s=[];for(let i of o){if(r.length>=g3)break;let a=this.readOne(i);if(a!==null){if(bc(a)){s.push(a);continue}n.has(a.name)||(n.add(a.name),r.push(a))}}return{skills:r,errors:s}}readOne(e){let o=kx(this.dir,e,Rd);try{let n=f3(o);if(!n.isFile()||n.size>h3)return null;let r=u3(o,"utf8");return vc(e,r,"global")}catch{return null}}}});import{join as y3}from"node:path";import{readdirSync as b3,readFileSync as v3,statSync as k3}from"node:fs";var YL,x3,S3,mi,xx=p(()=>{"use strict";N();hp();YL=[".claude/skills",".aluy/skills"],x3=256*1024,S3=256,mi=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of YL){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=b3(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>l.isDirectory()).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=S3)break;let c=this.readOne(r,s,l);if(c!==null){if(bc(c)){n.push(c);continue}e.has(c.name)||(e.add(c.name),o.push(c))}}}return{skills:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}/${Rd}`,s=y3(o,n,Rd);try{this.workspace.resolveInside(r);let i=k3(s);if(!i.isFile()||i.size>x3)return null;let a=v3(s,"utf8");return vc(n,a,"project")}catch{return null}}}});import{homedir as w3}from"node:os";import{join as Sx}from"node:path";import{readFileSync as A3,statSync as E3}from"node:fs";var VL,T3,_3,Cd,XL=p(()=>{"use strict";N();VL="hooks.json",T3="settings.json",_3=256*1024,Cd=class{file;claudeProjectFile;constructor(e={}){let o=e.baseDir??Sx(w3(),".aluy");this.file=Sx(o,VL),e.workspaceRoot!==void 0&&(this.claudeProjectFile=Sx(e.workspaceRoot,".claude",T3))}get configPath(){return this.file}load(){let e=qb(this.readJson(this.file));if(this.claudeProjectFile===void 0)return e;let o=Gb(this.readJson(this.claudeProjectFile));return zb(e,o)}readJson(e){let o;try{let n=E3(e);if(!n.isFile()||n.size>_3)return;o=A3(e,"utf8")}catch{return}try{return JSON.parse(o)}catch{return}}}});var Od=p(()=>{"use strict";_a();rL();sp();aL();uL();hL();lp();as();wL();wk();Ik();TL();_L();nx();sx();Yo();LL();HL();cx();WL();zL();qf();hx();Ed();Td();hp();xx();XL()});function Md(t,e){let o=t.toLowerCase(),n=e.toLowerCase();if(o==="")return{score:0,matched:[]};let r=[],s=0,i=0,a=-1,l=e.lastIndexOf("/")+1;for(let d=0;d<o.length;d++){let m=o[d],u=n.indexOf(m,s);if(u===-1)return null;r.push(u),a>=0&&u===a+1?i+=5:i+=1,u>=l&&(i+=2);let h=u>0?e[u-1]:"/";(h==="/"||h==="-"||h==="_"||h===".")&&(i+=3),a=u,s=u+1}let c=(r[r.length-1]??0)-(r[0]??0);return i-=c*.1,i-=e.length*.01,{score:i,matched:r}}function wx(t,e){let o=t.trim();if(o==="")return e.map(r=>({path:r,score:0,matched:[]}));let n=[];for(let r of e){let s=Md(o,r);s&&n.push({path:r,score:s.score,matched:s.matched})}return n.sort((r,s)=>s.score-r.score||r.path.length-s.path.length||r.path.localeCompare(s.path)),n}var Ax=p(()=>{"use strict"});function C3(t){return t.replace(/\\ /g," ")}function O3(t){return t.includes("/")?!0:/\.[A-Za-z0-9]+$/.test(t)}function M3(t){let e=t.replace(/\.+$/,"");return{token:e,trimmed:t.length-e.length}}function fi(t){let e=[];for(let o of t.matchAll(R3)){let n=o[1],r=o[4],s=o[2]??o[3]??r,{token:i,trimmed:a}=r!==void 0?M3(s):{token:s,trimmed:0},l=C3(i);if(!O3(l))continue;let c=(o.index??0)+o[0].indexOf(n);e.push({path:l,start:c,end:c+n.length-a})}return e}function Ex(t,e){if(e.length===0)return t;let o=t;for(let n of[...e].sort((r,s)=>s.start-r.start))o=o.slice(0,n.start)+o.slice(n.end);return o.replace(/\s{2,}/g," ").trim()}var R3,JL=p(()=>{"use strict";R3=/(?:^|\s)(@(?:"([^"]+)"|'([^']+)'|((?:[\p{L}\p{N}._/-]|\\ )+)))/gu});function gp(t){let e=t.lastIndexOf("@");if(e<0)return null;let o=e>0?t[e-1]:" ";if(o!==" "&&o!==`
479
479
  `&&o!==" ")return null;let n=t.slice(e+1);return/\s/.test(n)?null:{at:e,query:n}}function Tx(t){let e=gp(t);return e?t.slice(0,e.at).replace(/\s+$/,""):t}var QL=p(()=>{"use strict"});import{relative as L3,sep as P3,isAbsolute as I3}from"node:path";var ZL,N3,Ld,eP=p(()=>{"use strict";N();ss();rp();ZL=16e3,N3=5*1024*1024,Ld=class{workspace;fs;maxChars;sniffBytes;constructor(e){this.workspace=e.workspace,this.fs=e.fs,this.maxChars=e.maxChars??ZL,this.sniffBytes=e.sniffBytes??N3}async attach(e,o={}){let n=e,r;try{r=this.workspace.resolveInside(e)}catch{return{kind:"rejected",path:n,reason:"caminho fora do workspace \u2014 recusado (o @ s\xF3 acessa a raiz do projeto)."}}let s=L3(this.workspace.root,r).split(P3).join("/");if(s===""||s.startsWith("..")||I3(s))return{kind:"rejected",path:n,reason:"caminho inv\xE1lido p/ o workspace."};let i=So(s);if(i.kind==="deny")return{kind:"rejected",path:s,reason:`bloqueado: ${i.why} \u2014 esse tipo de arquivo nunca \xE9 anexado ao contexto.`};if(i.kind==="ask"&&o.confirmSensitive!==!0)return{kind:"rejected",path:s,reason:`sens\xEDvel: ${i.why} \u2014 confirme explicitamente p/ anexar (fora do picker por padr\xE3o).`};try{if(await nL(r,this.sniffBytes))return{kind:"rejected",path:s,reason:"arquivo bin\xE1rio \u2014 n\xE3o anexado (conte\xFAdo n\xE3o \xE9 texto; evita lixo no contexto)."}}catch{}let a;try{a=await this.fs.readFile(s)}catch{return{kind:"rejected",path:s,reason:"n\xE3o foi poss\xEDvel ler o arquivo (sumiu/ileg\xEDvel)."}}let l=!1;return a.length>this.maxChars&&(a=a.slice(0,this.maxChars)+`
480
480
  [\u2026conte\xFAdo truncado: arquivo maior que ${this.maxChars} caracteres \u2014 s\xF3 o in\xEDcio foi anexado\u2026]`,l=!0),{kind:"ok",path:s,item:qT(s,a),truncated:l}}}});var Pd=p(()=>{"use strict";ss();Ax();JL();QL();eP()});function yp(t){return{kind:"deny",reason:t}}function D3(t,e){return t.kind==="approve-session"&&e.alwaysAsk===!0?{kind:"approve-once"}:t}var bp,tP=p(()=>{"use strict";bp=class{observer=null;current=null;timeoutMs;setTimeoutFn;clearTimeoutFn;nonInteractive=!1;constructor(e={}){this.timeoutMs=e.timeoutMs??0,this.setTimeoutFn=e.setTimeoutFn??setTimeout,this.clearTimeoutFn=e.clearTimeoutFn??clearTimeout}setNonInteractive(e){this.nonInteractive=e}subscribe(e){this.observer=e,e(this.current)}get pending(){return this.current}resolve(e,o){return this.nonInteractive?Promise.resolve(yp("sess\xE3o n\xE3o-interativa (sem TTY) \u2014 aprova\xE7\xE3o indispon\xEDvel")):o?.aborted?Promise.resolve(yp("cancelado antes da confirma\xE7\xE3o")):new Promise(n=>{let r=!1,s,i=c=>{r||(r=!0,s&&this.clearTimeoutFn(s),o&&o.removeEventListener("abort",a),this.current=null,this.notify(),n(c))},a=()=>{i(yp("confirma\xE7\xE3o cancelada (abort/Ctrl-C)"))},l=c=>{i(D3(c,e))};this.current={request:e,resolve:l},o&&o.addEventListener("abort",a,{once:!0}),this.timeoutMs>0&&(s=this.setTimeoutFn(()=>{i(yp("confirma\xE7\xE3o expirou sem resposta"))},this.timeoutMs),s.unref?.()),this.notify()})}notify(){this.observer?.(this.current)}}});function _x(t){return{kind:"unavailable",reason:t}}var vp,oP=p(()=>{"use strict";vp=class{observer=null;current=null;nonInteractive=!1;setNonInteractive(e){this.nonInteractive=e}subscribe(e){this.observer=e,e(this.current)}get pending(){return this.current}ask(e,o){return this.nonInteractive?Promise.resolve(_x("sess\xE3o n\xE3o-interativa (sem terminal)")):o?.aborted?Promise.resolve(_x("cancelado antes da pergunta")):new Promise(n=>{let r=!1,s=l=>{r||(r=!0,o&&o.removeEventListener("abort",i),this.current=null,this.notify(),n(l))},i=()=>{s(_x("pergunta cancelada (abort/Ctrl-C)"))},a=l=>s(l);this.current={spec:e,resolve:a},o&&o.addEventListener("abort",i,{once:!0}),this.notify()})}notify(){this.observer?.(this.current)}}});var kp,nP=p(()=>{"use strict";N();Hk();kp=class{client;opts;brokerSessionId;currentTier;nativeTools;customModel;customProvider;reasoningEffort;headroomRefusedWarned=!1;constructor(e){this.client=e.client,this.opts=e,this.brokerSessionId=e.sessionId,this.currentTier=e.tier,this.customModel=e.model,this.customProvider=e.tier==="custom"&&e.model!==void 0?e.provider:void 0,this.reasoningEffort=e.effort,this.nativeTools=e.nativeTools}attachNativeTools(e){this.nativeTools=e}setTier(e,o){this.currentTier=e,this.customModel=e==="custom"?o:void 0,this.customProvider=void 0}setProvider(e){this.customProvider=this.currentTier==="custom"&&this.customModel!==void 0?e:void 0}get tier(){return this.currentTier}get model(){return this.customModel}get provider(){return this.customProvider}setEffort(e){this.reasoningEffort=e}get effort(){return this.reasoningEffort}async call(e){let o=ep(),n=o===void 0?e:{...e,messages:await WM(e.messages,{baseUrl:o,...e.signal?{signal:e.signal}:{},onSavings:({before:r,after:s})=>{r>s&&process.stderr.write(`[headroom] mensagens comprimidas: ${r} \u2192 ${s} tokens (-${r-s})
481
481
  `)},onRefused:r=>{this.headroomRefusedWarned||(this.headroomRefusedWarned=!0,process.stderr.write(`[headroom] compress\xE3o DESLIGADA nesta sess\xE3o \u2014 ${r}. Rodando sem headroom (fail-open).
@@ -500,30 +500,30 @@ Controles do HUMANO (n\xE3o seus \u2014 voc\xEA \xE9 canal read-only): Ctrl+T ab
500
500
  `,{mode:384});return}let s=new Set(r.messages.map(c=>c.msg_id)),i=o.messages.filter(c=>!s.has(c.msg_id)),a=r.revoked!==o.revoked||r.ttlMs!==o.ttlMs,l=!await this.fileEndsWithNewline(this.filePath(e));if(a||l){let c=[...r.messages,...i],d=[Fx(o)];for(let u=0;u<c.length;u++)d.push(Bx(c[u],u+2));let m=d.join(`
501
501
  `)+`
502
502
  `;if(this.maxBytes>0&&Buffer.byteLength(m,"utf-8")>this.maxBytes)throw new Error(`limite de tamanho da sala excedido (${this.maxBytes} bytes). Evicte salas expiradas ou reduza o volume de mensagens.`);await Pe.writeFile(this.filePath(e),m,{mode:384})}else if(i.length>0){let c=r.messages.length+1,d="";for(let m=0;m<i.length;m++){let u=c+m+1;d+=Bx(i[m],u)+`
503
- `}if(this.maxBytes>0&&(await Pe.stat(this.filePath(e))).size+Buffer.byteLength(d,"utf-8")>this.maxBytes)throw new Error(`limite de tamanho da sala excedido (${this.maxBytes} bytes). Evicte salas expiradas ou reduza o volume de mensagens.`);await Pe.appendFile(this.filePath(e),d)}}finally{await this.releaseLock(e,n)}}async remove(e){try{return await Pe.unlink(this.filePath(e)),!0}catch(o){if(o.code==="ENOENT")return!1;throw o}}async evictDead(e){let o=e??Date.now(),n;try{n=await Pe.readdir(this.baseDir,{withFileTypes:!0})}catch(s){if(s.code==="ENOENT")return 0;throw s}let r=0;for(let s of n){if(!s.isFile()||!s.name.endsWith(".jsonl"))continue;let i=s.name.slice(0,-6);if(!/^[a-f0-9]{32}$/.test(i))continue;let a=$a.join(this.baseDir,s.name);try{let l=await Ap(a,i);(l.revoked||Ur(l,o))&&(await Pe.unlink(a),r+=1)}catch{try{await Pe.unlink(a),r+=1}catch{}}}return r}}});function CP(t){if(t.config.hooks.some(o=>o.event==="pre-tool"&&o.gate===!0))return async(o,n)=>{let r=Wb(t.config,o.name);if(r.length===0)return{blocked:!1};let s=await t.runner.runGate(r,n);return s.blocked?{blocked:!0,observation:`A tool "${o.name}" foi VETADA por um hook de pre-tool (gate) \u2014 isto N\xC3O \xE9 um erro t\xE9cnico nem um bloqueio da catraca: a pol\xEDtica do dono (hook \`${s.command}\`) decidiu barrar esta chamada (o hook terminou com c\xF3digo de sa\xEDda \u2260 0). N\xC3O repita a mesma chamada \u2014 siga por outro caminho. Sa\xEDda do hook (DADO): ${u6(s.observation)}`}:{blocked:!1}}}function u6(t){return typeof t.text=="string"?t.text:""}var OP=p(()=>{"use strict";N()});function LP(t={}){let e=t.env??process.env,o=ko(e),n=t.store??new Kt,r=new Wt({baseUrl:o.identityBaseUrl,clientId:gk,store:n,...t.identityFetch?{fetch:t.identityFetch}:{}},{envToken:()=>e.ALUY_TOKEN}),s=Vo(e),i=t.brokerClient??Kl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),a=t.catalogClient??Yl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),l=t.customModelClient??Vl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),c=t.providersClient??Xl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),d=t.quotaClient??by({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),m=t.mode??(t.unsafe?"unsafe":"normal"),u=m==="unsafe",h=new Yt({...t.workspaceRoot!==void 0?{root:t.workspaceRoot}:{},...u?{unconfined:!0}:{}}),g=t.sessionId??ea(),y=new gd({sessionId:g,...t.journalBaseDir!==void 0?{baseDir:t.journalBaseDir}:{}});y.gcOrphans();let b=new Cc({store:y,workspace:h,restoreWriter:new bd({workspace:h}),currentReader:new vd({workspace:h})}),w=new Oc({journal:b}),T=new cs({workspace:h}),E=new ai(t.egressAllow!==void 0?{allow:t.egressAllow}:{}),L=iv(e.ALUY_WEB_FETCH_MAX_CHARS),B=Ok({egress:E,policy:{maxObservationChars:L,...u?{allowInternalHosts:!0}:{}}}),j=new ri({workspace:h,...t.memoryBaseDir!==void 0?{baseDir:t.memoryBaseDir}:{}}),z=new Ks({store:j}),V=new yd({...t.todoBaseDir!==void 0?{baseDir:t.todoBaseDir}:{},sessionId:g}),I=process.env.ALUY_SANDBOX_BASH?np():void 0,J=new vp,Q=new ji,K={fs:T,shell:new md({workspace:h,timeoutMs:m6,...I?{sandboxLauncher:I}:{},egressAllows:U=>{let k=E.inspect(U);return k.hasNetwork&&!k.outsideAllowlist}}),search:new fd({workspace:h}),journal:b.toolPort,web:B,cwd:h,memory:{remember:(U,k,Xe)=>z.remember(U,k,Xe),searchFacts:(U,k)=>z.searchFacts(U,k)},todo:V,question:J,graph:Q},D=new pd({workspace:h}),X=new Ld({workspace:h,fs:T}),Oe=new to({mode:m,diffPreview:(U,k,Xe)=>Xe!==void 0?sa(U,Xe,k,!0):sa(U,"",k,!1),...t.maxMemoryWritesPerSession!==void 0?{maxMemoryWritesPerSession:t.maxMemoryWritesPerSession}:{}}),Y=new bp(t.askTimeoutMs!==void 0?{timeoutMs:t.askTimeoutMs}:{}),ce=(t.hooksConfigStore??new Cd({workspaceRoot:t.workspaceRoot??process.cwd()})).load(),O=new _c({permission:Oe,ports:K,askResolver:Y}),se=CP({runner:O,config:ce}),de=t.tier??Jo,ye=Uf(de,e,void 0,t.context?.window),Z=de==="custom"?t.model:void 0,te=Z!==void 0?t.provider:void 0,Me=t.effort,pt=(t.effectiveBackend!=="local"?(t.localBudget===!1&&t.onConfigWarn?.("aluy: budget OFF n\xE3o se aplica ao backend broker \u2014 o or\xE7amento de sess\xE3o est\xE1 SEMPRE ativo no broker. Use --backend local para deslig\xE1-lo (BYO)."),!0):t.localBudget!==!1)?{...bo,maxIterations:Yu(t.maxIterations,e.ALUY_MAX_ITERATIONS,t.limits?.maxIterations),maxTokens:Ku(t.maxTokens,e.ALUY_MAX_TOKENS,t.limits?.maxTokens)}:{maxIterations:1e4,maxToolCalls:1e4*2},at=qA(t.maxOutputTokens,e.ALUY_MAX_OUTPUT_TOKENS,t.limits?.maxOutputTokens,t.onConfigWarn),At=Ny({flag:t.selfCheck,env:e.ALUY_SELF_CHECK,tier:de,everyKEnv:e.ALUY_SELF_CHECK_EVERY,maxVerificationsEnv:e.ALUY_SELF_CHECK_MAX}),dt={cwd:h.cwd,tier:de,...Z!==void 0?{model:Z}:{},...t.effectiveBackend!==void 0?{backend:t.effectiveBackend}:{},tokens:0,windowPct:0},ht=null,F=new kp({client:i,tier:de,...Z!==void 0?{model:Z}:{},...te!==void 0?{provider:te}:{},...Me!==void 0?{effort:Me}:{},...at!==void 0?{maxTokens:at}:{},sink:{onStart:()=>ht?.sink.onStart?.(),onDelta:U=>ht?.sink.onDelta(U),onUsage:U=>ht?.sink.onUsage?.(U),onQuota:U=>ht?.sink.onQuota?.(U),onDone:()=>ht?.sink.onDone?.()}}),W=new Ln({client:i,tier:de,tierSource:F,maxTokens:af}),Be=new Ln({client:i,tier:de,tierSource:F,maxTokens:2048}),ue=t.subAgents?.enabled?new Ln({client:i,tier:de,tierSource:F,...at!==void 0?{maxTokens:at}:{}}):void 0,xe=new Map,Ze,tr=t.subAgents?.enabled?U=>{let k=xe.get(U);if(k)return k;let Xe=new Ln({client:i,tier:U,...at!==void 0?{maxTokens:at}:{}});return Ze&&Xe.attachNativeTools(Ze),xe.set(U,Xe),Xe}:void 0,Ro=ov(e.ALUY_ROOM_BACKEND,t.roomsBackend);Ro.warning&&t.onConfigWarn&&t.onConfigWarn(Ro.warning);let Uo=(()=>{switch(Ro.backend){case"memory":return new yr;case"file":return new Ep;case"loopback":case"broker":throw new Error(`Room backend "${Ro.backend}" n\xE3o implementado ainda. Use "memory" ou "file", ou deixe o default.`);default:return new yr}})(),oe=new wp({model:F,compactionModel:W,sideQueryModel:Be,permission:Oe,roomStore:Uo,ports:K,askResolver:Y,questionResolver:J,...se?{preToolGate:se}:{},..._t(ce,"user-prompt-submit").length>0?{onUserPromptSubmit:()=>{O.runAll(_t(ce,"user-prompt-submit"))}}:{},meta:dt,limits:pt,...At.enabled?{selfCheck:At}:{},...t.autoCompactAt!==void 0?{autoCompactAt:t.autoCompactAt}:{},...t.context?{contextConfig:t.context}:{},contextWindow:ye,...t.projectInstructions!==void 0?{projectInstructions:t.projectInstructions}:{},...t.availableAgents!==void 0?{availableAgents:t.availableAgents}:{},...t.sessionCommands!==void 0?{sessionCommands:t.sessionCommands}:{},...t.mcpTools!==void 0?{mcpTools:t.mcpTools}:{},...(()=>{let U=ep(e);return U!==void 0?{headroomRetrieveTool:GM({baseUrl:U})}:{}})(),...t.subAgents?.enabled?{subAgents:{...t.subAgents,..._t(ce,"subagent-stop").length>0?{observer:{onChildEnd:()=>{O.runAll(_t(ce,"subagent-stop"))}}}:{}}}:{},...t.subAgents?.enabled&&t.agentRegistry?{agentRegistry:t.agentRegistry}:{},...ue?{subAgentModel:ue}:{},...tr?{callerForTier:tr}:{},disableNativeTools:e.ALUY_NATIVE_TOOLS_OFF==="1"||e.ALUY_NATIVE_TOOLS_OFF==="true",watchdogEnv:e,quotaFetcher:()=>d.fetchQuota(),...t.memoryMonitor!==void 0?{memory:{heapLimitMb:t.memoryMonitor.heapLimitMb,sampleHeapUsed:t.memoryMonitor.sampleHeapUsed,env:e,...t.memoryMonitor.sampleIntervalMs!==void 0?{sampleIntervalMs:t.memoryMonitor.sampleIntervalMs}:{}}}:{},onUserPrompt:(U,k)=>{w.markPrompt(U,k)},...(()=>{let U=zf({env:e,...t.services?{services:t.services}:{}});if(!U)return{};let k=SM(e);return k?{maestro:U,continuationConfig:k}:{maestro:U}})(),...(()=>{let U=xM({env:e,...t.services?{services:t.services}:{}});return U?{memoryEngine:U.memory,memoryScope:U.memoryScope,memoryRecallScopes:U.memoryRecallScopes}:{}})(),onToolsReady:U=>{F.attachNativeTools(U),ue?.attachNativeTools(U),Ze=U;for(let k of xe.values())k.attachNativeTools(U)}});return ht=oe,{controller:oe,login:r,engine:Oe,egress:E,workspace:h,askResolver:Y,questionResolver:J,journal:b,journalStore:y,checkpoints:w,fileIndex:D,attachReader:X,catalogClient:a,customModelClient:l,providersClient:c,quotaClient:d,ports:K,memory:z,todoStore:V,hookRunner:O,hooksConfig:ce}}var Jo,m6,Dd=p(()=>{"use strict";N();rs();ni();Hk();zM();Bn();zk();Od();Pd();tP();oP();nP();$x();Od();RP();OP();N();_r();Dk();Jo="aluy-flux",m6=12e4});var IP={};ut(IP,{runDoctor:()=>f6});async function f6(t={}){let e=t.io??zt(),o=t.env??process.env,n=t.json===!0,r=t.probe??p6(o,t.deep===!0),s=r.tierTester!==void 0;if(!n){e.out("aluy doctor \u2014 diagn\xF3stico"),e.out("");for(let h of Yf(s))e.out(`\u25F7 ${h.label}: testando\u2026`);let c={...r,onCheck:(h,g)=>{let y=Vf(h,g);if(!y)return;let b=y.status==="ok"?dd.ok:y.status==="warn"?dd.warn:dd.fail;e.out(`${b} ${y.label}: ${y.detail}`),y.status!=="ok"&&y.fix!==void 0&&e.out(` \u2192 ${y.fix}`)}},d=await ad(c),m=cd(d),u=HM(m,dd);return e.out(""),e.out(u[u.length-1]??""),Bk(m)?1:0}let i=await ad(r),a=cd(i),l=a.checks.map(c=>({id:c.id,status:c.status,label:c.label,detail:c.detail}));return e.out(JSON.stringify(l)),Bk(a)?1:0}function p6(t,e){return{env:t,getAccessToken:()=>h6(t),memory:y6(),makeMcpTransport:()=>new Tr({cwd:process.cwd(),parentEnv:t}),...e?{tierTester:()=>Qf({tier:g6(),login:PP(t),env:t})}:{}}}function PP(t){let e=ko(t),o=new Kt;return new Wt({...e,baseUrl:e.identityBaseUrl,store:o})}function h6(t){return PP(t).getAccessToken()}function g6(){try{let t=new ot({}).load();return Kc(void 0,t,Jo)}catch{return Jo}}function y6(){return{async count(){try{let t=new Yt({}),e=new ri({workspace:t});return(await new Ks({store:e}).list()).length}catch{return null}}}}var NP=p(()=>{"use strict";N();wr();rs();Bn();_a();wk();td();Fk();Jf();qM();Uk();Yo();Dd()});var $P={};ut($P,{defaultUserAgentsDir:()=>x6,runAgents:()=>k6});import{homedir as b6}from"node:os";import{join as DP}from"node:path";function v6(){return DP("~",".aluy",rd)}function k6(t={}){let e=t.out??(a=>process.stdout.write(a+`
504
- `)),o=t.loadGlobal??(()=>new Cr().load()),n=t.loadProject??(()=>new di({workspace:new Yt}).load()),r=o(),s=n(),i=yc({profiles:[...r.profiles,...s.profiles],errors:[...r.errors,...s.errors],globalDir:t.globalDir??v6()});e(i.title==="agents"?"aluy agents \u2014 perfis .md mapeados":i.title);for(let a of i.lines)e(a);return 0}function x6(){return DP(b6(),".aluy",rd)}var FP=p(()=>{"use strict";N();qf();hx();_a()});var UP={};ut(UP,{defaultUserSkillsDir:()=>E6,runSkills:()=>A6});import{homedir as S6}from"node:os";import{join as BP}from"node:path";function w6(){return BP("~",".aluy",_d)}function A6(t={}){let e=t.out??(a=>process.stdout.write(a+`
505
- `)),o=t.loadGlobal??(()=>new ui().load()),n=t.loadProject??(()=>new mi({workspace:new Yt}).load()),r=o(),s=n(),i=kc({skills:[...r.skills,...s.skills],errors:[...r.errors,...s.errors],globalDir:t.globalDir??w6()});e("aluy skills \u2014 capacidades SKILL.md mapeadas");for(let a of i.lines)e(a);return 0}function E6(){return BP(S6(),".aluy",_d)}var jP=p(()=>{"use strict";N();hp();xx();_a()});var qP={};ut(qP,{defaultUserWorkflowsDir:()=>C6,runWorkflows:()=>R6});import{homedir as T6}from"node:os";import{join as HP}from"node:path";function _6(){return HP("~",".aluy",Na)}function R6(t={}){let e=t.out??(a=>process.stdout.write(a+`
506
- `)),o=t.loadGlobal??(()=>new ds().load()),n=t.loadProject??(()=>new us({workspace:new Yt}).load()),r=o(),s=n(),i=wc({workflows:[...r.workflows,...s.workflows],errors:[...r.errors,...s.errors],globalDir:t.globalDir??_6(),projectDir:t.projectDir??".claude/workflows"});e("workflows \u2014 fluxos .md mapeados");for(let a of i.lines)e(a);return 0}function C6(){return HP(T6(),".aluy",Na)}var WP=p(()=>{"use strict";N();Ed();Td();_a()});import{createHash as O6}from"node:crypto";import{spawn as M6,spawnSync as no}from"node:child_process";import{existsSync as rt,mkdirSync as Wx,chmodSync as pi,writeFileSync as L6,readFileSync as XP,rmSync as P6,copyFileSync as jx,symlinkSync as I6,unlinkSync as N6,realpathSync as GP}from"node:fs";import{join as ve,dirname as D6}from"node:path";import{homedir as Tp,userInfo as $6}from"node:os";import{fileURLToPath as F6}from"node:url";function Qo(){return ve(Tp(),JP)}function Gx(){let t=Qo();rt(t)||Wx(t,{mode:Fa,recursive:!0});try{pi(t,Fa)}catch{}return t}function U6(t){let e=Gx(),o=ve(e,t);rt(o)||Wx(o,{mode:Fa});try{pi(o,Fa)}catch{}return o}function zP(t){return O6("sha256").update(t).digest("hex")}function zx(){try{let t=no("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 QP(){try{return no("zstd",["--version"],{timeout:1e4}).status===0}catch{return!1}}function ZP(){try{return no("tar",["--version"],{timeout:1e4}).status===0}catch{return!1}}function $d(t){try{return no(t,["-m","pip","--version"],{timeout:15e3}).status===0}catch{return!1}}async function j6(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?"":`
503
+ `}if(this.maxBytes>0&&(await Pe.stat(this.filePath(e))).size+Buffer.byteLength(d,"utf-8")>this.maxBytes)throw new Error(`limite de tamanho da sala excedido (${this.maxBytes} bytes). Evicte salas expiradas ou reduza o volume de mensagens.`);await Pe.appendFile(this.filePath(e),d)}}finally{await this.releaseLock(e,n)}}async remove(e){try{return await Pe.unlink(this.filePath(e)),!0}catch(o){if(o.code==="ENOENT")return!1;throw o}}async evictDead(e){let o=e??Date.now(),n;try{n=await Pe.readdir(this.baseDir,{withFileTypes:!0})}catch(s){if(s.code==="ENOENT")return 0;throw s}let r=0;for(let s of n){if(!s.isFile()||!s.name.endsWith(".jsonl"))continue;let i=s.name.slice(0,-6);if(!/^[a-f0-9]{32}$/.test(i))continue;let a=$a.join(this.baseDir,s.name);try{let l=await Ap(a,i);(l.revoked||Ur(l,o))&&(await Pe.unlink(a),r+=1)}catch{try{await Pe.unlink(a),r+=1}catch{}}}return r}}});function CP(t){if(t.config.hooks.some(o=>o.event==="pre-tool"&&o.gate===!0))return async(o,n)=>{let r=Wb(t.config,o.name);if(r.length===0)return{blocked:!1};let s=await t.runner.runGate(r,n);return s.blocked?{blocked:!0,observation:`A tool "${o.name}" foi VETADA por um hook de pre-tool (gate) \u2014 isto N\xC3O \xE9 um erro t\xE9cnico nem um bloqueio da catraca: a pol\xEDtica do dono (hook \`${s.command}\`) decidiu barrar esta chamada (o hook terminou com c\xF3digo de sa\xEDda \u2260 0). N\xC3O repita a mesma chamada \u2014 siga por outro caminho. Sa\xEDda do hook (DADO): ${u6(s.observation)}`}:{blocked:!1}}}function u6(t){return typeof t.text=="string"?t.text:""}var OP=p(()=>{"use strict";N()});function LP(t={}){let e=t.env??process.env,o=ko(e),n=t.store??new Kt,r=new Wt({baseUrl:o.identityBaseUrl,clientId:gk,store:n,...t.identityFetch?{fetch:t.identityFetch}:{}},{envToken:()=>e.ALUY_TOKEN}),s=Vo(e),i=t.brokerClient??Kl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),a=t.catalogClient??Yl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),l=t.customModelClient??Vl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),c=t.providersClient??Xl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),d=t.quotaClient??by({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),m=t.mode??(t.unsafe?"unsafe":"normal"),u=m==="unsafe",h=new Yt({...t.workspaceRoot!==void 0?{root:t.workspaceRoot}:{},...u?{unconfined:!0}:{}}),g=t.sessionId??ea(),y=new gd({sessionId:g,...t.journalBaseDir!==void 0?{baseDir:t.journalBaseDir}:{}});y.gcOrphans();let b=new Cc({store:y,workspace:h,restoreWriter:new bd({workspace:h}),currentReader:new vd({workspace:h})}),w=new Oc({journal:b}),T=new cs({workspace:h}),E=new ai(t.egressAllow!==void 0?{allow:t.egressAllow}:{}),L=iv(e.ALUY_WEB_FETCH_MAX_CHARS),B=Ok({egress:E,policy:{maxObservationChars:L,...u?{allowInternalHosts:!0}:{}}}),j=new ri({workspace:h,...t.memoryBaseDir!==void 0?{baseDir:t.memoryBaseDir}:{}}),z=new Ks({store:j}),V=new yd({...t.todoBaseDir!==void 0?{baseDir:t.todoBaseDir}:{},sessionId:g}),I=process.env.ALUY_SANDBOX_BASH?np():void 0,J=new vp,Q=new ji,K={fs:T,shell:new md({workspace:h,timeoutMs:m6,...I?{sandboxLauncher:I}:{},egressAllows:U=>{let k=E.inspect(U);return k.hasNetwork&&!k.outsideAllowlist}}),search:new fd({workspace:h}),journal:b.toolPort,web:B,cwd:h,memory:{remember:(U,k,Xe)=>z.remember(U,k,Xe),searchFacts:(U,k)=>z.searchFacts(U,k)},todo:V,question:J,graph:Q},D=new pd({workspace:h}),X=new Ld({workspace:h,fs:T}),Oe=new to({mode:m,diffPreview:(U,k,Xe)=>Xe!==void 0?sa(U,Xe,k,!0):sa(U,"",k,!1),...t.maxMemoryWritesPerSession!==void 0?{maxMemoryWritesPerSession:t.maxMemoryWritesPerSession}:{}}),Y=new bp(t.askTimeoutMs!==void 0?{timeoutMs:t.askTimeoutMs}:{}),ce=(t.hooksConfigStore??new Cd({workspaceRoot:t.workspaceRoot??process.cwd()})).load(),O=new _c({permission:Oe,ports:K,askResolver:Y}),se=CP({runner:O,config:ce}),de=t.tier??Jo,ye=Uf(de,e,void 0,t.context?.window),Z=de==="custom"?t.model:void 0,te=Z!==void 0?t.provider:void 0,Me=t.effort,pt=(t.effectiveBackend!=="local"?(t.localBudget===!1&&t.onConfigWarn?.("aluy: budget OFF n\xE3o se aplica ao backend broker \u2014 o or\xE7amento de sess\xE3o est\xE1 SEMPRE ativo no broker. Use --backend local para deslig\xE1-lo (BYO)."),!0):t.localBudget!==!1)?{...bo,maxIterations:Yu(t.maxIterations,e.ALUY_MAX_ITERATIONS,t.limits?.maxIterations),maxTokens:Ku(t.maxTokens,e.ALUY_MAX_TOKENS,t.limits?.maxTokens)}:{maxIterations:1e4,maxToolCalls:1e4*2},it=qA(t.maxOutputTokens,e.ALUY_MAX_OUTPUT_TOKENS,t.limits?.maxOutputTokens,t.onConfigWarn),At=Ny({flag:t.selfCheck,env:e.ALUY_SELF_CHECK,tier:de,everyKEnv:e.ALUY_SELF_CHECK_EVERY,maxVerificationsEnv:e.ALUY_SELF_CHECK_MAX}),ct={cwd:h.cwd,tier:de,...Z!==void 0?{model:Z}:{},...t.effectiveBackend!==void 0?{backend:t.effectiveBackend}:{},tokens:0,windowPct:0},ht=null,F=new kp({client:i,tier:de,...Z!==void 0?{model:Z}:{},...te!==void 0?{provider:te}:{},...Me!==void 0?{effort:Me}:{},...it!==void 0?{maxTokens:it}:{},sink:{onStart:()=>ht?.sink.onStart?.(),onDelta:U=>ht?.sink.onDelta(U),onUsage:U=>ht?.sink.onUsage?.(U),onQuota:U=>ht?.sink.onQuota?.(U),onDone:()=>ht?.sink.onDone?.()}}),W=new Ln({client:i,tier:de,tierSource:F,maxTokens:af}),Be=new Ln({client:i,tier:de,tierSource:F,maxTokens:2048}),ue=t.subAgents?.enabled?new Ln({client:i,tier:de,tierSource:F,...it!==void 0?{maxTokens:it}:{}}):void 0,xe=new Map,Ze,tr=t.subAgents?.enabled?U=>{let k=xe.get(U);if(k)return k;let Xe=new Ln({client:i,tier:U,...it!==void 0?{maxTokens:it}:{}});return Ze&&Xe.attachNativeTools(Ze),xe.set(U,Xe),Xe}:void 0,Ro=ov(e.ALUY_ROOM_BACKEND,t.roomsBackend);Ro.warning&&t.onConfigWarn&&t.onConfigWarn(Ro.warning);let Uo=(()=>{switch(Ro.backend){case"memory":return new yr;case"file":return new Ep;case"loopback":case"broker":throw new Error(`Room backend "${Ro.backend}" n\xE3o implementado ainda. Use "memory" ou "file", ou deixe o default.`);default:return new yr}})(),oe=new wp({model:F,compactionModel:W,sideQueryModel:Be,permission:Oe,roomStore:Uo,ports:K,askResolver:Y,questionResolver:J,...se?{preToolGate:se}:{},..._t(ce,"user-prompt-submit").length>0?{onUserPromptSubmit:()=>{O.runAll(_t(ce,"user-prompt-submit"))}}:{},meta:ct,limits:pt,...At.enabled?{selfCheck:At}:{},...t.autoCompactAt!==void 0?{autoCompactAt:t.autoCompactAt}:{},...t.context?{contextConfig:t.context}:{},contextWindow:ye,...t.projectInstructions!==void 0?{projectInstructions:t.projectInstructions}:{},...t.availableAgents!==void 0?{availableAgents:t.availableAgents}:{},...t.sessionCommands!==void 0?{sessionCommands:t.sessionCommands}:{},...t.mcpTools!==void 0?{mcpTools:t.mcpTools}:{},...(()=>{let U=ep(e);return U!==void 0?{headroomRetrieveTool:GM({baseUrl:U})}:{}})(),...t.subAgents?.enabled?{subAgents:{...t.subAgents,..._t(ce,"subagent-stop").length>0?{observer:{onChildEnd:()=>{O.runAll(_t(ce,"subagent-stop"))}}}:{}}}:{},...t.subAgents?.enabled&&t.agentRegistry?{agentRegistry:t.agentRegistry}:{},...ue?{subAgentModel:ue}:{},...tr?{callerForTier:tr}:{},disableNativeTools:e.ALUY_NATIVE_TOOLS_OFF==="1"||e.ALUY_NATIVE_TOOLS_OFF==="true",watchdogEnv:e,quotaFetcher:()=>d.fetchQuota(),...t.memoryMonitor!==void 0?{memory:{heapLimitMb:t.memoryMonitor.heapLimitMb,sampleHeapUsed:t.memoryMonitor.sampleHeapUsed,env:e,...t.memoryMonitor.sampleIntervalMs!==void 0?{sampleIntervalMs:t.memoryMonitor.sampleIntervalMs}:{}}}:{},onUserPrompt:(U,k)=>{w.markPrompt(U,k)},...(()=>{let U=zf({env:e,...t.services?{services:t.services}:{}});if(!U)return{};let k=SM(e);return k?{maestro:U,continuationConfig:k}:{maestro:U}})(),...(()=>{let U=xM({env:e,...t.services?{services:t.services}:{}});return U?{memoryEngine:U.memory,memoryScope:U.memoryScope,memoryRecallScopes:U.memoryRecallScopes}:{}})(),onToolsReady:U=>{F.attachNativeTools(U),ue?.attachNativeTools(U),Ze=U;for(let k of xe.values())k.attachNativeTools(U)}});return ht=oe,{controller:oe,login:r,engine:Oe,egress:E,workspace:h,askResolver:Y,questionResolver:J,journal:b,journalStore:y,checkpoints:w,fileIndex:D,attachReader:X,catalogClient:a,customModelClient:l,providersClient:c,quotaClient:d,ports:K,memory:z,todoStore:V,hookRunner:O,hooksConfig:ce}}var Jo,m6,Dd=p(()=>{"use strict";N();rs();ni();Hk();zM();Bn();zk();Od();Pd();tP();oP();nP();$x();Od();RP();OP();N();_r();Dk();Jo="aluy-flux",m6=12e4});var IP={};dt(IP,{runDoctor:()=>f6});async function f6(t={}){let e=t.io??zt(),o=t.env??process.env,n=t.json===!0,r=t.probe??p6(o,t.deep===!0),s=r.tierTester!==void 0;if(!n){e.out("aluy doctor \u2014 diagn\xF3stico"),e.out("");for(let h of Yf(s))e.out(`\u25F7 ${h.label}: testando\u2026`);let c={...r,onCheck:(h,g)=>{let y=Vf(h,g);if(!y)return;let b=y.status==="ok"?dd.ok:y.status==="warn"?dd.warn:dd.fail;e.out(`${b} ${y.label}: ${y.detail}`),y.status!=="ok"&&y.fix!==void 0&&e.out(` \u2192 ${y.fix}`)}},d=await ad(c),m=cd(d),u=HM(m,dd);return e.out(""),e.out(u[u.length-1]??""),Bk(m)?1:0}let i=await ad(r),a=cd(i),l=a.checks.map(c=>({id:c.id,status:c.status,label:c.label,detail:c.detail}));return e.out(JSON.stringify(l)),Bk(a)?1:0}function p6(t,e){return{env:t,getAccessToken:()=>h6(t),memory:y6(),makeMcpTransport:()=>new Tr({cwd:process.cwd(),parentEnv:t}),...e?{tierTester:()=>Qf({tier:g6(),login:PP(t),env:t})}:{}}}function PP(t){let e=ko(t),o=new Kt;return new Wt({...e,baseUrl:e.identityBaseUrl,store:o})}function h6(t){return PP(t).getAccessToken()}function g6(){try{let t=new ot({}).load();return Kc(void 0,t,Jo)}catch{return Jo}}function y6(){return{async count(){try{let t=new Yt({}),e=new ri({workspace:t});return(await new Ks({store:e}).list()).length}catch{return null}}}}var NP=p(()=>{"use strict";N();wr();rs();Bn();_a();wk();td();Fk();Jf();qM();Uk();Yo();Dd()});var $P={};dt($P,{defaultUserAgentsDir:()=>x6,runAgents:()=>k6});import{homedir as b6}from"node:os";import{join as DP}from"node:path";function v6(){return DP("~",".aluy",rd)}function k6(t={}){let e=t.out??(a=>process.stdout.write(a+`
504
+ `)),o=t.loadGlobal??(()=>new Cr().load()),n=t.loadProject??(()=>new di({workspace:new Yt}).load()),r=o(),s=n(),i=yc({profiles:[...r.profiles,...s.profiles],errors:[...r.errors,...s.errors],globalDir:t.globalDir??v6()});e(i.title==="agents"?"aluy agents \u2014 perfis .md mapeados":i.title);for(let a of i.lines)e(a);return 0}function x6(){return DP(b6(),".aluy",rd)}var FP=p(()=>{"use strict";N();qf();hx();_a()});var UP={};dt(UP,{defaultUserSkillsDir:()=>E6,runSkills:()=>A6});import{homedir as S6}from"node:os";import{join as BP}from"node:path";function w6(){return BP("~",".aluy",_d)}function A6(t={}){let e=t.out??(a=>process.stdout.write(a+`
505
+ `)),o=t.loadGlobal??(()=>new ui().load()),n=t.loadProject??(()=>new mi({workspace:new Yt}).load()),r=o(),s=n(),i=kc({skills:[...r.skills,...s.skills],errors:[...r.errors,...s.errors],globalDir:t.globalDir??w6()});e("aluy skills \u2014 capacidades SKILL.md mapeadas");for(let a of i.lines)e(a);return 0}function E6(){return BP(S6(),".aluy",_d)}var jP=p(()=>{"use strict";N();hp();xx();_a()});var qP={};dt(qP,{defaultUserWorkflowsDir:()=>C6,runWorkflows:()=>R6});import{homedir as T6}from"node:os";import{join as HP}from"node:path";function _6(){return HP("~",".aluy",Na)}function R6(t={}){let e=t.out??(a=>process.stdout.write(a+`
506
+ `)),o=t.loadGlobal??(()=>new ds().load()),n=t.loadProject??(()=>new us({workspace:new Yt}).load()),r=o(),s=n(),i=wc({workflows:[...r.workflows,...s.workflows],errors:[...r.errors,...s.errors],globalDir:t.globalDir??_6(),projectDir:t.projectDir??".claude/workflows"});e("workflows \u2014 fluxos .md mapeados");for(let a of i.lines)e(a);return 0}function C6(){return HP(T6(),".aluy",Na)}var WP=p(()=>{"use strict";N();Ed();Td();_a()});import{createHash as O6}from"node:crypto";import{spawn as M6,spawnSync as no}from"node:child_process";import{existsSync as ut,mkdirSync as Wx,chmodSync as pi,writeFileSync as L6,readFileSync as XP,rmSync as P6,copyFileSync as jx,symlinkSync as I6,unlinkSync as N6,realpathSync as GP}from"node:fs";import{join as ve,dirname as D6}from"node:path";import{homedir as Tp,userInfo as $6}from"node:os";import{fileURLToPath as F6}from"node:url";function Qo(){return ve(Tp(),JP)}function Gx(){let t=Qo();ut(t)||Wx(t,{mode:Fa,recursive:!0});try{pi(t,Fa)}catch{}return t}function U6(t){let e=Gx(),o=ve(e,t);ut(o)||Wx(o,{mode:Fa});try{pi(o,Fa)}catch{}return o}function zP(t){return O6("sha256").update(t).digest("hex")}function zx(){try{let t=no("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 QP(){try{return no("zstd",["--version"],{timeout:1e4}).status===0}catch{return!1}}function ZP(){try{return no("tar",["--version"],{timeout:1e4}).status===0}catch{return!1}}function $d(t){try{return no(t,["-m","pip","--version"],{timeout:15e3}).status===0}catch{return!1}}async function j6(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?"":`
507
507
  `}`)}}else process.stderr.write(`${l?"\r":""} baixando ${e}... ${m} MB${l?"":`
508
508
  `}`)}return l&&process.stderr.write(`
509
- `),Buffer.concat(s)}async function H6(t,e){let o=ve(e,t.label);if(rt(o)){let i=q6(o),a=zP(i);if(gf(a,t.sha256))return o;P6(o,{force:!0})}let n=await fetch(t.url);if(!n.ok)throw new Error(`Download falhou: HTTP ${n.status} \u2014 ${t.url}`);let r=await j6(n,t.label),s=zP(r);if(!gf(s,t.sha256))throw new Error(`HASH DIVERGENTE para "${t.label}"!
509
+ `),Buffer.concat(s)}async function H6(t,e){let o=ve(e,t.label);if(ut(o)){let i=q6(o),a=zP(i);if(gf(a,t.sha256))return o;P6(o,{force:!0})}let n=await fetch(t.url);if(!n.ok)throw new Error(`Download falhou: HTTP ${n.status} \u2014 ${t.url}`);let r=await j6(n,t.label),s=zP(r);if(!gf(s,t.sha256))throw new Error(`HASH DIVERGENTE para "${t.label}"!
510
510
  Esperado: ${t.sha256}
511
511
  Obtido: ${s}
512
- ABORTANDO instala\xE7\xE3o deste alvo (CLI-SEC-H2).`);return L6(o,r,{mode:B6}),o}function q6(t){return XP(t)}function Hx(){let t=D6(F6(import.meta.url)),e=[ve(t,"..","..","assets","mem0",Mr),ve(t,"..","..","..","assets","mem0",Mr)];for(let o of e)if(rt(o))return o;return e[0]}async function W6(){let t=U6(Qr),e=ve(t,"bin"),o=ve(e,"ollama"),n={url:wv,sha256:Sv,label:hf},r;try{r=await H6(n,t)}catch(i){return{target:"ollama",hashOk:!1,installed:!1,message:`Falha no download/verifica\xE7\xE3o do Ollama: ${i instanceof Error?i.message:String(i)}`}}if(!QP())return{target:"ollama",hashOk:!0,installed:!1,message:"zstd n\xE3o encontrado \u2014 necess\xE1rio para extrair .tar.zst. Instale: apt install zstd"};if(!ZP())return{target:"ollama",hashOk:!0,installed:!1,message:"tar n\xE3o encontrado \u2014 necess\xE1rio para extrair o bin\xE1rio."};if(!rt(o)){let i=no("tar",["--use-compress-program=zstd","-xf",r,"-C",t],{timeout:6e4,encoding:"utf8"});if(i.status!==0)return{target:"ollama",hashOk:!0,installed:!1,message:`Falha ao extrair bin\xE1rio do Ollama: ${i.stderr||i.stdout||"erro desconhecido"}`};try{pi(o,448)}catch{}}if(!rt(o))return{target:"ollama",hashOk:!0,installed:!1,message:"Bin\xE1rio do Ollama extra\xEDdo mas execut\xE1vel n\xE3o encontrado."};let s=await K6(o,e);return s.ok?{target:"ollama",hashOk:!0,installed:!0,message:`Ollama ${pf} provisionado em ${t} com pesos verificados (${gn} + ${Xs}).`}:{target:"ollama",hashOk:!0,installed:!1,message:s.message}}function G6(t,e,o){let n=t?.layers;if(!Array.isArray(n)||n.length===0)return`Manifest de "${o}" n\xE3o cont\xE9m layers.`;let r=n.filter(i=>i?.mediaType===KP);if(r.length===0)return`Manifest de "${o}" sem layer de peso (${KP}).`;if(r.length>1)return`Manifest de "${o}" tem ${r.length} layers de peso (model) \u2014 AMB\xCDGUO: um registry honesto serve EXATAMENTE uma; >1 indica adultera\xE7\xE3o e n\xE3o d\xE1 p/ garantir qual o ollama carrega \u2014 ABORTANDO (CLI-SEC-H2).`;let s=r[0];return s.digest!==e?`DIGEST DIVERGENTE para "${o}"! A layer de peso (model) tem "${String(s.digest)}", esperado "${e}" \u2014 ABORTANDO (CLI-SEC-H2).`:null}function z6(t){let e=t.lastIndexOf(":");return e===-1?{name:t,tag:"latest"}:{name:t.substring(0,e),tag:t.substring(e+1)}}async function K6(t,e){let o={...process.env,OLLAMA_HOST:`${zo}:${Dn}`,OLLAMA_MODELS:ve(Tp(),JP,Qr,"models"),HOME:Tp()},n=M6(t,["serve"],{detached:!0,stdio:"ignore",env:o});n.unref();let r=`http://${zo}:${Dn}`,s=!1;for(let c=0;c<30;c++){try{if((await fetch(`${r}/api/tags`)).ok){s=!0;break}}catch{}await new Promise(d=>setTimeout(d,500))}if(!s){try{n.kill()}catch{}return{ok:!1,message:"Ollama serve n\xE3o respondeu em 15s. Verifique se outra inst\xE2ncia est\xE1 rodando."}}async function i(c,d){process.stderr.write(` baixando modelo ${c} (ollama pull)...
513
- `);let m=no(t,["pull",c],{timeout:Tv,stdio:"inherit",env:o,cwd:e});if(m.status!==0)return`Pull de "${c}" falhou (exit ${m.status}). Veja a saida acima.`;let{name:u,tag:h}=z6(c),g=o.OLLAMA_MODELS,y=ve(g,"manifests","registry.ollama.ai","library",u,h);if(!rt(y))return`Manifest n\xE3o encontrado para "${c}" em ${y}.`;let b;try{let w=XP(y,"utf-8");b=JSON.parse(w)}catch(w){return`Falha ao ler/parsear manifest de "${c}": ${w instanceof Error?w.message:String(w)}`}return G6(b,d,c)}let a=await i(gn,Av);if(a){try{n.kill()}catch{}return{ok:!1,message:a}}let l=await i(Xs,Ev);if(l){try{n.kill()}catch{}return{ok:!1,message:l}}try{n.kill()}catch{}return{ok:!0,message:""}}async function Y6(){let t=zx();if(!t.ok)return{target:"mem0",hashOk:!1,installed:!1,message:`Python ${Nc}+ requerido (encontrado: ${t.version}). Instale python3.10+.`};let e=ve(Qo(),vr),o=ve(e,"bin","python3");if(rt(o)&&$d(o)){let l=ve(e,Mr);if(rt(l))return{target:"mem0",hashOk:!0,installed:!0,message:`Venv do Mem0 j\xE1 provisionado em ${e}.`};let c=Hx();try{return jx(c,l),pi(l,448),{target:"mem0",hashOk:!0,installed:!0,message:`Venv do Mem0 j\xE1 existente; script ${Mr} copiado para ${e}.`}}catch(d){return{target:"mem0",hashOk:!1,installed:!1,message:`Venv existe mas falha ao copiar script: ${d instanceof Error?d.message:String(d)}`}}}Gx();let n=no("python3",["-m","venv",e],{timeout:6e4,encoding:"utf8"});if(n.status!==0){let l=n.stderr||n.stdout||"erro desconhecido";return{target:"mem0",hashOk:!1,installed:!1,message:`Falha ao criar venv: ${l.includes("ensurepip")?"ensurepip/pip indispon\xEDvel neste Python. Instale o pip pelo gerenciador do SO (ex.: `apt install python3-venv python3-pip`, `dnf install python3-pip`) e tente de novo. O aluy N\xC3O baixa-e-executa get-pip remoto sem verifica\xE7\xE3o de integridade (CLI-SEC-H2).":l}`}}try{pi(e,Fa)}catch{}let r=ve(e,"bin","pip");if(!$d(ve(e,"bin","python3")))return{target:"mem0",hashOk:!1,installed:!1,message:"Pip n\xE3o dispon\xEDvel no venv ap\xF3s cria\xE7\xE3o."};if(process.stderr.write(` instalando mem0 (pip)...
514
- `),no(r,["install",...Dc],{timeout:3e5,stdio:"inherit"}).status!==0)return{target:"mem0",hashOk:!1,installed:!1,message:"Falha ao instalar pacotes pip do mem0 (veja a saida acima)."};let i=Hx(),a=ve(e,Mr);try{jx(i,a),pi(a,448)}catch(l){return{target:"mem0",hashOk:!1,installed:!1,message:`Pip ok mas falha ao copiar script servidor: ${l instanceof Error?l.message:String(l)}`}}return{target:"mem0",hashOk:!0,installed:!0,message:`Venv do Mem0 provisionado em ${e} com ${Dc.length} pacotes + ${Mr}.`}}async function V6(){let t=zx();if(!t.ok)return{target:"headroom",hashOk:!1,installed:!1,message:`Python ${Nc}+ requerido (encontrado: ${t.version}). Instale python3.10+.`};let e=ve(Qo(),Zr),o=ve(e,"bin","python3"),n=ve(e,"bin","headroom");if(rt(n)&&rt(o)&&$d(o))return{target:"headroom",hashOk:!0,installed:!0,message:`Headroom j\xE1 provisionado em ${e}.`};if(Gx(),!rt(o)){let i=no("python3",["-m","venv",e],{timeout:6e4,encoding:"utf8"});if(i.status!==0)return{target:"headroom",hashOk:!1,installed:!1,message:`Falha ao criar venv do headroom: ${i.stderr||i.stdout||"erro desconhecido"}`}}try{pi(e,Fa)}catch{}if(!$d(o))return{target:"headroom",hashOk:!1,installed:!1,message:"Pip n\xE3o dispon\xEDvel no venv do headroom ap\xF3s cria\xE7\xE3o."};let r=ve(e,"bin","pip");return process.stderr.write(` instalando headroom (pip)...
515
- `),no(r,["install",...Pc],{timeout:3e5,stdio:"inherit"}).status!==0?{target:"headroom",hashOk:!1,installed:!1,message:`Falha ao instalar ${Pc.join(", ")} (veja a saida acima).`}:rt(n)?{target:"headroom",hashOk:!0,installed:!0,message:`Headroom instalado em ${e} (servi\xE7o local em :${Ic}).`}:{target:"headroom",hashOk:!1,installed:!1,message:`Pip ok mas o entrypoint 'headroom' n\xE3o apareceu em ${e}/bin.`}}function Ux(t){return X6+`PRIMEIRO garanta os pr\xE9-requisitos de sistema (${t.join(", ")}). Detecte o gerenciador de pacotes da m\xE1quina (apt/dnf/pacman/zypper no Linux; brew no macOS; winget/instalador no Windows) e instale s\xF3 o que FALTAR \u2014 parta do que j\xE1 existe. Pacotes de sistema exigem privil\xE9gio: tente \`sudo -n true\` p/ ver se o sudo \xE9 sem-senha; se exigir senha, PE\xC7A a senha ao usu\xE1rio e rode com \`sudo\` (N\xC3O aborte, N\xC3O pule). Se algo falhar (repo, lock do apt, nome de pacote diferente na distro), DIAGNOSTIQUE e contorne \u2014 voc\xEA \xE9 o instalador adaptativo, trate o problema em vez de desistir. `}function J6(t){if(t==="ollama")return"Provisione o sidecar OLLAMA do aluy, detectando o SO. "+Ux(["zstd","tar"])+`Teste GET http://${zo}:${Dn}/api/tags. Se o servi\xE7o n\xE3o responder, instale o Ollama. Linux: o script oficial \`curl -fsSL https://ollama.com/install.sh | sh\` PRECISA de privil\xE9gio (instala em /usr/local/bin + cria o servi\xE7o systemd) \u2014 ele chama \`sudo\` internamente; garanta que o sudo est\xE1 dispon\xEDvel e, se pedir senha, PE\xC7A ao usu\xE1rio. Windows: \`winget install --id Ollama.Ollama -e --accept-source-agreements --accept-package-agreements\`; macOS: brew ou instalador. Garanta o servi\xE7o rodando. DEPOIS, puxe os modelos do TURBO (sen\xE3o o judge/embedder n\xE3o funcionam): \`ollama pull ${gn}\` (judge) e \`ollama pull ${Xs}\` (embedder); confirme que ambos aparecem em \`ollama list\`. POR FIM, deixe o Ollama US\xC1VEL pelo usu\xE1rio: garanta o bin\xE1rio \`ollama\` no PATH e PERSISTA \`export OLLAMA_HOST=127.0.0.1:${Dn}\` + o PATH no rc do shell (~/.bashrc/.zshrc, idempotente). Diga ao usu\xE1rio que ele pode usar o ollama como modelo do aluy via \`aluy onboard\` (backend local) apontando a base_url http://127.0.0.1:${Dn}/v1 (API OpenAI-compat do Ollama). Seja conciso.`;if(t==="mem0"){let e=ve(Qo(),vr);return"Provisione o sidecar MEM0 do aluy. "+Ux(["python3 (>=3.10)","python3-venv","python3-pip"])+`DEPOIS crie um venv em "${e}" usando um Python ${YP} e garanta pip funcional (Scripts\\pip.exe no Windows, bin/pip no Unix). Instale TODAS as deps no venv: ${Dc.join(", ")} (n\xE3o s\xF3 mem0ai \u2014 o servidor importa chromadb e ollama). Confirme que 'import mem0, chromadb, ollama' roda sem erro. Seja conciso.`}if(t==="headroom"){let e=ve(Qo(),Zr);return"Provisione o sidecar HEADROOM do aluy (proxy de compress\xE3o). "+Ux(["python3 (>=3.10)","python3-venv","python3-pip"])+`DEPOIS crie um venv em "${e}" usando um Python ${YP}, instale o pacote ${Pc.join(", ")} (pip install) e confirme que o entrypoint 'headroom' existe no venv (Scripts\\headroom.exe no Windows, bin/headroom no Unix). No Windows o core Rust n\xE3o tem wheel: o proxy s\xF3 sobe com HEADROOM_REQUIRE_RUST_CORE=false (modo Python-degradado). Opcional: suba 'headroom proxy --port ${Ic}'. Seja conciso.`}return`Provisione o sidecar "${String(t)}" do aluy, detectando o SO. Seja conciso.`}async function VP(t,e,o=!1){if(t==="ollama")try{let n=await fetch(`http://${zo}:${Dn}/api/tags`);if(!n.ok)return!1;let s=((await n.json()).models??[]).map(l=>l.name??""),i=s.some(l=>l.startsWith(gn)),a=s.some(l=>l.startsWith(Xs));return i&&a}catch{return!1}if(t==="mem0"){let n=ve(Qo(),vr),r=e==="win32"?ve(n,"Scripts","python.exe"):ve(n,"bin","python3");return rt(r)?o?rt(ve(n,Mr)):no(r,["-c","import mem0, chromadb, ollama"],{timeout:6e4}).status!==0?!1:rt(ve(n,Mr)):!1}if(t==="headroom"){try{if((await fetch(`http://127.0.0.1:${Ic}/health`)).ok)return!0}catch{}let n=ve(Qo(),Zr),r=e==="win32"?ve(n,"Scripts","headroom.exe"):ve(n,"bin","headroom");return rt(r)}return!1}async function Q6(t,e){let o=J6(t),n=process.argv[1];if(!n)return{target:t,hashOk:!1,installed:!1,message:"N\xE3o foi poss\xEDvel localizar o bin\xE1rio do aluy p/ delegar ao agente."};process.stdout.write("\x1B[2J\x1B[3J\x1B[H");let r=e?`Complemento ${e.index}/${e.total}: "${t}"`:`Complemento "${t}"`,s=e?` (fila: ${e.plan.join(" \xB7 ")})`:"";process.stdout.write(` \u2500\u2500 Instalando o ${r} \u2500\u2500${s}
512
+ ABORTANDO instala\xE7\xE3o deste alvo (CLI-SEC-H2).`);return L6(o,r,{mode:B6}),o}function q6(t){return XP(t)}function Hx(){let t=D6(F6(import.meta.url)),e=[ve(t,"..","..","assets","mem0",Mr),ve(t,"..","..","..","assets","mem0",Mr)];for(let o of e)if(ut(o))return o;return e[0]}async function W6(){let t=U6(Qr),e=ve(t,"bin"),o=ve(e,"ollama"),n={url:wv,sha256:Sv,label:hf},r;try{r=await H6(n,t)}catch(i){return{target:"ollama",hashOk:!1,installed:!1,message:`Falha no download/verifica\xE7\xE3o do Ollama: ${i instanceof Error?i.message:String(i)}`}}if(!QP())return{target:"ollama",hashOk:!0,installed:!1,message:"zstd n\xE3o encontrado \u2014 necess\xE1rio para extrair .tar.zst. Instale: apt install zstd"};if(!ZP())return{target:"ollama",hashOk:!0,installed:!1,message:"tar n\xE3o encontrado \u2014 necess\xE1rio para extrair o bin\xE1rio."};if(!ut(o)){let i=no("tar",["--use-compress-program=zstd","-xf",r,"-C",t],{timeout:6e4,encoding:"utf8"});if(i.status!==0)return{target:"ollama",hashOk:!0,installed:!1,message:`Falha ao extrair bin\xE1rio do Ollama: ${i.stderr||i.stdout||"erro desconhecido"}`};try{pi(o,448)}catch{}}if(!ut(o))return{target:"ollama",hashOk:!0,installed:!1,message:"Bin\xE1rio do Ollama extra\xEDdo mas execut\xE1vel n\xE3o encontrado."};let s=await K6(o,e);return s.ok?{target:"ollama",hashOk:!0,installed:!0,message:`Ollama ${pf} provisionado em ${t} com pesos verificados (${gn} + ${Xs}).`}:{target:"ollama",hashOk:!0,installed:!1,message:s.message}}function G6(t,e,o){let n=t?.layers;if(!Array.isArray(n)||n.length===0)return`Manifest de "${o}" n\xE3o cont\xE9m layers.`;let r=n.filter(i=>i?.mediaType===KP);if(r.length===0)return`Manifest de "${o}" sem layer de peso (${KP}).`;if(r.length>1)return`Manifest de "${o}" tem ${r.length} layers de peso (model) \u2014 AMB\xCDGUO: um registry honesto serve EXATAMENTE uma; >1 indica adultera\xE7\xE3o e n\xE3o d\xE1 p/ garantir qual o ollama carrega \u2014 ABORTANDO (CLI-SEC-H2).`;let s=r[0];return s.digest!==e?`DIGEST DIVERGENTE para "${o}"! A layer de peso (model) tem "${String(s.digest)}", esperado "${e}" \u2014 ABORTANDO (CLI-SEC-H2).`:null}function z6(t){let e=t.lastIndexOf(":");return e===-1?{name:t,tag:"latest"}:{name:t.substring(0,e),tag:t.substring(e+1)}}async function K6(t,e){let o={...process.env,OLLAMA_HOST:`${zo}:${Dn}`,OLLAMA_MODELS:ve(Tp(),JP,Qr,"models"),HOME:Tp()},n=M6(t,["serve"],{detached:!0,stdio:"ignore",env:o});n.unref();let r=`http://${zo}:${Dn}`,s=!1;for(let c=0;c<30;c++){try{if((await fetch(`${r}/api/tags`)).ok){s=!0;break}}catch{}await new Promise(d=>setTimeout(d,500))}if(!s){try{n.kill()}catch{}return{ok:!1,message:"Ollama serve n\xE3o respondeu em 15s. Verifique se outra inst\xE2ncia est\xE1 rodando."}}async function i(c,d){process.stderr.write(` baixando modelo ${c} (ollama pull)...
513
+ `);let m=no(t,["pull",c],{timeout:Tv,stdio:"inherit",env:o,cwd:e});if(m.status!==0)return`Pull de "${c}" falhou (exit ${m.status}). Veja a saida acima.`;let{name:u,tag:h}=z6(c),g=o.OLLAMA_MODELS,y=ve(g,"manifests","registry.ollama.ai","library",u,h);if(!ut(y))return`Manifest n\xE3o encontrado para "${c}" em ${y}.`;let b;try{let w=XP(y,"utf-8");b=JSON.parse(w)}catch(w){return`Falha ao ler/parsear manifest de "${c}": ${w instanceof Error?w.message:String(w)}`}return G6(b,d,c)}let a=await i(gn,Av);if(a){try{n.kill()}catch{}return{ok:!1,message:a}}let l=await i(Xs,Ev);if(l){try{n.kill()}catch{}return{ok:!1,message:l}}try{n.kill()}catch{}return{ok:!0,message:""}}async function Y6(){let t=zx();if(!t.ok)return{target:"mem0",hashOk:!1,installed:!1,message:`Python ${Nc}+ requerido (encontrado: ${t.version}). Instale python3.10+.`};let e=ve(Qo(),vr),o=ve(e,"bin","python3");if(ut(o)&&$d(o)){let l=ve(e,Mr),c=Hx();try{return jx(c,l),pi(l,448),{target:"mem0",hashOk:!0,installed:!0,message:`Venv do Mem0 j\xE1 provisionado em ${e}; script ${Mr} atualizado.`}}catch(d){return{target:"mem0",hashOk:!1,installed:!1,message:`Venv existe mas falha ao copiar script: ${d instanceof Error?d.message:String(d)}`}}}Gx();let n=no("python3",["-m","venv",e],{timeout:6e4,encoding:"utf8"});if(n.status!==0){let l=n.stderr||n.stdout||"erro desconhecido";return{target:"mem0",hashOk:!1,installed:!1,message:`Falha ao criar venv: ${l.includes("ensurepip")?"ensurepip/pip indispon\xEDvel neste Python. Instale o pip pelo gerenciador do SO (ex.: `apt install python3-venv python3-pip`, `dnf install python3-pip`) e tente de novo. O aluy N\xC3O baixa-e-executa get-pip remoto sem verifica\xE7\xE3o de integridade (CLI-SEC-H2).":l}`}}try{pi(e,Fa)}catch{}let r=ve(e,"bin","pip");if(!$d(ve(e,"bin","python3")))return{target:"mem0",hashOk:!1,installed:!1,message:"Pip n\xE3o dispon\xEDvel no venv ap\xF3s cria\xE7\xE3o."};if(process.stderr.write(` instalando mem0 (pip)...
514
+ `),no(r,["install",...Dc],{timeout:3e5,stdio:"inherit"}).status!==0)return{target:"mem0",hashOk:!1,installed:!1,message:"Falha ao instalar pacotes pip do mem0 (veja a saida acima)."};let i=Hx(),a=ve(e,Mr);try{jx(i,a),pi(a,448)}catch(l){return{target:"mem0",hashOk:!1,installed:!1,message:`Pip ok mas falha ao copiar script servidor: ${l instanceof Error?l.message:String(l)}`}}return{target:"mem0",hashOk:!0,installed:!0,message:`Venv do Mem0 provisionado em ${e} com ${Dc.length} pacotes + ${Mr}.`}}async function V6(){let t=zx();if(!t.ok)return{target:"headroom",hashOk:!1,installed:!1,message:`Python ${Nc}+ requerido (encontrado: ${t.version}). Instale python3.10+.`};let e=ve(Qo(),Zr),o=ve(e,"bin","python3"),n=ve(e,"bin","headroom");if(ut(n)&&ut(o)&&$d(o))return{target:"headroom",hashOk:!0,installed:!0,message:`Headroom j\xE1 provisionado em ${e}.`};if(Gx(),!ut(o)){let i=no("python3",["-m","venv",e],{timeout:6e4,encoding:"utf8"});if(i.status!==0)return{target:"headroom",hashOk:!1,installed:!1,message:`Falha ao criar venv do headroom: ${i.stderr||i.stdout||"erro desconhecido"}`}}try{pi(e,Fa)}catch{}if(!$d(o))return{target:"headroom",hashOk:!1,installed:!1,message:"Pip n\xE3o dispon\xEDvel no venv do headroom ap\xF3s cria\xE7\xE3o."};let r=ve(e,"bin","pip");return process.stderr.write(` instalando headroom (pip)...
515
+ `),no(r,["install",...Pc],{timeout:3e5,stdio:"inherit"}).status!==0?{target:"headroom",hashOk:!1,installed:!1,message:`Falha ao instalar ${Pc.join(", ")} (veja a saida acima).`}:ut(n)?{target:"headroom",hashOk:!0,installed:!0,message:`Headroom instalado em ${e} (servi\xE7o local em :${Ic}).`}:{target:"headroom",hashOk:!1,installed:!1,message:`Pip ok mas o entrypoint 'headroom' n\xE3o apareceu em ${e}/bin.`}}function Ux(t){return X6+`PRIMEIRO garanta os pr\xE9-requisitos de sistema (${t.join(", ")}). Detecte o gerenciador de pacotes da m\xE1quina (apt/dnf/pacman/zypper no Linux; brew no macOS; winget/instalador no Windows) e instale s\xF3 o que FALTAR \u2014 parta do que j\xE1 existe. Pacotes de sistema exigem privil\xE9gio: tente \`sudo -n true\` p/ ver se o sudo \xE9 sem-senha; se exigir senha, PE\xC7A a senha ao usu\xE1rio e rode com \`sudo\` (N\xC3O aborte, N\xC3O pule). Se algo falhar (repo, lock do apt, nome de pacote diferente na distro), DIAGNOSTIQUE e contorne \u2014 voc\xEA \xE9 o instalador adaptativo, trate o problema em vez de desistir. `}function J6(t){if(t==="ollama")return"Provisione o sidecar OLLAMA do aluy, detectando o SO. "+Ux(["zstd","tar"])+`Teste GET http://${zo}:${Dn}/api/tags. Se o servi\xE7o n\xE3o responder, instale o Ollama. Linux: o script oficial \`curl -fsSL https://ollama.com/install.sh | sh\` PRECISA de privil\xE9gio (instala em /usr/local/bin + cria o servi\xE7o systemd) \u2014 ele chama \`sudo\` internamente; garanta que o sudo est\xE1 dispon\xEDvel e, se pedir senha, PE\xC7A ao usu\xE1rio. Windows: \`winget install --id Ollama.Ollama -e --accept-source-agreements --accept-package-agreements\`; macOS: brew ou instalador. Garanta o servi\xE7o rodando. DEPOIS, puxe os modelos do TURBO (sen\xE3o o judge/embedder n\xE3o funcionam): \`ollama pull ${gn}\` (judge) e \`ollama pull ${Xs}\` (embedder); confirme que ambos aparecem em \`ollama list\`. POR FIM, deixe o Ollama US\xC1VEL pelo usu\xE1rio: garanta o bin\xE1rio \`ollama\` no PATH e PERSISTA \`export OLLAMA_HOST=127.0.0.1:${Dn}\` + o PATH no rc do shell (~/.bashrc/.zshrc, idempotente). Diga ao usu\xE1rio que ele pode usar o ollama como modelo do aluy via \`aluy onboard\` (backend local) apontando a base_url http://127.0.0.1:${Dn}/v1 (API OpenAI-compat do Ollama). Seja conciso.`;if(t==="mem0"){let e=ve(Qo(),vr);return"Provisione o sidecar MEM0 do aluy. "+Ux(["python3 (>=3.10)","python3-venv","python3-pip"])+`DEPOIS crie um venv em "${e}" usando um Python ${YP} e garanta pip funcional (Scripts\\pip.exe no Windows, bin/pip no Unix). Instale TODAS as deps no venv: ${Dc.join(", ")} (n\xE3o s\xF3 mem0ai \u2014 o servidor importa chromadb e ollama). Confirme que 'import mem0, chromadb, ollama' roda sem erro. Seja conciso.`}if(t==="headroom"){let e=ve(Qo(),Zr);return"Provisione o sidecar HEADROOM do aluy (proxy de compress\xE3o). "+Ux(["python3 (>=3.10)","python3-venv","python3-pip"])+`DEPOIS crie um venv em "${e}" usando um Python ${YP}, instale o pacote ${Pc.join(", ")} (pip install) e confirme que o entrypoint 'headroom' existe no venv (Scripts\\headroom.exe no Windows, bin/headroom no Unix). No Windows o core Rust n\xE3o tem wheel: o proxy s\xF3 sobe com HEADROOM_REQUIRE_RUST_CORE=false (modo Python-degradado). Opcional: suba 'headroom proxy --port ${Ic}'. Seja conciso.`}return`Provisione o sidecar "${String(t)}" do aluy, detectando o SO. Seja conciso.`}async function VP(t,e,o=!1){if(t==="ollama")try{let n=await fetch(`http://${zo}:${Dn}/api/tags`);if(!n.ok)return!1;let s=((await n.json()).models??[]).map(l=>l.name??""),i=s.some(l=>l.startsWith(gn)),a=s.some(l=>l.startsWith(Xs));return i&&a}catch{return!1}if(t==="mem0"){let n=ve(Qo(),vr),r=e==="win32"?ve(n,"Scripts","python.exe"):ve(n,"bin","python3");return ut(r)?o?ut(ve(n,Mr)):no(r,["-c","import mem0, chromadb, ollama"],{timeout:6e4}).status!==0?!1:ut(ve(n,Mr)):!1}if(t==="headroom"){try{if((await fetch(`http://127.0.0.1:${Ic}/health`)).ok)return!0}catch{}let n=ve(Qo(),Zr),r=e==="win32"?ve(n,"Scripts","headroom.exe"):ve(n,"bin","headroom");return ut(r)}return!1}async function Q6(t,e){let o=J6(t),n=process.argv[1];if(!n)return{target:t,hashOk:!1,installed:!1,message:"N\xE3o foi poss\xEDvel localizar o bin\xE1rio do aluy p/ delegar ao agente."};process.stdout.write("\x1B[2J\x1B[3J\x1B[H");let r=e?`Complemento ${e.index}/${e.total}: "${t}"`:`Complemento "${t}"`,s=e?` (fila: ${e.plan.join(" \xB7 ")})`:"";process.stdout.write(` \u2500\u2500 Instalando o ${r} \u2500\u2500${s}
516
516
  (acompanhe abaixo; pode levar alguns minutos)
517
517
 
518
- `);let i=no(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=ve(Qo(),vr),c=ve(l,Mr);rt(l)&&!rt(c)&&jx(Hx(),c)}catch{}t==="ollama"&&(await o8(),n8()),process.stderr.write(`
518
+ `);let i=no(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=ve(Qo(),vr),c=ve(l,Mr);ut(l)&&jx(Hx(),c)}catch{}t==="ollama"&&(await o8(),n8()),process.stderr.write(`
519
519
  verificando "${t}"\u2026 (alguns segundos; a pr\xF3xima etapa vem em seguida)
520
- `);let a=await VP(t,process.platform,!0);for(let l=0;l<Z6&&!a;l++)await t8(e8),a=await VP(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 t8(t){return new Promise(e=>setTimeout(e,t))}async function o8(){for(let t of[gn,Xs])try{await(await fetch(`http://${zo}:${Dn}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:t,stream:!1})})).text()}catch{}}function n8(){if(process.platform!=="win32")try{let t=no("sh",["-lc","command -v ollama"],{encoding:"utf8",timeout:1e4});if(t.status===0&&(t.stdout??"").trim()!=="")return;let e=Tp(),n=["/usr/local/bin/ollama","/usr/bin/ollama","/opt/homebrew/bin/ollama",ve(e,".ollama","bin","ollama"),ve(Qo(),Qr,"bin","ollama")].find(i=>rt(i));if(n===void 0)return;let r=ve(e,".local","bin");Wx(r,{recursive:!0});let s=ve(r,"ollama");try{if(GP(s)===GP(n))return;N6(s)}catch{}try{I6(n,s)}catch{}}catch{}}function r8(){try{return no("python3",["-m","venv","--help"],{timeout:1e4}).status===0}catch{return!1}}function s8(){try{return no("python3",["-m","pip","--version"],{timeout:1e4}).status===0}catch{return!1}}function i8(t){let e=[],o=[];if(t.has("ollama")&&(QP()||(e.push("zstd (extrair o Ollama)"),o.push("zstd")),ZP()||(e.push("tar (extrair o Ollama)"),o.push("tar"))),t.has("mem0")||t.has("headroom")){let r=zx();r.ok?(r8()||(e.push("m\xF3dulo venv do Python (mem0/headroom criam um virtualenv)"),o.push("python3-venv")),s8()||(e.push("pip do Python (mem0/headroom instalam pacotes)"),o.push("python3-pip"))):(e.push(`python3 >= ${Nc} 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 eI(t,e,o){let n=t??"turbo",r=kr(e??{}),s=o?.useAgent!==!1,i=new qx({...o?.platform?{platform:o.platform}:{},...s?{agentInstaller:Q6}:{}});if(!s)for(let a of i8(r))process.stderr.write(a+`
521
- `);return i.provisionAll(n,r)}var JP,Fa,B6,Mr,KP,qx,YP,X6,Z6,e8,tI=p(()=>{"use strict";N();JP=".aluy",Fa=448,B6=384;Mr="aluy-mem0-server.py";KP="application/vnd.ollama.image.model";qx=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=ve(Qo(),Qr,"bin","ollama");return rt(o)}case"mem0":{let o=ve(Qo(),vr,"bin","python3");return rt(o)&&$d(o)}case"headroom":{let o=ve(Qo(),Zr,"bin","headroom");return rt(o)}default:return!1}}async provision(e,o){let n=$6().uid;if(Rv(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 W6();case"mem0":return Y6();case"headroom":return V6();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!$c(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}}},YP="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",X6="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. ";Z6=24,e8=5e3});var nI={};ut(nI,{runFirstRunWizard:()=>oI,runInit:()=>c8});import{Entry as a8}from"@napi-rs/keyring";async function oI(t){let{config:e,configStore:o,prompt:n,out:r,err:s,entryFactory:i,isInteractive:a}=t,l=e.localProvider!==void 0,c=e.localModel!==void 0,d=!1,m=e.localProvider;if(m)try{let h=(i??l8)(oi,Nf(m)).getPassword();d=h!==""&&h!==void 0}catch{}if(l&&c&&d)return!0;if(!a)return s("aluy bootstrap: configura\xE7\xE3o de 1\xAA execu\xE7\xE3o necess\xE1ria (provider + chave + modelo)."),l||s(" \u2717 Falta provider local em ~/.aluy/config.json."),c||s(" \u2717 Falta modelo local em ~/.aluy/config.json."),d||s(" \u2717 Falta chave de API no keychain do SO."),s(""),s(" Rode `aluy bootstrap` interativamente (num terminal com TTY) para o wizard,"),s(" ou configure manualmente:"),s(" 1. `aluy login --provider <anthropic|openrouter|openai>` (grava a chave no keychain)"),s(" 2. Edite ~/.aluy/config.json e adicione:"),s(' "localProvider": "<provider>",'),s(' "localModel": "<modelo-nativo>"'),s(""),!1;if(r(""),r("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"),r("\u2551 Configura\xE7\xE3o de 1\xAA execu\xE7\xE3o \u2014 provider + chave + modelo \u2551"),r("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"),r(""),r("O `aluy bootstrap --agent` usa um modelo de linguagem para instalar"),r("depend\xEAncias. Precisamos de provider, chave de API e modelo."),r("(As credenciais ficam no keychain do SO \u2014 nunca em texto.)"),r(""),l)r(`Provider: ${m} (j\xE1 configurado)`);else{let u=(await n(`Provider (${Kx.join("/")}): `)).trim().toLowerCase();if(!Kx.includes(u))return s(`Provider inv\xE1lido "${u}". Use: ${Kx.join(", ")}.`),!1;m=u,r("")}if(d)r("\u2713 Chave j\xE1 est\xE1 no keychain.");else{let u=m,h=(await n(`API key de ${u}: `,{secret:!0})).trim();if(h==="")return s("Chave vazia \u2014 abortando."),!1;try{wa(u,h,i),r("\u2713 Chave guardada no keychain do SO.")}catch(g){return s(`Falha ao gravar no keychain: ${g instanceof Error?g.message:String(g)}`),s("(Por seguran\xE7a, a credencial nunca \xE9 gravada em texto. Instale o Secret Service no Linux.)"),!1}r("")}if(!c){let u=m,h=(await n("Modelo nativo (ex.: claude-sonnet-4-8): ")).trim();if(h==="")return s("Modelo vazio \u2014 abortando."),!1;o.save({localProvider:u,localModel:h}),r(`\u2713 Provider "${u}" + modelo "${h}" salvos em ~/.aluy/config.json.`),r("")}return r("Configura\xE7\xE3o conclu\xEDda. Seguindo para o provisionamento\u2026"),r(""),!0}function l8(t,e){return new a8(t,e)}async function c8(t){let{out:e,err:o}=t,n=t.configStore??new ot,r,s,i;try{i=n.load(),r=i.profile,s=i.sidecarToggles}catch{i={}}let a=t.isInteractive!==void 0?t.isInteractive:process.stdin.isTTY===!0&&process.stdout.isTTY===!0;if(t.prompt!==void 0||!a){let d=t.prompt??(async()=>"");if(!await oI({config:i,configStore:n,prompt:d,out:e,err:o,...t.entryFactory!==void 0?{entryFactory:t.entryFactory}:{},isInteractive:a}))return 0}if(e("O Aluy CLI j\xE1 est\xE1 instalado e pronto para uso."),e(""),e("Esta etapa instala os COMPLEMENTOS opcionais (modo turbo): mem\xF3ria, modelos"),e("locais e gest\xE3o de contexto. Eles enriquecem a experi\xEAncia, mas n\xE3o s\xE3o"),e("obrigat\xF3rios \u2014 se algum n\xE3o instalar, voc\xEA usa o Aluy CLI normalmente sem ele."),e(""),e(` Perfil escolhido: ${r??"turbo"}`),r==="leve")return e(" Perfil LEVE: nenhum complemento ser\xE1 instalado \u2014 o Aluy CLI j\xE1 est\xE1 pronto."),e(" Para instal\xE1-los depois, rode `aluy bootstrap` ou troque para o perfil turbo."),0;let l=t.agent!==!1;l?(e(" Instalando os complementos com o pr\xF3prio aluy \u2014 ele detecta o sistema, instala o que"),e(" faltar (Python, pip, etc.) e os complementos. \u26A0 Acesso total \xE0 m\xE1quina (com sudo quando"),e(" preciso). Voc\xEA ver\xE1 o progresso de cada um abaixo.")):e(" Instalando os complementos pelo caminho direto (--no-agent; requer Python j\xE1 pronto)..."),e("");let c=await eI(r,s,{useAgent:l});for(let d of c.targets){let m=d.installed?"\u2713":"\u2717";e(` ${m} ${d.target}: ${d.message}`)}return e(""),c.anySuccess?(e("Complementos instalados. O Aluy CLI est\xE1 pronto, agora com o modo turbo."),c.allFailed&&e("Observa\xE7\xE3o: alguns complementos n\xE3o instalaram \u2014 o Aluy CLI funciona sem eles."),0):c.targets.length===0?(e("Nenhum complemento a instalar \u2014 o Aluy CLI j\xE1 est\xE1 pronto."),0):(o("Nenhum complemento foi instalado agora \u2014 sem problema, o Aluy CLI funciona"),o("normalmente. Voc\xEA pode tentar de novo depois com `aluy bootstrap`."),1)}var Kx,rI=p(()=>{"use strict";Yo();tI();Aa();Kx=["anthropic","openrouter","openai"]});var sI={};ut(sI,{runUninstall:()=>h8});import{homedir as d8}from"node:os";import{join as _p}from"node:path";import{rmSync as u8,existsSync as m8}from"node:fs";import{spawnSync as f8}from"node:child_process";function p8(t){return[{label:"ollama (instala\xE7\xE3o local em ~/.aluy)",path:_p(t,Qr)},{label:"mem0 (venv)",path:_p(t,vr)},{label:"headroom (venv)",path:_p(t,Zr)}]}function h8(t={},e={}){let o=e.io??zt(),n=e.baseDir??_p(d8(),".aluy"),r=e.remove??(i=>u8(i,{recursive:!0,force:!0})),s=e.exists??m8;o.out("Removendo os complementos gerenciados pelo aluy (em ~/.aluy/)\u2026");for(let i of p8(n)){if(!s(i.path)){o.out(` \xB7 ${i.label}: n\xE3o estava instalado`);continue}try{r(i.path),o.out(` \u2713 ${i.label}: removido`)}catch{o.err(` \u2717 ${i.label}: falha ao remover (${i.path})`)}}return o.out(""),t.agent?y8(o):(o.out("Se o Ollama foi instalado no SISTEMA (via curl/winget), ele N\xC3O fica em ~/.aluy e"),o.out("continua instalado. Para remov\xEA-lo tamb\xE9m: `aluy uninstall --agent` (o aluy remove"),o.out("via o pr\xF3prio agente \u2014 \u26A0 acesso total + sudo). O CLI em si sai com `npm uninstall -g"),o.out("@hiperplano/aluy-cli`; sua config (~/.aluy/config.json) e credenciais N\xC3O s\xE3o tocadas."),0)}function g8(){return"DESINSTALE o Ollama instalado no SISTEMA (fora de ~/.aluy), detectando o SO. No Linux: pare/desabilite o servi\xE7o (`sudo systemctl stop ollama; sudo systemctl disable ollama` se existir), remova o bin\xE1rio (`sudo rm -f /usr/local/bin/ollama` ou onde estiver no PATH) e o usu\xE1rio/servi\xE7o se o install oficial criou. No macOS: encerre o app/servi\xE7o e remova-o. No Windows: `winget uninstall --id Ollama.Ollama`. Pacotes de sistema exigem privil\xE9gio: tente `sudo -n true`; se pedir senha, PE\xC7A ao usu\xE1rio. Opcional: remova os modelos baixados (`~/.ollama/models`). Confirme que `ollama` n\xE3o responde mais em http://127.0.0.1:11434/api/tags. Seja conciso."}function y8(t){let e=process.argv[1];return e?(t.out(" \u2500\u2500 Removendo o Ollama de sistema com o pr\xF3prio aluy \u2500\u2500 (acompanhe abaixo)"),t.out(""),f8(process.execPath,[e,"-p",g8(),"--yolo","--no-self-check"],{stdio:"inherit",timeout:6e5,env:{...process.env,ALUY_NO_WEAK_YOLO_WARN:"1",ALUY_PRINT_VERBOSE:"1"}}),0):(t.err("n\xE3o foi poss\xEDvel localizar o bin\xE1rio do aluy p/ delegar ao agente."),0)}var iI=p(()=>{"use strict";N();wr()});function v8(t){let e=/^#?([0-9a-f]{6})$/i.exec(t.trim());return e?`\x1B]11;#${e[1].toUpperCase()}\x07`:""}function k8(t){if(t.NO_COLOR!==void 0)return!1;let e=t.ALUY_SET_BG;if(e===void 0)return!0;let o=e.trim().toLowerCase();return!(o==="0"||o==="false"||o==="no"||o==="off")}function S8(t){if(!t)return null;let e=/rgb:([0-9a-f]{1,4})\/([0-9a-f]{1,4})\/([0-9a-f]{1,4})/i.exec(t);if(e)return{r:Yx(e[1]),g:Yx(e[2]),b:Yx(e[3])};let o=/#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i.exec(t);return o?{r:parseInt(o[1],16),g:parseInt(o[2],16),b:parseInt(o[3],16)}:null}function Yx(t){let e=parseInt(t,16),o=16**t.length-1;return Math.round(e/o*255)}function w8(t){let e=o=>{let n=o/255;return n<=.03928?n/12.92:((n+.055)/1.055)**2.4};return .2126*e(t.r)+.7152*e(t.g)+.0722*e(t.b)}function A8(t){return w8(t)>=x8?"light":"dark"}function E8(t){let e=S8(t);return e?A8(e):null}function T8(t=process.env){let e=t.ALUY_OSC11_TIMEOUT_MS;if(e!==void 0){let n=Number.parseInt(e,10);if(Number.isFinite(n)&&n>0)return Math.min(n,5e3)}return!!(t.SSH_CONNECTION||t.SSH_TTY||t.SSH_CLIENT)?1e3:500}async function lI(t){let e=t.env??process.env;if(e.NO_COLOR!==void 0||t.stdout.isTTY!==!0||t.stdin.isTTY!==!0)return null;let o=t.timeoutMs??T8(e),n=t.stdin,r=n.isRaw===!0;return await new Promise(s=>{let i="",a=!1,l={},c=()=>{l.id&&clearTimeout(l.id),n.off("data",m);try{r||n.setRawMode(!1),n.pause()}catch{}},d=u=>{a||(a=!0,c(),s(u))},m=u=>{i+=typeof u=="string"?u:u.toString("utf8");let h=E8(i);h!==null&&d(h)};try{n.setRawMode(!0),n.resume(),n.on("data",m),t.stdout.write(b8)}catch{d(null);return}l.id=setTimeout(()=>d(null),o)})}var b8,aI,Rp,x8,cI=p(()=>{"use strict";b8="\x1B]11;?\x07",aI="\x1B]111\x07";Rp=class{stdout;enabled;applied=!1;didReset=!1;constructor(e){let o=e.env??process.env;this.stdout=e.stdout,this.enabled=e.stdout.isTTY===!0&&k8(o)}get active(){return this.enabled}apply(e){if(!this.enabled)return"";let o=v8(e);return o===""?"":(this.stdout.write(o),this.applied=!0,this.didReset=!1,o)}reset(){return!this.enabled||!this.applied||this.didReset?"":(this.didReset=!0,this.stdout.write(aI),aI)}},x8=.5});import{createContext as _8,useContext as R8}from"react";import{Text as dI}from"ink";import{jsx as Cp}from"react/jsx-runtime";function hi(t){return Cp(uI.Provider,{value:t.theme,children:t.children})}function ne(){return R8(uI)}function f(t){let o=ne().role(t.name),n={};return o.color!==void 0&&(n.color=o.color),o.bold!==void 0&&(n.bold=o.bold),o.dimColor!==void 0&&(n.dimColor=o.dimColor),o.inverse!==void 0&&(n.inverse=o.inverse),Cp(dI,{...n,children:t.children})}function P(t){let o=ne().glyph(t.name);return t.role?Cp(f,{name:t.role,children:o}):Cp(dI,{children:o})}var uI,mI=p(()=>{"use strict";Of();uI=_8(Ko())});var ae=p(()=>{"use strict";Tf();_f();Of();Rf();ts();cI();mI()});import"react";import{Box as Op}from"ink";import{jsx as Ba,jsxs as fI}from"react/jsx-runtime";function Lr(t){let e=ne(),n=(t.columns??80)<Bd,r=e.unicode?"\u039B":"/\\";if(n)return fI(Op,{children:[Ba(f,{name:"accent",children:r}),Ba(f,{name:"accent",children:" luy"})]});let s=e.unicode?Ua:pI,i=e.unicode?Fd:hI;return fI(Op,{flexDirection:"row",children:[Ba(Op,{flexDirection:"column",children:s.map((a,l)=>Ba(f,{name:"accent",children:a},l))}),Ba(Op,{flexDirection:"column",children:i.map((a,l)=>Ba(f,{name:"accent",children:C8+a},l))})]})}var Ua,Fd,pI,hI,C8,Bd,Vx,gi=p(()=>{"use strict";ae();_f();Ua=[" \u2588\u2588 "," \u2588\u2588\u2588\u2588 "," \u2588\u2588 \u2588\u2588 ","\u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588"," "],Fd=["\u2588\u2588 ","\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588","\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588"," \u2588\u2588"],pI=[" /\\ "," / \\ ","/ \\","/ \\","/ \\"," "],hI=["## ","## ## ## ## ##","## ## ## ## ##","## ## ## #####","## ##### ##"," ##"],C8=" ",Bd=28,Vx=Ua.length});async function gI(t){let e=t.fetchImpl??fetch,o=t.baseUrl.replace(/\/+$/,""),n=new AbortController,r=setTimeout(()=>n.abort(),t.timeoutMs??15e3);try{let s=t.wireFormat==="anthropic"?await e(`${o}/v1/messages`,{method:"POST",signal:n.signal,headers:{"content-type":"application/json","x-api-key":t.key,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:t.model,max_tokens:1,messages:[{role:"user",content:"ping"}]})}):await e(`${o}/chat/completions`,{method:"POST",signal:n.signal,headers:{"content-type":"application/json",authorization:`Bearer ${t.key}`},body:JSON.stringify({model:t.model,max_tokens:1,messages:[{role:"user",content:"ping"}]})});if(s.ok)return{ok:!0,detail:`HTTP ${s.status}`};let i="";try{i=(await s.text()).replace(/\s+/g," ").slice(0,160)}catch{}let a=s.status===401||s.status===403?" \u2014 chave inv\xE1lida?":s.status===404?" \u2014 modelo ou baseURL errado?":"";return{ok:!1,detail:`HTTP ${s.status}${a} ${i}`.trim()}}catch(s){return{ok:!1,detail:`n\xE3o conectou (baseURL/rede?): ${s instanceof Error?s.message:String(s)}`}}finally{clearTimeout(r)}}var yI=p(()=>{"use strict"});import{mkdirSync as O8,readFileSync as M8,renameSync as L8,statSync as P8,writeFileSync as I8}from"node:fs";import{dirname as N8,join as D8}from"node:path";function bI(t){let e={};for(let o of t.servers){let n={command:o.command,args:[...o.args]};Object.keys(o.env).length>0&&(n.env={...o.env}),o.disabled===!0&&(n.disabled=!0),e[o.name]=n}return JSON.stringify({mcpServers:e},null,2)+`
522
- `}var $8,Dt,jn,Ud=p(()=>{"use strict";N();$8=256*1024,Dt=class extends Error{constructor(e){super(e),this.name="McpWriteError"}},jn=class{file;constructor(e){this.file=e.file}get configPath(){return this.file}load(){let e;try{let n=P8(this.file);if(!n.isFile())throw new Dt(`${this.file}: n\xE3o \xE9 um arquivo regular.`);if(n.size>$8)throw new Dt(`${this.file}: grande demais p/ editar com seguran\xE7a.`);e=M8(this.file,"utf8")}catch(n){if(n instanceof Dt)throw n;return Se}let o;try{o=JSON.parse(e)}catch{throw new Dt(`${this.file}: JSON inv\xE1lido \u2014 conserte \xE0 m\xE3o antes de usar 'aluy mcp'.`)}try{return No(o)}catch(n){let r=n instanceof me?n.message:String(n);throw new Dt(r)}}add(e,o={}){if(!pa(e.name))throw new Dt(`nome de server inv\xE1lido "${e.name}" \u2014 use s\xF3 [A-Za-z0-9_-] (vira prefixo de tool).`);if(e.command.trim().length===0)throw new Dt(`server "${e.name}": "command" n\xE3o pode ser vazio.`);if(e.command.trim()==="--")throw new Dt(`server "${e.name}": "--" n\xE3o \xE9 um command (\xE9 o separador do 'aluy mcp add'). Use: aluy mcp add ${e.name} -- <command> [args...].`);let n=this.load(),r=n.servers.find(i=>i.name===e.name);if(r&&!o.force)throw new Dt(`server "${e.name}" j\xE1 existe em ${this.file} \u2014 use --force p/ sobrescrever.`);let s=[...n.servers.filter(i=>i.name!==e.name),e];return this.write({servers:s}),{replaced:r!==void 0}}remove(e){let o=this.load(),n=o.servers.length,r=o.servers.filter(s=>s.name!==e);return r.length===n?{removed:!1}:(this.write({servers:r}),{removed:!0})}setDisabled(e,o){let n=this.load(),r=n.servers.find(i=>i.name===e);if(!r)return{found:!1};let s={name:r.name,command:r.command,args:r.args,env:r.env,...o?{disabled:!0}:{}};return this.write({servers:n.servers.map(i=>i.name===e?s:i)}),{found:!0}}write(e){let o=N8(this.file);O8(o,{recursive:!0});let n=bI(e),r=D8(o,`.mcp.json.${process.pid}.${Date.now()}.tmp`);I8(r,n,{encoding:"utf8",mode:384}),L8(r,this.file)}}});var SI={};ut(SI,{mcpCatalog:()=>xI,runOnboard:()=>G8});import{useEffect as F8,useMemo as vI,useState as wo}from"react";import{render as B8,Box as mt,useApp as U8,useInput as j8}from"ink";import{homedir as kI}from"node:os";import{join as H8}from"node:path";import{jsx as pe,jsxs as $t}from"react/jsx-runtime";function xI(){return[{id:"playwright",label:"Playwright",hintPt:"automa\xE7\xE3o de navegador (oficial)",hintEn:"browser automation (official)",command:"npx",args:["-y","@playwright/mcp@latest"]},{id:"sequential-thinking",label:"Sequential Thinking",hintPt:"racioc\xEDnio passo-a-passo",hintEn:"step-by-step reasoning",command:"npx",args:["-y","@modelcontextprotocol/server-sequential-thinking"]},{id:"memory",label:"Memory",hintPt:"grafo de conhecimento persistente",hintEn:"persistent knowledge graph",command:"npx",args:["-y","@modelcontextprotocol/server-memory"]},{id:"filesystem",label:"Filesystem",hintPt:"arquivos (escopo: sua home)",hintEn:"files (scope: your home)",command:"npx",args:["-y","@modelcontextprotocol/server-filesystem",kI()]},{id:"rpa",label:"RPA (Aluy)",hintPt:"automa\xE7\xE3o visual de desktop \u2014 OCR/clica/digita \xB7 via uvx",hintEn:"visual desktop automation \u2014 OCR/click/type \xB7 via uvx",command:"uvx",args:["aluy-mcp-rpa"]}]}function q8(t){let e=U8(),o=t.store.load(),n=vI(()=>ns().entries,[]),[r,s]=wo("lang"),[i,a]=wo(o.lang??"pt-BR"),[l,c]=wo("local"),[d,m]=wo("anthropic"),[u,h]=wo({id:"",url:"",model:""}),[g,y]=wo(""),[b,w]=wo(""),[T,E]=wo("leve"),[L,B]=wo(""),j=vI(()=>xI(),[]),[z,V]=wo(new Set),[I,J]=wo(0),[Q,K]=wo(Math.max(0,Pt.findIndex(F=>F.code===i))),[D,X]=wo(""),[Oe,Y]=wo([]),ce=i==="pt-BR",O=(F,W)=>ce?F:W,se=[{value:"local",label:O("Local (sua chave / BYO)","Local (your key / BYO)"),hint:O("direto no provider","direct to provider")},{value:"broker",label:O("Broker (conta Aluy)","Broker (Aluy account)"),hint:O("autentica depois com aluy login","authenticate later with aluy login")}],de=[...n.map(F=>({value:F.id,label:F.label,hint:F.defaultModel})),{value:"__custom__",label:O("+ custom (OpenAI-compat\xEDvel)","+ custom (OpenAI-compatible)"),hint:O("ex.: TokenRouter, vLLM\u2026","e.g. TokenRouter, vLLM\u2026")}],ye=[{value:"turbo",label:O("Turbo \u2014 instala tudo","Turbo \u2014 install all"),hint:O("ollama + mem0 + headroom \xB7 pede m\xE1quina razo\xE1vel","ollama + mem0 + headroom \xB7 needs a decent machine")},{value:"leve",label:O("Leve \u2014 nada agora","Lite \u2014 nothing now"),hint:O("liga depois com aluy bootstrap","enable later with aluy bootstrap")}],Z=F=>F==="lang"?Pt.length:F==="backend"?se.length:F==="provider"?de.length:F==="sidecars"?ye.length:0;function te(F,W=""){X(W),s(F)}function Me(){K(Math.max(0,ye.findIndex(F=>F.value==="leve"))),s("sidecars")}function Ht(){J(0),s("mcp")}function pt(){let F=d==="__custom__",W=n.find(Be=>Be.id===d);return{wireFormat:F?"openai-compat":W?.wireFormat??"openai-compat",baseUrl:F?u.url.trim():W?.baseUrl??"",model:(F?u.model:b.trim()||W?.defaultModel||"").trim(),key:g.trim()}}F8(()=>{if(r!=="validating")return;let F=pt();if(l!=="local"||F.key===""||F.baseUrl===""||F.model===""){Ht();return}let W=!1;return gI(F).then(Be=>{W||(Be.ok?(B(""),Ht()):(B(Be.detail),s("validate-failed")))}),()=>{W=!0}},[r]);function at(F){let W=[],Be={lang:i,backend:l};if(l==="local"){Be.localProvider=d==="__custom__"?u.id.trim():d;let xe=d==="__custom__"?u.model:b;xe.trim()!==""&&(Be.localModel=xe.trim())}if(Be.profile=F,t.store.save(Be),W.push(`\u2713 ${O("config","config")}: backend ${l}`),l==="local"&&d==="__custom__"&&u.id.trim()!==""&&u.url.trim()!=="")try{h0({id:u.id.trim(),wireFormat:"openai-compat",baseUrl:u.url.trim(),defaultModel:u.model.trim()||u.id.trim()}),W.push(O(`\u2713 provider custom "${u.id.trim()}" registrado`,`\u2713 custom provider "${u.id.trim()}" registered`))}catch(xe){W.push(`\u26A0 providers.json: ${String(xe)}`)}if(l==="local"&&g.trim()!==""){let xe=d==="__custom__"?u.id.trim():d;try{wa(xe,g.trim()),W.push(O(`\u2713 chave de "${xe}" no keychain`,`\u2713 "${xe}" key in keychain`))}catch{W.push(O(`\u26A0 keychain indispon\xEDvel \u2014 rode: aluy login --provider ${xe}`,`\u26A0 keychain unavailable \u2014 run: aluy login --provider ${xe}`))}}let ue=j.filter((xe,Ze)=>z.has(Ze));if(ue.length>0)try{let xe=new jn({file:H8(kI(),".aluy","mcp.json")});for(let Ze of ue)xe.add({name:Ze.id,command:Ze.command,args:[...Ze.args],env:{}},{force:!0});W.push(O(`\u2713 ${ue.length} MCP(s) registrado(s): ${ue.map(Ze=>Ze.id).join(", ")}`,`\u2713 ${ue.length} MCP(s) registered: ${ue.map(Ze=>Ze.id).join(", ")}`))}catch(xe){W.push(`\u26A0 mcp.json: ${String(xe)}`)}W.push(`\u2713 sidecars: ${F}`),F==="turbo"&&W.push(O(" \u2192 instale agora: aluy bootstrap"," \u2192 install now: aluy bootstrap")),L!==""&&W.push(O("\u26A0 modelo N\xC3O validado \u2014 pode n\xE3o funcionar","\u26A0 model NOT validated \u2014 may not work")),l==="broker"&&W.push(O("\u2192 broker: autentique com `aluy login`","\u2192 broker: authenticate with `aluy login`")),Y(W),s("done")}j8((F,W)=>{if(r==="done"){(W.return||W.escape||F)&&e.exit();return}if(r==="validating")return;if(r==="validate-failed"){if(W.escape){e.exit();return}let ue=(F||"").toLowerCase();W.return||ue==="r"?s("validating"):ue==="k"?te("key",""):ue==="u"&&d==="__custom__"?te("custom-url",u.url):ue==="c"&&Ht();return}if(W.escape){e.exit();return}if(r==="mcp"){W.upArrow?J(ue=>Math.max(0,ue-1)):W.downArrow?J(ue=>Math.min(j.length-1,ue+1)):F===" "?V(ue=>{let xe=new Set(ue);return xe.has(I)?xe.delete(I):xe.add(I),xe}):W.return&&Me();return}if(r==="lang"||r==="backend"||r==="provider"||r==="sidecars"){let ue=Z(r);W.upArrow?K(xe=>Math.max(0,xe-1)):W.downArrow?K(xe=>Math.min(ue-1,xe+1)):W.return&&At();return}if(W.return){dt();return}if(W.backspace||W.delete){X(ue=>ue.slice(0,-1));return}F&&!W.ctrl&&!W.meta&&!W.upArrow&&!W.downArrow&&!W.leftArrow&&!W.rightArrow&&X(ue=>ue+F)});function At(){if(r==="lang"){let F=Pt[Q].code;t.store.saveLang(F),a(F),K(0),s("backend")}else if(r==="backend"){let F=se[Q].value;c(F),F==="broker"?Ht():(K(0),s("provider"))}else if(r==="provider"){let F=de[Q].value;if(m(F),F==="__custom__")te("custom-id","");else{let W=n.find(ue=>ue.id===F);W?.auth?.length===1&&W.auth[0]==="none"?(y(""),te("model",W?.defaultModel??"")):te("key","")}}else if(r==="sidecars"){let F=ye[Q].value;E(F),at(F)}}function dt(){let F=D.trim();if(r==="custom-id")h(W=>({...W,id:F})),te("custom-url","");else if(r==="custom-url")h(W=>({...W,url:F})),te("custom-model","");else if(r==="custom-model")h(W=>({...W,model:F})),te("key","");else if(r==="key")if(y(D),d==="__custom__")s("validating");else{let W=n.find(Be=>Be.id===d)?.defaultModel??"";te("model",W)}else r==="model"&&(w(F),s("validating"))}let ht=()=>({lang:"1/8",backend:"2/8",provider:"3/8","custom-id":"3/8","custom-url":"3/8","custom-model":"3/8",key:"4/8",model:"5/8",validating:"6/8","validate-failed":"6/8",mcp:"7/8",sidecars:"8/8"})[r]??"";return $t(mt,{flexDirection:"column",paddingY:1,children:[pe(Lr,{columns:80}),pe(mt,{paddingTop:1,children:$t(f,{name:"fgDim",children:["aluy v",Fn," \xB7 ",O("configura\xE7\xE3o inicial","first-run setup"),r!=="done"?` \xB7 ${ht()}`:""]})}),$t(mt,{paddingTop:1,flexDirection:"column",children:[r==="lang"&&pe(Mp,{title:O("Idioma","Language"),opts:Pt.map(F=>({value:F.code,label:F.label})),cursor:Q,active:i}),r==="backend"&&pe(Mp,{title:O("Backend do modelo","Model backend"),opts:se,cursor:Q}),r==="provider"&&pe(Mp,{title:O("Provider","Provider"),opts:de,cursor:Q,active:d}),r==="mcp"&&pe(W8,{title:O("MCPs (opcional) \u2014 quais instalar?","MCPs (optional) \u2014 which to install?"),entries:j,cursor:I,selected:z,pt:ce}),r==="sidecars"&&$t(mt,{flexDirection:"column",children:[pe(Mp,{title:O("Complementos (modo turbo)","Complements (turbo mode)"),opts:ye,cursor:Q,active:T}),$t(mt,{paddingTop:1,flexDirection:"column",children:[pe(f,{name:"fgDim",children:O("Turbo roda modelos locais (Ollama) + mem\xF3ria \u2014 pede uma m\xE1quina razo\xE1vel:","Turbo runs local models (Ollama) + memory \u2014 needs a decent machine:")}),pe(f,{name:"fgDim",children:O(" ~8GB+ de RAM, alguns GB de disco e uma boa conex\xE3o (baixa o Ollama + modelos)."," ~8GB+ RAM, a few GB of disk and a good connection (downloads Ollama + models).")}),pe(f,{name:"fgDim",children:O(" Em m\xE1quina fraca, escolha Leve \u2014 o aluy funciona normal e voc\xEA liga o turbo depois."," On a weak machine, pick Lite \u2014 aluy works fine and you can enable turbo later.")})]})]}),r==="custom-id"&&pe(jd,{label:O("id do provider (ex.: tokenrouter)","provider id (e.g. tokenrouter)"),value:D}),r==="custom-url"&&pe(jd,{label:O("base URL (https, .../v1)","base URL (https, .../v1)"),value:D}),r==="custom-model"&&pe(jd,{label:O("modelo default","default model"),value:D}),r==="key"&&pe(jd,{label:O(`API key de ${d==="__custom__"?u.id:d} (oculta)`,`${d==="__custom__"?u.id:d} API key (hidden)`),value:D,mask:!0}),r==="model"&&pe(jd,{label:O("modelo (enter = default)","model (enter = default)"),value:D}),r==="validating"&&$t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:O("Testando o modelo\u2026","Testing the model\u2026")}),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:O("chamada real ao provider (n\xE3o prossigo se falhar)","real call to the provider (won't proceed if it fails)")})})]}),r==="validate-failed"&&$t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:O("\u2717 o modelo N\xC3O respondeu","\u2717 the model did NOT respond")}),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:L})}),pe(mt,{paddingTop:1,children:$t(f,{name:"fgDim",children:[O("enter/r tentar de novo \xB7 k trocar chave","enter/r retry \xB7 k change key"),d==="__custom__"?O(" \xB7 u trocar baseURL"," \xB7 u change baseURL"):"",O(" \xB7 c seguir mesmo assim \xB7 esc sair"," \xB7 c continue anyway \xB7 esc quit")]})})]}),r==="done"&&$t(mt,{flexDirection:"column",children:[Oe.map((F,W)=>pe(f,{name:F.startsWith("\u26A0")?"fg":"accent",children:F},W)),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:O("enter p/ entrar no aluy","enter to launch aluy")})})]})]}),r!=="done"&&r!=="validating"&&r!=="validate-failed"&&pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:r==="lang"||r==="backend"||r==="provider"||r==="sidecars"?`\u2191\u2193 ${O("navegar","move")} \xB7 enter ${O("escolher","select")} \xB7 esc ${O("sair","quit")}`:`${O("digite","type")} \xB7 enter ${O("confirmar","confirm")} \xB7 esc ${O("sair","quit")}`})})]})}function Mp(t){return $t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:t.title}),pe(mt,{flexDirection:"column",paddingTop:1,children:t.opts.map((e,o)=>$t(mt,{children:[pe(f,{name:o===t.cursor?"accent":"fgDim",children:o===t.cursor?"\u276F ":" "}),pe(f,{name:o===t.cursor?"accent":"fg",children:e.label}),e.hint?$t(f,{name:"fgDim",children:[" \xB7 ",e.hint]}):null,t.active!==void 0&&e.value===t.active?pe(f,{name:"fgDim",children:" \u25CF"}):null]},e.value))})]})}function W8(t){return $t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:t.title}),pe(mt,{flexDirection:"column",paddingTop:1,children:t.entries.map((e,o)=>{let n=t.selected.has(o),r=o===t.cursor;return $t(mt,{children:[pe(f,{name:r?"accent":"fgDim",children:r?"\u276F ":" "}),pe(f,{name:n?"accent":"fgDim",children:n?"[x] ":"[ ] "}),pe(f,{name:r?"accent":"fg",children:e.label}),$t(f,{name:"fgDim",children:[" \xB7 ",t.pt?e.hintPt:e.hintEn]})]},e.id)})}),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:t.pt?"ESPA\xC7O marca/desmarca \xB7 ENTER segue (pode seguir sem nenhum) \xB7 baixam na 1\xAA vez (npx/uvx)":"SPACE toggles \xB7 ENTER continues (none is fine) \xB7 fetched on first use (npx/uvx)"})})]})}function jd(t){let e=t.mask?"\u2022".repeat(t.value.length):t.value;return $t(mt,{children:[$t(f,{name:"fg",children:[t.label,": "]}),pe(f,{name:"accent",children:e}),pe(f,{name:"accent",children:"\u258F"})]})}async function G8(){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stdout.write(`aluy onboard precisa de um terminal interativo.
520
+ `);let a=await VP(t,process.platform,!0);for(let l=0;l<Z6&&!a;l++)await t8(e8),a=await VP(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 t8(t){return new Promise(e=>setTimeout(e,t))}async function o8(){for(let t of[gn,Xs])try{await(await fetch(`http://${zo}:${Dn}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:t,stream:!1})})).text()}catch{}}function n8(){if(process.platform!=="win32")try{let t=no("sh",["-lc","command -v ollama"],{encoding:"utf8",timeout:1e4});if(t.status===0&&(t.stdout??"").trim()!=="")return;let e=Tp(),n=["/usr/local/bin/ollama","/usr/bin/ollama","/opt/homebrew/bin/ollama",ve(e,".ollama","bin","ollama"),ve(Qo(),Qr,"bin","ollama")].find(i=>ut(i));if(n===void 0)return;let r=ve(e,".local","bin");Wx(r,{recursive:!0});let s=ve(r,"ollama");try{if(GP(s)===GP(n))return;N6(s)}catch{}try{I6(n,s)}catch{}}catch{}}function r8(){try{return no("python3",["-m","venv","--help"],{timeout:1e4}).status===0}catch{return!1}}function s8(){try{return no("python3",["-m","pip","--version"],{timeout:1e4}).status===0}catch{return!1}}function i8(t){let e=[],o=[];if(t.has("ollama")&&(QP()||(e.push("zstd (extrair o Ollama)"),o.push("zstd")),ZP()||(e.push("tar (extrair o Ollama)"),o.push("tar"))),t.has("mem0")||t.has("headroom")){let r=zx();r.ok?(r8()||(e.push("m\xF3dulo venv do Python (mem0/headroom criam um virtualenv)"),o.push("python3-venv")),s8()||(e.push("pip do Python (mem0/headroom instalam pacotes)"),o.push("python3-pip"))):(e.push(`python3 >= ${Nc} 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 eI(t,e,o){let n=t??"turbo",r=kr(e??{}),s=o?.useAgent!==!1,i=new qx({...o?.platform?{platform:o.platform}:{},...s?{agentInstaller:Q6}:{}});if(!s)for(let a of i8(r))process.stderr.write(a+`
521
+ `);return i.provisionAll(n,r)}var JP,Fa,B6,Mr,KP,qx,YP,X6,Z6,e8,tI=p(()=>{"use strict";N();JP=".aluy",Fa=448,B6=384;Mr="aluy-mem0-server.py";KP="application/vnd.ollama.image.model";qx=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=ve(Qo(),Qr,"bin","ollama");return ut(o)}case"mem0":{let o=ve(Qo(),vr,"bin","python3");return ut(o)&&$d(o)}case"headroom":{let o=ve(Qo(),Zr,"bin","headroom");return ut(o)}default:return!1}}async provision(e,o){let n=$6().uid;if(Rv(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 W6();case"mem0":return Y6();case"headroom":return V6();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!$c(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}}},YP="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",X6="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. ";Z6=24,e8=5e3});var nI={};dt(nI,{runFirstRunWizard:()=>oI,runInit:()=>c8});import{Entry as a8}from"@napi-rs/keyring";async function oI(t){let{config:e,configStore:o,prompt:n,out:r,err:s,entryFactory:i,isInteractive:a}=t,l=e.localProvider!==void 0,c=e.localModel!==void 0,d=!1,m=e.localProvider;if(m)try{let h=(i??l8)(oi,Nf(m)).getPassword();d=h!==""&&h!==void 0}catch{}if(l&&c&&d)return!0;if(!a)return s("aluy bootstrap: configura\xE7\xE3o de 1\xAA execu\xE7\xE3o necess\xE1ria (provider + chave + modelo)."),l||s(" \u2717 Falta provider local em ~/.aluy/config.json."),c||s(" \u2717 Falta modelo local em ~/.aluy/config.json."),d||s(" \u2717 Falta chave de API no keychain do SO."),s(""),s(" Rode `aluy bootstrap` interativamente (num terminal com TTY) para o wizard,"),s(" ou configure manualmente:"),s(" 1. `aluy login --provider <anthropic|openrouter|openai>` (grava a chave no keychain)"),s(" 2. Edite ~/.aluy/config.json e adicione:"),s(' "localProvider": "<provider>",'),s(' "localModel": "<modelo-nativo>"'),s(""),!1;if(r(""),r("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"),r("\u2551 Configura\xE7\xE3o de 1\xAA execu\xE7\xE3o \u2014 provider + chave + modelo \u2551"),r("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"),r(""),r("O `aluy bootstrap --agent` usa um modelo de linguagem para instalar"),r("depend\xEAncias. Precisamos de provider, chave de API e modelo."),r("(As credenciais ficam no keychain do SO \u2014 nunca em texto.)"),r(""),l)r(`Provider: ${m} (j\xE1 configurado)`);else{let u=(await n(`Provider (${Kx.join("/")}): `)).trim().toLowerCase();if(!Kx.includes(u))return s(`Provider inv\xE1lido "${u}". Use: ${Kx.join(", ")}.`),!1;m=u,r("")}if(d)r("\u2713 Chave j\xE1 est\xE1 no keychain.");else{let u=m,h=(await n(`API key de ${u}: `,{secret:!0})).trim();if(h==="")return s("Chave vazia \u2014 abortando."),!1;try{wa(u,h,i),r("\u2713 Chave guardada no keychain do SO.")}catch(g){return s(`Falha ao gravar no keychain: ${g instanceof Error?g.message:String(g)}`),s("(Por seguran\xE7a, a credencial nunca \xE9 gravada em texto. Instale o Secret Service no Linux.)"),!1}r("")}if(!c){let u=m,h=(await n("Modelo nativo (ex.: claude-sonnet-4-8): ")).trim();if(h==="")return s("Modelo vazio \u2014 abortando."),!1;o.save({localProvider:u,localModel:h}),r(`\u2713 Provider "${u}" + modelo "${h}" salvos em ~/.aluy/config.json.`),r("")}return r("Configura\xE7\xE3o conclu\xEDda. Seguindo para o provisionamento\u2026"),r(""),!0}function l8(t,e){return new a8(t,e)}async function c8(t){let{out:e,err:o}=t,n=t.configStore??new ot,r,s,i;try{i=n.load(),r=i.profile,s=i.sidecarToggles}catch{i={}}let a=t.isInteractive!==void 0?t.isInteractive:process.stdin.isTTY===!0&&process.stdout.isTTY===!0;if(t.prompt!==void 0||!a){let d=t.prompt??(async()=>"");if(!await oI({config:i,configStore:n,prompt:d,out:e,err:o,...t.entryFactory!==void 0?{entryFactory:t.entryFactory}:{},isInteractive:a}))return 0}if(e("O Aluy CLI j\xE1 est\xE1 instalado e pronto para uso."),e(""),e("Esta etapa instala os COMPLEMENTOS opcionais (modo turbo): mem\xF3ria, modelos"),e("locais e gest\xE3o de contexto. Eles enriquecem a experi\xEAncia, mas n\xE3o s\xE3o"),e("obrigat\xF3rios \u2014 se algum n\xE3o instalar, voc\xEA usa o Aluy CLI normalmente sem ele."),e(""),e(` Perfil escolhido: ${r??"turbo"}`),r==="leve")return e(" Perfil LEVE: nenhum complemento ser\xE1 instalado \u2014 o Aluy CLI j\xE1 est\xE1 pronto."),e(" Para instal\xE1-los depois, rode `aluy bootstrap` ou troque para o perfil turbo."),0;let l=t.agent!==!1;l?(e(" Instalando os complementos com o pr\xF3prio aluy \u2014 ele detecta o sistema, instala o que"),e(" faltar (Python, pip, etc.) e os complementos. \u26A0 Acesso total \xE0 m\xE1quina (com sudo quando"),e(" preciso). Voc\xEA ver\xE1 o progresso de cada um abaixo.")):e(" Instalando os complementos pelo caminho direto (--no-agent; requer Python j\xE1 pronto)..."),e("");let c=await eI(r,s,{useAgent:l});for(let d of c.targets){let m=d.installed?"\u2713":"\u2717";e(` ${m} ${d.target}: ${d.message}`)}return e(""),c.anySuccess?(e("Complementos instalados. O Aluy CLI est\xE1 pronto, agora com o modo turbo."),c.allFailed&&e("Observa\xE7\xE3o: alguns complementos n\xE3o instalaram \u2014 o Aluy CLI funciona sem eles."),0):c.targets.length===0?(e("Nenhum complemento a instalar \u2014 o Aluy CLI j\xE1 est\xE1 pronto."),0):(o("Nenhum complemento foi instalado agora \u2014 sem problema, o Aluy CLI funciona"),o("normalmente. Voc\xEA pode tentar de novo depois com `aluy bootstrap`."),1)}var Kx,rI=p(()=>{"use strict";Yo();tI();Aa();Kx=["anthropic","openrouter","openai"]});var sI={};dt(sI,{runUninstall:()=>h8});import{homedir as d8}from"node:os";import{join as _p}from"node:path";import{rmSync as u8,existsSync as m8}from"node:fs";import{spawnSync as f8}from"node:child_process";function p8(t){return[{label:"ollama (instala\xE7\xE3o local em ~/.aluy)",path:_p(t,Qr)},{label:"mem0 (venv)",path:_p(t,vr)},{label:"headroom (venv)",path:_p(t,Zr)}]}function h8(t={},e={}){let o=e.io??zt(),n=e.baseDir??_p(d8(),".aluy"),r=e.remove??(i=>u8(i,{recursive:!0,force:!0})),s=e.exists??m8;o.out("Removendo os complementos gerenciados pelo aluy (em ~/.aluy/)\u2026");for(let i of p8(n)){if(!s(i.path)){o.out(` \xB7 ${i.label}: n\xE3o estava instalado`);continue}try{r(i.path),o.out(` \u2713 ${i.label}: removido`)}catch{o.err(` \u2717 ${i.label}: falha ao remover (${i.path})`)}}return o.out(""),t.agent?y8(o):(o.out("Se o Ollama foi instalado no SISTEMA (via curl/winget), ele N\xC3O fica em ~/.aluy e"),o.out("continua instalado. Para remov\xEA-lo tamb\xE9m: `aluy uninstall --agent` (o aluy remove"),o.out("via o pr\xF3prio agente \u2014 \u26A0 acesso total + sudo). O CLI em si sai com `npm uninstall -g"),o.out("@hiperplano/aluy-cli`; sua config (~/.aluy/config.json) e credenciais N\xC3O s\xE3o tocadas."),0)}function g8(){return"DESINSTALE o Ollama instalado no SISTEMA (fora de ~/.aluy), detectando o SO. No Linux: pare/desabilite o servi\xE7o (`sudo systemctl stop ollama; sudo systemctl disable ollama` se existir), remova o bin\xE1rio (`sudo rm -f /usr/local/bin/ollama` ou onde estiver no PATH) e o usu\xE1rio/servi\xE7o se o install oficial criou. No macOS: encerre o app/servi\xE7o e remova-o. No Windows: `winget uninstall --id Ollama.Ollama`. Pacotes de sistema exigem privil\xE9gio: tente `sudo -n true`; se pedir senha, PE\xC7A ao usu\xE1rio. Opcional: remova os modelos baixados (`~/.ollama/models`). Confirme que `ollama` n\xE3o responde mais em http://127.0.0.1:11434/api/tags. Seja conciso."}function y8(t){let e=process.argv[1];return e?(t.out(" \u2500\u2500 Removendo o Ollama de sistema com o pr\xF3prio aluy \u2500\u2500 (acompanhe abaixo)"),t.out(""),f8(process.execPath,[e,"-p",g8(),"--yolo","--no-self-check"],{stdio:"inherit",timeout:6e5,env:{...process.env,ALUY_NO_WEAK_YOLO_WARN:"1",ALUY_PRINT_VERBOSE:"1"}}),0):(t.err("n\xE3o foi poss\xEDvel localizar o bin\xE1rio do aluy p/ delegar ao agente."),0)}var iI=p(()=>{"use strict";N();wr()});function v8(t){let e=/^#?([0-9a-f]{6})$/i.exec(t.trim());return e?`\x1B]11;#${e[1].toUpperCase()}\x07`:""}function k8(t){if(t.NO_COLOR!==void 0)return!1;let e=t.ALUY_SET_BG;if(e===void 0)return!0;let o=e.trim().toLowerCase();return!(o==="0"||o==="false"||o==="no"||o==="off")}function S8(t){if(!t)return null;let e=/rgb:([0-9a-f]{1,4})\/([0-9a-f]{1,4})\/([0-9a-f]{1,4})/i.exec(t);if(e)return{r:Yx(e[1]),g:Yx(e[2]),b:Yx(e[3])};let o=/#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i.exec(t);return o?{r:parseInt(o[1],16),g:parseInt(o[2],16),b:parseInt(o[3],16)}:null}function Yx(t){let e=parseInt(t,16),o=16**t.length-1;return Math.round(e/o*255)}function w8(t){let e=o=>{let n=o/255;return n<=.03928?n/12.92:((n+.055)/1.055)**2.4};return .2126*e(t.r)+.7152*e(t.g)+.0722*e(t.b)}function A8(t){return w8(t)>=x8?"light":"dark"}function E8(t){let e=S8(t);return e?A8(e):null}function T8(t=process.env){let e=t.ALUY_OSC11_TIMEOUT_MS;if(e!==void 0){let n=Number.parseInt(e,10);if(Number.isFinite(n)&&n>0)return Math.min(n,5e3)}return!!(t.SSH_CONNECTION||t.SSH_TTY||t.SSH_CLIENT)?1e3:500}async function lI(t){let e=t.env??process.env;if(e.NO_COLOR!==void 0||t.stdout.isTTY!==!0||t.stdin.isTTY!==!0)return null;let o=t.timeoutMs??T8(e),n=t.stdin,r=n.isRaw===!0;return await new Promise(s=>{let i="",a=!1,l={},c=()=>{l.id&&clearTimeout(l.id),n.off("data",m);try{r||n.setRawMode(!1),n.pause()}catch{}},d=u=>{a||(a=!0,c(),s(u))},m=u=>{i+=typeof u=="string"?u:u.toString("utf8");let h=E8(i);h!==null&&d(h)};try{n.setRawMode(!0),n.resume(),n.on("data",m),t.stdout.write(b8)}catch{d(null);return}l.id=setTimeout(()=>d(null),o)})}var b8,aI,Rp,x8,cI=p(()=>{"use strict";b8="\x1B]11;?\x07",aI="\x1B]111\x07";Rp=class{stdout;enabled;applied=!1;didReset=!1;constructor(e){let o=e.env??process.env;this.stdout=e.stdout,this.enabled=e.stdout.isTTY===!0&&k8(o)}get active(){return this.enabled}apply(e){if(!this.enabled)return"";let o=v8(e);return o===""?"":(this.stdout.write(o),this.applied=!0,this.didReset=!1,o)}reset(){return!this.enabled||!this.applied||this.didReset?"":(this.didReset=!0,this.stdout.write(aI),aI)}},x8=.5});import{createContext as _8,useContext as R8}from"react";import{Text as dI}from"ink";import{jsx as Cp}from"react/jsx-runtime";function hi(t){return Cp(uI.Provider,{value:t.theme,children:t.children})}function ne(){return R8(uI)}function f(t){let o=ne().role(t.name),n={};return o.color!==void 0&&(n.color=o.color),o.bold!==void 0&&(n.bold=o.bold),o.dimColor!==void 0&&(n.dimColor=o.dimColor),o.inverse!==void 0&&(n.inverse=o.inverse),Cp(dI,{...n,children:t.children})}function P(t){let o=ne().glyph(t.name);return t.role?Cp(f,{name:t.role,children:o}):Cp(dI,{children:o})}var uI,mI=p(()=>{"use strict";Of();uI=_8(Ko())});var ae=p(()=>{"use strict";Tf();_f();Of();Rf();ts();cI();mI()});import"react";import{Box as Op}from"ink";import{jsx as Ba,jsxs as fI}from"react/jsx-runtime";function Lr(t){let e=ne(),n=(t.columns??80)<Bd,r=e.unicode?"\u039B":"/\\";if(n)return fI(Op,{children:[Ba(f,{name:"accent",children:r}),Ba(f,{name:"accent",children:" luy"})]});let s=e.unicode?Ua:pI,i=e.unicode?Fd:hI;return fI(Op,{flexDirection:"row",children:[Ba(Op,{flexDirection:"column",children:s.map((a,l)=>Ba(f,{name:"accent",children:a},l))}),Ba(Op,{flexDirection:"column",children:i.map((a,l)=>Ba(f,{name:"accent",children:C8+a},l))})]})}var Ua,Fd,pI,hI,C8,Bd,Vx,gi=p(()=>{"use strict";ae();_f();Ua=[" \u2588\u2588 "," \u2588\u2588\u2588\u2588 "," \u2588\u2588 \u2588\u2588 ","\u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588"," "],Fd=["\u2588\u2588 ","\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588","\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588"," \u2588\u2588"],pI=[" /\\ "," / \\ ","/ \\","/ \\","/ \\"," "],hI=["## ","## ## ## ## ##","## ## ## ## ##","## ## ## #####","## ##### ##"," ##"],C8=" ",Bd=28,Vx=Ua.length});async function gI(t){let e=t.fetchImpl??fetch,o=t.baseUrl.replace(/\/+$/,""),n=new AbortController,r=setTimeout(()=>n.abort(),t.timeoutMs??15e3);try{let s=t.wireFormat==="anthropic"?await e(`${o}/v1/messages`,{method:"POST",signal:n.signal,headers:{"content-type":"application/json","x-api-key":t.key,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:t.model,max_tokens:1,messages:[{role:"user",content:"ping"}]})}):await e(`${o}/chat/completions`,{method:"POST",signal:n.signal,headers:{"content-type":"application/json",authorization:`Bearer ${t.key}`},body:JSON.stringify({model:t.model,max_tokens:1,messages:[{role:"user",content:"ping"}]})});if(s.ok)return{ok:!0,detail:`HTTP ${s.status}`};let i="";try{i=(await s.text()).replace(/\s+/g," ").slice(0,160)}catch{}let a=s.status===401||s.status===403?" \u2014 chave inv\xE1lida?":s.status===404?" \u2014 modelo ou baseURL errado?":"";return{ok:!1,detail:`HTTP ${s.status}${a} ${i}`.trim()}}catch(s){return{ok:!1,detail:`n\xE3o conectou (baseURL/rede?): ${s instanceof Error?s.message:String(s)}`}}finally{clearTimeout(r)}}var yI=p(()=>{"use strict"});import{mkdirSync as O8,readFileSync as M8,renameSync as L8,statSync as P8,writeFileSync as I8}from"node:fs";import{dirname as N8,join as D8}from"node:path";function bI(t){let e={};for(let o of t.servers){let n={command:o.command,args:[...o.args]};Object.keys(o.env).length>0&&(n.env={...o.env}),o.disabled===!0&&(n.disabled=!0),e[o.name]=n}return JSON.stringify({mcpServers:e},null,2)+`
522
+ `}var $8,Dt,jn,Ud=p(()=>{"use strict";N();$8=256*1024,Dt=class extends Error{constructor(e){super(e),this.name="McpWriteError"}},jn=class{file;constructor(e){this.file=e.file}get configPath(){return this.file}load(){let e;try{let n=P8(this.file);if(!n.isFile())throw new Dt(`${this.file}: n\xE3o \xE9 um arquivo regular.`);if(n.size>$8)throw new Dt(`${this.file}: grande demais p/ editar com seguran\xE7a.`);e=M8(this.file,"utf8")}catch(n){if(n instanceof Dt)throw n;return Se}let o;try{o=JSON.parse(e)}catch{throw new Dt(`${this.file}: JSON inv\xE1lido \u2014 conserte \xE0 m\xE3o antes de usar 'aluy mcp'.`)}try{return No(o)}catch(n){let r=n instanceof me?n.message:String(n);throw new Dt(r)}}add(e,o={}){if(!pa(e.name))throw new Dt(`nome de server inv\xE1lido "${e.name}" \u2014 use s\xF3 [A-Za-z0-9_-] (vira prefixo de tool).`);if(e.command.trim().length===0)throw new Dt(`server "${e.name}": "command" n\xE3o pode ser vazio.`);if(e.command.trim()==="--")throw new Dt(`server "${e.name}": "--" n\xE3o \xE9 um command (\xE9 o separador do 'aluy mcp add'). Use: aluy mcp add ${e.name} -- <command> [args...].`);let n=this.load(),r=n.servers.find(i=>i.name===e.name);if(r&&!o.force)throw new Dt(`server "${e.name}" j\xE1 existe em ${this.file} \u2014 use --force p/ sobrescrever.`);let s=[...n.servers.filter(i=>i.name!==e.name),e];return this.write({servers:s}),{replaced:r!==void 0}}remove(e){let o=this.load(),n=o.servers.length,r=o.servers.filter(s=>s.name!==e);return r.length===n?{removed:!1}:(this.write({servers:r}),{removed:!0})}setDisabled(e,o){let n=this.load(),r=n.servers.find(i=>i.name===e);if(!r)return{found:!1};let s={name:r.name,command:r.command,args:r.args,env:r.env,...o?{disabled:!0}:{}};return this.write({servers:n.servers.map(i=>i.name===e?s:i)}),{found:!0}}write(e){let o=N8(this.file);O8(o,{recursive:!0});let n=bI(e),r=D8(o,`.mcp.json.${process.pid}.${Date.now()}.tmp`);I8(r,n,{encoding:"utf8",mode:384}),L8(r,this.file)}}});var SI={};dt(SI,{mcpCatalog:()=>xI,runOnboard:()=>G8});import{useEffect as F8,useMemo as vI,useState as wo}from"react";import{render as B8,Box as mt,useApp as U8,useInput as j8}from"ink";import{homedir as kI}from"node:os";import{join as H8}from"node:path";import{jsx as pe,jsxs as $t}from"react/jsx-runtime";function xI(){return[{id:"playwright",label:"Playwright",hintPt:"automa\xE7\xE3o de navegador (oficial)",hintEn:"browser automation (official)",command:"npx",args:["-y","@playwright/mcp@latest"]},{id:"sequential-thinking",label:"Sequential Thinking",hintPt:"racioc\xEDnio passo-a-passo",hintEn:"step-by-step reasoning",command:"npx",args:["-y","@modelcontextprotocol/server-sequential-thinking"]},{id:"memory",label:"Memory",hintPt:"grafo de conhecimento persistente",hintEn:"persistent knowledge graph",command:"npx",args:["-y","@modelcontextprotocol/server-memory"]},{id:"filesystem",label:"Filesystem",hintPt:"arquivos (escopo: sua home)",hintEn:"files (scope: your home)",command:"npx",args:["-y","@modelcontextprotocol/server-filesystem",kI()]},{id:"rpa",label:"RPA (Aluy)",hintPt:"automa\xE7\xE3o visual de desktop \u2014 OCR/clica/digita \xB7 via uvx",hintEn:"visual desktop automation \u2014 OCR/click/type \xB7 via uvx",command:"uvx",args:["aluy-mcp-rpa"]}]}function q8(t){let e=U8(),o=t.store.load(),n=vI(()=>ns().entries,[]),[r,s]=wo("lang"),[i,a]=wo(o.lang??"pt-BR"),[l,c]=wo("local"),[d,m]=wo("anthropic"),[u,h]=wo({id:"",url:"",model:""}),[g,y]=wo(""),[b,w]=wo(""),[T,E]=wo("leve"),[L,B]=wo(""),j=vI(()=>xI(),[]),[z,V]=wo(new Set),[I,J]=wo(0),[Q,K]=wo(Math.max(0,Pt.findIndex(F=>F.code===i))),[D,X]=wo(""),[Oe,Y]=wo([]),ce=i==="pt-BR",O=(F,W)=>ce?F:W,se=[{value:"local",label:O("Local (sua chave / BYO)","Local (your key / BYO)"),hint:O("direto no provider","direct to provider")},{value:"broker",label:O("Broker (conta Aluy)","Broker (Aluy account)"),hint:O("autentica depois com aluy login","authenticate later with aluy login")}],de=[...n.map(F=>({value:F.id,label:F.label,hint:F.defaultModel})),{value:"__custom__",label:O("+ custom (OpenAI-compat\xEDvel)","+ custom (OpenAI-compatible)"),hint:O("ex.: TokenRouter, vLLM\u2026","e.g. TokenRouter, vLLM\u2026")}],ye=[{value:"turbo",label:O("Turbo \u2014 instala tudo","Turbo \u2014 install all"),hint:O("ollama + mem0 + headroom \xB7 pede m\xE1quina razo\xE1vel","ollama + mem0 + headroom \xB7 needs a decent machine")},{value:"leve",label:O("Leve \u2014 nada agora","Lite \u2014 nothing now"),hint:O("liga depois com aluy bootstrap","enable later with aluy bootstrap")}],Z=F=>F==="lang"?Pt.length:F==="backend"?se.length:F==="provider"?de.length:F==="sidecars"?ye.length:0;function te(F,W=""){X(W),s(F)}function Me(){K(Math.max(0,ye.findIndex(F=>F.value==="leve"))),s("sidecars")}function Ht(){J(0),s("mcp")}function pt(){let F=d==="__custom__",W=n.find(Be=>Be.id===d);return{wireFormat:F?"openai-compat":W?.wireFormat??"openai-compat",baseUrl:F?u.url.trim():W?.baseUrl??"",model:(F?u.model:b.trim()||W?.defaultModel||"").trim(),key:g.trim()}}F8(()=>{if(r!=="validating")return;let F=pt();if(l!=="local"||F.key===""||F.baseUrl===""||F.model===""){Ht();return}let W=!1;return gI(F).then(Be=>{W||(Be.ok?(B(""),Ht()):(B(Be.detail),s("validate-failed")))}),()=>{W=!0}},[r]);function it(F){let W=[],Be={lang:i,backend:l};if(l==="local"){Be.localProvider=d==="__custom__"?u.id.trim():d;let xe=d==="__custom__"?u.model:b;xe.trim()!==""&&(Be.localModel=xe.trim())}if(Be.profile=F,t.store.save(Be),W.push(`\u2713 ${O("config","config")}: backend ${l}`),l==="local"&&d==="__custom__"&&u.id.trim()!==""&&u.url.trim()!=="")try{h0({id:u.id.trim(),wireFormat:"openai-compat",baseUrl:u.url.trim(),defaultModel:u.model.trim()||u.id.trim()}),W.push(O(`\u2713 provider custom "${u.id.trim()}" registrado`,`\u2713 custom provider "${u.id.trim()}" registered`))}catch(xe){W.push(`\u26A0 providers.json: ${String(xe)}`)}if(l==="local"&&g.trim()!==""){let xe=d==="__custom__"?u.id.trim():d;try{wa(xe,g.trim()),W.push(O(`\u2713 chave de "${xe}" no keychain`,`\u2713 "${xe}" key in keychain`))}catch{W.push(O(`\u26A0 keychain indispon\xEDvel \u2014 rode: aluy login --provider ${xe}`,`\u26A0 keychain unavailable \u2014 run: aluy login --provider ${xe}`))}}let ue=j.filter((xe,Ze)=>z.has(Ze));if(ue.length>0)try{let xe=new jn({file:H8(kI(),".aluy","mcp.json")});for(let Ze of ue)xe.add({name:Ze.id,command:Ze.command,args:[...Ze.args],env:{}},{force:!0});W.push(O(`\u2713 ${ue.length} MCP(s) registrado(s): ${ue.map(Ze=>Ze.id).join(", ")}`,`\u2713 ${ue.length} MCP(s) registered: ${ue.map(Ze=>Ze.id).join(", ")}`))}catch(xe){W.push(`\u26A0 mcp.json: ${String(xe)}`)}W.push(`\u2713 sidecars: ${F}`),F==="turbo"&&W.push(O(" \u2192 instale agora: aluy bootstrap"," \u2192 install now: aluy bootstrap")),L!==""&&W.push(O("\u26A0 modelo N\xC3O validado \u2014 pode n\xE3o funcionar","\u26A0 model NOT validated \u2014 may not work")),l==="broker"&&W.push(O("\u2192 broker: autentique com `aluy login`","\u2192 broker: authenticate with `aluy login`")),Y(W),s("done")}j8((F,W)=>{if(r==="done"){(W.return||W.escape||F)&&e.exit();return}if(r==="validating")return;if(r==="validate-failed"){if(W.escape){e.exit();return}let ue=(F||"").toLowerCase();W.return||ue==="r"?s("validating"):ue==="k"?te("key",""):ue==="u"&&d==="__custom__"?te("custom-url",u.url):ue==="c"&&Ht();return}if(W.escape){e.exit();return}if(r==="mcp"){W.upArrow?J(ue=>Math.max(0,ue-1)):W.downArrow?J(ue=>Math.min(j.length-1,ue+1)):F===" "?V(ue=>{let xe=new Set(ue);return xe.has(I)?xe.delete(I):xe.add(I),xe}):W.return&&Me();return}if(r==="lang"||r==="backend"||r==="provider"||r==="sidecars"){let ue=Z(r);W.upArrow?K(xe=>Math.max(0,xe-1)):W.downArrow?K(xe=>Math.min(ue-1,xe+1)):W.return&&At();return}if(W.return){ct();return}if(W.backspace||W.delete){X(ue=>ue.slice(0,-1));return}F&&!W.ctrl&&!W.meta&&!W.upArrow&&!W.downArrow&&!W.leftArrow&&!W.rightArrow&&X(ue=>ue+F)});function At(){if(r==="lang"){let F=Pt[Q].code;t.store.saveLang(F),a(F),K(0),s("backend")}else if(r==="backend"){let F=se[Q].value;c(F),F==="broker"?Ht():(K(0),s("provider"))}else if(r==="provider"){let F=de[Q].value;if(m(F),F==="__custom__")te("custom-id","");else{let W=n.find(ue=>ue.id===F);W?.auth?.length===1&&W.auth[0]==="none"?(y(""),te("model",W?.defaultModel??"")):te("key","")}}else if(r==="sidecars"){let F=ye[Q].value;E(F),it(F)}}function ct(){let F=D.trim();if(r==="custom-id")h(W=>({...W,id:F})),te("custom-url","");else if(r==="custom-url")h(W=>({...W,url:F})),te("custom-model","");else if(r==="custom-model")h(W=>({...W,model:F})),te("key","");else if(r==="key")if(y(D),d==="__custom__")s("validating");else{let W=n.find(Be=>Be.id===d)?.defaultModel??"";te("model",W)}else r==="model"&&(w(F),s("validating"))}let ht=()=>({lang:"1/8",backend:"2/8",provider:"3/8","custom-id":"3/8","custom-url":"3/8","custom-model":"3/8",key:"4/8",model:"5/8",validating:"6/8","validate-failed":"6/8",mcp:"7/8",sidecars:"8/8"})[r]??"";return $t(mt,{flexDirection:"column",paddingY:1,children:[pe(Lr,{columns:80}),pe(mt,{paddingTop:1,children:$t(f,{name:"fgDim",children:["aluy v",Fn," \xB7 ",O("configura\xE7\xE3o inicial","first-run setup"),r!=="done"?` \xB7 ${ht()}`:""]})}),$t(mt,{paddingTop:1,flexDirection:"column",children:[r==="lang"&&pe(Mp,{title:O("Idioma","Language"),opts:Pt.map(F=>({value:F.code,label:F.label})),cursor:Q,active:i}),r==="backend"&&pe(Mp,{title:O("Backend do modelo","Model backend"),opts:se,cursor:Q}),r==="provider"&&pe(Mp,{title:O("Provider","Provider"),opts:de,cursor:Q,active:d}),r==="mcp"&&pe(W8,{title:O("MCPs (opcional) \u2014 quais instalar?","MCPs (optional) \u2014 which to install?"),entries:j,cursor:I,selected:z,pt:ce}),r==="sidecars"&&$t(mt,{flexDirection:"column",children:[pe(Mp,{title:O("Complementos (modo turbo)","Complements (turbo mode)"),opts:ye,cursor:Q,active:T}),$t(mt,{paddingTop:1,flexDirection:"column",children:[pe(f,{name:"fgDim",children:O("Turbo roda modelos locais (Ollama) + mem\xF3ria \u2014 pede uma m\xE1quina razo\xE1vel:","Turbo runs local models (Ollama) + memory \u2014 needs a decent machine:")}),pe(f,{name:"fgDim",children:O(" ~8GB+ de RAM, alguns GB de disco e uma boa conex\xE3o (baixa o Ollama + modelos)."," ~8GB+ RAM, a few GB of disk and a good connection (downloads Ollama + models).")}),pe(f,{name:"fgDim",children:O(" Em m\xE1quina fraca, escolha Leve \u2014 o aluy funciona normal e voc\xEA liga o turbo depois."," On a weak machine, pick Lite \u2014 aluy works fine and you can enable turbo later.")})]})]}),r==="custom-id"&&pe(jd,{label:O("id do provider (ex.: tokenrouter)","provider id (e.g. tokenrouter)"),value:D}),r==="custom-url"&&pe(jd,{label:O("base URL (https, .../v1)","base URL (https, .../v1)"),value:D}),r==="custom-model"&&pe(jd,{label:O("modelo default","default model"),value:D}),r==="key"&&pe(jd,{label:O(`API key de ${d==="__custom__"?u.id:d} (oculta)`,`${d==="__custom__"?u.id:d} API key (hidden)`),value:D,mask:!0}),r==="model"&&pe(jd,{label:O("modelo (enter = default)","model (enter = default)"),value:D}),r==="validating"&&$t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:O("Testando o modelo\u2026","Testing the model\u2026")}),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:O("chamada real ao provider (n\xE3o prossigo se falhar)","real call to the provider (won't proceed if it fails)")})})]}),r==="validate-failed"&&$t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:O("\u2717 o modelo N\xC3O respondeu","\u2717 the model did NOT respond")}),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:L})}),pe(mt,{paddingTop:1,children:$t(f,{name:"fgDim",children:[O("enter/r tentar de novo \xB7 k trocar chave","enter/r retry \xB7 k change key"),d==="__custom__"?O(" \xB7 u trocar baseURL"," \xB7 u change baseURL"):"",O(" \xB7 c seguir mesmo assim \xB7 esc sair"," \xB7 c continue anyway \xB7 esc quit")]})})]}),r==="done"&&$t(mt,{flexDirection:"column",children:[Oe.map((F,W)=>pe(f,{name:F.startsWith("\u26A0")?"fg":"accent",children:F},W)),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:O("enter p/ entrar no aluy","enter to launch aluy")})})]})]}),r!=="done"&&r!=="validating"&&r!=="validate-failed"&&pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:r==="lang"||r==="backend"||r==="provider"||r==="sidecars"?`\u2191\u2193 ${O("navegar","move")} \xB7 enter ${O("escolher","select")} \xB7 esc ${O("sair","quit")}`:`${O("digite","type")} \xB7 enter ${O("confirmar","confirm")} \xB7 esc ${O("sair","quit")}`})})]})}function Mp(t){return $t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:t.title}),pe(mt,{flexDirection:"column",paddingTop:1,children:t.opts.map((e,o)=>$t(mt,{children:[pe(f,{name:o===t.cursor?"accent":"fgDim",children:o===t.cursor?"\u276F ":" "}),pe(f,{name:o===t.cursor?"accent":"fg",children:e.label}),e.hint?$t(f,{name:"fgDim",children:[" \xB7 ",e.hint]}):null,t.active!==void 0&&e.value===t.active?pe(f,{name:"fgDim",children:" \u25CF"}):null]},e.value))})]})}function W8(t){return $t(mt,{flexDirection:"column",children:[pe(f,{name:"fg",children:t.title}),pe(mt,{flexDirection:"column",paddingTop:1,children:t.entries.map((e,o)=>{let n=t.selected.has(o),r=o===t.cursor;return $t(mt,{children:[pe(f,{name:r?"accent":"fgDim",children:r?"\u276F ":" "}),pe(f,{name:n?"accent":"fgDim",children:n?"[x] ":"[ ] "}),pe(f,{name:r?"accent":"fg",children:e.label}),$t(f,{name:"fgDim",children:[" \xB7 ",t.pt?e.hintPt:e.hintEn]})]},e.id)})}),pe(mt,{paddingTop:1,children:pe(f,{name:"fgDim",children:t.pt?"ESPA\xC7O marca/desmarca \xB7 ENTER segue (pode seguir sem nenhum) \xB7 baixam na 1\xAA vez (npx/uvx)":"SPACE toggles \xB7 ENTER continues (none is fine) \xB7 fetched on first use (npx/uvx)"})})]})}function jd(t){let e=t.mask?"\u2022".repeat(t.value.length):t.value;return $t(mt,{children:[$t(f,{name:"fg",children:[t.label,": "]}),pe(f,{name:"accent",children:e}),pe(f,{name:"accent",children:"\u258F"})]})}async function G8(){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stdout.write(`aluy onboard precisa de um terminal interativo.
523
523
  Abra um terminal e rode: aluy onboard
524
- `),0;let t=new ot,e=Ko({});return await B8(pe(hi,{theme:e,children:pe(q8,{store:t})})).waitUntilExit(),0}var wI=p(()=>{"use strict";gi();ae();Yc();ba();Yo();Vc();Aa();yI();Ud()});var AI={};ut(AI,{runModels:()=>V8});function z8(t){return t.entries.map(e=>({provider:e.id,authModes:e.auth,defaultModel:e.defaultModel,...e.catalogHint!==void 0?{catalogHint:e.catalogHint}:{}}))}function K8(t){return(t instanceof Error?t.name:"")==="SessionExpiredError"?"fa\xE7a `aluy login` (sem sess\xE3o).":"broker fora ou sem conex\xE3o (cheque a ALUY_BROKER_URL)."}async function Xx(t){try{return{ok:!0,data:await t()}}catch(e){return{ok:!1,reason:K8(e)}}}async function Y8(t,e){let o=ko(e),n=Vo(e),r=t.store??new Kt,s=new Wt({...o,baseUrl:o.identityBaseUrl,store:r},{envToken:()=>e.ALUY_TOKEN}),i=t.brokerFetch?{fetch:t.brokerFetch}:{},a=Yl({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),l=Xl({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),c=Vl({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),[d,m,u]=await Promise.all([Xx(()=>a.list()),Xx(()=>l.list()),Xx(()=>c.list())]);return{tiers:d,providers:m,custom:u}}async function V8(t={}){let e=t.env??process.env,o=t.out??(m=>process.stdout.write(m+`
525
- `)),n=t.scope??"both",r=t.view??"models",s=t.localCatalog??ns(),i=z8(s),l=n==="broker"||n==="both"?await Y8(t,e):void 0,c=Ms({env:e.ALUY_BACKEND});if(t.json===!0){let m={view:r,scope:n,activeBackend:c,local:i,...l!==void 0?{broker:l}:{}};return o(JSON.stringify(m)),0}let d=vy({scope:n,view:r,activeBackend:c,local:i,...l!==void 0?{broker:l}:{}});o(r==="providers"?"aluy providers \u2014 providers dispon\xEDveis (local + broker)":"aluy models \u2014 providers e modelos dispon\xEDveis"),o("");for(let m of d.lines)o(m);return 0}var EI=p(()=>{"use strict";N();rs();ni();Vc();Bn()});var TI={};ut(TI,{createRegistryFetch:()=>Jx,runMcpSearch:()=>Qx});function Jx(t={}){let e=new ai({aluyHosts:[ha],includeSearchHosts:!1}),o=t.ports??{resolver:new Vt,fetcher:new is},n=t.policy??X8;return async(r,s)=>{let i;try{i=new URL(r).hostname.toLowerCase()}catch{return{ok:!1,reason:`URL inv\xE1lida do registro: "${r}"`}}if(!e.isAllowed(i))return{ok:!1,reason:`egress bloqueado: "${i}" n\xE3o \xE9 o registro oficial (${ha})`};let a=await fa(r,o,n,s?{signal:s}:{});return a.ok?{ok:!0,status:a.status,body:a.body}:{ok:!1,reason:a.reason}}}async function Qx(t,e){let o=t.trim();if(o.length===0)return{text:`uso: aluy mcp search <query>
526
- Busca servers MCP no registro oficial aberto (sem login). Ex.: aluy mcp search filesystem`,exitCode:2};let n=await Gv(o,e);return{text:zv(n),exitCode:n.ok?0:1}}var X8,Lp=p(()=>{"use strict";N();lp();as();X8={maxBytes:1024*1024,timeoutMs:12e3,maxRedirects:0}});var II={};ut(II,{MCP_HELP_TEXT:()=>RI,parseMcpCommand:()=>CI,runMcp:()=>t4});import{homedir as _I}from"node:os";import{join as Hd}from"node:path";import{readFileSync as J8,statSync as Q8}from"node:fs";function CI(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==="remove"||e==="rm"){let o=t.slice(1),{flags:n,positionals:r}=Z8(o),s=r[0];return s===void 0?{kind:"error",message:"mcp remove: falta o <nome> do server."}:r.length>1?{kind:"error",message:`mcp remove: argumento inesperado "${r[1]}".`}:{kind:"remove",name:s,project:n.project}}if(e==="add"){let o=t.slice(1),n=[],r=[],s=!1,i=!1,a=!1;for(let d=0;d<o.length;d++){let m=o[d];if(!a){if(m==="--"&&r.length<=1){a=!0;continue}if(m==="--project"){s=!0;continue}if(m==="--force"){i=!0;continue}if(m==="--env"||m.startsWith("--env=")){let u=m==="--env"?o[++d]:m.slice(6);if(u===void 0)return{kind:"error",message:"mcp add: --env requer K=V."};let h=e4(u);if(h===void 0)return{kind:"error",message:`mcp add: --env inv\xE1lido "${u}" \u2014 use K=V.`};n.push(h);continue}}r.push(m)}let l=r[0],c=r[1];return l===void 0?{kind:"error",message:"mcp add: falta o <nome> do server."}:c===void 0?{kind:"error",message:`mcp add: falta o <command> do server "${l}".`}:c==="--"?{kind:"error",message:`mcp add: "--" n\xE3o \xE9 um <command> \u2014 \xE9 o separador. Use: aluy mcp add ${l} -- <command> [args...].`}:{kind:"add",name:l,command:c,args:r.slice(2),env:n,project:s,force:i}}return{kind:"error",message:`mcp: subcomando desconhecido "${e}".`}}function Z8(t){let e=[],o=!1;for(let n of t)n==="--project"?o=!0:e.push(n);return{flags:{project:o},positionals:e}}function e4(t){let e=t.indexOf("=");if(!(e<=0))return[t.slice(0,e),t.slice(e+1)]}async function t4(t,e={}){let o=e.io??zt(),n=CI(t);switch(n.kind){case"help":return o.out(RI),0;case"error":return o.err(`aluy: ${n.message}`),o.err("rode 'aluy mcp --help' p/ ver o uso."),2;case"add":return o4(n,e,o);case"remove":return n4(n,e,o);case"list":return r4(e,o)}}function OI(t){return t.aluyHome??Hd(_I(),".aluy")}function MI(t){return t.codexHome??Hd(_I(),".codex")}function LI(t){return t.workspaceRoot??process.cwd()}function PI(t,e){return t?Hd(LI(e),$o):Hd(OI(e),Ra)}function o4(t,e,o){let n={};for(let[a,l]of t.env)jc(a,l).looksLikeSecret&&o.err(`aluy: \u26A0 --env ${a} parece um SEGREDO literal. O mcp.json \xE9 leg\xEDvel e version\xE1vel, ent\xE3o n\xE3o deve guardar credenciais. Prefira uma REFER\xCANCIA (--env ${a}=$NOME_DA_VAR), resolvida do teu ambiente no spawn. Gravando assim mesmo.`),n[a]=l;let r={name:t.name,command:t.command,args:t.args,env:n},s=PI(t.project,e),i=new jn({file:s});try{let{replaced:a}=i.add(r,{force:t.force}),l=t.project?".mcp.json (projeto)":"~/.aluy/mcp.json";return o.out(`${a?"atualizado":"adicionado"} "${t.name}" em ${l}: ${t.command}${t.args.length?" "+t.args.join(" "):""}`),o.out("o server passa pela catraca no runtime (conectar = confirma\xE7\xE3o). `aluy mcp list`."),0}catch(a){return o.err(`aluy: ${a instanceof Dt?a.message:String(a)}`),1}}function n4(t,e,o){let n=PI(t.project,e),r=new jn({file:n});try{let{removed:s}=r.remove(t.name);if(s){let a=t.project?".mcp.json (projeto)":"~/.aluy/mcp.json";return o.out(`removido "${t.name}" de ${a}.`),0}return o.err(`aluy: server "${t.name}" n\xE3o est\xE1 em ${t.project?".mcp.json":"~/.aluy/mcp.json"}.`),new Xo({baseDir:MI(e)}).load().config.servers.some(a=>a.name===t.name)&&o.err(`aluy: "${t.name}" vem do Codex (~/.codex/config.toml) \u2014 o aluy N\xC3O o gerencia; edite o config.toml do Codex \xE0 m\xE3o.`),1}catch(s){return o.err(`aluy: ${s instanceof Dt?s.message:String(s)}`),1}}function r4(t,e){let o=new Xo({baseDir:MI(t)}).load(),n=new Rr({baseDir:OI(t)}).load(),r=i4(LI(t)),s=[o.error,n.error,r.error].filter(l=>!!l);for(let l of s)e.err(`aluy: MCP \u2014 ${l}`);let i=[{origin:"codex",config:o.config},{origin:"aluy-global",config:n.config},{origin:"project",config:r.config}],a=Js(i);if(a.length===0)return e.out("nenhum server MCP configurado. Adicione com: aluy mcp add <nome> <command> [args...]"),0;e.out(`servers MCP (${a.length}):`);for(let l of a){let c=l.managed?"":" [n\xE3o-gerenciado]";e.out(` ${l.name} \u2014 ${Hc(l.origin)}${c}`),e.out(` ${l.command}${l.args.length?" "+l.args.join(" "):""}`),l.envKeys.length&&e.out(` env: ${l.envKeys.join(", ")}`);let d=Qs(l);d!==void 0&&e.err(`aluy: \u26A0 ${d}`)}return e.out("estado/tools por server: use /mcp dentro da sess\xE3o (handshake ao vivo)."),0}function i4(t){let e=Hd(t,$o),o;try{let r=Q8(e);if(!r.isFile()||r.size>s4)return{config:Se};o=J8(e,"utf8")}catch{return{config:Se}}let n;try{n=JSON.parse(o)}catch{return{config:Se,error:`${e}: JSON inv\xE1lido.`}}try{return{config:No(n)}}catch(r){return{config:Se,error:r instanceof me?r.message:String(r)}}}var RI,s4,NI=p(()=>{"use strict";N();wr();si();od();Ud();si();Hf();RI=`aluy mcp \u2014 gerencia servers MCP locais (stdio) sem editar o JSON \xE0 m\xE3o.
524
+ `),0;let t=new ot,e=Ko({});return await B8(pe(hi,{theme:e,children:pe(q8,{store:t})})).waitUntilExit(),0}var wI=p(()=>{"use strict";gi();ae();Yc();ba();Yo();Vc();Aa();yI();Ud()});var AI={};dt(AI,{runModels:()=>V8});function z8(t){return t.entries.map(e=>({provider:e.id,authModes:e.auth,defaultModel:e.defaultModel,...e.catalogHint!==void 0?{catalogHint:e.catalogHint}:{}}))}function K8(t){return(t instanceof Error?t.name:"")==="SessionExpiredError"?"fa\xE7a `aluy login` (sem sess\xE3o).":"broker fora ou sem conex\xE3o (cheque a ALUY_BROKER_URL)."}async function Xx(t){try{return{ok:!0,data:await t()}}catch(e){return{ok:!1,reason:K8(e)}}}async function Y8(t,e){let o=ko(e),n=Vo(e),r=t.store??new Kt,s=new Wt({...o,baseUrl:o.identityBaseUrl,store:r},{envToken:()=>e.ALUY_TOKEN}),i=t.brokerFetch?{fetch:t.brokerFetch}:{},a=Yl({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),l=Xl({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),c=Vl({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),[d,m,u]=await Promise.all([Xx(()=>a.list()),Xx(()=>l.list()),Xx(()=>c.list())]);return{tiers:d,providers:m,custom:u}}async function V8(t={}){let e=t.env??process.env,o=t.out??(m=>process.stdout.write(m+`
525
+ `)),n=t.scope??"both",r=t.view??"models",s=t.localCatalog??ns(),i=z8(s),l=n==="broker"||n==="both"?await Y8(t,e):void 0,c=Ms({env:e.ALUY_BACKEND});if(t.json===!0){let m={view:r,scope:n,activeBackend:c,local:i,...l!==void 0?{broker:l}:{}};return o(JSON.stringify(m)),0}let d=vy({scope:n,view:r,activeBackend:c,local:i,...l!==void 0?{broker:l}:{}});o(r==="providers"?"aluy providers \u2014 providers dispon\xEDveis (local + broker)":"aluy models \u2014 providers e modelos dispon\xEDveis"),o("");for(let m of d.lines)o(m);return 0}var EI=p(()=>{"use strict";N();rs();ni();Vc();Bn()});var TI={};dt(TI,{createRegistryFetch:()=>Jx,runMcpSearch:()=>Qx});function Jx(t={}){let e=new ai({aluyHosts:[ha],includeSearchHosts:!1}),o=t.ports??{resolver:new Vt,fetcher:new is},n=t.policy??X8;return async(r,s)=>{let i;try{i=new URL(r).hostname.toLowerCase()}catch{return{ok:!1,reason:`URL inv\xE1lida do registro: "${r}"`}}if(!e.isAllowed(i))return{ok:!1,reason:`egress bloqueado: "${i}" n\xE3o \xE9 o registro oficial (${ha})`};let a=await fa(r,o,n,s?{signal:s}:{});return a.ok?{ok:!0,status:a.status,body:a.body}:{ok:!1,reason:a.reason}}}async function Qx(t,e){let o=t.trim();if(o.length===0)return{text:`uso: aluy mcp search <query>
526
+ Busca servers MCP no registro oficial aberto (sem login). Ex.: aluy mcp search filesystem`,exitCode:2};let n=await Gv(o,e);return{text:zv(n),exitCode:n.ok?0:1}}var X8,Lp=p(()=>{"use strict";N();lp();as();X8={maxBytes:1024*1024,timeoutMs:12e3,maxRedirects:0}});var II={};dt(II,{MCP_HELP_TEXT:()=>RI,parseMcpCommand:()=>CI,runMcp:()=>t4});import{homedir as _I}from"node:os";import{join as Hd}from"node:path";import{readFileSync as J8,statSync as Q8}from"node:fs";function CI(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==="remove"||e==="rm"){let o=t.slice(1),{flags:n,positionals:r}=Z8(o),s=r[0];return s===void 0?{kind:"error",message:"mcp remove: falta o <nome> do server."}:r.length>1?{kind:"error",message:`mcp remove: argumento inesperado "${r[1]}".`}:{kind:"remove",name:s,project:n.project}}if(e==="add"){let o=t.slice(1),n=[],r=[],s=!1,i=!1,a=!1;for(let d=0;d<o.length;d++){let m=o[d];if(!a){if(m==="--"&&r.length<=1){a=!0;continue}if(m==="--project"){s=!0;continue}if(m==="--force"){i=!0;continue}if(m==="--env"||m.startsWith("--env=")){let u=m==="--env"?o[++d]:m.slice(6);if(u===void 0)return{kind:"error",message:"mcp add: --env requer K=V."};let h=e4(u);if(h===void 0)return{kind:"error",message:`mcp add: --env inv\xE1lido "${u}" \u2014 use K=V.`};n.push(h);continue}}r.push(m)}let l=r[0],c=r[1];return l===void 0?{kind:"error",message:"mcp add: falta o <nome> do server."}:c===void 0?{kind:"error",message:`mcp add: falta o <command> do server "${l}".`}:c==="--"?{kind:"error",message:`mcp add: "--" n\xE3o \xE9 um <command> \u2014 \xE9 o separador. Use: aluy mcp add ${l} -- <command> [args...].`}:{kind:"add",name:l,command:c,args:r.slice(2),env:n,project:s,force:i}}return{kind:"error",message:`mcp: subcomando desconhecido "${e}".`}}function Z8(t){let e=[],o=!1;for(let n of t)n==="--project"?o=!0:e.push(n);return{flags:{project:o},positionals:e}}function e4(t){let e=t.indexOf("=");if(!(e<=0))return[t.slice(0,e),t.slice(e+1)]}async function t4(t,e={}){let o=e.io??zt(),n=CI(t);switch(n.kind){case"help":return o.out(RI),0;case"error":return o.err(`aluy: ${n.message}`),o.err("rode 'aluy mcp --help' p/ ver o uso."),2;case"add":return o4(n,e,o);case"remove":return n4(n,e,o);case"list":return r4(e,o)}}function OI(t){return t.aluyHome??Hd(_I(),".aluy")}function MI(t){return t.codexHome??Hd(_I(),".codex")}function LI(t){return t.workspaceRoot??process.cwd()}function PI(t,e){return t?Hd(LI(e),$o):Hd(OI(e),Ra)}function o4(t,e,o){let n={};for(let[a,l]of t.env)jc(a,l).looksLikeSecret&&o.err(`aluy: \u26A0 --env ${a} parece um SEGREDO literal. O mcp.json \xE9 leg\xEDvel e version\xE1vel, ent\xE3o n\xE3o deve guardar credenciais. Prefira uma REFER\xCANCIA (--env ${a}=$NOME_DA_VAR), resolvida do teu ambiente no spawn. Gravando assim mesmo.`),n[a]=l;let r={name:t.name,command:t.command,args:t.args,env:n},s=PI(t.project,e),i=new jn({file:s});try{let{replaced:a}=i.add(r,{force:t.force}),l=t.project?".mcp.json (projeto)":"~/.aluy/mcp.json";return o.out(`${a?"atualizado":"adicionado"} "${t.name}" em ${l}: ${t.command}${t.args.length?" "+t.args.join(" "):""}`),o.out("o server passa pela catraca no runtime (conectar = confirma\xE7\xE3o). `aluy mcp list`."),0}catch(a){return o.err(`aluy: ${a instanceof Dt?a.message:String(a)}`),1}}function n4(t,e,o){let n=PI(t.project,e),r=new jn({file:n});try{let{removed:s}=r.remove(t.name);if(s){let a=t.project?".mcp.json (projeto)":"~/.aluy/mcp.json";return o.out(`removido "${t.name}" de ${a}.`),0}return o.err(`aluy: server "${t.name}" n\xE3o est\xE1 em ${t.project?".mcp.json":"~/.aluy/mcp.json"}.`),new Xo({baseDir:MI(e)}).load().config.servers.some(a=>a.name===t.name)&&o.err(`aluy: "${t.name}" vem do Codex (~/.codex/config.toml) \u2014 o aluy N\xC3O o gerencia; edite o config.toml do Codex \xE0 m\xE3o.`),1}catch(s){return o.err(`aluy: ${s instanceof Dt?s.message:String(s)}`),1}}function r4(t,e){let o=new Xo({baseDir:MI(t)}).load(),n=new Rr({baseDir:OI(t)}).load(),r=i4(LI(t)),s=[o.error,n.error,r.error].filter(l=>!!l);for(let l of s)e.err(`aluy: MCP \u2014 ${l}`);let i=[{origin:"codex",config:o.config},{origin:"aluy-global",config:n.config},{origin:"project",config:r.config}],a=Js(i);if(a.length===0)return e.out("nenhum server MCP configurado. Adicione com: aluy mcp add <nome> <command> [args...]"),0;e.out(`servers MCP (${a.length}):`);for(let l of a){let c=l.managed?"":" [n\xE3o-gerenciado]";e.out(` ${l.name} \u2014 ${Hc(l.origin)}${c}`),e.out(` ${l.command}${l.args.length?" "+l.args.join(" "):""}`),l.envKeys.length&&e.out(` env: ${l.envKeys.join(", ")}`);let d=Qs(l);d!==void 0&&e.err(`aluy: \u26A0 ${d}`)}return e.out("estado/tools por server: use /mcp dentro da sess\xE3o (handshake ao vivo)."),0}function i4(t){let e=Hd(t,$o),o;try{let r=Q8(e);if(!r.isFile()||r.size>s4)return{config:Se};o=J8(e,"utf8")}catch{return{config:Se}}let n;try{n=JSON.parse(o)}catch{return{config:Se,error:`${e}: JSON inv\xE1lido.`}}try{return{config:No(n)}}catch(r){return{config:Se,error:r instanceof me?r.message:String(r)}}}var RI,s4,NI=p(()=>{"use strict";N();wr();si();od();Ud();si();Hf();RI=`aluy mcp \u2014 gerencia servers MCP locais (stdio) sem editar o JSON \xE0 m\xE3o.
527
527
 
528
528
  Uso:
529
529
  aluy mcp add <nome> [--] <command> [args...] [--env K=V]... [--project] [--force]
@@ -545,7 +545,7 @@ Notas:
545
545
  - As tools do server entram no toolset ATR\xC1S da catraca (efeito \u21D2 confirma\xE7\xE3o).
546
546
  - \u26A0 v1 N\xC3O isola o server em sandbox de SO: roda com OS TEUS
547
547
  privil\xE9gios. S\xF3 plugue servers que voc\xEA confia. A credencial do Aluy NUNCA \xE9
548
- repassada ao server.`;s4=256*1024});var qI={};ut(qI,{loadState:()=>ms,parseCronCommand:()=>HI,runCron:()=>eS,saveState:()=>qd});import{execSync as $I,execFileSync as DI}from"node:child_process";import{mkdirSync as a4,readFileSync as l4,writeFileSync as c4}from"node:fs";import{homedir as d4}from"node:os";import{join as FI}from"node:path";import{randomUUID as u4}from"node:crypto";function BI(){return FI(d4(),".aluy","cron")}function UI(){return FI(BI(),"jobs.json")}function jI(){a4(BI(),{recursive:!0,mode:448})}function ms(){try{let t=l4(UI(),"utf8"),e=JSON.parse(t);return{jobs:Array.isArray(e.jobs)?e.jobs:[]}}catch{return{jobs:[]}}}function qd(t){jI(),c4(UI(),JSON.stringify(t,null,2),{mode:384})}function Pp(){let t=ms(),e="";try{e=DI("crontab",["-l"],{encoding:"utf8"})}catch{}let o=e.split(`
548
+ repassada ao server.`;s4=256*1024});var qI={};dt(qI,{loadState:()=>ms,parseCronCommand:()=>HI,runCron:()=>eS,saveState:()=>qd});import{execSync as $I,execFileSync as DI}from"node:child_process";import{mkdirSync as a4,readFileSync as l4,writeFileSync as c4}from"node:fs";import{homedir as d4}from"node:os";import{join as FI}from"node:path";import{randomUUID as u4}from"node:crypto";function BI(){return FI(d4(),".aluy","cron")}function UI(){return FI(BI(),"jobs.json")}function jI(){a4(BI(),{recursive:!0,mode:448})}function ms(){try{let t=l4(UI(),"utf8"),e=JSON.parse(t);return{jobs:Array.isArray(e.jobs)?e.jobs:[]}}catch{return{jobs:[]}}}function qd(t){jI(),c4(UI(),JSON.stringify(t,null,2),{mode:384})}function Pp(){let t=ms(),e="";try{e=DI("crontab",["-l"],{encoding:"utf8"})}catch{}let o=e.split(`
549
549
  `),n=[],r=!1;for(let l of o){if(l.trim()===Zx){r=!r;continue}r||n.push(l)}let s=t.jobs.filter(l=>l.enabled!==!1),i=[];if(s.length>0){i.push(Zx);for(let l of s)i.push(`${l.schedule} ${m4} ${l.id}`);i.push(Zx)}let a=[...n.filter(l=>l.trim()!==""),...i].join(`
550
550
  `)+`
551
551
  `;if(a.trim()===""){try{DI("crontab",["-r"],{encoding:"utf8"})}catch{}return}$I("crontab -",{input:a,encoding:"utf8"})}function HI(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(l=>l!=="--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=l=>{let c=o.indexOf(l);return c!==-1?o[c+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 eS(t,e={}){let o=e.io?.out??console.log,n=e.io?.err??console.error,r=HI(t);switch(r.kind){case"help":return o(f4),0;case"error":return n(`aluy: ${r.message}`),n("rode 'aluy cron --help' para ver o uso."),1;case"add":{jI();let s=ms(),i={id:u4(),schedule:r.quando,task:r.tarefa,criado_em:new Date().toISOString(),yolo:r.yolo,workspace:process.cwd()};if(s.jobs.push(i),qd(s),process.platform==="linux")try{Pp()}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=ms();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),l=i.yolo?"yolo":"ask",c=i.enabled===!1?"off":"on ";o(` ${a} [${c}] ${i.schedule} [${l}] ${i.task}`)}return 0}case"rm":{let s=ms(),i=s.jobs.findIndex(l=>l.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),qd(s),process.platform==="linux")try{Pp()}catch(l){n(`aluy: erro ao atualizar crontab: ${l instanceof Error?l.message:String(l)}`)}return o(`Job "${a.id.slice(0,8)}" removido: ${a.task}`),0}case"run":{let i=ms().jobs.find(c=>c.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":"",l=`aluy -p "${i.task.replace(/"/g,'\\"')}"${a}`;o(` Comando: ${l}`);try{return $I(l,{cwd:i.workspace||process.cwd(),stdio:"inherit",encoding:"utf8"}),o(" \u2713 Conclu\xEDdo."),0}catch(c){let d=c.status??2;return n(` \u2717 Falhou (exit code: ${d}).`),d}}case"enable":case"disable":{let s=ms(),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",qd(s),process.platform==="linux")try{Pp()}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=ms(),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),qd(s),process.platform==="linux")try{Pp()}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}}}var Zx,m4,f4,tS=p(()=>{"use strict";Zx="# aluy-cron-jobs",m4="aluy cron run";f4=`aluy cron \u2014 agendamento PERSISTENTE (jobs disparados pelo cron do SO)
@@ -596,12 +596,12 @@ Notas:
596
596
  `),!0;case"show":return o.currentLabel!==void 0?e.write(`[rename] sess\xE3o: \u25CF ${o.currentLabel}${o.currentColor?` (${o.currentColor})`:""}
597
597
  `):e.write(`[rename] sem r\xF3tulo. use \`/rename <nome> [--cor <cor>]\`. cores: ${ya.join(", ")}.
598
598
  `),!0;case"error":return e.write(`[rename] ${s.message}
599
- `),!0}}var rN,aN=p(()=>{"use strict";Rf();ro();rN=32});function P4(t){return`\x1B]0;${Array.from(t).filter(o=>{let n=o.charCodeAt(0);return n>=32&&n!==127}).join("").replace(/\s+/g," ").trim()}\x07`}function iS(t,e=process.stdout){if(e.isTTY)try{e.write(t!==void 0&&t.trim()!==""?P4(t):I4)}catch{}}var I4,lN=p(()=>{"use strict";I4="\x1B]0;\x07"});import{existsSync as N4,mkdirSync as D4,readFileSync as $4,writeFileSync as F4}from"node:fs";import{homedir as B4}from"node:os";import{join as cN}from"node:path";function mN(t){return t.ALUY_NO_UPDATE_CHECK==="1"||t.NO_UPDATE_NOTIFIER==="1"||t.CI==="true"}function fN(){try{if(!N4(aS))return null;let t=JSON.parse($4(aS,"utf8"));if(typeof t.lastCheck=="number"&&typeof t.latest=="string")return{lastCheck:t.lastCheck,latest:t.latest}}catch{}return null}function pN(t,e){if(mN(e))return;let o=fN();if(o&&Yv(o.latest,t))return`nova vers\xE3o ${o.latest} dispon\xEDvel (voc\xEA tem ${t}) \u2014 atualize: npm i -g ${dN}`}async function hN(t,e){if(mN(e))return;let o=fN();if(!(o&&Date.now()-o.lastCheck<U4))try{let n=`https://registry.npmjs.org/${dN.replace("/","%2f")}/latest`,r=await fetch(n,{signal:AbortSignal.timeout(4e3)});if(!r.ok)return;let i=(await r.json()).version;if(typeof i!="string")return;D4(uN,{recursive:!0}),F4(aS,JSON.stringify({lastCheck:Date.now(),latest:i}),{mode:384})}catch{}}var dN,uN,aS,U4,gN=p(()=>{"use strict";N();dN="@hiperplano/aluy-cli",uN=cN(B4(),".aluy"),aS=cN(uN,"update-check.json"),U4=1440*60*1e3});var $p,lS=p(()=>{"use strict";$p={"composer.placeholder":"digite um objetivo ou /comando\u2026","composer.shellHint":"\u203A atr\xE1s da catraca \xB7 Enter roda \xB7 catraca pergunta no efeito","composer.moreLines":"linhas","hints.idle":"enter envia \xB7 / comandos \xB7 ctrl-p paleta \xB7 \u2191 hist\xF3rico \xB7 ctrl-c\xD72 sair","hints.thinking":"esc interromper \xB7 ctrl-c\xD72 sair","hints.streaming":"esc interromper \xB7 ctrl-c\xD72 sair","hints.ask":"a aprova \xB7 s sempre \xB7 n nega \xB7 e edita \xB7 esc cancela","hints.askDestructive":"n nega (recomendado) \xB7 a aprova mesmo assim \xB7 esc cancela","hints.slash":"\u2191\u2193 navega \xB7 enter executa \xB7 esc fecha","hints.palette":"digite p/ buscar \xB7 \u2191\u2193 navega \xB7 enter executa \xB7 esc fecha","hints.budget":"c continua \xB7 n encerra","hints.error":"r tentar \xB7 esc cancela","hints.workSubagents":"esc para o pai \xB7 F8 para tudo \xB7 ctrl-t ver/parar \xB7 ctrl-c\xD72 sair","hints.idleSubagents":"enter envia \xB7 F8 para os sub-agentes \xB7 ctrl-t ver/parar \xB7 ctrl-c\xD72 sair","hints.ctrlcAgain":"pressione ctrl-c de novo para sair","hints.cockpit":"tab foca \xB7 pgup/pgdn rola \xB7 ctrl-s exporta \xB7 /fullscreen sai \xB7 ctrl-c\xD72 sair","cockpit.conversa":"conversa","cockpit.log":"log","cockpit.welcomeTitle":"\u039Bluy \u2014 cockpit","cockpit.welcomeHint":"digite um objetivo abaixo para come\xE7ar \xB7 /help \xB7 /fullscreen sai","cockpit.entered":"modo cockpit (tela cheia) \u2014 tab alterna conversa\u21C4log \xB7 pgup/pgdn rola \xB7 ctrl-s exporta \xB7 /fullscreen sai","cockpit.left":"modo inline restaurado (scrollback nativo).","cockpit.refuseNarrow":"terminal estreito (<80 col): cockpit indispon\xEDvel, usando inline.","cockpit.refuseShort":"terminal baixo (poucas linhas): cockpit indispon\xEDvel, usando inline.","cockpit.exported":"transcript exportado (redigido) para","mode.label":"modo","mode.plan.caption":"read-only \u2014 s\xF3 leitura, nenhum efeito","mode.normal.caption":"catraca padr\xE3o (aprova\xE7\xE3o por efeito)","mode.unsafe.caption":"aprova\xE7\xE3o DESLIGADA","banner.yolo":"MODO YOLO \u2014 aprova\xE7\xE3o DESLIGADA, o agente roda QUALQUER comando sem perguntar","banner.yolo.narrow":"MODO YOLO \u2014 aprova\xE7\xE3o DESLIGADA","statusbar.brokerError":"erro de broker","statusbar.window":"janela","statusbar.session":"sess\xE3o","statusbar.quota":"quota","boot.broker":"broker","boot.tagline":"Aluy Cli \xB7 agente de terminal","boot.connecting":"conectando","boot.entering":"entrando","picker.theme.help":"trocar tema \xB7 \u2191\u2193 navega \xB7 enter troca \xB7 esc fecha","picker.lang.help":"trocar idioma \xB7 \u2191\u2193 navega \xB7 enter troca \xB7 esc fecha","picker.provider.help":"setar o provider do modelo Custom \xB7 \u2191\u2193 navega \xB7 enter seta \xB7 esc fecha","picker.provider.default":"padr\xE3o","picker.provider.fallback":"\u26A0 n\xE3o foi poss\xEDvel listar os cadastrados \u2014 mostrando os conhecidos","picker.provider.more":"\u2026 {count} providers a mais (\u2191\u2193 rola)","picker.model.help":"trocar modelo \xB7 \u2191\u2193 navega \xB7 enter seleciona \xB7 esc fecha","picker.model.loading":"carregando tiers do broker\u2026","picker.model.customLine":"navegar/filtrar os modelos","picker.model.fallback":"cat\xE1logo do broker indispon\xEDvel \u2014 mostrando os tiers conhecidos","picker.model.browseHelp":"modelos Custom \xB7 digite p/ filtrar \xB7 \u2191\u2193 navega \xB7 ^T s\xF3-tools \xB7 enter seleciona \xB7 esc volta","picker.model.browseCount":"{filtered} de {total}","picker.model.toolsOnlySuffix":" \xB7 s\xF3 com tools","picker.model.moreAbove":"\u2191 mais acima","picker.model.moreBelow":"\u2193 mais abaixo","picker.model.noFilterMatch":"nenhum modelo casa o filtro \u2014 enter usa o texto digitado (slug livre)","picker.model.noTools":"\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem","picker.model.freeHelp":"modelo Custom \xB7 digite/cole o slug \xB7 enter confirma \xB7 esc cancela","picker.model.outOfCatalog":"\u26A0 fora do cat\xE1logo curado \u2014 pode ter custo/qualidade vari\xE1vel (enter usa assim mesmo)","picker.effort.help":"esfor\xE7o de racioc\xEDnio \xB7 \u2191\u2193 navega \xB7 enter aplica \xB7 esc volta","picker.effort.keep":"manter (n\xE3o mudar o esfor\xE7o atual)","picker.effort.low":"low (baixo)","picker.effort.medium":"medium (m\xE9dio)","picker.effort.high":"high (alto)","picker.effort.custom":"custom (digitar um valor)","picker.effort.customHelp":"esfor\xE7o custom \xB7 digite o valor \xB7 enter confirma \xB7 esc volta","picker.effort.warnEmpty":"\u26A0 digite um valor (n\xE3o pode ser vazio)","picker.effort.warnTooLong":"\u26A0 no m\xE1ximo 32 caracteres","picker.history.help":"retomar sess\xE3o \xB7 \u2191\u2193 navega \xB7 enter retoma \xB7 esc cancela","picker.history.empty":"nenhuma sess\xE3o anterior","picker.history.more":"\u2026 {count} sess\xF5es a mais (\u2191\u2193 rola)","picker.rewind.help":"voltar a um ponto \xB7 \u2191\u2193 navega \xB7 enter escolhe \xB7 esc cancela","picker.rewind.empty":"nenhum ponto de restaura\xE7\xE3o nesta sess\xE3o","picker.rewind.more":"\u2026 {count} pontos a mais (\u2191\u2193 rola)","picker.rewind.action.help":"o que restaurar? \xB7 \u2191\u2193 navega \xB7 enter confirma \xB7 esc volta","picker.rewind.action.both":"c\xF3digo + conversa","picker.rewind.action.conversation":"s\xF3 a conversa","picker.rewind.action.code":"s\xF3 o c\xF3digo","picker.rewind.barrier.warn":"comando(s) rodaram depois deste ponto \u2014 o efeito de shell N\xC3O \xE9 desfeito","picker.file.help":"@ para anexar arquivo \xB7 \u2191\u2193 navega \xB7 enter anexa \xB7 esc fecha","picker.file.empty":'nenhum arquivo casa "{query}"',"picker.file.more":"\u2026 {count} arquivos a mais (refine o filtro)","picker.palette.help":"\u2318 comandos \xB7 \u2191\u2193 navega \xB7 enter executa \xB7 esc fecha","picker.palette.search":"buscar comando\u2026","picker.palette.empty":'nenhum comando casa "{query}"',"picker.palette.more":"\u2026 {count} comandos a mais (refine a busca)","lang.changed":"idioma trocado para {label}","lang.unknown":"idioma desconhecido: {input}","lang.current":"idioma atual: {label}","lang.listTitle":"idiomas dispon\xEDveis","cmd.help":"mostra esta lista","cmd.login":"entrar na conta","cmd.logout":"sair da conta","cmd.whoami":"conta, org e escopos atuais","cmd.telegram":"conector Telegram \xB7 status/allow/deny/logout (setup na sess\xE3o)","cmd.model":"trocar o tier","cmd.provider":"seta o provider do modelo Custom","cmd.effort":"seta o reasoning_effort (low/medium/high/custom) \xB7 passthrough \u226432 chars","cmd.theme":"trocar o tema (dark/light) \xB7 auto-detecta no boot","cmd.lang":"trocar o idioma (pt-BR/en) \xB7 auto-detecta no boot","cmd.usage":"tokens e janela desta sess\xE3o","cmd.rename":"d\xE1 um nome + cor de identifica\xE7\xE3o \xE0 sess\xE3o \xB7 \u25CFnome no composer","cmd.history":"navega e RETOMA uma sess\xE3o anterior \xB7 sem sair do aluy","cmd.notify":"liga/desliga o sino de aten\xE7\xE3o (on/off)","cmd.undo":"desfaz a \xFAltima edi\xE7\xE3o de arquivo do agente","cmd.redo":"refaz a \xFAltima edi\xE7\xE3o desfeita","cmd.rewind":"volta a um ponto da sess\xE3o (c\xF3digo e/ou conversa) \xB7 Esc Esc","cmd.clear":"limpa a sess\xE3o (contexto) \xB7 full tamb\xE9m APAGA a mem\xF3ria do agente","cmd.compact":"compacta o contexto (resume a conversa e continua)","cmd.cycle":"roda uma tarefa em ciclos \xB7 com tetos duros e parada (anti-runaway)","cmd.permissions":"painel \xB7 modo, grants e tools seguras (sempre-ask travado)","cmd.addDir":"autoriza um diret\xF3rio EXTRA p/ o agente (sess\xE3o) \xB7 sem args lista","cmd.init":"cria um AGENT.md neste projeto","cmd.memory":"v\xEA/edita/esquece/fixa a mem\xF3ria do agente (global + projeto)","cmd.mcp":"lista/gerencia servers MCP (add/remove/disable/enable \xB7 search <termo>)","cmd.doctor":"diagn\xF3stico da instala\xE7\xE3o \xB7 credencial, broker, MCP, config (read-only)","cmd.fullscreen":"modo cockpit (tela cheia, alt-screen)","cmd.quit":"sair do aluy","cmd.workflows":"fluxos de atividades que coordenam o agente \u2014 lista, executa e ativa","cmd.tools":"invent\xE1rio unificado das ferramentas \xB7 nativas, MCP, permiss\xE3o (read-only)","cmd.todo":"v\xEA/gerencia o backlog de tarefas anotadas (done/clear)"}});var cS,dS=p(()=>{"use strict";cS={"composer.placeholder":"type a goal or /command\u2026","composer.shellHint":"\u203A behind the gate \xB7 Enter runs \xB7 the gate asks on effect","composer.moreLines":"lines","hints.idle":"enter sends \xB7 / commands \xB7 ctrl-p palette \xB7 \u2191 history \xB7 ctrl-c\xD72 quit","hints.thinking":"esc interrupt \xB7 ctrl-c\xD72 quit","hints.streaming":"esc interrupt \xB7 ctrl-c\xD72 quit","hints.ask":"a approve \xB7 s always \xB7 n deny \xB7 e edit \xB7 esc cancel","hints.askDestructive":"n deny (recommended) \xB7 a approve anyway \xB7 esc cancel","hints.slash":"\u2191\u2193 navigate \xB7 enter run \xB7 esc close","hints.palette":"type to search \xB7 \u2191\u2193 navigate \xB7 enter run \xB7 esc close","hints.budget":"c continue \xB7 n end","hints.error":"r retry \xB7 esc cancel","hints.workSubagents":"esc stops the parent \xB7 F8 stops all \xB7 ctrl-t view/stop \xB7 ctrl-c\xD72 quit","hints.idleSubagents":"enter sends \xB7 F8 stops the sub-agents \xB7 ctrl-t view/stop \xB7 ctrl-c\xD72 quit","hints.ctrlcAgain":"press ctrl-c again to quit","hints.cockpit":"tab focuses \xB7 pgup/pgdn scroll \xB7 ctrl-s export \xB7 /fullscreen exits \xB7 ctrl-c\xD72 quit","cockpit.conversa":"conversation","cockpit.log":"log","cockpit.welcomeTitle":"\u039Bluy \u2014 cockpit","cockpit.welcomeHint":"type a goal below to get started \xB7 /help \xB7 /fullscreen exits","cockpit.entered":"cockpit mode (full screen) \u2014 tab switches chat\u21C4log \xB7 pgup/pgdn scroll \xB7 ctrl-s export \xB7 /fullscreen exits","cockpit.left":"inline mode restored (native scrollback).","cockpit.refuseNarrow":"narrow terminal (<80 col): cockpit unavailable, using inline.","cockpit.refuseShort":"short terminal (too few rows): cockpit unavailable, using inline.","cockpit.exported":"transcript exported (redacted) to","mode.label":"mode","mode.plan.caption":"read-only \u2014 view only, no effects","mode.normal.caption":"default gate (approval on effect)","mode.unsafe.caption":"approval OFF","banner.yolo":"YOLO MODE \u2014 approval OFF, the agent runs ANY command without asking","banner.yolo.narrow":"YOLO MODE \u2014 approval OFF","statusbar.brokerError":"broker error","statusbar.window":"window","statusbar.session":"session","statusbar.quota":"quota","boot.broker":"broker","boot.tagline":"Aluy Cli \xB7 terminal agent","boot.connecting":"connecting","boot.entering":"signing in","picker.theme.help":"change theme \xB7 \u2191\u2193 navigate \xB7 enter switch \xB7 esc close","picker.lang.help":"change language \xB7 \u2191\u2193 navigate \xB7 enter switch \xB7 esc close","picker.provider.help":"set the Custom model provider \xB7 \u2191\u2193 navigate \xB7 enter set \xB7 esc close","picker.provider.default":"default","picker.provider.fallback":"\u26A0 could not list the registered ones \u2014 showing the known providers","picker.provider.more":"\u2026 {count} more providers (\u2191\u2193 scroll)","picker.model.help":"change model \xB7 \u2191\u2193 navigate \xB7 enter select \xB7 esc close","picker.model.loading":"loading tiers from the broker\u2026","picker.model.customLine":"browse/filter the models","picker.model.fallback":"broker catalog unavailable \u2014 showing the known tiers","picker.model.browseHelp":"Custom models \xB7 type to filter \xB7 \u2191\u2193 navigate \xB7 ^T tools-only \xB7 enter select \xB7 esc back","picker.model.browseCount":"{filtered} of {total}","picker.model.toolsOnlySuffix":" \xB7 tools only","picker.model.moreAbove":"\u2191 more above","picker.model.moreBelow":"\u2193 more below","picker.model.noFilterMatch":"no model matches the filter \u2014 enter uses the typed text (free slug)","picker.model.noTools":"\u26A0 this model doesn't support tools \u2014 the agent falls back to the text parser / may not use MCP/tools well","picker.model.freeHelp":"Custom model \xB7 type/paste the slug \xB7 enter confirm \xB7 esc cancel","picker.model.outOfCatalog":"\u26A0 outside the curated catalog \u2014 cost/quality may vary (enter uses it anyway)","picker.effort.help":"reasoning effort \xB7 \u2191\u2193 navigate \xB7 enter apply \xB7 esc back","picker.effort.keep":"keep (do not change the current effort)","picker.effort.low":"low","picker.effort.medium":"medium","picker.effort.high":"high","picker.effort.custom":"custom (type a value)","picker.effort.customHelp":"custom effort \xB7 type the value \xB7 enter confirm \xB7 esc back","picker.effort.warnEmpty":"\u26A0 type a value (cannot be empty)","picker.effort.warnTooLong":"\u26A0 at most 32 characters","picker.history.help":"resume session \xB7 \u2191\u2193 navigate \xB7 enter resume \xB7 esc cancel","picker.history.empty":"no previous session","picker.history.more":"\u2026 {count} more sessions (\u2191\u2193 scroll)","picker.rewind.help":"rewind to a point \xB7 \u2191\u2193 navigate \xB7 enter choose \xB7 esc cancel","picker.rewind.empty":"no restore point in this session","picker.rewind.more":"\u2026 {count} more points (\u2191\u2193 scroll)","picker.rewind.action.help":"restore what? \xB7 \u2191\u2193 navigate \xB7 enter confirm \xB7 esc back","picker.rewind.action.both":"code + conversation","picker.rewind.action.conversation":"conversation only","picker.rewind.action.code":"code only","picker.rewind.barrier.warn":"command(s) ran after this point \u2014 shell effects are NOT undone","picker.file.help":"@ to attach a file \xB7 \u2191\u2193 navigate \xB7 enter attach \xB7 esc close","picker.file.empty":'no file matches "{query}"',"picker.file.more":"\u2026 {count} more files (refine the filter)","picker.palette.help":"\u2318 commands \xB7 \u2191\u2193 navigate \xB7 enter run \xB7 esc close","picker.palette.search":"search command\u2026","picker.palette.empty":'no command matches "{query}"',"picker.palette.more":"\u2026 {count} more commands (refine the search)","lang.changed":"language changed to {label}","lang.unknown":"unknown language: {input}","lang.current":"current language: {label}","lang.listTitle":"available languages","cmd.help":"show this list","cmd.login":"sign in","cmd.logout":"sign out","cmd.whoami":"current account, org and scopes","cmd.telegram":"Telegram connector \xB7 status/allow/deny/logout (in-session setup)","cmd.model":"switch the tier","cmd.provider":"set the Custom model provider","cmd.effort":"set the reasoning_effort (low/medium/high/custom) \xB7 passthrough \u226432 chars","cmd.theme":"switch the theme (dark/light) \xB7 auto-detected on boot","cmd.lang":"switch the language (pt-BR/en) \xB7 auto-detected on boot","cmd.usage":"tokens and window for this session","cmd.rename":"name + color-tag the session \xB7 \u25CFname in the composer","cmd.history":"browse and RESUME a previous session \xB7 without leaving aluy","cmd.notify":"toggle the attention bell (on/off)","cmd.undo":"undo the agent's last file edit","cmd.redo":"redo the last undone edit","cmd.rewind":"rewind the session to a point (code and/or conversation) \xB7 Esc Esc","cmd.clear":"clear the session (context) \xB7 full also WIPES the agent's memory","cmd.compact":"compact the context (summarize the conversation and continue)","cmd.cycle":"run a task in cycles \xB7 with hard caps and a stop (anti-runaway)","cmd.permissions":"panel \xB7 mode, grants and safe tools (always-ask locked)","cmd.addDir":"authorize an EXTRA directory for the agent (session) \xB7 no args lists","cmd.init":"create an AGENT.md in this project","cmd.memory":"view/edit/forget/pin the agent's memory (global + project)","cmd.mcp":"list/manage MCP servers (add/remove/disable/enable \xB7 search <term>)","cmd.doctor":"diagnose the install \xB7 credential, broker, MCP, config (read-only)","cmd.fullscreen":"cockpit mode (full screen, alt-screen)","cmd.quit":"quit aluy","cmd.workflows":"list mapped .md workflows (global + project \xB7 valid + rejected)","cmd.todo":"list the backlog (the agent notes items; done <id> / clear)"}});function bN(t,e){return e===void 0?t:t.replace(/\{(\w+)\}/g,(o,n)=>{let r=e[n];return r===void 0?o:String(r)})}function vN(t,e){let n=j4[t][e];if(n!==void 0)return n;let r=H4[e];return r!==void 0?r:(q4(e),e)}function fs(t,e,o){return bN(vN(t,e),o)}function bi(t=$n){return{lang:t,t:(e,o)=>fs(t,e,o)}}function q4(t){process.env.NODE_ENV!=="production"&&(yN.has(t)||(yN.add(t),console.warn(`[i18n] missing key (no catalog entry): ${t}`)))}var j4,H4,yN,uS=p(()=>{"use strict";ba();lS();dS();j4={"pt-BR":$p,en:cS},H4=$p;yN=new Set});import{createContext as W4,useContext as G4}from"react";import{jsx as z4}from"react/jsx-runtime";function mS(t){return z4(kN.Provider,{value:t.value,children:t.children})}function ke(){return G4(kN)}var kN,xN=p(()=>{"use strict";uS();ba();kN=W4(bi($n))});var ft=p(()=>{"use strict";ba();lS();dS();uS();xN()});import"react";import{Box as fS,Text as SN}from"ink";import{Fragment as ps,jsx as st,jsxs as so}from"react/jsx-runtime";function K4(t){return so(fS,{children:[st(f,{name:"fg",children:AN}),t.sub!==void 0&&t.sub!==""?so(ps,{children:[st(f,{name:"fgDim",children:" \xB7 "}),st(f,{name:"fgDim",children:t.sub})]}):so(ps,{children:[st(f,{name:"fgDim",children:" \xB7 Terminal "}),t.version!==void 0&&t.version!==""&&so(f,{name:"depth",children:["v",t.version]})]}),!t.narrow&&so(ps,{children:[st(f,{name:"fgDim",children:" \xB7 "}),st(P,{name:"broker",role:"depth"}),so(f,{name:"depth",children:[" ",t.backend==="local"?"local":"broker"]})]}),t.error&&so(ps,{children:[st(f,{name:"fgDim",children:" \xB7 "}),st(P,{name:"ask",role:"danger"})]})]})}function Y4(t){return so(fS,{children:[st(P,{name:"aluy",role:"accent"}),st(SN,{children:" "}),st(f,{name:"fg",children:AN}),t.sub!==void 0&&t.sub!==""&&so(ps,{children:[st(f,{name:"fgDim",children:" \xB7 "}),st(f,{name:"fgDim",children:t.sub})]}),!t.narrow&&t.version!==void 0&&t.version!==""&&so(ps,{children:[st(SN,{children:" "}),so(f,{name:"depth",children:["v",t.version]})]}),st(f,{name:"fgDim",children:" \xB7 "}),st(f,{name:"fg",children:t.tier}),!t.narrow&&so(ps,{children:[st(f,{name:"fgDim",children:" \xB7 "}),st(P,{name:"broker",role:"depth"}),so(f,{name:"depth",children:[" ",t.backend==="local"?"local":"broker"]})]}),t.error&&so(ps,{children:[st(f,{name:"fgDim",children:" \xB7 "}),st(P,{name:"ask",role:"danger"})]})]})}function Kd(t){let e=ne(),o=t.columns??80,n=t.rows??24,r=o<60;return e.density!=="compact"&&!r&&n>=wN?so(fS,{flexDirection:"column",children:[st(Lr,{columns:o}),st(K4,{...t.sub!==void 0?{sub:t.sub}:{},...t.version!==void 0?{version:t.version}:{},...t.backend!==void 0?{backend:t.backend}:{},narrow:r,error:t.error})]}):st(Y4,{tier:t.tier,...t.sub!==void 0?{sub:t.sub}:{},...t.version!==void 0?{version:t.version}:{},...t.backend!==void 0?{backend:t.backend}:{},narrow:r,error:t.error})}var wN,AN,EN=p(()=>{"use strict";ae();gi();wN=Vx+13,AN="Aluy Cli"});import"react";import{Box as V4,Text as Yd}from"ink";import{Fragment as vi,jsx as io,jsxs as bt}from"react/jsx-runtime";function X4(t){return t>90?"danger":t>=75?"accent":"fgDim"}function J4(t){return t>=100?"danger":t>=pg?"accent":"fgDim"}function Q4(t){return t==="crit"?"danger":t==="warn"?"accent":"fgDim"}function Vd(t){let{t:e}=ke(),o=X4(t.windowPct),n=t.budgetPct!==void 0,r=n?J4(t.budgetPct):"fgDim",s=n&&t.budgetPct>=pg,a=t.isDefaultTier??!0?"fg":"accent",l=(t.columns??80)<60,c=!l,d=!l,m=!l,u=(t.columns??TN)>=TN,h=t.quotaPct!==void 0,g=Q4(t.quotaLevel??"ok");return bt(V4,{children:[io(P,{name:"clock",role:a}),bt(f,{name:a,children:[" ",t.tier]}),t.model!==void 0&&t.model!==""&&u&&bt(vi,{children:[io(f,{name:"fgDim",children:" \xB7 "}),io(f,{name:"depth",children:t.model})]}),t.focus!==void 0&&t.focus!==""&&bt(f,{name:"accent",children:[" \u25CE foco: ",t.focus]}),m&&bt(vi,{children:[io(Yd,{children:" "}),t.branch!==void 0&&t.branch!==""&&bt(vi,{children:[io(P,{name:"branch",role:"fgDim"}),bt(f,{name:"fgDim",children:[" ",t.branch," "]})]}),io(f,{name:"fgDim",children:t.cwd})]}),io(Yd,{children:" "}),io(P,{name:"window",role:o}),bt(f,{name:o,children:[" ",t.windowPct,"%"]}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.window")]}),io(Yd,{children:" "}),io(P,{name:"gauge",role:r}),n?bt(vi,{children:[bt(f,{name:r,children:[" ",t.budgetPct,"%"]}),s&&io(f,{name:"accent",children:" \u26A0"}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.session")]}),d&&bt(f,{name:"fgDim",children:[" (",Nt(t.tokens),")"]})]}):bt(vi,{children:[bt(f,{name:"fgDim",children:[" ",Nt(t.tokens)]}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.session")]})]}),h&&bt(vi,{children:[io(Yd,{children:" "}),io(P,{name:"gauge",role:g}),bt(f,{name:g,children:[" ",t.quotaPct,"%"]}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.quota")]})]}),t.error&&bt(vi,{children:[io(Yd,{children:" "}),io(P,{name:"ask",role:"danger"})]})]})}var TN,_N=p(()=>{"use strict";N();ae();vn();ft();TN=90});function Rt(t,e){return e<0?0:e>t.length?t.length:e}function RN(t,e){if(e<2)return!1;let o=t.charCodeAt(e-1),n=t.charCodeAt(e-2);return o>=56320&&o<=57343&&n>=55296&&n<=56319}function Z4(t,e){if(e+1>=t.length)return!1;let o=t.charCodeAt(e),n=t.charCodeAt(e+1);return o>=55296&&o<=56319&&n>=56320&&n<=57343}function ki(t,e){let o=Rt(t.text,t.cursor);return{text:t.text.slice(0,o)+e+t.text.slice(o),cursor:o+e.length}}function pS(t){let e=Rt(t.text,t.cursor);if(e===0)return{text:t.text,cursor:0};let o=RN(t.text,e)?2:1;return{text:t.text.slice(0,e-o)+t.text.slice(e),cursor:e-o}}function hS(t){let e=Rt(t.text,t.cursor),o=RN(t.text,e)?2:1;return Rt(t.text,e-o)}function gS(t){let e=Rt(t.text,t.cursor),o=Z4(t.text,e)?2:1;return Rt(t.text,e+o)}function CN(t){let e=Rt(t.text,t.cursor);return{text:t.text.slice(e),cursor:0}}function ON(t){let e=Rt(t.text,t.cursor);return{text:t.text.slice(0,e),cursor:e}}function MN(t){let e=Rt(t.text,t.cursor),o=Jd({text:t.text,cursor:e});return{text:t.text.slice(0,o)+t.text.slice(e),cursor:o}}function LN(t){if(t.includes("\x1B[H")||t.includes("\x1BOH")||t.includes("\x1B[1~")||t.includes("\x1B[7~"))return"home";if(t.includes("\x1B[F")||t.includes("\x1BOF")||t.includes("\x1B[4~")||t.includes("\x1B[8~"))return"end"}function PN(t,e){return t.length>0?"clear":e?"exit":"arm"}function Xd(t,e){let o=t;for(let n=0;n<e.length;n++){let r=e[n];if(r==="\r"||r===`
599
+ `),!0}}var rN,aN=p(()=>{"use strict";Rf();ro();rN=32});function P4(t){return`\x1B]0;${Array.from(t).filter(o=>{let n=o.charCodeAt(0);return n>=32&&n!==127}).join("").replace(/\s+/g," ").trim()}\x07`}function iS(t,e=process.stdout){if(e.isTTY)try{e.write(t!==void 0&&t.trim()!==""?P4(t):I4)}catch{}}var I4,lN=p(()=>{"use strict";I4="\x1B]0;\x07"});import{existsSync as N4,mkdirSync as D4,readFileSync as $4,writeFileSync as F4}from"node:fs";import{homedir as B4}from"node:os";import{join as cN}from"node:path";function mN(t){return t.ALUY_NO_UPDATE_CHECK==="1"||t.NO_UPDATE_NOTIFIER==="1"||t.CI==="true"}function fN(){try{if(!N4(aS))return null;let t=JSON.parse($4(aS,"utf8"));if(typeof t.lastCheck=="number"&&typeof t.latest=="string")return{lastCheck:t.lastCheck,latest:t.latest}}catch{}return null}function pN(t,e){if(mN(e))return;let o=fN();if(o&&Yv(o.latest,t))return`nova vers\xE3o ${o.latest} dispon\xEDvel (voc\xEA tem ${t}) \u2014 atualize: npm i -g ${dN}`}async function hN(t,e){if(mN(e))return;let o=fN();if(!(o&&Date.now()-o.lastCheck<U4))try{let n=`https://registry.npmjs.org/${dN.replace("/","%2f")}/latest`,r=await fetch(n,{signal:AbortSignal.timeout(4e3)});if(!r.ok)return;let i=(await r.json()).version;if(typeof i!="string")return;D4(uN,{recursive:!0}),F4(aS,JSON.stringify({lastCheck:Date.now(),latest:i}),{mode:384})}catch{}}var dN,uN,aS,U4,gN=p(()=>{"use strict";N();dN="@hiperplano/aluy-cli",uN=cN(B4(),".aluy"),aS=cN(uN,"update-check.json"),U4=1440*60*1e3});var $p,lS=p(()=>{"use strict";$p={"composer.placeholder":"digite um objetivo ou /comando\u2026","composer.shellHint":"\u203A atr\xE1s da catraca \xB7 Enter roda \xB7 catraca pergunta no efeito","composer.moreLines":"linhas","hints.idle":"enter envia \xB7 / comandos \xB7 ctrl-p paleta \xB7 \u2191 hist\xF3rico \xB7 ctrl-c\xD72 sair","hints.thinking":"esc interromper \xB7 ctrl-c\xD72 sair","hints.streaming":"esc interromper \xB7 ctrl-c\xD72 sair","hints.ask":"a aprova \xB7 s sempre \xB7 n nega \xB7 e edita \xB7 esc cancela","hints.askDestructive":"n nega (recomendado) \xB7 a aprova mesmo assim \xB7 esc cancela","hints.slash":"\u2191\u2193 navega \xB7 enter executa \xB7 esc fecha","hints.palette":"digite p/ buscar \xB7 \u2191\u2193 navega \xB7 enter executa \xB7 esc fecha","hints.budget":"c continua \xB7 n encerra","hints.error":"r tentar \xB7 esc cancela","hints.workSubagents":"esc para o pai \xB7 F8 para tudo \xB7 ctrl-t ver/parar \xB7 ctrl-c\xD72 sair","hints.idleSubagents":"enter envia \xB7 F8 para os sub-agentes \xB7 ctrl-t ver/parar \xB7 ctrl-c\xD72 sair","hints.ctrlcAgain":"pressione ctrl-c de novo para sair","hints.cockpit":"tab foca \xB7 pgup/pgdn rola \xB7 ctrl-s exporta \xB7 /fullscreen sai \xB7 ctrl-c\xD72 sair","cockpit.conversa":"conversa","cockpit.log":"log","cockpit.welcomeTitle":"\u039Bluy \u2014 cockpit","cockpit.welcomeHint":"digite um objetivo abaixo para come\xE7ar \xB7 /help \xB7 /fullscreen sai","cockpit.entered":"modo cockpit (tela cheia) \u2014 tab alterna conversa\u21C4log \xB7 pgup/pgdn rola \xB7 ctrl-s exporta \xB7 /fullscreen sai","cockpit.left":"modo inline restaurado (scrollback nativo).","cockpit.refuseNarrow":"terminal estreito (<80 col): cockpit indispon\xEDvel, usando inline.","cockpit.refuseShort":"terminal baixo (poucas linhas): cockpit indispon\xEDvel, usando inline.","cockpit.exported":"transcript exportado (redigido) para","mode.label":"modo","mode.plan.caption":"read-only \u2014 s\xF3 leitura, nenhum efeito","mode.normal.caption":"catraca padr\xE3o (aprova\xE7\xE3o por efeito)","mode.unsafe.caption":"aprova\xE7\xE3o DESLIGADA","banner.yolo":"MODO YOLO \u2014 aprova\xE7\xE3o DESLIGADA, o agente roda QUALQUER comando sem perguntar","banner.yolo.narrow":"MODO YOLO \u2014 aprova\xE7\xE3o DESLIGADA","statusbar.brokerError":"erro de broker","statusbar.window":"janela","statusbar.session":"sess\xE3o","statusbar.quota":"quota","boot.broker":"broker","boot.tagline":"Aluy Cli \xB7 agente de terminal","boot.connecting":"conectando","boot.entering":"entrando","picker.theme.help":"trocar tema \xB7 \u2191\u2193 navega \xB7 enter troca \xB7 esc fecha","picker.lang.help":"trocar idioma \xB7 \u2191\u2193 navega \xB7 enter troca \xB7 esc fecha","picker.provider.help":"setar o provider do modelo Custom \xB7 \u2191\u2193 navega \xB7 enter seta \xB7 esc fecha","picker.provider.default":"padr\xE3o","picker.provider.fallback":"\u26A0 n\xE3o foi poss\xEDvel listar os cadastrados \u2014 mostrando os conhecidos","picker.provider.more":"\u2026 {count} providers a mais (\u2191\u2193 rola)","picker.model.help":"trocar modelo \xB7 \u2191\u2193 navega \xB7 enter seleciona \xB7 esc fecha","picker.model.loading":"carregando tiers do broker\u2026","picker.model.customLine":"navegar/filtrar os modelos","picker.model.fallback":"cat\xE1logo do broker indispon\xEDvel \u2014 mostrando os tiers conhecidos","picker.model.browseHelp":"modelos Custom \xB7 digite p/ filtrar \xB7 \u2191\u2193 navega \xB7 ^T s\xF3-tools \xB7 enter seleciona \xB7 esc volta","picker.model.browseCount":"{filtered} de {total}","picker.model.toolsOnlySuffix":" \xB7 s\xF3 com tools","picker.model.moreAbove":"\u2191 mais acima","picker.model.moreBelow":"\u2193 mais abaixo","picker.model.noFilterMatch":"nenhum modelo casa o filtro \u2014 enter usa o texto digitado (slug livre)","picker.model.noTools":"\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem","picker.model.freeHelp":"modelo Custom \xB7 digite/cole o slug \xB7 enter confirma \xB7 esc cancela","picker.model.outOfCatalog":"\u26A0 fora do cat\xE1logo curado \u2014 pode ter custo/qualidade vari\xE1vel (enter usa assim mesmo)","picker.effort.help":"esfor\xE7o de racioc\xEDnio \xB7 \u2191\u2193 navega \xB7 enter aplica \xB7 esc volta","picker.effort.keep":"manter (n\xE3o mudar o esfor\xE7o atual)","picker.effort.low":"low (baixo)","picker.effort.medium":"medium (m\xE9dio)","picker.effort.high":"high (alto)","picker.effort.custom":"custom (digitar um valor)","picker.effort.customHelp":"esfor\xE7o custom \xB7 digite o valor \xB7 enter confirma \xB7 esc volta","picker.effort.warnEmpty":"\u26A0 digite um valor (n\xE3o pode ser vazio)","picker.effort.warnTooLong":"\u26A0 no m\xE1ximo 32 caracteres","picker.history.help":"retomar sess\xE3o \xB7 \u2191\u2193 navega \xB7 enter retoma \xB7 esc cancela","picker.history.empty":"nenhuma sess\xE3o anterior","picker.history.more":"\u2026 {count} sess\xF5es a mais (\u2191\u2193 rola)","picker.rewind.help":"voltar a um ponto \xB7 \u2191\u2193 navega \xB7 enter escolhe \xB7 esc cancela","picker.rewind.empty":"nenhum ponto de restaura\xE7\xE3o nesta sess\xE3o","picker.rewind.more":"\u2026 {count} pontos a mais (\u2191\u2193 rola)","picker.rewind.action.help":"o que restaurar? \xB7 \u2191\u2193 navega \xB7 enter confirma \xB7 esc volta","picker.rewind.action.both":"c\xF3digo + conversa","picker.rewind.action.conversation":"s\xF3 a conversa","picker.rewind.action.code":"s\xF3 o c\xF3digo","picker.rewind.barrier.warn":"comando(s) rodaram depois deste ponto \u2014 o efeito de shell N\xC3O \xE9 desfeito","picker.file.help":"@ para anexar arquivo \xB7 \u2191\u2193 navega \xB7 enter anexa \xB7 esc fecha","picker.file.empty":'nenhum arquivo casa "{query}"',"picker.file.more":"\u2026 {count} arquivos a mais (refine o filtro)","picker.palette.help":"\u2318 comandos \xB7 \u2191\u2193 navega \xB7 enter executa \xB7 esc fecha","picker.palette.search":"buscar comando\u2026","picker.palette.empty":'nenhum comando casa "{query}"',"picker.palette.more":"\u2026 {count} comandos a mais (refine a busca)","lang.changed":"idioma trocado para {label}","lang.unknown":"idioma desconhecido: {input}","lang.current":"idioma atual: {label}","lang.listTitle":"idiomas dispon\xEDveis","cmd.help":"mostra esta lista","cmd.login":"entrar na conta","cmd.logout":"sair da conta","cmd.whoami":"conta, org e escopos atuais","cmd.telegram":"conector Telegram \xB7 status/allow/deny/logout (setup na sess\xE3o)","cmd.model":"trocar o tier","cmd.provider":"seta o provider do modelo Custom","cmd.effort":"seta o reasoning_effort (low/medium/high/custom) \xB7 passthrough \u226432 chars","cmd.theme":"trocar o tema (dark/light) \xB7 auto-detecta no boot","cmd.lang":"trocar o idioma (pt-BR/en) \xB7 auto-detecta no boot","cmd.usage":"tokens e janela desta sess\xE3o","cmd.rename":"d\xE1 um nome + cor de identifica\xE7\xE3o \xE0 sess\xE3o \xB7 \u25CFnome no composer","cmd.history":"navega e RETOMA uma sess\xE3o anterior \xB7 sem sair do aluy","cmd.notify":"liga/desliga o sino de aten\xE7\xE3o (on/off)","cmd.undo":"desfaz a \xFAltima edi\xE7\xE3o de arquivo do agente","cmd.redo":"refaz a \xFAltima edi\xE7\xE3o desfeita","cmd.rewind":"volta a um ponto da sess\xE3o (c\xF3digo e/ou conversa) \xB7 Esc Esc","cmd.clear":"limpa a sess\xE3o (contexto) \xB7 full tamb\xE9m APAGA a mem\xF3ria do agente","cmd.compact":"compacta o contexto (resume a conversa e continua)","cmd.cycle":"roda uma tarefa em ciclos \xB7 com tetos duros e parada (anti-runaway)","cmd.permissions":"painel \xB7 modo, grants e tools seguras (sempre-ask travado)","cmd.addDir":"autoriza um diret\xF3rio EXTRA p/ o agente (sess\xE3o) \xB7 sem args lista","cmd.init":"cria um AGENT.md neste projeto","cmd.memory":"v\xEA/edita/esquece/fixa a mem\xF3ria do agente (global + projeto)","cmd.mcp":"lista/gerencia servers MCP (add/remove/disable/enable \xB7 search <termo>)","cmd.doctor":"diagn\xF3stico da instala\xE7\xE3o \xB7 credencial, broker, MCP, config (read-only)","cmd.fullscreen":"modo cockpit (tela cheia, alt-screen)","cmd.quit":"sair do aluy","cmd.workflows":"fluxos de atividades que coordenam o agente \u2014 lista, executa e ativa","cmd.tools":"invent\xE1rio unificado das ferramentas \xB7 nativas, MCP, permiss\xE3o (read-only)","cmd.todo":"v\xEA/gerencia o backlog de tarefas anotadas (done/clear)"}});var cS,dS=p(()=>{"use strict";cS={"composer.placeholder":"type a goal or /command\u2026","composer.shellHint":"\u203A behind the gate \xB7 Enter runs \xB7 the gate asks on effect","composer.moreLines":"lines","hints.idle":"enter sends \xB7 / commands \xB7 ctrl-p palette \xB7 \u2191 history \xB7 ctrl-c\xD72 quit","hints.thinking":"esc interrupt \xB7 ctrl-c\xD72 quit","hints.streaming":"esc interrupt \xB7 ctrl-c\xD72 quit","hints.ask":"a approve \xB7 s always \xB7 n deny \xB7 e edit \xB7 esc cancel","hints.askDestructive":"n deny (recommended) \xB7 a approve anyway \xB7 esc cancel","hints.slash":"\u2191\u2193 navigate \xB7 enter run \xB7 esc close","hints.palette":"type to search \xB7 \u2191\u2193 navigate \xB7 enter run \xB7 esc close","hints.budget":"c continue \xB7 n end","hints.error":"r retry \xB7 esc cancel","hints.workSubagents":"esc stops the parent \xB7 F8 stops all \xB7 ctrl-t view/stop \xB7 ctrl-c\xD72 quit","hints.idleSubagents":"enter sends \xB7 F8 stops the sub-agents \xB7 ctrl-t view/stop \xB7 ctrl-c\xD72 quit","hints.ctrlcAgain":"press ctrl-c again to quit","hints.cockpit":"tab focuses \xB7 pgup/pgdn scroll \xB7 ctrl-s export \xB7 /fullscreen exits \xB7 ctrl-c\xD72 quit","cockpit.conversa":"conversation","cockpit.log":"log","cockpit.welcomeTitle":"\u039Bluy \u2014 cockpit","cockpit.welcomeHint":"type a goal below to get started \xB7 /help \xB7 /fullscreen exits","cockpit.entered":"cockpit mode (full screen) \u2014 tab switches chat\u21C4log \xB7 pgup/pgdn scroll \xB7 ctrl-s export \xB7 /fullscreen exits","cockpit.left":"inline mode restored (native scrollback).","cockpit.refuseNarrow":"narrow terminal (<80 col): cockpit unavailable, using inline.","cockpit.refuseShort":"short terminal (too few rows): cockpit unavailable, using inline.","cockpit.exported":"transcript exported (redacted) to","mode.label":"mode","mode.plan.caption":"read-only \u2014 view only, no effects","mode.normal.caption":"default gate (approval on effect)","mode.unsafe.caption":"approval OFF","banner.yolo":"YOLO MODE \u2014 approval OFF, the agent runs ANY command without asking","banner.yolo.narrow":"YOLO MODE \u2014 approval OFF","statusbar.brokerError":"broker error","statusbar.window":"window","statusbar.session":"session","statusbar.quota":"quota","boot.broker":"broker","boot.tagline":"Aluy Cli \xB7 terminal agent","boot.connecting":"connecting","boot.entering":"signing in","picker.theme.help":"change theme \xB7 \u2191\u2193 navigate \xB7 enter switch \xB7 esc close","picker.lang.help":"change language \xB7 \u2191\u2193 navigate \xB7 enter switch \xB7 esc close","picker.provider.help":"set the Custom model provider \xB7 \u2191\u2193 navigate \xB7 enter set \xB7 esc close","picker.provider.default":"default","picker.provider.fallback":"\u26A0 could not list the registered ones \u2014 showing the known providers","picker.provider.more":"\u2026 {count} more providers (\u2191\u2193 scroll)","picker.model.help":"change model \xB7 \u2191\u2193 navigate \xB7 enter select \xB7 esc close","picker.model.loading":"loading tiers from the broker\u2026","picker.model.customLine":"browse/filter the models","picker.model.fallback":"broker catalog unavailable \u2014 showing the known tiers","picker.model.browseHelp":"Custom models \xB7 type to filter \xB7 \u2191\u2193 navigate \xB7 ^T tools-only \xB7 enter select \xB7 esc back","picker.model.browseCount":"{filtered} of {total}","picker.model.toolsOnlySuffix":" \xB7 tools only","picker.model.moreAbove":"\u2191 more above","picker.model.moreBelow":"\u2193 more below","picker.model.noFilterMatch":"no model matches the filter \u2014 enter uses the typed text (free slug)","picker.model.noTools":"\u26A0 this model doesn't support tools \u2014 the agent falls back to the text parser / may not use MCP/tools well","picker.model.freeHelp":"Custom model \xB7 type/paste the slug \xB7 enter confirm \xB7 esc cancel","picker.model.outOfCatalog":"\u26A0 outside the curated catalog \u2014 cost/quality may vary (enter uses it anyway)","picker.effort.help":"reasoning effort \xB7 \u2191\u2193 navigate \xB7 enter apply \xB7 esc back","picker.effort.keep":"keep (do not change the current effort)","picker.effort.low":"low","picker.effort.medium":"medium","picker.effort.high":"high","picker.effort.custom":"custom (type a value)","picker.effort.customHelp":"custom effort \xB7 type the value \xB7 enter confirm \xB7 esc back","picker.effort.warnEmpty":"\u26A0 type a value (cannot be empty)","picker.effort.warnTooLong":"\u26A0 at most 32 characters","picker.history.help":"resume session \xB7 \u2191\u2193 navigate \xB7 enter resume \xB7 esc cancel","picker.history.empty":"no previous session","picker.history.more":"\u2026 {count} more sessions (\u2191\u2193 scroll)","picker.rewind.help":"rewind to a point \xB7 \u2191\u2193 navigate \xB7 enter choose \xB7 esc cancel","picker.rewind.empty":"no restore point in this session","picker.rewind.more":"\u2026 {count} more points (\u2191\u2193 scroll)","picker.rewind.action.help":"restore what? \xB7 \u2191\u2193 navigate \xB7 enter confirm \xB7 esc back","picker.rewind.action.both":"code + conversation","picker.rewind.action.conversation":"conversation only","picker.rewind.action.code":"code only","picker.rewind.barrier.warn":"command(s) ran after this point \u2014 shell effects are NOT undone","picker.file.help":"@ to attach a file \xB7 \u2191\u2193 navigate \xB7 enter attach \xB7 esc close","picker.file.empty":'no file matches "{query}"',"picker.file.more":"\u2026 {count} more files (refine the filter)","picker.palette.help":"\u2318 commands \xB7 \u2191\u2193 navigate \xB7 enter run \xB7 esc close","picker.palette.search":"search command\u2026","picker.palette.empty":'no command matches "{query}"',"picker.palette.more":"\u2026 {count} more commands (refine the search)","lang.changed":"language changed to {label}","lang.unknown":"unknown language: {input}","lang.current":"current language: {label}","lang.listTitle":"available languages","cmd.help":"show this list","cmd.login":"sign in","cmd.logout":"sign out","cmd.whoami":"current account, org and scopes","cmd.telegram":"Telegram connector \xB7 status/allow/deny/logout (in-session setup)","cmd.model":"switch the tier","cmd.provider":"set the Custom model provider","cmd.effort":"set the reasoning_effort (low/medium/high/custom) \xB7 passthrough \u226432 chars","cmd.theme":"switch the theme (dark/light) \xB7 auto-detected on boot","cmd.lang":"switch the language (pt-BR/en) \xB7 auto-detected on boot","cmd.usage":"tokens and window for this session","cmd.rename":"name + color-tag the session \xB7 \u25CFname in the composer","cmd.history":"browse and RESUME a previous session \xB7 without leaving aluy","cmd.notify":"toggle the attention bell (on/off)","cmd.undo":"undo the agent's last file edit","cmd.redo":"redo the last undone edit","cmd.rewind":"rewind the session to a point (code and/or conversation) \xB7 Esc Esc","cmd.clear":"clear the session (context) \xB7 full also WIPES the agent's memory","cmd.compact":"compact the context (summarize the conversation and continue)","cmd.cycle":"run a task in cycles \xB7 with hard caps and a stop (anti-runaway)","cmd.permissions":"panel \xB7 mode, grants and safe tools (always-ask locked)","cmd.addDir":"authorize an EXTRA directory for the agent (session) \xB7 no args lists","cmd.init":"create an AGENT.md in this project","cmd.memory":"view/edit/forget/pin the agent's memory (global + project)","cmd.mcp":"list/manage MCP servers (add/remove/disable/enable \xB7 search <term>)","cmd.doctor":"diagnose the install \xB7 credential, broker, MCP, config (read-only)","cmd.fullscreen":"cockpit mode (full screen, alt-screen)","cmd.quit":"quit aluy","cmd.workflows":"list mapped .md workflows (global + project \xB7 valid + rejected)","cmd.todo":"list the backlog (the agent notes items; done <id> / clear)"}});function bN(t,e){return e===void 0?t:t.replace(/\{(\w+)\}/g,(o,n)=>{let r=e[n];return r===void 0?o:String(r)})}function vN(t,e){let n=j4[t][e];if(n!==void 0)return n;let r=H4[e];return r!==void 0?r:(q4(e),e)}function fs(t,e,o){return bN(vN(t,e),o)}function bi(t=$n){return{lang:t,t:(e,o)=>fs(t,e,o)}}function q4(t){process.env.NODE_ENV!=="production"&&(yN.has(t)||(yN.add(t),console.warn(`[i18n] missing key (no catalog entry): ${t}`)))}var j4,H4,yN,uS=p(()=>{"use strict";ba();lS();dS();j4={"pt-BR":$p,en:cS},H4=$p;yN=new Set});import{createContext as W4,useContext as G4}from"react";import{jsx as z4}from"react/jsx-runtime";function mS(t){return z4(kN.Provider,{value:t.value,children:t.children})}function ke(){return G4(kN)}var kN,xN=p(()=>{"use strict";uS();ba();kN=W4(bi($n))});var ft=p(()=>{"use strict";ba();lS();dS();uS();xN()});import"react";import{Box as fS,Text as SN}from"ink";import{Fragment as ps,jsx as rt,jsxs as so}from"react/jsx-runtime";function K4(t){return so(fS,{children:[rt(f,{name:"fg",children:AN}),t.sub!==void 0&&t.sub!==""?so(ps,{children:[rt(f,{name:"fgDim",children:" \xB7 "}),rt(f,{name:"fgDim",children:t.sub})]}):so(ps,{children:[rt(f,{name:"fgDim",children:" \xB7 Terminal "}),t.version!==void 0&&t.version!==""&&so(f,{name:"depth",children:["v",t.version]})]}),!t.narrow&&so(ps,{children:[rt(f,{name:"fgDim",children:" \xB7 "}),rt(P,{name:"broker",role:"depth"}),so(f,{name:"depth",children:[" ",t.backend==="local"?"local":"broker"]})]}),t.error&&so(ps,{children:[rt(f,{name:"fgDim",children:" \xB7 "}),rt(P,{name:"ask",role:"danger"})]})]})}function Y4(t){return so(fS,{children:[rt(P,{name:"aluy",role:"accent"}),rt(SN,{children:" "}),rt(f,{name:"fg",children:AN}),t.sub!==void 0&&t.sub!==""&&so(ps,{children:[rt(f,{name:"fgDim",children:" \xB7 "}),rt(f,{name:"fgDim",children:t.sub})]}),!t.narrow&&t.version!==void 0&&t.version!==""&&so(ps,{children:[rt(SN,{children:" "}),so(f,{name:"depth",children:["v",t.version]})]}),rt(f,{name:"fgDim",children:" \xB7 "}),rt(f,{name:"fg",children:t.tier}),!t.narrow&&so(ps,{children:[rt(f,{name:"fgDim",children:" \xB7 "}),rt(P,{name:"broker",role:"depth"}),so(f,{name:"depth",children:[" ",t.backend==="local"?"local":"broker"]})]}),t.error&&so(ps,{children:[rt(f,{name:"fgDim",children:" \xB7 "}),rt(P,{name:"ask",role:"danger"})]})]})}function Kd(t){let e=ne(),o=t.columns??80,n=t.rows??24,r=o<60;return e.density!=="compact"&&!r&&n>=wN?so(fS,{flexDirection:"column",children:[rt(Lr,{columns:o}),rt(K4,{...t.sub!==void 0?{sub:t.sub}:{},...t.version!==void 0?{version:t.version}:{},...t.backend!==void 0?{backend:t.backend}:{},narrow:r,error:t.error})]}):rt(Y4,{tier:t.tier,...t.sub!==void 0?{sub:t.sub}:{},...t.version!==void 0?{version:t.version}:{},...t.backend!==void 0?{backend:t.backend}:{},narrow:r,error:t.error})}var wN,AN,EN=p(()=>{"use strict";ae();gi();wN=Vx+13,AN="Aluy Cli"});import"react";import{Box as V4,Text as Yd}from"ink";import{Fragment as vi,jsx as io,jsxs as bt}from"react/jsx-runtime";function X4(t){return t>90?"danger":t>=75?"accent":"fgDim"}function J4(t){return t>=100?"danger":t>=pg?"accent":"fgDim"}function Q4(t){return t==="crit"?"danger":t==="warn"?"accent":"fgDim"}function Vd(t){let{t:e}=ke(),o=X4(t.windowPct),n=t.budgetPct!==void 0,r=n?J4(t.budgetPct):"fgDim",s=n&&t.budgetPct>=pg,a=t.isDefaultTier??!0?"fg":"accent",l=(t.columns??80)<60,c=!l,d=!l,m=!l,u=(t.columns??TN)>=TN,h=t.quotaPct!==void 0,g=Q4(t.quotaLevel??"ok");return bt(V4,{children:[io(P,{name:"clock",role:a}),bt(f,{name:a,children:[" ",t.tier]}),t.model!==void 0&&t.model!==""&&u&&bt(vi,{children:[io(f,{name:"fgDim",children:" \xB7 "}),io(f,{name:"depth",children:t.model})]}),t.focus!==void 0&&t.focus!==""&&bt(f,{name:"accent",children:[" \u25CE foco: ",t.focus]}),m&&bt(vi,{children:[io(Yd,{children:" "}),t.branch!==void 0&&t.branch!==""&&bt(vi,{children:[io(P,{name:"branch",role:"fgDim"}),bt(f,{name:"fgDim",children:[" ",t.branch," "]})]}),io(f,{name:"fgDim",children:t.cwd})]}),io(Yd,{children:" "}),io(P,{name:"window",role:o}),bt(f,{name:o,children:[" ",t.windowPct,"%"]}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.window")]}),io(Yd,{children:" "}),io(P,{name:"gauge",role:r}),n?bt(vi,{children:[bt(f,{name:r,children:[" ",t.budgetPct,"%"]}),s&&io(f,{name:"accent",children:" \u26A0"}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.session")]}),d&&bt(f,{name:"fgDim",children:[" (",Nt(t.tokens),")"]})]}):bt(vi,{children:[bt(f,{name:"fgDim",children:[" ",Nt(t.tokens)]}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.session")]})]}),h&&bt(vi,{children:[io(Yd,{children:" "}),io(P,{name:"gauge",role:g}),bt(f,{name:g,children:[" ",t.quotaPct,"%"]}),c&&bt(f,{name:"fgDim",children:[" ",e("statusbar.quota")]})]}),t.error&&bt(vi,{children:[io(Yd,{children:" "}),io(P,{name:"ask",role:"danger"})]})]})}var TN,_N=p(()=>{"use strict";N();ae();vn();ft();TN=90});function Rt(t,e){return e<0?0:e>t.length?t.length:e}function RN(t,e){if(e<2)return!1;let o=t.charCodeAt(e-1),n=t.charCodeAt(e-2);return o>=56320&&o<=57343&&n>=55296&&n<=56319}function Z4(t,e){if(e+1>=t.length)return!1;let o=t.charCodeAt(e),n=t.charCodeAt(e+1);return o>=55296&&o<=56319&&n>=56320&&n<=57343}function ki(t,e){let o=Rt(t.text,t.cursor);return{text:t.text.slice(0,o)+e+t.text.slice(o),cursor:o+e.length}}function pS(t){let e=Rt(t.text,t.cursor);if(e===0)return{text:t.text,cursor:0};let o=RN(t.text,e)?2:1;return{text:t.text.slice(0,e-o)+t.text.slice(e),cursor:e-o}}function hS(t){let e=Rt(t.text,t.cursor),o=RN(t.text,e)?2:1;return Rt(t.text,e-o)}function gS(t){let e=Rt(t.text,t.cursor),o=Z4(t.text,e)?2:1;return Rt(t.text,e+o)}function CN(t){let e=Rt(t.text,t.cursor);return{text:t.text.slice(e),cursor:0}}function ON(t){let e=Rt(t.text,t.cursor);return{text:t.text.slice(0,e),cursor:e}}function MN(t){let e=Rt(t.text,t.cursor),o=Jd({text:t.text,cursor:e});return{text:t.text.slice(0,o)+t.text.slice(e),cursor:o}}function LN(t){if(t.includes("\x1B[H")||t.includes("\x1BOH")||t.includes("\x1B[1~")||t.includes("\x1B[7~"))return"home";if(t.includes("\x1B[F")||t.includes("\x1BOF")||t.includes("\x1B[4~")||t.includes("\x1B[8~"))return"end"}function PN(t,e){return t.length>0?"clear":e?"exit":"arm"}function Xd(t,e){let o=t;for(let n=0;n<e.length;n++){let r=e[n];if(r==="\r"||r===`
600
600
  `)return{state:o,newlineIndex:n,newline:r};if(r===eJ||r===tJ){o=pS(o);continue}o=ki(o,r)}return{state:o,newlineIndex:-1,newline:""}}function IN(t,e,o){let n=t.split(`
601
601
  `);if(o<=0||n.length<=o)return{text:t,cursor:Rt(t,e),hiddenAbove:0,hiddenBelow:0};let r=Rt(t,e),s=0;for(let u=0;u<r;u++)t[u]===`
602
602
  `&&s++;let i=Math.max(0,s-(o-1)),a=i+o;a>n.length&&(a=n.length,i=Math.max(0,a-o));let c=n.slice(i,a).join(`
603
- `),d=0;for(let u=0;u<i;u++)d+=n[u].length+1;let m=Rt(c,r-d);return{text:c,cursor:m,hiddenAbove:i,hiddenBelow:n.length-a}}function Jd(t){let e=Rt(t.text,t.cursor);for(;e>0&&!Fp.test(t.text[e-1]);)e--;for(;e>0&&Fp.test(t.text[e-1]);)e--;return e}function Bp(t){let e=t.text.length,o=Rt(t.text,t.cursor);for(;o<e&&!Fp.test(t.text[o]);)o++;for(;o<e&&Fp.test(t.text[o]);)o++;return o}var eJ,tJ,Fp,Up=p(()=>{"use strict";eJ="\x7F",tJ="\b";Fp=/[\p{L}\p{N}_]/u});import"react";import{Box as yS,Text as xi}from"ink";import{Fragment as Qd,jsx as lt,jsxs as qn}from"react/jsx-runtime";function NN(t){let{text:e,showCursor:o,active:n,cursorGlyph:r}=t,s=n?"fg":"fgDim",i=t.pos<0?0:t.pos>e.length?e.length:t.pos;if(!o)return lt(f,{name:s,children:e});if(i>=e.length)return qn(Qd,{children:[lt(f,{name:s,children:e}),lt(f,{name:"fg",children:r})]});let l=e.codePointAt(i)>65535?2:1,c=e.slice(0,i),d=e.slice(i,i+l),m=e.slice(i+l);return qn(Qd,{children:[c!==""&&lt(f,{name:s,children:c}),lt(xi,{inverse:!0,children:d}),m!==""&&lt(f,{name:s,children:m})]})}function DN(t){let e=ne(),o=(t.label??"").trim();if(o==="")return null;let n=e.glyph("sessionDot"),r=e.sessionColor(t.color??o),s={};return r.color!==void 0&&(s.color=r.color),r.bold!==void 0&&(s.bold=r.bold),qn(Qd,{children:[lt(xi,{...s,children:n}),lt(xi,{children:" "}),lt(f,{name:"fg",children:o}),lt(xi,{children:" "})]})}function Zd(t){let e=ne(),{t:o}=ke(),n=t.placeholder??o("composer.placeholder"),r=e.glyph("cursor"),s=t.cursorPos??t.value.length;if(t.shellMode){let g=t.active&&t.showCursor!==!1;return qn(yS,{children:[lt(DN,{...t.sessionLabel!==void 0?{label:t.sessionLabel}:{},...t.sessionColor!==void 0?{color:t.sessionColor}:{}}),qn(f,{name:"danger",children:[e.glyph("ask")," shell "]}),lt(NN,{text:t.value,pos:s,showCursor:g,active:t.active,cursorGlyph:r}),lt(xi,{children:" "}),lt(f,{name:"fgDim",children:o("composer.shellHint")})]})}let a=t.value===""&&t.active,l=t.active&&t.showCursor!==!1,c=lt(f,{name:"fg",children:r}),d=t.value===""?1:t.value.split(`
604
- `).length,m=t.maxRows!==void 0&&d>t.maxRows,u=m?Math.max(1,t.maxRows-1):0,h=m?IN(t.value,s,u):{text:t.value,cursor:s,hiddenAbove:0,hiddenBelow:0};return qn(yS,{flexDirection:"column",children:[qn(yS,{children:[lt(DN,{...t.sessionLabel!==void 0?{label:t.sessionLabel}:{},...t.sessionColor!==void 0?{color:t.sessionColor}:{}}),lt(P,{name:"prompt",role:"accent"}),lt(xi,{children:" "}),a?qn(Qd,{children:[l&&c,lt(f,{name:"fgDim",children:n})]}):lt(NN,{text:h.text,pos:h.cursor,showCursor:l,active:t.active,cursorGlyph:r}),!t.active&&t.hint&&qn(Qd,{children:[lt(xi,{children:" "}),lt(f,{name:"fgDim",children:t.hint})]})]}),m&&(h.hiddenAbove>0||h.hiddenBelow>0)&&qn(f,{name:"fgDim",children:[h.hiddenAbove>0?`\u2191${h.hiddenAbove}`:"",h.hiddenAbove>0&&h.hiddenBelow>0?" \xB7 ":"",h.hiddenBelow>0?`\u2193${h.hiddenBelow}`:"",` ${o("composer.moreLines")}`]})]})}var $N=p(()=>{"use strict";ae();ft();Up()});function Si(t,e){if(e<=0)return"";if(Ee(t)<=e)return t;let o=e-1,n="",r=0;for(let s of t){let i=Ee(s);if(r+i>o)break;n+=s,r+=i}return n+"\u2026"}function kS(t,e,o){let n=Math.max(0,e-Ee(t));if(n===0)return t;if(o==="right")return" ".repeat(n)+t;if(o==="center"){let r=Math.floor(n/2);return" ".repeat(r)+t+" ".repeat(n-r)}return t+" ".repeat(n)}function FN(t,e,o,n){let r=[];for(let d=0;d<o;d++){let m=Ee(t[d]??"");for(let u of e)m=Math.max(m,Ee(u[d]??""));r.push(Math.max(bS,m))}if(!n||n<=0)return r;let s=o>0?(o-1)*vS:0,i=Math.max(o*bS,n-s),a=r.reduce((d,m)=>d+m,0);if(a<=i)return r;let l=[...r],c=a*2+10;for(;a>i&&c-- >0;){let d=-1,m=bS;for(let u=0;u<o;u++)l[u]>m&&(m=l[u],d=u);if(d<0)break;l[d]-=1,a-=1}return l}var vS,bS,jp=p(()=>{"use strict";ro();vS=3,bS=1});import"react";import{Box as qa}from"ink";import{jsx as Wn,jsxs as UN}from"react/jsx-runtime";function BN(t){let e=t.replace(/\s+/g," ").trim();return Si(e,oJ)}function Hp(t){if(t<=0)return 0;let e=Math.min(t,eu),o=t>eu?1:0;return 1+e+o}function xS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,eu),n=e.length-o.length;return UN(qa,{flexDirection:"column",children:[Wn(f,{name:"depth",children:`\u229F ${e.length} na fila \xB7 enviada(s) ao terminar o turno`}),o.map((r,s)=>Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u203A ${BN(r)}`})},s)),n>0&&Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u2026+${n} na fila`})})]})}function SS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,eu),n=e.length-o.length;return UN(qa,{flexDirection:"column",children:[Wn(f,{name:"depth",children:`\u21B3 ${e.length} encaixando\u2026 \xB7 incorporada(s) na pr\xF3xima itera\xE7\xE3o`}),o.map((r,s)=>Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u203A ${BN(r)}`})},s)),n>0&&Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u2026+${n} encaixando`})})]})}var eu,oJ,jN=p(()=>{"use strict";ae();jp();eu=3,oJ=48});function HN(t){let e=t.regex,o={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[o]}]};Object.assign(o,{className:"variable",variants:[{begin:e.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},s=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},a={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,o,r]};r.contains.push(a);let l={match:/\\"/},c={className:"string",begin:/'/,end:/'/},d={match:/\\'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,o]},u=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],h=t.SHEBANG({binary:`(${u.join("|")})`,relevance:10}),g={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],b=["true","false"],w={match:/(\/[a-z._-]+)+/},T=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],E=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],L=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],B=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:b,built_in:[...T,...E,"set","shopt",...L,...B]},contains:[h,t.SHEBANG(),g,m,s,i,w,a,l,c,d,o]}}var qN=p(()=>{});function WN(t){let e=t.regex,o=nJ(t),n={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",s=/@-?\w[\w]*(-\w+)*/,i="[a-zA-Z-][a-zA-Z0-9_-]*",a=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[o.BLOCK_COMMENT,n,o.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+i,relevance:0},o.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+lJ.join("|")+")"},{begin:":(:)?("+cJ.join("|")+")"}]},o.CSS_VARIABLE,{className:"attribute",begin:"\\b("+dJ.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[o.BLOCK_COMMENT,o.HEXCOLOR,o.IMPORTANT,o.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},o.FUNCTION_DISPATCH]},{begin:e.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:s},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:aJ.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,o.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+iJ.join("|")+")\\b"}]}}var nJ,rJ,sJ,iJ,aJ,lJ,cJ,dJ,GN=p(()=>{nJ=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),rJ=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],sJ=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],iJ=[...rJ,...sJ],aJ=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),lJ=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),cJ=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),dJ=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse()});function zN(t){let e=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:e.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}var KN=p(()=>{});function YN(t){let s={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:s,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:s,illegal:/["']/}]}]}}var VN=p(()=>{});function eD(t){let e=t.regex,o=(O,{after:se})=>{let de="</"+O[0].slice(1);return O.input.indexOf(de,se)!==-1},n=XN,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(O,se)=>{let de=O[0].length+O.index,ye=O.input[de];if(ye==="<"||ye===","){se.ignoreMatch();return}ye===">"&&(o(O,{after:de})||se.ignoreMatch());let Z,te=O.input.substring(de);if(Z=te.match(/^\s*=/)){se.ignoreMatch();return}if((Z=te.match(/^\s+extends\s+/))&&Z.index===0){se.ignoreMatch();return}}},a={$pattern:XN,keyword:uJ,literal:mJ,built_in:pJ,"variable.language":fJ},l="[0-9](_?[0-9])*",c=`\\.(${l})`,d="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${d})((${c})|\\.)?|(${c}))[eE][+-]?(${l})\\b`},{begin:`\\b(${d})\\b((${c})\\b|\\.)?|(${c})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},g={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},b={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,u]},T={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},E=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=E.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(E)});let L=[].concat(T,u.contains),B=L.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(L)}]),j={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},z={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,e.concat(n,"(",e.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},V={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...JN,...QN]}},I={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},J={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[j],illegal:/%/},Q={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function K(O){return e.concat("(?!",O.join("|"),")")}let D={match:e.concat(/\b/,K([...ZN,"super","import"].map(O=>`${O}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},X={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Oe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},j]},Y="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ce={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(Y)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[j]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:V},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),I,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,V,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ce,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[T,t.REGEXP_MODE,{className:"function",begin:Y,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:s},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:!0,contains:["self"]}]}]},J,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[j,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},X,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[j]},D,Q,z,Oe,{match:/\$[(.]/}]}}var XN,uJ,mJ,JN,QN,ZN,fJ,pJ,tD=p(()=>{XN="[A-Za-z$_][0-9A-Za-z$_]*",uJ=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],mJ=["true","false","null","undefined","NaN","Infinity"],JN=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],QN=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],ZN=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],fJ=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],pJ=[].concat(ZN,JN,QN)});function oD(t){let e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},o={match:/[{}[\],:]/,className:"punctuation",relevance:0},n=["true","false","null"],r={scope:"literal",beginKeywords:n.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:n},contains:[e,o,t.QUOTE_STRING_MODE,r,t.C_NUMBER_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var nD=p(()=>{});function rD(t){let e=t.regex,o={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},n={begin:"^[-\\*]{3,}",end:"$"},r={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},s={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},a=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,a,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},c={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},d={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},m=t.inherit(c,{contains:[]}),u=t.inherit(d,{contains:[]});c.contains.push(u),d.contains.push(m);let h=[o,l];return[c,d,m,u].forEach(w=>{w.contains=w.contains.concat(h)}),h=h.concat(c,d),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:h},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:h}]}]},o,s,c,d,{className:"quote",begin:"^>\\s+",contains:h,end:"$"},r,n,l,i,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}var sD=p(()=>{});function iD(t){let e=t.regex,o=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),n=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],a={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:n,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},l={className:"meta",begin:/^(>>>|\.\.\.) /},c={className:"subst",begin:/\{/,end:/\}/,keywords:a,illegal:/#/},d={begin:/\{\{/,relevance:0},m={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,l],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,l],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,l,d,c]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,l,d,c]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,d,c]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,d,c]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},u="[0-9](_?[0-9])*",h=`(\\b(${u}))?\\.(${u})|\\b(${u})\\.`,g=`\\b|${n.join("|")}`,y={className:"number",relevance:0,variants:[{begin:`(\\b(${u})|(${h}))[eE][+-]?(${u})[jJ]?(?=${g})`},{begin:`(${h})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${g})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${g})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})`},{begin:`\\b(${u})[jJ](?=${g})`}]},b={className:"comment",begin:e.lookahead(/# type:/),end:/$/,keywords:a,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},w={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:["self",l,y,m,t.HASH_COMMENT_MODE]}]};return c.contains=[m,y,l],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a,illegal:/(<\/|\?)|=>/,contains:[l,y,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},m,b,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,o],scope:{1:"keyword",3:"title.function"},contains:[w]},{variants:[{match:[/\bclass/,/\s+/,o,/\s*/,/\(\s*/,o,/\s*\)/]},{match:[/\bclass/,/\s+/,o]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[y,w,m]}]}}var aD=p(()=>{});function lD(t){let e=t.regex,o=/(r#)?/,n=e.concat(o,t.UNDERSCORE_IDENT_RE),r=e.concat(o,t.IDENT_RE),s={className:"title.function.invoke",relevance:0,begin:e.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,e.lookahead(/\s*\(/))},i="([ui](8|16|32|64|128|size)|f(32|64))?",a=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],l=["true","false","Some","None","Ok","Err"],c=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],d=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",type:d,keyword:a,literal:l,built_in:c},illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),t.inherit(t.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+i},{begin:"\\b0o([0-7_]+)"+i},{begin:"\\b0x([A-Fa-f0-9_]+)"+i},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+i}],relevance:0},{begin:[/fn/,/\s+/,n],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,n],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,n,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{begin:t.IDENT_RE+"::",keywords:{keyword:"Self",built_in:c,type:d}},{className:"punctuation",begin:"->"},s]}}var cD=p(()=>{});function dD(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}var uD=p(()=>{});function mD(t){let e=t.regex,o=t.COMMENT("--","$"),n={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},s=["true","false","unknown"],i=["double precision","large object","with timezone","without timezone"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],l=["add","asc","collation","desc","final","first","last","view"],c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],d=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],m=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],u=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],h=d,g=[...c,...l].filter(B=>!d.includes(B)),y={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},b={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},w={match:e.concat(/\b/,e.either(...h),/\s*\(/),relevance:0,keywords:{built_in:h}};function T(B){return e.concat(/\b/,e.either(...B.map(j=>j.replace(/\s+/,"\\s+"))),/\b/)}let E={scope:"keyword",match:T(u),relevance:0};function L(B,{exceptions:j,when:z}={}){let V=z;return j=j||[],B.map(I=>I.match(/\|\d+$/)||j.includes(I)?I:V(I)?`${I}|0`:I)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:L(g,{when:B=>B.length<3}),literal:s,type:a,built_in:m},contains:[{scope:"type",match:T(i)},E,w,y,n,r,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,o,b]}}var fD=p(()=>{});function hJ(t){let e=t.regex,o=(O,{after:se})=>{let de="</"+O[0].slice(1);return O.input.indexOf(de,se)!==-1},n=qp,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(O,se)=>{let de=O[0].length+O.index,ye=O.input[de];if(ye==="<"||ye===","){se.ignoreMatch();return}ye===">"&&(o(O,{after:de})||se.ignoreMatch());let Z,te=O.input.substring(de);if(Z=te.match(/^\s*=/)){se.ignoreMatch();return}if((Z=te.match(/^\s+extends\s+/))&&Z.index===0){se.ignoreMatch();return}}},a={$pattern:qp,keyword:pD,literal:hD,built_in:kD,"variable.language":vD},l="[0-9](_?[0-9])*",c=`\\.(${l})`,d="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${d})((${c})|\\.)?|(${c}))[eE][+-]?(${l})\\b`},{begin:`\\b(${d})\\b((${c})\\b|\\.)?|(${c})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},g={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},b={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,u]},T={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},E=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=E.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(E)});let L=[].concat(T,u.contains),B=L.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(L)}]),j={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},z={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,e.concat(n,"(",e.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},V={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...gD,...yD]}},I={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},J={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[j],illegal:/%/},Q={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function K(O){return e.concat("(?!",O.join("|"),")")}let D={match:e.concat(/\b/,K([...bD,"super","import"].map(O=>`${O}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},X={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Oe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},j]},Y="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ce={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(Y)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[j]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:V},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),I,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,V,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ce,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[T,t.REGEXP_MODE,{className:"function",begin:Y,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:s},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:!0,contains:["self"]}]}]},J,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[j,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},X,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[j]},D,Q,z,Oe,{match:/\$[(.]/}]}}function xD(t){let e=t.regex,o=hJ(t),n=qp,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],s={begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},i={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[o.exports.CLASS_REFERENCE]},a={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},l=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],c={$pattern:qp,keyword:pD.concat(l),literal:hD,built_in:kD.concat(r),"variable.language":vD},d={className:"meta",begin:"@"+n},m=(y,b,w)=>{let T=y.contains.findIndex(E=>E.label===b);if(T===-1)throw new Error("can not find mode to replace");y.contains.splice(T,1,w)};Object.assign(o.keywords,c),o.exports.PARAMS_CONTAINS.push(d);let u=o.contains.find(y=>y.scope==="attr"),h=Object.assign({},u,{match:e.concat(n,e.lookahead(/\s*\?:/))});o.exports.PARAMS_CONTAINS.push([o.exports.CLASS_REFERENCE,u,h]),o.contains=o.contains.concat([d,s,i,h]),m(o,"shebang",t.SHEBANG()),m(o,"use_strict",a);let g=o.contains.find(y=>y.label==="func.def");return g.relevance=0,Object.assign(o,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),o}var qp,pD,hD,gD,yD,bD,vD,kD,SD=p(()=>{qp="[A-Za-z$_][0-9A-Za-z$_]*",pD=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],hD=["true","false","null","undefined","NaN","Infinity"],gD=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],yD=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],bD=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],vD=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],kD=[].concat(bD,gD,yD)});function wD(t){let e=t.regex,o=e.concat(/[\p{L}_]/u,e.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),n=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},s={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=t.inherit(s,{begin:/\(/,end:/\)/}),a=t.inherit(t.APOS_STRING_MODE,{className:"string"}),l=t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),c={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:n,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[s,l,a,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[s,i,l,a]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[c],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[c],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:e.concat(/</,e.lookahead(e.concat(o,e.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:o,relevance:0,starts:c}]},{className:"tag",begin:e.concat(/<\//,e.lookahead(e.concat(o,/>/))),contains:[{className:"name",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}var AD=p(()=>{});function ED(t){let e="true false yes no null",o="[\\w#;/?:@&=+$,.~*'()[\\]]+",n={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},s={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},i={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,r]},a=t.inherit(i,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),u={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},h={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},g={begin:/\{/,end:/\}/,contains:[h],illegal:"\\n",relevance:0},y={begin:"\\[",end:"\\]",contains:[h],illegal:"\\n",relevance:0},b=[n,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+o},{className:"type",begin:"!<"+o+">"},{className:"type",begin:"!"+o},{className:"type",begin:"!!"+o},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},u,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},g,y,s,i],w=[...b];return w.pop(),w.push(a),h.contains=w,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:b}}var TD=p(()=>{});import{createLowlight as gJ}from"lowlight";function Wa(t){if(!t)return null;let e=t.trim().toLowerCase();if(e==="")return null;let o=yJ[e]??e;return _D.registered(o)?o:null}function bJ(t){if(!t)return"fg";let e=t.replace(/^hljs-/,"");switch(e.split(/[.\s]/)[0]??e){case"keyword":case"built_in":case"literal":case"operator":return"accent";case"string":case"regexp":case"char":case"subst":case"addition":return"success";case"comment":case"quote":case"meta":return"fgDim";case"number":case"symbol":case"bullet":case"link":return"accentDim";case"title":case"function":case"class":case"name":case"tag":case"attr":case"attribute":case"type":case"params":case"property":case"selector":case"section":case"variable":return"depth";case"deletion":return"danger";default:return"fg"}}function vJ(t){let e=t.properties?.className;if(Array.isArray(e))return e[e.length-1];if(typeof e=="string")return e}function RD(t,e,o){if(t.type==="text"){let i=t.value;i!==""&&o.push({text:i,role:e});return}let n=t,r=n.type==="element"?bJ(vJ(n)):e,s=n.type==="element"&&r!=="fg"?r:e;for(let i of n.children??[])RD(i,s,o)}function kJ(t){let e=[];for(let o of t){let n=e[e.length-1];n&&n.role===o.role?e[e.length-1]={text:n.text+o.text,role:o.role}:e.push(o)}return e}function tu(t,e){if(t==="")return[];let o=Wa(e);if(!o)return[{text:t,role:"fg"}];try{let n=_D.highlight(o,t),r=[];RD(n,"fg",r);let s=kJ(r);return s.length>0?s:[{text:t,role:"fg"}]}catch{return[{text:t,role:"fg"}]}}var _D,yJ,wS=p(()=>{"use strict";qN();GN();KN();VN();tD();nD();sD();aD();cD();uD();fD();SD();AD();TD();_D=gJ({bash:HN,css:WN,diff:zN,go:YN,javascript:eD,json:oD,markdown:rD,python:iD,rust:lD,shell:dD,sql:mD,typescript:xD,xml:wD,yaml:ED}),yJ={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",mjs:"javascript",cjs:"javascript",sh:"bash",zsh:"bash",shell:"shell",console:"shell",py:"python",rs:"rust",golang:"go",yml:"yaml",html:"xml",htm:"xml",svg:"xml",md:"markdown",markdown:"markdown",patch:"diff"}});import"react";import{Box as Wp,Text as CD}from"ink";import{jsx as Ga,jsxs as wi}from"react/jsx-runtime";function AS(t){let o=ne().box,n=Wa(t.lang),r=(n??t.lang??"code")+(t.open?" \u2026":""),s=t.code.split(`
603
+ `),d=0;for(let u=0;u<i;u++)d+=n[u].length+1;let m=Rt(c,r-d);return{text:c,cursor:m,hiddenAbove:i,hiddenBelow:n.length-a}}function Jd(t){let e=Rt(t.text,t.cursor);for(;e>0&&!Fp.test(t.text[e-1]);)e--;for(;e>0&&Fp.test(t.text[e-1]);)e--;return e}function Bp(t){let e=t.text.length,o=Rt(t.text,t.cursor);for(;o<e&&!Fp.test(t.text[o]);)o++;for(;o<e&&Fp.test(t.text[o]);)o++;return o}var eJ,tJ,Fp,Up=p(()=>{"use strict";eJ="\x7F",tJ="\b";Fp=/[\p{L}\p{N}_]/u});import"react";import{Box as yS,Text as xi}from"ink";import{Fragment as Qd,jsx as at,jsxs as qn}from"react/jsx-runtime";function NN(t){let{text:e,showCursor:o,active:n,cursorGlyph:r}=t,s=n?"fg":"fgDim",i=t.pos<0?0:t.pos>e.length?e.length:t.pos;if(!o)return at(f,{name:s,children:e});if(i>=e.length)return qn(Qd,{children:[at(f,{name:s,children:e}),at(f,{name:"fg",children:r})]});let l=e.codePointAt(i)>65535?2:1,c=e.slice(0,i),d=e.slice(i,i+l),m=e.slice(i+l);return qn(Qd,{children:[c!==""&&at(f,{name:s,children:c}),at(xi,{inverse:!0,children:d}),m!==""&&at(f,{name:s,children:m})]})}function DN(t){let e=ne(),o=(t.label??"").trim();if(o==="")return null;let n=e.glyph("sessionDot"),r=e.sessionColor(t.color??o),s={};return r.color!==void 0&&(s.color=r.color),r.bold!==void 0&&(s.bold=r.bold),qn(Qd,{children:[at(xi,{...s,children:n}),at(xi,{children:" "}),at(f,{name:"fg",children:o}),at(xi,{children:" "})]})}function Zd(t){let e=ne(),{t:o}=ke(),n=t.placeholder??o("composer.placeholder"),r=e.glyph("cursor"),s=t.cursorPos??t.value.length;if(t.shellMode){let g=t.active&&t.showCursor!==!1;return qn(yS,{children:[at(DN,{...t.sessionLabel!==void 0?{label:t.sessionLabel}:{},...t.sessionColor!==void 0?{color:t.sessionColor}:{}}),qn(f,{name:"danger",children:[e.glyph("ask")," shell "]}),at(NN,{text:t.value,pos:s,showCursor:g,active:t.active,cursorGlyph:r}),at(xi,{children:" "}),at(f,{name:"fgDim",children:o("composer.shellHint")})]})}let a=t.value===""&&t.active,l=t.active&&t.showCursor!==!1,c=at(f,{name:"fg",children:r}),d=t.value===""?1:t.value.split(`
604
+ `).length,m=t.maxRows!==void 0&&d>t.maxRows,u=m?Math.max(1,t.maxRows-1):0,h=m?IN(t.value,s,u):{text:t.value,cursor:s,hiddenAbove:0,hiddenBelow:0};return qn(yS,{flexDirection:"column",children:[qn(yS,{children:[at(DN,{...t.sessionLabel!==void 0?{label:t.sessionLabel}:{},...t.sessionColor!==void 0?{color:t.sessionColor}:{}}),at(P,{name:"prompt",role:"accent"}),at(xi,{children:" "}),a?qn(Qd,{children:[l&&c,at(f,{name:"fgDim",children:n})]}):at(NN,{text:h.text,pos:h.cursor,showCursor:l,active:t.active,cursorGlyph:r}),!t.active&&t.hint&&qn(Qd,{children:[at(xi,{children:" "}),at(f,{name:"fgDim",children:t.hint})]})]}),m&&(h.hiddenAbove>0||h.hiddenBelow>0)&&qn(f,{name:"fgDim",children:[h.hiddenAbove>0?`\u2191${h.hiddenAbove}`:"",h.hiddenAbove>0&&h.hiddenBelow>0?" \xB7 ":"",h.hiddenBelow>0?`\u2193${h.hiddenBelow}`:"",` ${o("composer.moreLines")}`]})]})}var $N=p(()=>{"use strict";ae();ft();Up()});function Si(t,e){if(e<=0)return"";if(Ee(t)<=e)return t;let o=e-1,n="",r=0;for(let s of t){let i=Ee(s);if(r+i>o)break;n+=s,r+=i}return n+"\u2026"}function kS(t,e,o){let n=Math.max(0,e-Ee(t));if(n===0)return t;if(o==="right")return" ".repeat(n)+t;if(o==="center"){let r=Math.floor(n/2);return" ".repeat(r)+t+" ".repeat(n-r)}return t+" ".repeat(n)}function FN(t,e,o,n){let r=[];for(let d=0;d<o;d++){let m=Ee(t[d]??"");for(let u of e)m=Math.max(m,Ee(u[d]??""));r.push(Math.max(bS,m))}if(!n||n<=0)return r;let s=o>0?(o-1)*vS:0,i=Math.max(o*bS,n-s),a=r.reduce((d,m)=>d+m,0);if(a<=i)return r;let l=[...r],c=a*2+10;for(;a>i&&c-- >0;){let d=-1,m=bS;for(let u=0;u<o;u++)l[u]>m&&(m=l[u],d=u);if(d<0)break;l[d]-=1,a-=1}return l}var vS,bS,jp=p(()=>{"use strict";ro();vS=3,bS=1});import"react";import{Box as qa}from"ink";import{jsx as Wn,jsxs as UN}from"react/jsx-runtime";function BN(t){let e=t.replace(/\s+/g," ").trim();return Si(e,oJ)}function Hp(t){if(t<=0)return 0;let e=Math.min(t,eu),o=t>eu?1:0;return 1+e+o}function xS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,eu),n=e.length-o.length;return UN(qa,{flexDirection:"column",children:[Wn(f,{name:"depth",children:`\u229F ${e.length} na fila \xB7 enviada(s) ao terminar o turno`}),o.map((r,s)=>Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u203A ${BN(r)}`})},s)),n>0&&Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u2026+${n} na fila`})})]})}function SS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,eu),n=e.length-o.length;return UN(qa,{flexDirection:"column",children:[Wn(f,{name:"depth",children:`\u21B3 ${e.length} encaixando\u2026 \xB7 incorporada(s) na pr\xF3xima itera\xE7\xE3o`}),o.map((r,s)=>Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u203A ${BN(r)}`})},s)),n>0&&Wn(qa,{children:Wn(f,{name:"fgDim",children:` \u2026+${n} encaixando`})})]})}var eu,oJ,jN=p(()=>{"use strict";ae();jp();eu=3,oJ=48});function HN(t){let e=t.regex,o={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[o]}]};Object.assign(o,{className:"variable",variants:[{begin:e.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},s=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},a={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,o,r]};r.contains.push(a);let l={match:/\\"/},c={className:"string",begin:/'/,end:/'/},d={match:/\\'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,o]},u=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],h=t.SHEBANG({binary:`(${u.join("|")})`,relevance:10}),g={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],b=["true","false"],w={match:/(\/[a-z._-]+)+/},T=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],E=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],L=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],B=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:b,built_in:[...T,...E,"set","shopt",...L,...B]},contains:[h,t.SHEBANG(),g,m,s,i,w,a,l,c,d,o]}}var qN=p(()=>{});function WN(t){let e=t.regex,o=nJ(t),n={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",s=/@-?\w[\w]*(-\w+)*/,i="[a-zA-Z-][a-zA-Z0-9_-]*",a=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[o.BLOCK_COMMENT,n,o.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+i,relevance:0},o.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+lJ.join("|")+")"},{begin:":(:)?("+cJ.join("|")+")"}]},o.CSS_VARIABLE,{className:"attribute",begin:"\\b("+dJ.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[o.BLOCK_COMMENT,o.HEXCOLOR,o.IMPORTANT,o.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},o.FUNCTION_DISPATCH]},{begin:e.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:s},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:aJ.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,o.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+iJ.join("|")+")\\b"}]}}var nJ,rJ,sJ,iJ,aJ,lJ,cJ,dJ,GN=p(()=>{nJ=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),rJ=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],sJ=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],iJ=[...rJ,...sJ],aJ=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),lJ=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),cJ=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),dJ=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse()});function zN(t){let e=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:e.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}var KN=p(()=>{});function YN(t){let s={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:s,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:s,illegal:/["']/}]}]}}var VN=p(()=>{});function eD(t){let e=t.regex,o=(O,{after:se})=>{let de="</"+O[0].slice(1);return O.input.indexOf(de,se)!==-1},n=XN,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(O,se)=>{let de=O[0].length+O.index,ye=O.input[de];if(ye==="<"||ye===","){se.ignoreMatch();return}ye===">"&&(o(O,{after:de})||se.ignoreMatch());let Z,te=O.input.substring(de);if(Z=te.match(/^\s*=/)){se.ignoreMatch();return}if((Z=te.match(/^\s+extends\s+/))&&Z.index===0){se.ignoreMatch();return}}},a={$pattern:XN,keyword:uJ,literal:mJ,built_in:pJ,"variable.language":fJ},l="[0-9](_?[0-9])*",c=`\\.(${l})`,d="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${d})((${c})|\\.)?|(${c}))[eE][+-]?(${l})\\b`},{begin:`\\b(${d})\\b((${c})\\b|\\.)?|(${c})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},g={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},b={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,u]},T={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},E=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=E.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(E)});let L=[].concat(T,u.contains),B=L.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(L)}]),j={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},z={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,e.concat(n,"(",e.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},V={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...JN,...QN]}},I={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},J={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[j],illegal:/%/},Q={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function K(O){return e.concat("(?!",O.join("|"),")")}let D={match:e.concat(/\b/,K([...ZN,"super","import"].map(O=>`${O}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},X={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Oe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},j]},Y="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ce={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(Y)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[j]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:V},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),I,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,V,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ce,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[T,t.REGEXP_MODE,{className:"function",begin:Y,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:s},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:!0,contains:["self"]}]}]},J,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[j,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},X,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[j]},D,Q,z,Oe,{match:/\$[(.]/}]}}var XN,uJ,mJ,JN,QN,ZN,fJ,pJ,tD=p(()=>{XN="[A-Za-z$_][0-9A-Za-z$_]*",uJ=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],mJ=["true","false","null","undefined","NaN","Infinity"],JN=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],QN=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],ZN=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],fJ=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],pJ=[].concat(ZN,JN,QN)});function oD(t){let e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},o={match:/[{}[\],:]/,className:"punctuation",relevance:0},n=["true","false","null"],r={scope:"literal",beginKeywords:n.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:n},contains:[e,o,t.QUOTE_STRING_MODE,r,t.C_NUMBER_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var nD=p(()=>{});function rD(t){let e=t.regex,o={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},n={begin:"^[-\\*]{3,}",end:"$"},r={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},s={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},a=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,a,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},c={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},d={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},m=t.inherit(c,{contains:[]}),u=t.inherit(d,{contains:[]});c.contains.push(u),d.contains.push(m);let h=[o,l];return[c,d,m,u].forEach(w=>{w.contains=w.contains.concat(h)}),h=h.concat(c,d),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:h},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:h}]}]},o,s,c,d,{className:"quote",begin:"^>\\s+",contains:h,end:"$"},r,n,l,i,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}var sD=p(()=>{});function iD(t){let e=t.regex,o=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),n=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],a={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:n,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},l={className:"meta",begin:/^(>>>|\.\.\.) /},c={className:"subst",begin:/\{/,end:/\}/,keywords:a,illegal:/#/},d={begin:/\{\{/,relevance:0},m={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,l],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,l],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,l,d,c]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,l,d,c]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,d,c]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,d,c]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},u="[0-9](_?[0-9])*",h=`(\\b(${u}))?\\.(${u})|\\b(${u})\\.`,g=`\\b|${n.join("|")}`,y={className:"number",relevance:0,variants:[{begin:`(\\b(${u})|(${h}))[eE][+-]?(${u})[jJ]?(?=${g})`},{begin:`(${h})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${g})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${g})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})`},{begin:`\\b(${u})[jJ](?=${g})`}]},b={className:"comment",begin:e.lookahead(/# type:/),end:/$/,keywords:a,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},w={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:["self",l,y,m,t.HASH_COMMENT_MODE]}]};return c.contains=[m,y,l],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a,illegal:/(<\/|\?)|=>/,contains:[l,y,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},m,b,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,o],scope:{1:"keyword",3:"title.function"},contains:[w]},{variants:[{match:[/\bclass/,/\s+/,o,/\s*/,/\(\s*/,o,/\s*\)/]},{match:[/\bclass/,/\s+/,o]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[y,w,m]}]}}var aD=p(()=>{});function lD(t){let e=t.regex,o=/(r#)?/,n=e.concat(o,t.UNDERSCORE_IDENT_RE),r=e.concat(o,t.IDENT_RE),s={className:"title.function.invoke",relevance:0,begin:e.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,e.lookahead(/\s*\(/))},i="([ui](8|16|32|64|128|size)|f(32|64))?",a=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],l=["true","false","Some","None","Ok","Err"],c=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],d=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",type:d,keyword:a,literal:l,built_in:c},illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),t.inherit(t.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+i},{begin:"\\b0o([0-7_]+)"+i},{begin:"\\b0x([A-Fa-f0-9_]+)"+i},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+i}],relevance:0},{begin:[/fn/,/\s+/,n],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,n],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,n,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{begin:t.IDENT_RE+"::",keywords:{keyword:"Self",built_in:c,type:d}},{className:"punctuation",begin:"->"},s]}}var cD=p(()=>{});function dD(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}var uD=p(()=>{});function mD(t){let e=t.regex,o=t.COMMENT("--","$"),n={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},s=["true","false","unknown"],i=["double precision","large object","with timezone","without timezone"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],l=["add","asc","collation","desc","final","first","last","view"],c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],d=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],m=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],u=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],h=d,g=[...c,...l].filter(B=>!d.includes(B)),y={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},b={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},w={match:e.concat(/\b/,e.either(...h),/\s*\(/),relevance:0,keywords:{built_in:h}};function T(B){return e.concat(/\b/,e.either(...B.map(j=>j.replace(/\s+/,"\\s+"))),/\b/)}let E={scope:"keyword",match:T(u),relevance:0};function L(B,{exceptions:j,when:z}={}){let V=z;return j=j||[],B.map(I=>I.match(/\|\d+$/)||j.includes(I)?I:V(I)?`${I}|0`:I)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:L(g,{when:B=>B.length<3}),literal:s,type:a,built_in:m},contains:[{scope:"type",match:T(i)},E,w,y,n,r,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,o,b]}}var fD=p(()=>{});function hJ(t){let e=t.regex,o=(O,{after:se})=>{let de="</"+O[0].slice(1);return O.input.indexOf(de,se)!==-1},n=qp,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(O,se)=>{let de=O[0].length+O.index,ye=O.input[de];if(ye==="<"||ye===","){se.ignoreMatch();return}ye===">"&&(o(O,{after:de})||se.ignoreMatch());let Z,te=O.input.substring(de);if(Z=te.match(/^\s*=/)){se.ignoreMatch();return}if((Z=te.match(/^\s+extends\s+/))&&Z.index===0){se.ignoreMatch();return}}},a={$pattern:qp,keyword:pD,literal:hD,built_in:kD,"variable.language":vD},l="[0-9](_?[0-9])*",c=`\\.(${l})`,d="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${d})((${c})|\\.)?|(${c}))[eE][+-]?(${l})\\b`},{begin:`\\b(${d})\\b((${c})\\b|\\.)?|(${c})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},g={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},b={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,u]},T={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},E=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=E.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(E)});let L=[].concat(T,u.contains),B=L.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(L)}]),j={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},z={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,e.concat(n,"(",e.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},V={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...gD,...yD]}},I={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},J={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[j],illegal:/%/},Q={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function K(O){return e.concat("(?!",O.join("|"),")")}let D={match:e.concat(/\b/,K([...bD,"super","import"].map(O=>`${O}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},X={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Oe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},j]},Y="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ce={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(Y)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[j]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:V},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),I,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,V,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ce,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[T,t.REGEXP_MODE,{className:"function",begin:Y,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:s},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:!0,contains:["self"]}]}]},J,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[j,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},X,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[j]},D,Q,z,Oe,{match:/\$[(.]/}]}}function xD(t){let e=t.regex,o=hJ(t),n=qp,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],s={begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},i={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[o.exports.CLASS_REFERENCE]},a={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},l=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],c={$pattern:qp,keyword:pD.concat(l),literal:hD,built_in:kD.concat(r),"variable.language":vD},d={className:"meta",begin:"@"+n},m=(y,b,w)=>{let T=y.contains.findIndex(E=>E.label===b);if(T===-1)throw new Error("can not find mode to replace");y.contains.splice(T,1,w)};Object.assign(o.keywords,c),o.exports.PARAMS_CONTAINS.push(d);let u=o.contains.find(y=>y.scope==="attr"),h=Object.assign({},u,{match:e.concat(n,e.lookahead(/\s*\?:/))});o.exports.PARAMS_CONTAINS.push([o.exports.CLASS_REFERENCE,u,h]),o.contains=o.contains.concat([d,s,i,h]),m(o,"shebang",t.SHEBANG()),m(o,"use_strict",a);let g=o.contains.find(y=>y.label==="func.def");return g.relevance=0,Object.assign(o,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),o}var qp,pD,hD,gD,yD,bD,vD,kD,SD=p(()=>{qp="[A-Za-z$_][0-9A-Za-z$_]*",pD=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],hD=["true","false","null","undefined","NaN","Infinity"],gD=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],yD=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],bD=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],vD=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],kD=[].concat(bD,gD,yD)});function wD(t){let e=t.regex,o=e.concat(/[\p{L}_]/u,e.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),n=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},s={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=t.inherit(s,{begin:/\(/,end:/\)/}),a=t.inherit(t.APOS_STRING_MODE,{className:"string"}),l=t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),c={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:n,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[s,l,a,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[s,i,l,a]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[c],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[c],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:e.concat(/</,e.lookahead(e.concat(o,e.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:o,relevance:0,starts:c}]},{className:"tag",begin:e.concat(/<\//,e.lookahead(e.concat(o,/>/))),contains:[{className:"name",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}var AD=p(()=>{});function ED(t){let e="true false yes no null",o="[\\w#;/?:@&=+$,.~*'()[\\]]+",n={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},s={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},i={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,r]},a=t.inherit(i,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),u={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},h={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},g={begin:/\{/,end:/\}/,contains:[h],illegal:"\\n",relevance:0},y={begin:"\\[",end:"\\]",contains:[h],illegal:"\\n",relevance:0},b=[n,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+o},{className:"type",begin:"!<"+o+">"},{className:"type",begin:"!"+o},{className:"type",begin:"!!"+o},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},u,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},g,y,s,i],w=[...b];return w.pop(),w.push(a),h.contains=w,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:b}}var TD=p(()=>{});import{createLowlight as gJ}from"lowlight";function Wa(t){if(!t)return null;let e=t.trim().toLowerCase();if(e==="")return null;let o=yJ[e]??e;return _D.registered(o)?o:null}function bJ(t){if(!t)return"fg";let e=t.replace(/^hljs-/,"");switch(e.split(/[.\s]/)[0]??e){case"keyword":case"built_in":case"literal":case"operator":return"accent";case"string":case"regexp":case"char":case"subst":case"addition":return"success";case"comment":case"quote":case"meta":return"fgDim";case"number":case"symbol":case"bullet":case"link":return"accentDim";case"title":case"function":case"class":case"name":case"tag":case"attr":case"attribute":case"type":case"params":case"property":case"selector":case"section":case"variable":return"depth";case"deletion":return"danger";default:return"fg"}}function vJ(t){let e=t.properties?.className;if(Array.isArray(e))return e[e.length-1];if(typeof e=="string")return e}function RD(t,e,o){if(t.type==="text"){let i=t.value;i!==""&&o.push({text:i,role:e});return}let n=t,r=n.type==="element"?bJ(vJ(n)):e,s=n.type==="element"&&r!=="fg"?r:e;for(let i of n.children??[])RD(i,s,o)}function kJ(t){let e=[];for(let o of t){let n=e[e.length-1];n&&n.role===o.role?e[e.length-1]={text:n.text+o.text,role:o.role}:e.push(o)}return e}function tu(t,e){if(t==="")return[];let o=Wa(e);if(!o)return[{text:t,role:"fg"}];try{let n=_D.highlight(o,t),r=[];RD(n,"fg",r);let s=kJ(r);return s.length>0?s:[{text:t,role:"fg"}]}catch{return[{text:t,role:"fg"}]}}var _D,yJ,wS=p(()=>{"use strict";qN();GN();KN();VN();tD();nD();sD();aD();cD();uD();fD();SD();AD();TD();_D=gJ({bash:HN,css:WN,diff:zN,go:YN,javascript:eD,json:oD,markdown:rD,python:iD,rust:lD,shell:dD,sql:mD,typescript:xD,xml:wD,yaml:ED}),yJ={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",mjs:"javascript",cjs:"javascript",sh:"bash",zsh:"bash",shell:"shell",console:"shell",py:"python",rs:"rust",golang:"go",yml:"yaml",html:"xml",htm:"xml",svg:"xml",md:"markdown",markdown:"markdown",patch:"diff"}});import"react";import{Box as Wp,Text as CD}from"ink";import{jsx as Ga,jsxs as wi}from"react/jsx-runtime";function AS(t){let o=ne().box,n=Wa(t.lang),r=(n??t.lang??"code")+(t.open?" \u2026":""),s=t.code.split(`
605
605
  `);return wi(Wp,{flexDirection:"column",paddingY:0,children:[wi(Wp,{children:[wi(f,{name:"fgDim",children:[o.topLeft,o.horizontal," "]}),Ga(f,{name:"depth",children:r}),wi(f,{name:"fgDim",children:[" ",o.horizontal.repeat(2)]})]}),s.map((i,a)=>wi(Wp,{children:[wi(f,{name:"fgDim",children:[o.vertical," "]}),Ga(xJ,{line:i,lang:n??t.lang})]},a)),Ga(Wp,{children:wi(f,{name:"fgDim",children:[o.bottomLeft,o.horizontal.repeat(3)]})})]})}function xJ(t){if(t.line==="")return Ga(CD,{children:" "});let e=tu(t.line,t.lang);return Ga(CD,{children:e.map((o,n)=>Ga(f,{name:o.role,children:o.text},n))})}var ES=p(()=>{"use strict";ae();wS()});function Pr(t){let e=[],o=t;for(;o.length>0;){let n=SJ.exec(o);if(!n||n.index===void 0){e.push({kind:"plain",text:o});break}n.index>0&&e.push({kind:"plain",text:o.slice(0,n.index)});let r=n[0];n[1]?e.push({kind:"code",text:r.slice(1,-1)}):n[2]?e.push({kind:"link",text:n[3]??"",url:n[4]??""}):n[5]?e.push({kind:"bold",text:r.slice(3,-3)}):n[6]?e.push({kind:"bold",text:r.slice(2,-2)}):n[7]&&e.push({kind:"italic",text:r.slice(1,-1)}),o=o.slice(n.index+r.length)}return e.reduce((n,r)=>{let s=n[n.length-1];return r.kind==="plain"&&s&&s.kind==="plain"?n[n.length-1]={kind:"plain",text:s.text+r.text}:n.push(r),n},[])}function TS(t){let e=t.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&!e.endsWith("\\|")&&(e=e.slice(0,-1)),e.split(/(?<!\\)\|/).map(n=>n.replace(/\\\|/g,"|").trim())}function OD(t){return/(?<!\\)\|/.test(t)}function CJ(t){let e=TS(t);if(e.length===0)return null;let o=[];for(let n of e){if(!RJ.test(n))return null;let r=n.startsWith(":"),s=n.endsWith(":");o.push(r&&s?"center":s?"right":"left")}return o}function _S(t){let e=t.split(`
606
606
  `),o=[],n=null,r=()=>{n&&n.length>0&&o.push({kind:"paragraph",spans:n}),n=null};for(let s=0;s<e.length;s++){let i=e[s]??"",a=wJ.exec(i);if(a){r();let h=(a[2]??"").trim()||void 0,g=[],y=!1,b=s+1;for(;b<e.length;b++){let w=e[b]??"";if(/^\s*```\s*$/.test(w)){y=!0;break}g.push(w)}o.push({kind:"code",lang:h,code:g.join(`
607
607
  `),closed:y}),s=y?b:e.length;continue}if(i.trim()===""){r();continue}if(OD(i)){let h=s+1<e.length?CJ(e[s+1]??""):null;if(h){r();let g=TS(i),y=g.length,b=[];for(let E=0;E<y;E++)b.push(h[E]??"left");let w=[],T=s+2;for(;T<e.length;T++){let E=e[T]??"";if(E.trim()===""||!OD(E))break;let L=TS(E),B=[];for(let j=0;j<y;j++)B.push(L[j]??"");w.push(B)}o.push({kind:"table",header:g,align:b,rows:w}),s=T-1;continue}}let l=AJ.exec(i);if(l){r(),o.push({kind:"heading",level:l[1].length,spans:Pr(l[2]??"")});continue}let c=TJ.exec(i);if(c){r(),o.push({kind:"list-item",ordered:!1,marker:"-",indent:Math.floor((c[1]??"").length/2),spans:Pr(c[3]??"")});continue}let d=_J.exec(i);if(d){r(),o.push({kind:"list-item",ordered:!0,marker:`${d[2]}.`,indent:Math.floor((d[1]??"").length/2),spans:Pr(d[3]??"")});continue}let m=EJ.exec(i);if(m){r(),o.push({kind:"quote",spans:Pr(m[1]??"")});continue}let u=Pr(i);n=n?[...n,{kind:"plain",text:" "},...u]:u}return r(),o}var SJ,wJ,AJ,EJ,TJ,_J,RJ,Gp=p(()=>{"use strict";SJ=/(`[^`]+`)|(\[([^\]]+)\]\(([^)\s]+)\))|(\*\*\*[^*]+\*\*\*|(?<![\p{L}\p{N}_])___[^_]+___(?![\p{L}\p{N}_]))|(\*\*[^*]+\*\*|(?<![\p{L}\p{N}_])__[^_]+__(?![\p{L}\p{N}_]))|(\*[^*\n]+\*|(?<![\p{L}\p{N}_])_[^_\n]+_(?![\p{L}\p{N}_]))/u;wJ=/^(\s*)```(.*)$/,AJ=/^(#{1,6})\s+(.*)$/,EJ=/^\s*>\s?(.*)$/,TJ=/^(\s*)([-*+])\s+(.*)$/,_J=/^(\s*)(\d+)[.)]\s+(.*)$/,RJ=/^:?-+:?$/});import MD from"react";import{Box as zp,Text as RS}from"ink";import{jsx as Ir,jsxs as CS}from"react/jsx-runtime";function Kp(t){return Pr(t).map(e=>e.text).join("")}function OS(t){let e=ne(),o=e.box,n=t.base??"fg",r=e.colorMode==="mono",s=t.header.length,i=t.header.map(Kp),a=t.rows.map(h=>{let g=[];for(let y=0;y<s;y++)g.push(Kp(h[y]??""));return g}),l=FN(i,a,s,t.columns??0),c=e.unicode?`${o.horizontal}\u253C${o.horizontal}`:"-+-",d=l.map(h=>o.horizontal.repeat(h)).join(c),m=(h,g,y)=>{let b=Kp(h),w=Si(b,g),T=kS(w,g,y),E=Pr(T);return Ir(za,{spans:E,base:n,mono:r})},u=" ".repeat(vS);return CS(zp,{flexDirection:"column",paddingY:0,children:[Ir(zp,{children:t.header.map((h,g)=>CS(MD.Fragment,{children:[g>0&&Ir(RS,{children:u}),Ir(f,{name:"accent",children:Ir(RS,{bold:!0,children:kS(Si(Kp(h),l[g]??0),l[g]??0,t.align[g]??"left")})})]},g))}),Ir(zp,{children:Ir(f,{name:"fgDim",children:d})}),t.rows.map((h,g)=>Ir(zp,{children:h.map((y,b)=>CS(MD.Fragment,{children:[b>0&&Ir(RS,{children:u}),m(y,l[b]??0,t.align[b]??"left")]},b))},g))]})}var MS=p(()=>{"use strict";ae();LS();Gp();jp()});import"react";import{Box as Ka,Text as hs}from"ink";import{jsx as Ve,jsxs as kn}from"react/jsx-runtime";function PS(t){let e=t.baseRole??"fg",o=_S(t.text);return Ve(Ka,{flexDirection:"column",children:o.map((n,r)=>Ve(OJ,{block:n,base:e,...t.columns!==void 0?{columns:t.columns}:{}},r))})}function OJ(t){let e=ne(),o=t.block,n=e.colorMode==="mono";switch(o.kind){case"code":return Ve(Ka,{paddingY:0,children:Ve(AS,{code:o.code,lang:o.lang,open:!o.closed})});case"table":return Ve(OS,{header:o.header,align:o.align,rows:o.rows,base:t.base,...t.columns!==void 0?{columns:t.columns}:{}});case"heading":return kn(Ka,{children:[n&&kn(f,{name:"accent",children:["#".repeat(o.level)," "]}),Ve(f,{name:"accent",children:Ve(za,{spans:o.spans,base:"accent",mono:n})})]});case"quote":return kn(Ka,{children:[kn(f,{name:"depth",children:[e.glyph("you")," "]}),Ve(f,{name:"fgDim",children:Ve(za,{spans:o.spans,base:"fgDim",mono:n})})]});case"list-item":return kn(Ka,{paddingLeft:o.indent*2,children:[kn(f,{name:"accent",children:[o.ordered?o.marker:e.unicode?"\u2022":"-"," "]}),Ve(hs,{children:Ve(za,{spans:o.spans,base:t.base,mono:n})})]});case"paragraph":return Ve(Ka,{children:Ve(hs,{children:Ve(za,{spans:o.spans,base:t.base,mono:n})})})}}function za(t){return Ve(hs,{children:t.spans.map((e,o)=>Ve(MJ,{span:e,base:t.base,mono:t.mono},o))})}function MJ(t){let{span:e,base:o,mono:n}=t;switch(e.kind){case"plain":return Ve(f,{name:o,children:e.text});case"bold":return n?Ve(f,{name:o,children:kn(hs,{bold:!0,children:["*",e.text,"*"]})}):Ve(f,{name:o,children:Ve(hs,{bold:!0,children:e.text})});case"italic":return n?Ve(f,{name:o,children:kn(hs,{italic:!0,children:["_",e.text,"_"]})}):Ve(f,{name:o,children:Ve(hs,{italic:!0,children:e.text})});case"code":return n?kn(f,{name:"depth",children:["`",e.text,"`"]}):Ve(f,{name:"depth",children:e.text});case"link":return kn(hs,{children:[Ve(f,{name:"accent",children:e.text}),kn(f,{name:"fgDim",children:[" (",e.url,")"]})]})}}var LS=p(()=>{"use strict";ae();ES();MS();Gp()});var IS=p(()=>{"use strict";LS();ES();MS();Gp();wS()});import"react";import{Box as LJ,Text as Vke}from"ink";import{jsx as Vp,jsxs as IJ}from"react/jsx-runtime";function Xp(t,e){return((t-e)%Yp+Yp)%Yp<Yp/2?"accent":"accentDim"}function Ai(t){let e=ne(),o=t.frame??0;if(!e.animate)return Vp(f,{name:"accent",children:e.aluyMark});if(!e.unicode){let s=Xp(o,0),i=Xp(o,PJ);return IJ(LJ,{children:[Vp(f,{name:s,children:"/"}),Vp(f,{name:i,children:"\\"})]})}let r=Xp(o,0);return Vp(f,{name:r,children:e.aluyMark})}var Yp,PJ,ou=p(()=>{"use strict";ae();Yp=8,PJ=2});function Jp(t){return t>=NS?DJ:0}function Qp(t){return t==="unsafe"?FJ-$J:0}function Ya(t,e){if(e<=0||t.length<=e)return t;let o=Array.from(t);return o.length<=e?t:o.slice(o.length-e).join("").replace(/^\n+/,"")}function UJ(t,e){if(t.kind==="tool"||t.kind==="bang")return t.status==="running"?1+LD(t.liveOutput,e):0;if(t.kind==="subagents"){let o=0;for(let n of t.children)o+=jJ(n,e);return 2+o}return t.kind==="broker-error"?t.retrying===!0?5:0:t.kind==="aluy"?0:1}function LD(t,e){let o=(t??"").replace(/\n+$/,"");if(o.length===0)return 0;let n=e>0?e-BJ:0,r=ja(o,n);return r<=nu?r:nu+1}function jJ(t,e){if(!(e>0))return 1;let o=t.status==="running"?"rodando":t.status==="done"?"pronto":t.status==="cancelled"?"parado":"timeout",n=t.summary!==void 0&&t.status!=="running"?` \xB7 ${t.summary}`:"",r=` [${t.label}] x ${o}${n}`;return Math.max(1,ja(r,e))}function oh(t){let{live:e,phase:o,hasBlocks:n}=t,r=t.columns??0,s=0,i=e.find(a=>a.kind==="aluy"&&a.streaming);for(let a of e){if(a===i){s+=3;continue}s+=UJ(a,r)}return(o==="thinking"||o==="compacting")&&(s+=1+(n?1:0)),s}function ID(t){let e=ru+Jp(t.rows)+Qp(t.mode)+oh({live:t.live,phase:t.phase,hasBlocks:t.hasBlocks,...t.columns!==void 0?{columns:t.columns}:{}})+eh+(t.stagedLines??0);return Math.max(4,t.rows-e-1-Zp)}function ND(t){let e=oh({live:t.live,phase:t.phase,hasBlocks:t.hasBlocks,...t.columns!==void 0?{columns:t.columns}:{}}),o=t.rows-ru-Jp(t.rows)-Zp-e-Qp(t.mode)-(t.queuedLines??0)-(t.overlayLines??0)-1;return Math.max(eh,o)}var NJ,ru,DJ,NS,$J,FJ,Zp,eh,nu,th,PD,BJ,Va=p(()=>{"use strict";ro();NJ=9,ru=8,DJ=NJ-ru,NS=25;$J=1,FJ=2;Zp=2,eh=4,nu=6,th=8192,PD=65536;BJ=4});import"react";import{Box as Ja,Text as HJ}from"ink";import{jsx as Gn,jsxs as Xa}from"react/jsx-runtime";function DS(t){let e=t.isCurrent===!1?"fgDim":"fg";return Xa(Ja,{flexDirection:"column",children:[Xa(Ja,{children:[Gn(P,{name:"you",role:"fg"}),Gn(f,{name:"fg",children:" voc\xEA"})]}),Gn(Ja,{paddingLeft:2,children:Gn(f,{name:e,children:t.text})})]})}function $S(t){let e=ne(),o=t.streaming?Ya(t.text,PD):t.text,n=Kr(o),r=t.isCurrent===!1?"fgDim":"fg",s=t.columns&&t.columns>0?t.columns-qJ:0,{text:i,hidden:a}=Ha(n,t.streaming?t.maxLines:void 0,s),l=(t.frame??0)%WJ,c=!e.animate||l<GJ;return Xa(Ja,{flexDirection:"column",children:[Xa(Ja,{children:[t.streaming?Gn(Ai,{frame:t.frame??0}):Gn(P,{name:"aluy",role:"accent"}),Gn(f,{name:"accent",children:" aluy"})]}),Xa(Ja,{paddingLeft:2,flexDirection:"column",children:[a>0&&Xa(f,{name:"fgDim",children:["\u2026 (",a," linhas acima)"]}),Gn(PS,{text:i,baseRole:r,...s>0?{columns:s}:{}}),t.streaming&&(c?Gn(f,{name:"accent",children:e.glyph("thinkingCursor")}):Gn(HJ,{children:" "}))]})]})}var qJ,WJ,GJ,DD=p(()=>{"use strict";N();ae();IS();ou();ro();Va();qJ=2,WJ=10,GJ=6});import"react";import{Box as zJ,Text as $D}from"ink";import{jsx as Qa,jsxs as FD}from"react/jsx-runtime";function Ei(t){let e=ne(),o=t.width??KJ,n=t.frame??0,r=t.glyph??"aluy",s=t.glyphRole??"accent",i=e.animate,a=e.glyph("wave"),l=e.glyph("waveHead"),c=i?n%o:-1;return FD(zJ,{children:[r==="aluy"?Qa(Ai,{frame:n}):Qa(P,{name:r,role:s}),Qa($D,{children:" "}),Array.from({length:o},(d,m)=>m===c?Qa(f,{name:"accent",children:l},m):Qa(f,{name:"accentDim",children:a},m)),Qa($D,{children:" "}),FD(f,{name:"fgDim",children:[t.label,"\u2026"]})]})}var KJ,nh=p(()=>{"use strict";ae();ou();KJ=3});import"react";import{Box as Ti,Text as FS}from"ink";import{jsx as Zo,jsxs as xn}from"react/jsx-runtime";function VJ(t){return t.length>=BD?t:t+" ".repeat(BD-t.length)}function BS(t){let e=ne();if(t.status==="running"){let n=`${t.verbGerund??"rodando"}${t.target?` ${t.target}`:""}`,s=Ya(t.liveOutput??"",th).replace(/\n+$/,""),i=t.columns&&t.columns>0?t.columns-YJ:0,{text:a,hidden:l}=Ha(s,t.maxLines,i);return xn(Ti,{flexDirection:"column",paddingLeft:2,children:[Zo(Ei,{glyph:"toolInflight",glyphRole:"depth",label:n,...t.frame!==void 0?{frame:t.frame}:{}}),a.length>0&&xn(Ti,{flexDirection:"column",paddingLeft:2,children:[l>0&&xn(f,{name:"fgDim",children:["\u2026 (",l," linhas acima)"]}),a.split(`
@@ -616,8 +616,8 @@ Notas:
616
616
  `),!0):(e.write(`[history] sess\xE3o n\xE3o encontrada: ${r}
617
617
  `),!0)}var ZS,mh=p(()=>{"use strict";Od();vn();ZS=15});function Xn(t,e,o,n){if(n===void 0){if(t.length<=o)return{start:0,slice:t};let h=e-Math.floor(o/2);return h<0&&(h=0),h+o>t.length&&(h=t.length-o),{start:h,slice:t.slice(h,h+o)}}let r=t.length;if(r===0)return{start:0,slice:t};let s=h=>Math.max(1,Math.floor(n(t[h]))),i=0;for(let h=0;h<r;h+=1)i+=s(h);if(i<=o)return{start:0,slice:t};let a=Math.max(0,Math.min(e,r-1)),l=a,c=a+1,d=s(a),m=!0,u=!0;for(;u;){u=!1;let h=()=>l>0&&d+s(l-1)<=o?(l-=1,d+=s(l),!0):!1,g=()=>c<r&&d+s(c)<=o?(d+=s(c),c+=1,!0):!1;u=m?h()||g():g()||h(),m=!m}return{start:l,slice:t.slice(l,c)}}var rl=p(()=>{"use strict"});import"react";import{Box as cu,Text as l$}from"ink";import{Fragment as G5,jsx as bs,jsxs as du}from"react/jsx-runtime";function fh(t){let e=ne(),{t:o}=ke(),n=e.glyph("sessionDot"),r=Math.max(1,t.maxRows??10),s=t.columns,i=s!==void 0&&s>0?c=>{let d=2+(c.label?.trim()?2:0)+Ee(lu(c,t.home));return Math.max(1,Math.ceil(d/s))}:void 0,{start:a,slice:l}=Xn(t.sessions,t.selected,r,i);return du(cu,{flexDirection:"column",children:[bs(cu,{children:bs(f,{name:"fgDim",children:o("picker.history.help")})}),t.sessions.length===0?bs(cu,{children:du(f,{name:"fgDim",children:[" ",o("picker.history.empty")]})}):l.map((c,d)=>{let u=a+d===t.selected,h=c.label?.trim(),g=h?e.sessionColor(c.labelColor??h):void 0,y={};return g?.color!==void 0&&(y.color=g.color),g?.bold!==void 0&&(y.bold=g.bold),du(cu,{children:[bs(f,{name:u?"accent":"fgDim",children:u?"\u203A ":" "}),h&&du(G5,{children:[bs(l$,{...y,children:n}),bs(l$,{children:" "})]}),bs(f,{name:u?"accent":"fg",children:lu(c,t.home)})]},c.id)}),t.sessions.length>l.length&&bs(cu,{children:du(f,{name:"fgDim",children:[" ",o("picker.history.more",{count:t.sessions.length-l.length})]})})]})}var c$=p(()=>{"use strict";ae();ft();mh();ro();rl()});function d$(t,e=30){return[...t].reverse().slice(0,e)}function tw(t){let e=z5(t.ts);return`#${t.ordinal} \xB7 ${e} \xB7 ${t.label}`}function z5(t){let e=new Date(t),o=String(e.getHours()).padStart(2,"0"),n=String(e.getMinutes()).padStart(2,"0");return`${o}:${n}`}var ph,ow=p(()=>{"use strict";ph=["both","conversation","code"]});import"react";import{Box as on}from"ink";import{jsx as Jt,jsxs as Ri}from"react/jsx-runtime";function K5(t){switch(t){case"both":return"picker.rewind.action.both";case"conversation":return"picker.rewind.action.conversation";case"code":return"picker.rewind.action.code"}}function hh(t){let{t:e}=ke();if(t.phase==="list"){let o=Math.max(1,t.maxRows??10),n=t.columns,r=n!==void 0&&n>0?a=>Math.max(1,Math.ceil((2+Ee(tw(a)))/n)):void 0,{start:s,slice:i}=Xn(t.checkpoints,t.selected,o,r);return Ri(on,{flexDirection:"column",children:[Jt(on,{children:Jt(f,{name:"fgDim",children:e("picker.rewind.help")})}),t.checkpoints.length===0?Jt(on,{children:Ri(f,{name:"fgDim",children:[" ",e("picker.rewind.empty")]})}):i.map((a,l)=>{let c=s+l===t.selected;return Ri(on,{children:[Jt(f,{name:c?"accent":"fgDim",children:c?"\u203A ":" "}),Jt(f,{name:c?"accent":"fg",children:tw(a)})]},a.id)}),t.checkpoints.length>i.length&&Jt(on,{children:Ri(f,{name:"fgDim",children:[" ",e("picker.rewind.more",{count:t.checkpoints.length-i.length})]})})]})}return Ri(on,{flexDirection:"column",children:[Jt(on,{children:Jt(f,{name:"fgDim",children:e("picker.rewind.action.help")})}),t.target&&Jt(on,{children:Jt(f,{name:"fgDim",children:` \u2192 #${t.target.ordinal} \xB7 ${t.target.label}`})}),t.actions.map((o,n)=>{let r=n===t.selected;return Ri(on,{children:[Jt(f,{name:r?"accent":"fgDim",children:r?"\u203A ":" "}),Jt(f,{name:r?"accent":"fg",children:e(K5(o))})]},o)}),t.barrierWarnings&&t.barrierWarnings.length>0&&Ri(on,{flexDirection:"column",marginTop:1,children:[Jt(on,{children:Jt(f,{name:"accent",children:`\u26A0 ${e("picker.rewind.barrier.warn")}:`})}),t.barrierWarnings.map((o,n)=>Jt(on,{children:Jt(f,{name:"fgDim",children:` \xB7 ${o}`})},n))]})]})}var u$=p(()=>{"use strict";ae();ft();ow();ro();rl()});import Y5 from"react";import{Box as lo,Text as V5}from"ink";import{Fragment as Z5,jsx as $e,jsxs as Bo}from"react/jsx-runtime";function X5(t){switch(t){case"mode":return"modo de sessao \xB7 enter cicla plan \u2192 normal \u2192 yolo";case"safe-tool":return"tools seguras (leitura) \xB7 enter alterna allow \u21C4 ask";case"grant":return"liberados nesta sessao \xB7 enter REVOGA";case"locked":return"TRAVADO por seguranca \xB7 so via --yolo"}}function J5(t){let{row:e,sel:o}=t,n=$e(f,{name:o?"accent":"fgDim",children:o?"\u203A ":" "});switch(e.kind){case"mode":return Bo(lo,{children:[n,$e(f,{name:o?"accent":"fg",children:"modo: "}),$e(f,{name:e.mode==="unsafe"?"danger":o?"accent":"fg",children:nw[e.mode]})]});case"safe-tool":return Bo(lo,{children:[n,$e(f,{name:o?"accent":"fg",children:e.tool}),$e(f,{name:"fgDim",children:" = "}),$e(f,{name:e.decision==="allow"?"success":"fgDim",children:e.decision})]});case"grant":return Bo(lo,{children:[n,$e(f,{name:"success",children:"\u25CF "}),$e(f,{name:o?"accent":"fg",children:e.grantKey}),$e(f,{name:"fgDim",children:" (enter revoga)"})]});case"locked":{let r=e.category.lock==="deny";return Bo(lo,{flexDirection:"column",children:[Bo(lo,{children:[n,$e(P,{name:"ask",role:"danger"}),$e(f,{name:"danger",children:" [travado] "}),$e(f,{name:o?"accent":"fg",children:e.category.label}),Bo(f,{name:"danger",children:[" \xB7 ",r?"deny (nem --yolo)":"sempre pergunta"]})]}),o&&$e(lo,{paddingLeft:4,children:$e(f,{name:"fgDim",children:e.category.why})})]})}}}function rw(t){let e=Math.max(1,t.maxRows??14),o=t.columns,n=l=>{switch(l.kind){case"mode":return 8+Ee(nw[l.mode]);case"safe-tool":return 5+Ee(l.tool)+Ee(l.decision);case"grant":return 19+Ee(l.grantKey);case"locked":return 28+Ee(l.category.label)}},r=o!==void 0&&o>0?l=>Math.max(1,Math.ceil(n(l)/o)):void 0,{start:s,slice:i}=Xn(t.rows,t.selected,e,r),a=null;return Bo(lo,{flexDirection:"column",children:[$e(lo,{children:$e(f,{name:"fgDim",children:"permissoes \xB7 \u2191\u2193 navega \xB7 enter muda \xB7 esc fecha"})}),Bo(lo,{children:[$e(f,{name:"fgDim",children:"modo atual: "}),$e(f,{name:t.mode==="unsafe"?"danger":"fg",children:nw[t.mode]})]}),t.rows.length===0?$e(lo,{children:$e(f,{name:"fgDim",children:" nada a mostrar"})}):Bo(Z5,{children:[s>0&&$e(lo,{children:Bo(f,{name:"fgDim",children:[" \u2191 ",s," acima"]})}),i.map((l,c)=>{let d=s+c,m=l.kind!==a?X5(l.kind):null;return a=l.kind,Bo(Y5.Fragment,{children:[m&&$e(lo,{paddingTop:1,children:Bo(f,{name:"fgDim",children:["\u2500\u2500\u2500 ",m]})}),$e(J5,{row:l,sel:d===t.selected})]},Q5(l,d))}),s+i.length<t.rows.length&&$e(lo,{children:Bo(f,{name:"fgDim",children:[" \u2193 ",t.rows.length-(s+i.length)," abaixo"]})})]}),$e(lo,{paddingTop:1,children:$e(V5,{children:" "})}),$e(lo,{children:$e(f,{name:"fgDim",children:"o painel nao relaxa as categorias travadas \u2014 o unico bypass total e --yolo"})})]})}function Q5(t,e){switch(t.kind){case"mode":return"mode";case"safe-tool":return`safe:${t.tool}`;case"grant":return`grant:${t.grantKey}`;case"locked":return`locked:${t.category.category}`;default:return`row:${e}`}}var nw,m$=p(()=>{"use strict";ae();rl();ro();nw={plan:"PLAN (read-only)",normal:"NORMAL (catraca padrao)",unsafe:"YOLO (aprovacao DESLIGADA)"}});import"react";import{Box as sw}from"ink";import{jsx as uu,jsxs as iw}from"react/jsx-runtime";function gh(t){let{t:e}=ke();return iw(sw,{flexDirection:"column",children:[uu(sw,{children:uu(f,{name:"fgDim",children:e("picker.theme.help")})}),t.themes.map((o,n)=>{let r=n===t.selected,s=o.name===t.currentTheme;return iw(sw,{children:[uu(f,{name:r?"accent":"fgDim",children:r?"\u203A ":" "}),uu(f,{name:s?"accent":"fgDim",children:s?"\u25CF ":" "}),uu(f,{name:r?"accent":"fg",children:o.label}),iw(f,{name:"fgDim",children:[" \xB7 ",o.summary]})]},o.name)})]})}var f$=p(()=>{"use strict";ae();ft()});import"react";import{Box as aw}from"ink";import{jsx as mu,jsxs as lw}from"react/jsx-runtime";function yh(t){let{t:e}=ke();return lw(aw,{flexDirection:"column",children:[mu(aw,{children:mu(f,{name:"fgDim",children:e("picker.lang.help")})}),t.langs.map((o,n)=>{let r=n===t.selected,s=o.code===t.currentLang;return lw(aw,{children:[mu(f,{name:r?"accent":"fgDim",children:r?"\u203A ":" "}),mu(f,{name:s?"accent":"fgDim",children:s?"\u25CF ":" "}),mu(f,{name:r?"accent":"fg",children:o.label}),lw(f,{name:"fgDim",children:[" \xB7 ",o.summary]})]},o.code)})]})}var p$=p(()=>{"use strict";ae();ft()});import"react";import{Box as fu}from"ink";import{jsx as vs,jsxs as pu}from"react/jsx-runtime";function cw(t){let{t:e}=ke(),o=Math.max(1,t.maxRows??10),n=t.columns,r=n!==void 0&&n>0?a=>{let l=4+Ee(`${a.label} \xB7 ${a.summary}`)+(a.isDefault?2+Ee(e("picker.provider.default")):0);return Math.max(1,Math.ceil(l/n))}:void 0,{start:s,slice:i}=Xn(t.providers,t.selected,o,r);return pu(fu,{flexDirection:"column",children:[vs(fu,{children:vs(f,{name:"fgDim",children:e("picker.provider.help")})}),t.usingFallback===!0?vs(fu,{children:vs(f,{name:"fgDim",children:e("picker.provider.fallback")})}):null,i.map((a,l)=>{let c=s+l===t.selected,d=a.name===t.currentProvider;return pu(fu,{children:[vs(f,{name:c?"accent":"fgDim",children:c?"\u203A ":" "}),vs(f,{name:d?"accent":"fgDim",children:d?"\u25CF ":" "}),vs(f,{name:c?"accent":"fg",children:a.label}),pu(f,{name:"fgDim",children:[" \xB7 ",a.summary]}),a.isDefault?pu(f,{name:"fgDim",children:[" \xB7 ",e("picker.provider.default")]}):null]},a.name)}),t.providers.length>i.length&&vs(fu,{children:pu(f,{name:"fgDim",children:[" ",e("picker.provider.more",{count:t.providers.length-i.length})]})})]})}var h$=p(()=>{"use strict";ae();ft();ro();rl()});import"react";import{Box as g$,Text as eQ}from"ink";import{jsx as dw,jsxs as y$}from"react/jsx-runtime";function uw(t){if(t.chips.length===0)return null;let e=t.active??-1;return dw(g$,{flexWrap:"wrap",children:t.chips.map((o,n)=>{let r=n===e;return y$(g$,{marginRight:1,children:[y$(f,{name:r?"accent":"depth",children:[r?"\u203A ":"","@",o.path,o.truncated?"~":""]}),dw(eQ,{children:" "}),dw(f,{name:"fgDim",children:"[\u232B]"})]},o.path)})})}var b$=p(()=>{"use strict";ae()});import"react";import{Box as hu,Text as v$}from"ink";import{jsx as wn,jsxs as ks}from"react/jsx-runtime";function mw(t){let e=ne(),{t:o}=ke(),n=t.columns??80,r=t.plan??"assinatura",s=e.glyph("wave").repeat(17);return ks(hu,{flexDirection:"column",paddingY:1,children:[wn(Lr,{columns:n}),wn(hu,{paddingTop:1,paddingLeft:2,children:wn(f,{name:"fgDim",children:o("boot.tagline")})}),ks(hu,{paddingLeft:2,children:[wn(f,{name:"accent",children:s}),t.version!==void 0&&ks(f,{name:"fgDim",children:[" v",t.version]})]}),ks(hu,{paddingLeft:2,children:[wn(P,{name:"window",role:"fgDim"}),ks(f,{name:"fgDim",children:[" ",r," \xB7 "]}),wn(f,{name:"fgDim",children:t.tier}),wn(v$,{children:" "}),wn(f,{name:"fgDim",children:"\xB7 "}),wn(P,{name:"broker",role:"depth"}),ks(f,{name:"depth",children:[" ",o("boot.broker")]})]}),t.status!==void 0&&ks(hu,{paddingTop:1,paddingLeft:2,children:[wn(Ai,{frame:t.frame??0}),wn(v$,{children:" "}),ks(f,{name:"fgDim",children:[t.status,"\u2026"]})]})]})}var k$=p(()=>{"use strict";ae();ft();ou();gi()});import"react";import{Box as x$}from"ink";import{jsx as fw,jsxs as pw}from"react/jsx-runtime";function hw(t){let e=t.suggestions??tQ;return pw(x$,{flexDirection:"column",children:[fw(f,{name:"fg",children:t.name?`bom te ver de novo, ${t.name}.`:"bom te ver por aqui."}),fw(f,{name:"fgDim",children:"eu leio e edito arquivos e rodo comandos aqui \u2014 sempre te mostrando o efeito exato antes."}),pw(x$,{paddingTop:1,flexDirection:"column",children:[fw(f,{name:"fgDim",children:"experimente:"}),e.map((o,n)=>pw(f,{name:"fgDim",children:[" \xB7 ",o]},n))]})]})}var tQ,S$=p(()=>{"use strict";ae();tQ=['"explique a estrutura deste repo"','"rode os testes e resuma as falhas"',"/help para comandos \xB7 /login conta \xB7 /quit"]});import"react";import{jsx as yAe}from"react/jsx-runtime";var w$=p(()=>{"use strict";ae()});import"react";import{Box as A$,Text as gw}from"ink";import{jsx as Ci,jsxs as bh}from"react/jsx-runtime";function T$(t,e){return!Number.isFinite(t)||!Number.isFinite(e)||e<=0?0:Math.max(0,Math.min(1,t/e))}function _$(t,e,o,n,r){let s=Math.max(1,Math.trunc(n)),i=Math.max(0,Math.min(1,t)),a=Math.round(i*s);i>0&&a===0&&(a=1),i<1&&a===s&&(a=s-1);let l=e.repeat(a),c=o.repeat(s-a);return r?{filled:l,rest:c}:{filled:`[${l}`,rest:`${c}]`}}function sl(t){let e=ne(),o=t.role??"accent";if(t.value!==void 0&&t.max!==void 0){let a=T$(t.value,t.max),l=Math.round(a*100),c=e.glyph("barFull"),d=e.glyph("barEmpty"),m=t.width??E$,{filled:u,rest:h}=_$(a,c,d,m,e.unicode);return bh(A$,{children:[Ci(f,{name:o,children:u}),Ci(f,{name:"fgDim",children:h}),Ci(gw,{children:" "}),bh(f,{name:o,children:[l,"%"]}),Ci(gw,{children:" "}),Ci(f,{name:"fgDim",children:t.label})]})}let r=e.spinnerFrames,s=e.animate?r[(t.frame??0)%r.length]:e.glyph("clock"),i=t.elapsedMs!==void 0?Da(t.elapsedMs):void 0;return bh(A$,{children:[Ci(f,{name:o,children:s}),Ci(gw,{children:" "}),bh(f,{name:"fgDim",children:[t.label,"\u2026",i!==void 0?` ${i}`:""]})]})}var E$,yw=p(()=>{"use strict";ae();vn();E$=12});import"react";import{Box as oQ}from"ink";import{jsx as nQ,jsxs as R$}from"react/jsx-runtime";function bw(t){let{t:e}=ke(),o=(t.columns??80)<60,n=e(o?"banner.yolo.narrow":"banner.yolo");return R$(oQ,{children:[nQ(P,{name:"ask",role:"danger"}),R$(f,{name:"danger",children:[" ",n]})]})}var vw=p(()=>{"use strict";ae();ft()});import"react";import{Box as rQ}from"ink";import{jsx as C$,jsxs as kw}from"react/jsx-runtime";function vh(t){let{t:e}=ke();if(t.mode==="unsafe")return C$(bw,{...t.columns!==void 0?{columns:t.columns}:{}});let o=sQ[t.mode],n=(t.columns??80)<60;return kw(rQ,{children:[C$(P,{name:o.glyph,role:o.role}),kw(f,{name:o.role,children:[" ",e("mode.label")," ",o.word]}),!n&&kw(f,{name:"fgDim",children:[" \xB7 ",e(o.caption)]})]})}var sQ,O$=p(()=>{"use strict";ae();vw();ft();sQ={plan:{glyph:"planMode",role:"depth",word:"PLAN",caption:"mode.plan.caption"},normal:{glyph:"normalMode",role:"fgDim",word:"NORMAL",caption:"mode.normal.caption"},unsafe:{glyph:"ask",role:"danger",word:"YOLO",caption:"mode.unsafe.caption"}}});import"react";import{jsx as M$}from"react/jsx-runtime";function gu(t){let{t:e}=ke();if(t.armedExit===!0)return M$(f,{name:"accent",children:e("hints.ctrlcAgain")});let o=e(iQ[t.state]),n=t.elapsed!==void 0&&t.elapsed!==""&&aQ.has(t.state);return M$(f,{name:"fgDim",children:n?`${o} \xB7 ${t.elapsed}`:o})}var iQ,aQ,L$=p(()=>{"use strict";ae();ft();iQ={idle:"hints.idle",thinking:"hints.thinking",streaming:"hints.streaming",ask:"hints.ask","ask-destructive":"hints.askDestructive",slash:"hints.slash",palette:"hints.palette",budget:"hints.budget",error:"hints.error","work-subagents":"hints.workSubagents","idle-subagents":"hints.idleSubagents"},aQ=new Set(["thinking","streaming","work-subagents"])});import"react";import{Box as xw}from"ink";import{jsx as Sw,jsxs as ww}from"react/jsx-runtime";function kh(t){return ww(xw,{flexDirection:"column",children:[ww(xw,{children:[Sw(P,{name:"clock",role:"depth"}),ww(f,{name:"depth",children:[" ",t.title]})]}),Sw(xw,{flexDirection:"column",paddingLeft:2,children:t.lines.map((e,o)=>Sw(f,{name:"fgDim",children:e},o))})]})}var P$=p(()=>{"use strict";ae()});import"react";import{Box as Oi,Text as lQ}from"ink";import{jsx as An,jsxs as nn}from"react/jsx-runtime";function Aw(t){let e=ne();if(t.status==="running"){let a=Ya(t.liveOutput??"",th).replace(/\n+$/,""),l=t.columns&&t.columns>0?t.columns-cQ:0,{text:c,hidden:d}=Ha(a,t.maxLines,l);return nn(Oi,{flexDirection:"column",paddingLeft:2,children:[An(Ei,{glyph:"toolInflight",glyphRole:"depth",label:`rodando $ ${t.command}`,...t.frame!==void 0?{frame:t.frame}:{}}),c.length>0&&nn(Oi,{flexDirection:"column",paddingLeft:2,children:[d>0&&nn(f,{name:"fgDim",children:["\u2026 (",d," linhas acima)"]}),c.split(`
618
618
  `).map((m,u)=>An(Oi,{children:An(f,{name:"fgDim",children:m})},u))]})]})}let o=t.status==="err",n=t.status==="blocked",r=n?"bloqueado":o?"erro":"ok",s=t.output??"";return nn(Oi,{flexDirection:"column",paddingLeft:2,children:[nn(Oi,{children:[n?An(P,{name:"err",role:"danger"}):An(P,{name:"tool",role:"depth"}),nn(f,{name:"fg",children:[" ",dQ," "]}),An(f,{name:"accent",children:"$ "}),An(f,{name:"fg",children:t.command}),An(lQ,{children:" "}),n||o?An(P,{name:"err",role:"danger"}):An(P,{name:"ok",role:"success"}),nn(f,{name:n||o?"danger":"fgDim",children:[" ",r]})]}),s.trim()!==""&&nn(Oi,{flexDirection:"column",paddingLeft:2,children:[nn(f,{name:"fgDim",children:[e.box.topLeft," sa\xEDda ",e.box.horizontal.repeat(8)]}),s.split(`
619
- `).map((i,a)=>nn(Oi,{children:[nn(f,{name:"fgDim",children:[e.box.vertical," "]}),An(f,{name:n||o?"danger":"fg",children:i})]},a)),nn(f,{name:"fgDim",children:[e.box.bottomLeft," ",r," ",e.box.horizontal.repeat(4)]})]})]})}var cQ,dQ,I$=p(()=>{"use strict";ae();nh();ro();Va();cQ=4,dQ="shell"});import"react";import{Box as Ew,Text as N$}from"ink";import{jsx as Jn,jsxs as il}from"react/jsx-runtime";function uQ(t){if(t.status==="running")return"rodando";if(t.status==="done")return"pronto";if(t.status==="cancelled")return"parado";switch(t.stop){case"timeout":return"timeout";case"limit":return"teto";default:return"falhou"}}function mQ(t){let e=t.child,o=uQ(e),n=e.status==="running"?Jn(P,{name:"clock",role:"depth"}):e.status==="done"?Jn(P,{name:"ok",role:"success"}):e.status==="cancelled"?Jn(P,{name:"err",role:"fgDim"}):Jn(P,{name:"err",role:"danger"}),r=e.status==="done"?"success":e.status==="fail"?"danger":"fgDim";return il(Ew,{paddingLeft:2,children:[il(f,{name:"accent",children:["[",e.label,"]"]}),Jn(N$,{children:" "}),n,Jn(N$,{children:" "}),Jn(f,{name:r,children:o}),e.summary!==void 0&&e.status!=="running"&&il(f,{name:"fgDim",children:[" \xB7 ",e.summary]})]})}function Tw(t){let e=t.childrenStatus,o=e.length,n=e.filter(s=>s.status==="running").length,r=n>0?` (${n} rodando)`:"";return il(Ew,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[il(Ew,{children:[Jn(P,{name:"subagents",role:"accent"}),il(f,{name:"fg",children:[" ",o," sub-agente",o===1?"":"s",":"]}),r!==""&&Jn(f,{name:"fgDim",children:r})]}),e.map((s,i)=>Jn(mQ,{child:s},`${s.label}:${i}`))]})}var D$=p(()=>{"use strict";ae()});import"react";import{Box as al,Text as _w}from"ink";import{jsx as Eo,jsxs as xs}from"react/jsx-runtime";function fQ(t){switch(t){case"pending":return"testando";case"ok":return"ok";case"warn":return"aviso";default:return"falha"}}function pQ(t){let e=ne(),o=t.check,n=fQ(o.status),r,s;if(o.status==="pending"){let i=e.spinnerFrames,a=e.animate?i[(t.frame??0)%i.length]:e.glyph("clock");r=Eo(f,{name:"accent",children:a}),s="fgDim"}else o.status==="ok"?(r=Eo(P,{name:"ok",role:"success"}),s="success"):o.status==="warn"?(r=Eo(P,{name:"ask",role:"accent"}),s="accent"):(r=Eo(P,{name:"err",role:"danger"}),s="danger");return xs(al,{flexDirection:"column",children:[xs(al,{children:[Eo(_w,{children:" "}),r,Eo(_w,{children:" "}),xs(f,{name:"fg",children:[o.label,":"]}),Eo(_w,{children:" "}),o.detail!==void 0&&o.detail!==""?Eo(f,{name:s,children:o.detail}):xs(f,{name:s,children:[n,"\u2026"]})]}),o.status!=="pending"&&o.status!=="ok"&&o.fix!==void 0&&Eo(al,{paddingLeft:4,children:xs(f,{name:"fgDim",children:["\u2192 ",o.fix]})})]})}function Rw(t){let e=t.checks,o=e.filter(s=>s.status==="pending").length,n=o>0?` (${o} testando)`:"",r=t.frame??0;return xs(al,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[xs(al,{children:[Eo(P,{name:"clock",role:"accent"}),Eo(f,{name:"fg",children:" doctor \u2014 diagn\xF3stico"}),n!==""&&Eo(f,{name:"fgDim",children:n})]}),e.map(s=>Eo(pQ,{check:s,frame:r},s.id)),t.summary!==void 0&&Eo(al,{paddingTop:1,children:xs(f,{name:"fgDim",children:["resumo: ",t.summary]})})]})}var $$=p(()=>{"use strict";ae()});import"react";import{Box as rn,Text as xh}from"ink";import{jsx as Fe,jsxs as co}from"react/jsx-runtime";function F$(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function Ow(t){let e=[`${Nt(t.tokens)} tokens`];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(bn(t.durationMs)),e.join(" \xB7 ")}function hQ(t){let e=t.node,o=e.kind==="root"?0:2,n=t.focused?"\u25B8":" ";return co(rn,{paddingLeft:o,children:[co(f,{name:t.focused?"accent":"fgDim",children:[n," "]}),co(f,{name:"accent",children:["[",e.label,"]"]}),Fe(xh,{children:" "}),Fe(f,{name:F$(e.phase),children:Cw[e.phase]}),co(f,{name:"fgDim",children:[" \xB7 ",Ow(e.accounting)]})]})}function gQ(t){let e=Math.max(1,t.maxRows??10),o=t.columns,n=o!==void 0&&o>0?i=>{let l=(i.kind==="root"?0:2)+Ee(` [${i.label}] ${Cw[i.phase]} \xB7 ${Ow(i.accounting)}`);return Math.max(1,Math.ceil(l/o))}:void 0,{start:r,slice:s}=Xn(t.overview,t.selected,e,n);return co(rn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[co(rn,{children:[Fe(P,{name:"subagents",role:"accent"}),Fe(f,{name:"fg",children:" \xE1rvore de fluxos \u2014 ver \xB7 parar \xB7 interagir"})]}),s.map((i,a)=>Fe(hQ,{node:i,focused:r+a===t.selected},i.id)),t.overview.length>s.length&&Fe(rn,{children:co(f,{name:"fgDim",children:[" \u2026 ",t.overview.length-s.length," n\xF3s a mais (\u2191\u2193 rola)"]})}),Fe(rn,{paddingTop:1,children:Fe(f,{name:"fgDim",children:"\u2191\u2193 navega \xB7 enter: ver \xB7 p: parar este \xB7 P: parar todos \xB7 i: interagir \xB7 esc: fecha"})})]})}function yQ(t){let e=t.activity,o=[];return e.durationMs!==void 0&&o.push(bn(e.durationMs)),(e.added!==void 0||e.removed!==void 0)&&o.push(`+${e.added??0}/\u2212${e.removed??0}`),e.tokens!==void 0&&o.push(`${Nt(e.tokens)} tok`),co(rn,{flexDirection:"column",paddingLeft:2,children:[co(rn,{children:[e.running?Fe(P,{name:"clock",role:"depth"}):e.ok?Fe(P,{name:"ok",role:"success"}):Fe(P,{name:"err",role:"danger"}),Fe(xh,{children:" "}),Fe(f,{name:"fg",children:e.tool}),e.target!==""&&co(f,{name:"fgDim",children:[" ",e.target]}),Fe(xh,{children:" "}),Fe(f,{name:e.running?"fgDim":e.ok?"success":"danger",children:e.summary&&e.summary!==""?e.summary:e.running?"rodando":e.ok?"ok":"erro"}),o.length>0&&co(f,{name:"fgDim",children:[" \xB7 ",o.join(" \xB7 ")]})]}),e.running&&e.tail!==void 0&&e.tail!==""&&Fe(rn,{paddingLeft:4,children:Fe(f,{name:"fgDim",children:e.tail})})]})}function bQ(t){let e=t.node;return co(rn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[co(rn,{children:[Fe(P,{name:"subagents",role:"accent"}),Fe(f,{name:"fg",children:" "}),co(f,{name:"accent",children:["[",e.label,"]"]}),Fe(xh,{children:" "}),Fe(f,{name:F$(e.phase),children:Cw[e.phase]}),co(f,{name:"fgDim",children:[" \xB7 ",Ow(e.accounting)]})]}),e.recent.length===0?Fe(rn,{paddingLeft:2,children:Fe(f,{name:"fgDim",children:"sem atividade recente."})}):e.recent.map((o,n)=>Fe(yQ,{activity:o},`${o.tool}:${n}`)),Fe(rn,{paddingTop:1,children:Fe(f,{name:"fgDim",children:"p: parar este \xB7 i: interagir \xB7 esc/enter: volta \xE0 \xE1rvore"})})]})}function Mw(t){return t.drillIn?Fe(bQ,{node:t.drillIn}):Fe(gQ,{...t})}var Cw,B$=p(()=>{"use strict";ae();vn();ro();rl();Cw={thinking:"pensando",tool:"rodando tool",asking:"aguardando confirma\xE7\xE3o",done:"conclu\xEDdo",cancelled:"parado",failed:"falhou"}});import"react";import{Box as sn,Text as yu}from"ink";import{jsx as it,jsxs as Bt}from"react/jsx-runtime";function kQ(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function xQ(t){return t.kind==="spawn"?{glyph:"subagents",role:"depth"}:t.kind==="broker"?{glyph:"broker",role:"depth"}:t.kind==="deny"?{glyph:"err",role:"danger"}:t.kind==="ask"?{glyph:"ask",role:"accent"}:t.status==="running"?{glyph:"toolInflight",role:"fgDim"}:t.status==="err"?{glyph:"err",role:"danger"}:{glyph:"tool",role:"success"}}function Lw(t,e){return e<=1?t:Si(t,e)}function SQ(t){let e=[];return(t.added!==void 0||t.removed!==void 0)&&e.push(`+${t.added??0} \u2212${t.removed??0}`),t.durationMs!==void 0&&e.push(bn(t.durationMs)),t.tokens!==void 0&&e.push(`${Nt(t.tokens)} tok`),e.join(" \xB7 ")}function wQ(t){let e=[Nt(t.tokens)];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(bn(t.durationMs)),e.join(" \xB7 ")}function AQ(t){return t==="running"?"fgDim":t==="err"?"danger":"success"}function EQ(t){return t==="running"?"rodando":t==="err"?"erro":"ok"}function U$(t){let e=t.event,o=xQ(e),n=Math.max(4,t.cols-4-Ee(e.label)-1),r=SQ(e),s=e.summary!==void 0&&e.summary!==""?e.summary:EQ(e.status);return Bt(sn,{flexDirection:"column",paddingLeft:2,children:[it(sn,{children:Bt(yu,{wrap:"wrap",children:[it(P,{name:o.glyph,role:o.role}),it(yu,{children:" "}),it(f,{name:"fg",children:e.label}),e.detail!==""&&Bt(f,{name:"fgDim",children:[" ",Lw(e.detail,n)]}),it(yu,{children:" \xB7 "}),it(f,{name:AQ(e.status),children:s}),r!==""&&Bt(f,{name:"fgDim",children:[" \xB7 ",r]})]})}),e.status==="running"&&e.tail!==void 0&&e.tail!==""&&it(sn,{paddingLeft:4,children:it(f,{name:"fgDim",children:Lw(e.tail,Math.max(4,t.cols-4))})})]})}function TQ(t){let e=t.section,o=e.kind==="root"?0:1;return Bt(sn,{flexDirection:"column",paddingLeft:o,children:[Bt(sn,{children:[Bt(f,{name:"fgDim",children:[e.collapsed?"\u25B6":"\u25BC"," "]}),Bt(f,{name:"accent",children:["[",e.label,"]"]}),it(yu,{children:" "}),it(f,{name:kQ(e.phase),children:vQ[e.phase]}),Bt(f,{name:"fgDim",children:[" \xB7 ",wQ(e)]}),e.collapsed&&it(f,{name:"fgDim",children:" (colapsado)"})]}),!e.collapsed&&e.events.map((n,r)=>it(U$,{event:n,cols:t.cols},`${e.id}:${r}`))]})}function _Q(t){let e=[];for(let o of t)if(e.push({t:"header",section:o}),!o.collapsed)for(let n of o.events)e.push({t:"event",section:o,event:n});return e}function ll(t){let e=t.columns??40,o=_Q(t.sections);if(o.length===0){let u=(t.bootInfo??[]).filter(h=>h.lines.length>0);return Bt(sn,{flexDirection:"column",children:[Bt(sn,{children:[it(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),it(f,{name:"fgDim",children:" \xB7 sem atividade ainda"})]}),u.map(h=>Bt(sn,{flexDirection:"column",children:[Bt(sn,{children:[it(P,{name:"clock",role:"fgDim"}),it(yu,{children:" "}),it(f,{name:"accent",children:h.title})]}),h.lines.map((g,y)=>it(sn,{paddingLeft:2,children:it(f,{name:"fgDim",children:Lw(g,Math.max(4,e-2))})},`${h.title}:${y}`))]},h.title))]})}let n=Math.max(1,t.visibleRows-1),r=o.length,s=Math.max(0,r-n),i=Math.min(Math.max(0,t.scrollOffset),s),a=r-i,l=Math.max(0,a-n),c=o.slice(l,a),d=l,m=r-a;return Bt(sn,{flexDirection:"column",children:[Bt(sn,{children:[it(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),d>0&&Bt(f,{name:"fgDim",children:[" \xB7 \u2191",d," acima"]}),m===0?it(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"}):Bt(f,{name:"fgDim",children:[" \xB7 \u2193",m," abaixo"]})]}),c.map((u,h)=>u.t==="header"?it(TQ,{section:{...u.section,events:[]},cols:e},`h:${u.section.id}:${h}`):it(U$,{event:u.event,cols:e},`e:${u.section.id}:${h}`))]})}var vQ,j$=p(()=>{"use strict";ae();vn();ro();jp();vQ={thinking:"pensando",tool:"rodando",asking:"confirmando",done:"ok",cancelled:"parado",failed:"falhou"}});import"react";import{Box as En,Text as Qn}from"ink";import{jsx as kt,jsxs as ct}from"react/jsx-runtime";function Iw(t){let{score:e,running:o,startedAt:n}=t,s=(t.now??Date.now)()-n,i=Da(s);if(e.unknownFormat)return ct(En,{flexDirection:"column",paddingLeft:2,children:[ct(En,{children:[kt(P,{name:"toolInflight",role:"depth"}),kt(Qn,{children:" "}),ct(f,{name:"fgDim",children:["rodando testes\u2026 ",i]})]}),kt(En,{paddingLeft:2,children:kt(f,{name:"fgDim",children:"formato n\xE3o reconhecido \u2014 placar indispon\xEDvel"})})]});let a=e.total>0,l=e.passed+e.failed,c=e.failed>0?"danger":"success";return ct(En,{flexDirection:"column",paddingLeft:2,children:[kt(En,{children:a?kt(sl,{label:`${l}/${e.total} testes`,value:l,max:e.total,role:e.failed>0?"danger":"accent",frame:t.frame??0}):kt(sl,{label:"testes em andamento",elapsedMs:s,frame:t.frame??0})}),ct(En,{paddingLeft:1,children:[ct(f,{name:"success",children:[kt(P,{name:"ok",role:"success"}),ct(Qn,{children:[" ",e.passed," passaram"]})]}),kt(Qn,{children:" "}),ct(f,{name:c,children:[kt(P,{name:e.failed>0?"err":"ok",role:c}),ct(Qn,{children:[" ",e.failed," falharam"]})]}),e.total>0&&kt(f,{name:"fgDim",children:ct(Qn,{children:[" (total: ",e.total,")"]})}),kt(f,{name:"fgDim",children:ct(Qn,{children:[" ",i]})})]}),e.durationMs!==void 0&&kt(En,{paddingLeft:1,children:ct(f,{name:"fgDim",children:["dura\xE7\xE3o: ",(e.durationMs/1e3).toFixed(2),"s"]})}),e.failures.length>0&&ct(En,{flexDirection:"column",paddingLeft:1,paddingTop:0,children:[ct(f,{name:"danger",children:["falhas (",Math.min(e.failures.length,e.failed),"):"]}),e.failures.slice(0,Pw).map((d,m)=>ct(En,{paddingLeft:2,children:[ct(f,{name:"danger",children:[kt(P,{name:"err",role:"danger"}),ct(Qn,{children:[" ",d.name]})]}),d.message!==""&&kt(f,{name:"fgDim",children:ct(Qn,{children:[": ",d.message.split(`
620
- `)[0]?.slice(0,120)??""]})})]},m)),e.failures.length>Pw&&kt(En,{paddingLeft:2,children:ct(f,{name:"fgDim",children:["\u2026 e mais ",e.failures.length-Pw," falhas"]})})]}),!o&&kt(En,{paddingLeft:1,children:e.failed===0?ct(f,{name:"success",children:[kt(P,{name:"ok",role:"success"}),kt(Qn,{children:" todos passaram"})]}):ct(f,{name:"danger",children:[kt(P,{name:"err",role:"danger"}),ct(Qn,{children:[" ",e.failed," falharam"]})]})})]})}var Pw,H$=p(()=>{"use strict";ae();yw();vn();Pw=10});import"react";import{Box as RQ,Text as CQ}from"ink";import{jsx as Sh,jsxs as OQ}from"react/jsx-runtime";function Nw(t){let e=t.accounting,o=[`${Nt(e.tokens)} tokens`];return e.toolCalls>0&&o.push(`${e.toolCalls} tools`),o.push(bn(e.durationMs)),OQ(RQ,{paddingLeft:2,children:[e.live?Sh(P,{name:"clock",role:"depth"}):Sh(P,{name:"ok",role:"success"}),Sh(CQ,{children:" "}),Sh(f,{name:"fgDim",children:o.join(" \xB7 ")})]})}var q$=p(()=>{"use strict";ae();vn()});import W$ from"react";import{Box as MQ,Text as G$}from"ink";import{Fragment as $w,jsx as Ss,jsxs as Tn}from"react/jsx-runtime";function Dw(t){return t==="crit"?"danger":t==="warn"?"accent":"fgDim"}function Fw(t){let e=Dl(t.quota,t.now),o=fy(t.serverLimits,t.now);if(e===void 0&&o===void 0)return null;let n=e?.creditBalance,r=n===void 0&&o!==void 0;return Tn(MQ,{paddingLeft:2,children:[n!==void 0&&Tn($w,{children:[Ss(f,{name:"fgDim",children:"cr\xE9dito: "}),Ss(f,{name:Dw(e?.maxLevel??"ok"),children:n})]}),e!==void 0&&e.segments.map((s,i)=>Tn(W$.Fragment,{children:[(i>0||n!==void 0)&&Ss(f,{name:"fgDim",children:" \xB7 "}),Tn(f,{name:"fgDim",children:[s.label,": "]}),Tn(f,{name:Dw(s.level),children:[s.pct,"%"]})]},`q-${s.label}`)),e?.resetText!==void 0&&Tn($w,{children:[Ss(G$,{children:" "}),Tn(f,{name:"fgDim",children:["\xB7 ",e.resetText]})]}),e!==void 0&&r&&Ss(f,{name:"fgDim",children:" \xB7 "}),r&&o.segments.map((s,i)=>Tn(W$.Fragment,{children:[i>0&&Ss(f,{name:"fgDim",children:" \xB7 "}),Tn(f,{name:"fgDim",children:[s.label,": "]}),Ss(f,{name:Dw(s.level),children:s.value})]},`s-${s.label}`)),r&&o.resetText!==void 0&&Tn($w,{children:[Ss(G$,{children:" "}),Tn(f,{name:"fgDim",children:["\xB7 ",o.resetText]})]})]})}var z$=p(()=>{"use strict";N();ae()});import"react";import{jsx as PQ}from"react/jsx-runtime";function Mi(t){let o=ne().box.horizontal,n=Math.max(1,t.columns??80),r=t.subtle?Math.min(LQ,n):n,s=t.subtle?"fgDim":t.role??"fgDim",i=o.repeat(r);return PQ(f,{name:s,children:i})}var LQ,K$=p(()=>{"use strict";ae();LQ=12});var wh=p(()=>{"use strict";EN();gi();_N();$N();jN();DD();UD();HD();qD();WD();GD();zD();KD();e$();t$();n$();r$();c$();u$();m$();f$();p$();h$();b$();k$();S$();nh();w$();yw();ou();vw();O$();L$();P$();I$();D$();$$();B$();j$();H$();q$();z$();K$()});import{useEffect as IQ,useState as NQ}from"react";function bu(t={}){let e=t.enabled??!0,o=t.intervalMs??DQ,[n,r]=NQ(0);return IQ(()=>{if(!e)return;let s=setInterval(()=>r(i=>i+1),o);return()=>clearInterval(s)},[e,o]),e?n:0}var DQ,Bw=p(()=>{"use strict";DQ=120});import{useCallback as Zn,useMemo as $Q,useRef as FQ,useState as cl}from"react";function Y$(t){let[e,o]=cl(!1),[n,r]=cl(""),[s,i]=cl(0),[a,l]=cl([]),[c,d]=cl([]),[m,u]=cl(null),h=FQ(!1),g=$Q(()=>wx(n,a),[n,a]),y=Zn(async()=>{if(!h.current){h.current=!0;try{let I=await t.fileIndex.list();l(I.filter(J=>Rk(J)))}catch{l([])}}},[t.fileIndex]),b=Zn(()=>{o(!0),r(""),i(0),y()},[y]),w=Zn(()=>{o(!1),r(""),i(0)},[]),T=Zn(I=>{r(I),i(0)},[]),E=Zn(I=>{i(J=>{let Q=Math.max(0,g.length-1);return Math.min(Q,Math.max(0,J+I))})},[g.length]),L=Zn(async(I,J)=>{let Q=await t.attachReader.attach(I,J!==void 0?{confirmSensitive:J}:{});return Q.kind==="rejected"?(u(`@${Q.path||I} \u2014 ${Q.reason}`),null):(u(null),d(K=>K.some(D=>D.path===Q.path)?K:[...K,{path:Q.path,item:Q.item,truncated:Q.truncated}]),Q.path)},[t.attachReader]),B=Zn(async()=>{let I=g[s];return w(),I?L(I.path):null},[g,s,w,L]),j=Zn(()=>{d(I=>I.length===0?I:I.slice(0,-1))},[]),z=Zn(()=>d([]),[]),V=Zn(()=>u(null),[]);return{open:e,query:n,selected:s,hits:g,attachments:c,notice:m,openPicker:b,closePicker:w,setQuery:T,move:E,confirm:B,removeLast:j,clear:z,dismissNotice:V,attachPath:L}}var V$=p(()=>{"use strict";Pd()});import{useCallback as uo,useMemo as ws,useRef as BQ,useState as To}from"react";function X$(t,e){return t.id.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e)}function J$(t){let[e,o]=To(!1),[n,r]=To(0),[s,i]=To([]),[a,l]=To(!1),[c,d]=To(null),[m,u]=To(!1),[h,g]=To(""),[y,b]=To(0),[w,T]=To(!1),[E,L]=To(null),[B,j]=To(0),[z,V]=To(!1),[I,J]=To(""),Q=BQ(!1),K=ws(()=>Jl(),[]),[D,X]=To([]),Oe=uo(oe=>{let U=oe.findIndex(k=>k.key===t.currentTier);return U>=0?U:0},[t.currentTier]),Y=uo(async()=>{if(Q.current)return;Q.current=!0,l(!0);let oe=async()=>{try{let k=await t.catalog.list();k.length===0?(i(yn),d(!0)):(i(k),d(!1)),r(Oe(k.length===0?yn:k))}catch{i(yn),d(!0),r(Oe(yn))}},U=async()=>{if(!t.customModels){X([]);return}try{X(await t.customModels.list())}catch{X([])}};try{await Promise.all([oe(),U()])}finally{l(!1)}},[t.catalog,t.customModels,Oe]),ce=uo(()=>{o(!0),u(!1),g(""),b(0),T(!1),L(null),j(0),V(!1),J(""),Y()},[Y]),O=uo(()=>{o(!1),u(!1),g(""),b(0),T(!1),L(null),j(0),V(!1),J("")},[]),se=s.length,de=e&&n===se,ye=uo(oe=>{m||r(U=>{let k=Math.max(0,s.length);return Math.min(k,Math.max(0,U+oe))})},[s.length,m]),Z=ws(()=>{let oe=h.trim().toLowerCase();return D.filter(U=>!(w&&U.supportsTools!==!0||oe!==""&&!X$(U,oe)))},[D,h,w]),te=Z.length===0?-1:Math.min(Math.max(0,y),Z.length-1),Me=ws(()=>{if(Z.length<=vu||te<0)return 0;let oe=Math.floor(vu/2),U=Z.length-vu;return Math.min(Math.max(0,te-oe),U)},[Z.length,te]),Ht=ws(()=>Z.slice(Me,Me+vu).map((oe,U)=>({model:oe,highlighted:Me+U===te})),[Z,Me,te]),pt=ws(()=>{if(!m||te<0)return null;let oe=Z[te];return oe&&oe.supportsTools===!1?oe.id:null},[m,te,Z]),at=ws(()=>{let oe=h.trim().toLowerCase();return oe===""||D.length===0?[]:D.filter(U=>X$(U,oe)).slice(0,8).map(UQ)},[h,D]),At=ws(()=>{let oe=h.trim();if(oe===""||D.length===0)return!1;let U=oe.toLowerCase();return!D.some(k=>k.id.toLowerCase()===U)},[h,D]),dt=uo(oe=>{m&&b(U=>{let k=Z.length;return k===0?0:Math.min(k-1,Math.max(0,U+oe))})},[m,Z.length]),ht=uo(()=>{m&&(T(oe=>!oe),b(0))},[m]),F=uo(oe=>{L(oe),j(0),V(!1),J(""),u(!1)},[]),W=uo(()=>{if(E){if(z){let Co=xy(I);if(Co===null)return null;let Ie=E;return O(),{model:Ie,effort:Co}}if(K[Ji(B)]?.kind==="custom")return V(!0),J(""),null;let k=ky(Ji(B));if(k===null)return null;let Xe=E;return O(),{model:Xe,effort:k}}if(m){let U=te>=0?Z[te]:void 0;if(U)return F(U.supportsTools===void 0?{kind:"custom",model:U.id}:{kind:"custom",model:U.id,supportsTools:U.supportsTools}),null;let k=h.trim();return k===""||F({kind:"custom",model:k}),null}if(n===se)return u(!0),g(""),b(0),T(!1),null;let oe=s[n];return oe&&F({kind:"tier",key:oe.key}),null},[E,z,I,K,B,s,n,se,m,h,Z,te,O,F]),Be=uo(oe=>{!E||z||j(U=>Ji(U+oe))},[E,z]),ue=uo(oe=>{if(!z)return;let U=oe.replace(/[\r\n\t]/g,"");U!==""&&J(k=>k+U)},[z]),xe=uo(()=>{z&&J(oe=>oe.slice(0,-1))},[z]),Ze=uo(()=>z?(V(!1),J(""),!0):E?(L(null),j(0),!0):!1,[z,E]),tr=ws(()=>{if(!z)return null;let oe=km(I);return oe.ok?null:oe.reason},[z,I]),Ro=uo(oe=>{if(!m)return;let U=oe.replace(/[\r\n\t]/g,"");U!==""&&(b(0),g(k=>k+U))},[m]),Uo=uo(()=>{m&&(b(0),g(oe=>oe.slice(0,-1)))},[m]);return{open:e,selected:n,tiers:s,loading:a,usingFallback:c,customSelected:de,customInputOpen:m,customInput:h,customSuggestions:at,customWarnOutOfCatalog:At,customBrowserAvailable:D.length>0,customFilteredCount:Z.length,customTotalCount:D.length,customRows:Ht,customBrowseIndex:te,customHasMoreAbove:Me>0,customHasMoreBelow:Me+vu<Z.length,customToolsOnly:w,customNoToolsWarning:pt,openPicker:ce,closePicker:O,move:ye,confirm:W,appendCustom:Ro,backspaceCustom:Uo,browseMove:dt,toggleToolsOnly:ht,effortStepOpen:E!==null,effortOptions:K,effortSelected:Ji(B),currentEffort:t.currentEffort,effortCustomOpen:z,effortCustomInput:I,effortCustomWarn:tr,effortMove:Be,appendEffortCustom:ue,backspaceEffortCustom:xe,backFromEffort:Ze}}function UQ(t){let e=[t.name,t.family].map(o=>o.trim()).filter(o=>o!=="");return e.length>0?`${t.id} \xB7 ${e.join(" \xB7 ")}`:t.id}var vu,Q$=p(()=>{"use strict";N();_r();vu=10});import{useCallback as Ah,useState as Uw}from"react";function Z$(t){let e=[];e.push({kind:"mode",mode:t.mode,actionable:!0});for(let o of Zu)e.push({kind:"safe-tool",tool:o,decision:t.effectiveSafeDefault(o),actionable:!0});for(let o of t.sessionGrants.list())e.push({kind:"grant",grantKey:o,actionable:!0});for(let o of Ig)e.push({kind:"locked",category:o,actionable:!1});return e}function eF(t){let[e,o]=Uw(!1),[n,r]=Uw(0),[s,i]=Uw(0),a=Z$(t),l=Ah(()=>{o(!0),r(0),i(u=>u+1)},[]),c=Ah(()=>{o(!1)},[]),d=Ah(u=>{r(h=>{let g=Math.max(0,a.length-1);return Math.min(g,Math.max(0,h+u))})},[a.length]),m=Ah(()=>{let u=a[n];if(!(!u||!u.actionable)){switch(u.kind){case"mode":t.setMode(Dx(t.mode));break;case"grant":t.sessionGrants.revoke(u.grantKey);break;case"safe-tool":{let h=u.decision==="allow"?"ask":"allow";t.setSafeToolDefault(u.tool,h);break}}i(h=>h+1),r(h=>Math.min(h,Math.max(0,Z$(t).length-1)))}},[a,n,t]);return{open:e,selected:n,rows:a,mode:t.mode,openPanel:l,closePanel:c,move:d,act:m}}var tF=p(()=>{"use strict";N();$x()});import{useCallback as Eh,useState as oF}from"react";function nF(t){let e=Do.findIndex(o=>o.name===t);return e>=0?e:0}function rF(t){let[e,o]=oF(!1),[n,r]=oF(()=>nF(t.currentTheme)),s=Eh(()=>{r(nF(t.currentTheme)),o(!0)},[t.currentTheme]),i=Eh(()=>{o(!1)},[]),a=Eh(c=>{r(d=>{let m=Math.max(0,Do.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Eh(()=>{let c=Do[n];return o(!1),c?c.name:null},[n]);return{open:e,selected:n,themes:Do,openPicker:s,closePicker:i,move:a,confirm:l}}var sF=p(()=>{"use strict";ts()});import{useCallback as Th,useState as iF}from"react";function aF(t){let e=Pt.findIndex(o=>o.code===t);return e>=0?e:0}function lF(t){let[e,o]=iF(!1),[n,r]=iF(()=>aF(t.currentLang)),s=Th(()=>{r(aF(t.currentLang)),o(!0)},[t.currentLang]),i=Th(()=>{o(!1)},[]),a=Th(c=>{r(d=>{let m=Math.max(0,Pt.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Th(()=>{let c=Pt[n];return o(!1),c?c.code:null},[n]);return{open:e,selected:n,langs:Pt,openPicker:s,closePicker:i,move:a,confirm:l}}var cF=p(()=>{"use strict";ft()});function _h(t,e=an){let o=t.trim().toLowerCase();if(o!=="")return e.find(n=>n.name.toLowerCase()===o)}function dF(t,e=an){if(t.length===0)return e;let o=new Map(e.map(s=>[s.name.toLowerCase(),s])),n=new Set,r=[];for(let s of t){let i=s.name.trim();if(i==="")continue;let a=i.toLowerCase();if(n.has(a))continue;n.add(a);let l=o.get(a);r.push(l?{...l,name:i}:{name:i,label:jQ(i),summary:"cadastrado no broker"})}return r.sort((s,i)=>s.isDefault&&!i.isDefault?-1:i.isDefault&&!s.isDefault?1:s.name.localeCompare(i.name)),r}function jQ(t){return t.charAt(0).toUpperCase()+t.slice(1)}var an,Rh=p(()=>{"use strict";an=[{name:"openrouter",label:"OpenRouter",summary:"gateway multi-provider (padr\xE3o do broker)",isDefault:!0},{name:"deepseek",label:"DeepSeek",summary:"API direta da DeepSeek"}]});import{useCallback as ku,useRef as HQ,useState as xu}from"react";function Su(t,e){if(e===void 0)return 0;let o=t.findIndex(n=>n.name.toLowerCase()===e.toLowerCase());return o>=0?o:0}function uF(t){let[e,o]=xu(!1),[n,r]=xu(an),[s,i]=xu(()=>Su(an,t.currentProvider)),[a,l]=xu(!1),[c,d]=xu(null),m=HQ(!1),u=ku(async()=>{if(!m.current){if(m.current=!0,!t.providersClient){r(an),d(!0),i(Su(an,t.currentProvider));return}l(!0);try{let w=await t.providersClient.list(),T=dF(w),E=w.length===0;r(T),d(E),i(Su(T,t.currentProvider))}catch{r(an),d(!0),i(Su(an,t.currentProvider))}finally{l(!1)}}},[t.providersClient,t.currentProvider]),h=ku(()=>{i(Su(n,t.currentProvider)),o(!0),u()},[t.currentProvider,n,u]),g=ku(()=>{o(!1)},[]),y=ku(w=>{i(T=>{let E=Math.max(0,n.length-1);return Math.min(E,Math.max(0,T+w))})},[n.length]),b=ku(()=>{let w=n[s];return o(!1),w?w.name:null},[n,s]);return{open:e,selected:s,providers:n,loading:a,usingFallback:c,openPicker:h,closePicker:g,move:y,confirm:b}}var mF=p(()=>{"use strict";Rh()});import{useCallback as Ch,useState as jw}from"react";function fF(t){let[e,o]=jw(!1),[n,r]=jw(0),[s,i]=jw([]),a=Ch(()=>{i(ew(t.store,t.limit??ZS)),r(0),o(!0)},[t.store,t.limit]),l=Ch(()=>{o(!1)},[]),c=Ch(m=>{r(u=>{let h=Math.max(0,s.length-1);return Math.min(h,Math.max(0,u+m))})},[s.length]),d=Ch(()=>{let m=s[n];return o(!1),m?m.id:null},[s,n]);return{open:e,selected:n,sessions:s,openPicker:a,closePicker:l,move:c,confirm:d}}var pF=p(()=>{"use strict";mh()});import{useCallback as wu,useState as Oh}from"react";function hF(t){let[e,o]=Oh("closed"),[n,r]=Oh(0),[s,i]=Oh([]),[a,l]=Oh(0),c=wu(()=>{let g=[];try{g=d$(t.source.list(),t.limit??30)}catch{g=[]}i(g),r(0),l(0),o("list")},[t.source,t.limit]),d=wu(()=>{o("closed")},[]),m=wu(g=>{r(y=>{let b=e==="action"?ph.length:s.length,w=Math.max(0,b-1);return Math.min(w,Math.max(0,y+g))})},[e,s.length]),u=wu(()=>{if(e==="list")return s.length===0||(l(n),r(0),o("action")),null;if(e==="action"){let g=s[a],y=ph[n];return o("closed"),!g||!y?null:{checkpointId:g.id,action:y}}return null},[e,s,n,a]),h=wu(()=>{if(e==="action"){r(a),o("list");return}o("closed")},[e,a]);return{phase:e,open:e!=="closed",selected:n,checkpoints:s,actions:ph,target:e==="action"?s[a]:void 0,openPicker:c,closePicker:d,move:m,confirm:u,back:h}}var gF=p(()=>{"use strict";ow()});import{useCallback as Au,useMemo as WQ,useState as Hw}from"react";function yF(t={}){let[e,o]=Hw(!1),[n,r]=Hw(""),[s,i]=Hw(0),a=t.userCommands??[],l=t.natives,c=WQ(()=>JD(n,a,l),[n,a,l]),d=Au(()=>{r(""),i(0),o(!0)},[]),m=Au(()=>{o(!1)},[]),u=Au(y=>{r(y),i(0)},[]),h=Au(y=>{i(b=>{let w=Math.max(0,c.length-1);return Math.min(w,Math.max(0,b+y))})},[c.length]),g=Au(()=>{let y=c[s]??null;return o(!1),y},[c,s]);return{open:e,query:n,hits:c,selected:s,openPalette:d,closePalette:m,setQuery:u,move:h,confirm:g}}var bF=p(()=>{"use strict";tl()});function vF(t){let e=t.trim();if(e==="")return{kind:"stop"};if(GQ.test(e)){let o=e.replace(zQ,"").trim();return o===""?{kind:"stop"}:{kind:"redirect",inject:o}}return{kind:"redirect",inject:e}}var GQ,zQ,kF=p(()=>{"use strict";GQ=/^\/ask(?=\s|$)/i,zQ=/^\/ask\s*/i});function xF(t,e=!0){return t==="thinking"||t==="boot"||t==="compacting"?!0:t==="streaming"||t==="retrying"?e:!1}function SF(t){return t==="thinking"||t==="streaming"||t==="retrying"||t==="compacting"}var wF=p(()=>{"use strict"});import{appendFileSync as KQ}from"node:fs";import{homedir as YQ}from"node:os";import{join as VQ}from"node:path";function XQ(t=process.env){let e=t.ALUY_DEBUG_RENDER;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function Mh(t){if(XQ())try{qw===void 0&&(qw=VQ(YQ(),".aluy","render-debug.log")),KQ(qw,`${new Date().toISOString()} ${t}
619
+ `).map((i,a)=>nn(Oi,{children:[nn(f,{name:"fgDim",children:[e.box.vertical," "]}),An(f,{name:n||o?"danger":"fg",children:i})]},a)),nn(f,{name:"fgDim",children:[e.box.bottomLeft," ",r," ",e.box.horizontal.repeat(4)]})]})]})}var cQ,dQ,I$=p(()=>{"use strict";ae();nh();ro();Va();cQ=4,dQ="shell"});import"react";import{Box as Ew,Text as N$}from"ink";import{jsx as Jn,jsxs as il}from"react/jsx-runtime";function uQ(t){if(t.status==="running")return"rodando";if(t.status==="done")return"pronto";if(t.status==="cancelled")return"parado";switch(t.stop){case"timeout":return"timeout";case"limit":return"teto";default:return"falhou"}}function mQ(t){let e=t.child,o=uQ(e),n=e.status==="running"?Jn(P,{name:"clock",role:"depth"}):e.status==="done"?Jn(P,{name:"ok",role:"success"}):e.status==="cancelled"?Jn(P,{name:"err",role:"fgDim"}):Jn(P,{name:"err",role:"danger"}),r=e.status==="done"?"success":e.status==="fail"?"danger":"fgDim";return il(Ew,{paddingLeft:2,children:[il(f,{name:"accent",children:["[",e.label,"]"]}),Jn(N$,{children:" "}),n,Jn(N$,{children:" "}),Jn(f,{name:r,children:o}),e.summary!==void 0&&e.status!=="running"&&il(f,{name:"fgDim",children:[" \xB7 ",e.summary]})]})}function Tw(t){let e=t.childrenStatus,o=e.length,n=e.filter(s=>s.status==="running").length,r=n>0?` (${n} rodando)`:"";return il(Ew,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[il(Ew,{children:[Jn(P,{name:"subagents",role:"accent"}),il(f,{name:"fg",children:[" ",o," sub-agente",o===1?"":"s",":"]}),r!==""&&Jn(f,{name:"fgDim",children:r})]}),e.map((s,i)=>Jn(mQ,{child:s},`${s.label}:${i}`))]})}var D$=p(()=>{"use strict";ae()});import"react";import{Box as al,Text as _w}from"ink";import{jsx as Eo,jsxs as xs}from"react/jsx-runtime";function fQ(t){switch(t){case"pending":return"testando";case"ok":return"ok";case"warn":return"aviso";default:return"falha"}}function pQ(t){let e=ne(),o=t.check,n=fQ(o.status),r,s;if(o.status==="pending"){let i=e.spinnerFrames,a=e.animate?i[(t.frame??0)%i.length]:e.glyph("clock");r=Eo(f,{name:"accent",children:a}),s="fgDim"}else o.status==="ok"?(r=Eo(P,{name:"ok",role:"success"}),s="success"):o.status==="warn"?(r=Eo(P,{name:"ask",role:"accent"}),s="accent"):(r=Eo(P,{name:"err",role:"danger"}),s="danger");return xs(al,{flexDirection:"column",children:[xs(al,{children:[Eo(_w,{children:" "}),r,Eo(_w,{children:" "}),xs(f,{name:"fg",children:[o.label,":"]}),Eo(_w,{children:" "}),o.detail!==void 0&&o.detail!==""?Eo(f,{name:s,children:o.detail}):xs(f,{name:s,children:[n,"\u2026"]})]}),o.status!=="pending"&&o.status!=="ok"&&o.fix!==void 0&&Eo(al,{paddingLeft:4,children:xs(f,{name:"fgDim",children:["\u2192 ",o.fix]})})]})}function Rw(t){let e=t.checks,o=e.filter(s=>s.status==="pending").length,n=o>0?` (${o} testando)`:"",r=t.frame??0;return xs(al,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[xs(al,{children:[Eo(P,{name:"clock",role:"accent"}),Eo(f,{name:"fg",children:" doctor \u2014 diagn\xF3stico"}),n!==""&&Eo(f,{name:"fgDim",children:n})]}),e.map(s=>Eo(pQ,{check:s,frame:r},s.id)),t.summary!==void 0&&Eo(al,{paddingTop:1,children:xs(f,{name:"fgDim",children:["resumo: ",t.summary]})})]})}var $$=p(()=>{"use strict";ae()});import"react";import{Box as rn,Text as xh}from"ink";import{jsx as Fe,jsxs as co}from"react/jsx-runtime";function F$(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function Ow(t){let e=[`${Nt(t.tokens)} tokens`];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(bn(t.durationMs)),e.join(" \xB7 ")}function hQ(t){let e=t.node,o=e.kind==="root"?0:2,n=t.focused?"\u25B8":" ";return co(rn,{paddingLeft:o,children:[co(f,{name:t.focused?"accent":"fgDim",children:[n," "]}),co(f,{name:"accent",children:["[",e.label,"]"]}),Fe(xh,{children:" "}),Fe(f,{name:F$(e.phase),children:Cw[e.phase]}),co(f,{name:"fgDim",children:[" \xB7 ",Ow(e.accounting)]})]})}function gQ(t){let e=Math.max(1,t.maxRows??10),o=t.columns,n=o!==void 0&&o>0?i=>{let l=(i.kind==="root"?0:2)+Ee(` [${i.label}] ${Cw[i.phase]} \xB7 ${Ow(i.accounting)}`);return Math.max(1,Math.ceil(l/o))}:void 0,{start:r,slice:s}=Xn(t.overview,t.selected,e,n);return co(rn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[co(rn,{children:[Fe(P,{name:"subagents",role:"accent"}),Fe(f,{name:"fg",children:" \xE1rvore de fluxos \u2014 ver \xB7 parar \xB7 interagir"})]}),s.map((i,a)=>Fe(hQ,{node:i,focused:r+a===t.selected},i.id)),t.overview.length>s.length&&Fe(rn,{children:co(f,{name:"fgDim",children:[" \u2026 ",t.overview.length-s.length," n\xF3s a mais (\u2191\u2193 rola)"]})}),Fe(rn,{paddingTop:1,children:Fe(f,{name:"fgDim",children:"\u2191\u2193 navega \xB7 enter: ver \xB7 p: parar este \xB7 P: parar todos \xB7 i: interagir \xB7 esc: fecha"})})]})}function yQ(t){let e=t.activity,o=[];return e.durationMs!==void 0&&o.push(bn(e.durationMs)),(e.added!==void 0||e.removed!==void 0)&&o.push(`+${e.added??0}/\u2212${e.removed??0}`),e.tokens!==void 0&&o.push(`${Nt(e.tokens)} tok`),co(rn,{flexDirection:"column",paddingLeft:2,children:[co(rn,{children:[e.running?Fe(P,{name:"clock",role:"depth"}):e.ok?Fe(P,{name:"ok",role:"success"}):Fe(P,{name:"err",role:"danger"}),Fe(xh,{children:" "}),Fe(f,{name:"fg",children:e.tool}),e.target!==""&&co(f,{name:"fgDim",children:[" ",e.target]}),Fe(xh,{children:" "}),Fe(f,{name:e.running?"fgDim":e.ok?"success":"danger",children:e.summary&&e.summary!==""?e.summary:e.running?"rodando":e.ok?"ok":"erro"}),o.length>0&&co(f,{name:"fgDim",children:[" \xB7 ",o.join(" \xB7 ")]})]}),e.running&&e.tail!==void 0&&e.tail!==""&&Fe(rn,{paddingLeft:4,children:Fe(f,{name:"fgDim",children:e.tail})})]})}function bQ(t){let e=t.node;return co(rn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[co(rn,{children:[Fe(P,{name:"subagents",role:"accent"}),Fe(f,{name:"fg",children:" "}),co(f,{name:"accent",children:["[",e.label,"]"]}),Fe(xh,{children:" "}),Fe(f,{name:F$(e.phase),children:Cw[e.phase]}),co(f,{name:"fgDim",children:[" \xB7 ",Ow(e.accounting)]})]}),e.recent.length===0?Fe(rn,{paddingLeft:2,children:Fe(f,{name:"fgDim",children:"sem atividade recente."})}):e.recent.map((o,n)=>Fe(yQ,{activity:o},`${o.tool}:${n}`)),Fe(rn,{paddingTop:1,children:Fe(f,{name:"fgDim",children:"p: parar este \xB7 i: interagir \xB7 esc/enter: volta \xE0 \xE1rvore"})})]})}function Mw(t){return t.drillIn?Fe(bQ,{node:t.drillIn}):Fe(gQ,{...t})}var Cw,B$=p(()=>{"use strict";ae();vn();ro();rl();Cw={thinking:"pensando",tool:"rodando tool",asking:"aguardando confirma\xE7\xE3o",done:"conclu\xEDdo",cancelled:"parado",failed:"falhou"}});import"react";import{Box as sn,Text as yu}from"ink";import{jsx as st,jsxs as Bt}from"react/jsx-runtime";function kQ(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function xQ(t){return t.kind==="spawn"?{glyph:"subagents",role:"depth"}:t.kind==="broker"?{glyph:"broker",role:"depth"}:t.kind==="deny"?{glyph:"err",role:"danger"}:t.kind==="ask"?{glyph:"ask",role:"accent"}:t.status==="running"?{glyph:"toolInflight",role:"fgDim"}:t.status==="err"?{glyph:"err",role:"danger"}:{glyph:"tool",role:"success"}}function Lw(t,e){return e<=1?t:Si(t,e)}function SQ(t){let e=[];return(t.added!==void 0||t.removed!==void 0)&&e.push(`+${t.added??0} \u2212${t.removed??0}`),t.durationMs!==void 0&&e.push(bn(t.durationMs)),t.tokens!==void 0&&e.push(`${Nt(t.tokens)} tok`),e.join(" \xB7 ")}function wQ(t){let e=[Nt(t.tokens)];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(bn(t.durationMs)),e.join(" \xB7 ")}function AQ(t){return t==="running"?"fgDim":t==="err"?"danger":"success"}function EQ(t){return t==="running"?"rodando":t==="err"?"erro":"ok"}function U$(t){let e=t.event,o=xQ(e),n=Math.max(4,t.cols-4-Ee(e.label)-1),r=SQ(e),s=e.summary!==void 0&&e.summary!==""?e.summary:EQ(e.status);return Bt(sn,{flexDirection:"column",paddingLeft:2,children:[st(sn,{children:Bt(yu,{wrap:"wrap",children:[st(P,{name:o.glyph,role:o.role}),st(yu,{children:" "}),st(f,{name:"fg",children:e.label}),e.detail!==""&&Bt(f,{name:"fgDim",children:[" ",Lw(e.detail,n)]}),st(yu,{children:" \xB7 "}),st(f,{name:AQ(e.status),children:s}),r!==""&&Bt(f,{name:"fgDim",children:[" \xB7 ",r]})]})}),e.status==="running"&&e.tail!==void 0&&e.tail!==""&&st(sn,{paddingLeft:4,children:st(f,{name:"fgDim",children:Lw(e.tail,Math.max(4,t.cols-4))})})]})}function TQ(t){let e=t.section,o=e.kind==="root"?0:1;return Bt(sn,{flexDirection:"column",paddingLeft:o,children:[Bt(sn,{children:[Bt(f,{name:"fgDim",children:[e.collapsed?"\u25B6":"\u25BC"," "]}),Bt(f,{name:"accent",children:["[",e.label,"]"]}),st(yu,{children:" "}),st(f,{name:kQ(e.phase),children:vQ[e.phase]}),Bt(f,{name:"fgDim",children:[" \xB7 ",wQ(e)]}),e.collapsed&&st(f,{name:"fgDim",children:" (colapsado)"})]}),!e.collapsed&&e.events.map((n,r)=>st(U$,{event:n,cols:t.cols},`${e.id}:${r}`))]})}function _Q(t){let e=[];for(let o of t)if(e.push({t:"header",section:o}),!o.collapsed)for(let n of o.events)e.push({t:"event",section:o,event:n});return e}function ll(t){let e=t.columns??40,o=_Q(t.sections);if(o.length===0){let u=(t.bootInfo??[]).filter(h=>h.lines.length>0);return Bt(sn,{flexDirection:"column",children:[Bt(sn,{children:[st(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),st(f,{name:"fgDim",children:" \xB7 sem atividade ainda"})]}),u.map(h=>Bt(sn,{flexDirection:"column",children:[Bt(sn,{children:[st(P,{name:"clock",role:"fgDim"}),st(yu,{children:" "}),st(f,{name:"accent",children:h.title})]}),h.lines.map((g,y)=>st(sn,{paddingLeft:2,children:st(f,{name:"fgDim",children:Lw(g,Math.max(4,e-2))})},`${h.title}:${y}`))]},h.title))]})}let n=Math.max(1,t.visibleRows-1),r=o.length,s=Math.max(0,r-n),i=Math.min(Math.max(0,t.scrollOffset),s),a=r-i,l=Math.max(0,a-n),c=o.slice(l,a),d=l,m=r-a;return Bt(sn,{flexDirection:"column",children:[Bt(sn,{children:[st(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),d>0&&Bt(f,{name:"fgDim",children:[" \xB7 \u2191",d," acima"]}),m===0?st(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"}):Bt(f,{name:"fgDim",children:[" \xB7 \u2193",m," abaixo"]})]}),c.map((u,h)=>u.t==="header"?st(TQ,{section:{...u.section,events:[]},cols:e},`h:${u.section.id}:${h}`):st(U$,{event:u.event,cols:e},`e:${u.section.id}:${h}`))]})}var vQ,j$=p(()=>{"use strict";ae();vn();ro();jp();vQ={thinking:"pensando",tool:"rodando",asking:"confirmando",done:"ok",cancelled:"parado",failed:"falhou"}});import"react";import{Box as En,Text as Qn}from"ink";import{jsx as kt,jsxs as lt}from"react/jsx-runtime";function Iw(t){let{score:e,running:o,startedAt:n}=t,s=(t.now??Date.now)()-n,i=Da(s);if(e.unknownFormat)return lt(En,{flexDirection:"column",paddingLeft:2,children:[lt(En,{children:[kt(P,{name:"toolInflight",role:"depth"}),kt(Qn,{children:" "}),lt(f,{name:"fgDim",children:["rodando testes\u2026 ",i]})]}),kt(En,{paddingLeft:2,children:kt(f,{name:"fgDim",children:"formato n\xE3o reconhecido \u2014 placar indispon\xEDvel"})})]});let a=e.total>0,l=e.passed+e.failed,c=e.failed>0?"danger":"success";return lt(En,{flexDirection:"column",paddingLeft:2,children:[kt(En,{children:a?kt(sl,{label:`${l}/${e.total} testes`,value:l,max:e.total,role:e.failed>0?"danger":"accent",frame:t.frame??0}):kt(sl,{label:"testes em andamento",elapsedMs:s,frame:t.frame??0})}),lt(En,{paddingLeft:1,children:[lt(f,{name:"success",children:[kt(P,{name:"ok",role:"success"}),lt(Qn,{children:[" ",e.passed," passaram"]})]}),kt(Qn,{children:" "}),lt(f,{name:c,children:[kt(P,{name:e.failed>0?"err":"ok",role:c}),lt(Qn,{children:[" ",e.failed," falharam"]})]}),e.total>0&&kt(f,{name:"fgDim",children:lt(Qn,{children:[" (total: ",e.total,")"]})}),kt(f,{name:"fgDim",children:lt(Qn,{children:[" ",i]})})]}),e.durationMs!==void 0&&kt(En,{paddingLeft:1,children:lt(f,{name:"fgDim",children:["dura\xE7\xE3o: ",(e.durationMs/1e3).toFixed(2),"s"]})}),e.failures.length>0&&lt(En,{flexDirection:"column",paddingLeft:1,paddingTop:0,children:[lt(f,{name:"danger",children:["falhas (",Math.min(e.failures.length,e.failed),"):"]}),e.failures.slice(0,Pw).map((d,m)=>lt(En,{paddingLeft:2,children:[lt(f,{name:"danger",children:[kt(P,{name:"err",role:"danger"}),lt(Qn,{children:[" ",d.name]})]}),d.message!==""&&kt(f,{name:"fgDim",children:lt(Qn,{children:[": ",d.message.split(`
620
+ `)[0]?.slice(0,120)??""]})})]},m)),e.failures.length>Pw&&kt(En,{paddingLeft:2,children:lt(f,{name:"fgDim",children:["\u2026 e mais ",e.failures.length-Pw," falhas"]})})]}),!o&&kt(En,{paddingLeft:1,children:e.failed===0?lt(f,{name:"success",children:[kt(P,{name:"ok",role:"success"}),kt(Qn,{children:" todos passaram"})]}):lt(f,{name:"danger",children:[kt(P,{name:"err",role:"danger"}),lt(Qn,{children:[" ",e.failed," falharam"]})]})})]})}var Pw,H$=p(()=>{"use strict";ae();yw();vn();Pw=10});import"react";import{Box as RQ,Text as CQ}from"ink";import{jsx as Sh,jsxs as OQ}from"react/jsx-runtime";function Nw(t){let e=t.accounting,o=[`${Nt(e.tokens)} tokens`];return e.toolCalls>0&&o.push(`${e.toolCalls} tools`),o.push(bn(e.durationMs)),OQ(RQ,{paddingLeft:2,children:[e.live?Sh(P,{name:"clock",role:"depth"}):Sh(P,{name:"ok",role:"success"}),Sh(CQ,{children:" "}),Sh(f,{name:"fgDim",children:o.join(" \xB7 ")})]})}var q$=p(()=>{"use strict";ae();vn()});import W$ from"react";import{Box as MQ,Text as G$}from"ink";import{Fragment as $w,jsx as Ss,jsxs as Tn}from"react/jsx-runtime";function Dw(t){return t==="crit"?"danger":t==="warn"?"accent":"fgDim"}function Fw(t){let e=Dl(t.quota,t.now),o=fy(t.serverLimits,t.now);if(e===void 0&&o===void 0)return null;let n=e?.creditBalance,r=n===void 0&&o!==void 0;return Tn(MQ,{paddingLeft:2,children:[n!==void 0&&Tn($w,{children:[Ss(f,{name:"fgDim",children:"cr\xE9dito: "}),Ss(f,{name:Dw(e?.maxLevel??"ok"),children:n})]}),e!==void 0&&e.segments.map((s,i)=>Tn(W$.Fragment,{children:[(i>0||n!==void 0)&&Ss(f,{name:"fgDim",children:" \xB7 "}),Tn(f,{name:"fgDim",children:[s.label,": "]}),Tn(f,{name:Dw(s.level),children:[s.pct,"%"]})]},`q-${s.label}`)),e?.resetText!==void 0&&Tn($w,{children:[Ss(G$,{children:" "}),Tn(f,{name:"fgDim",children:["\xB7 ",e.resetText]})]}),e!==void 0&&r&&Ss(f,{name:"fgDim",children:" \xB7 "}),r&&o.segments.map((s,i)=>Tn(W$.Fragment,{children:[i>0&&Ss(f,{name:"fgDim",children:" \xB7 "}),Tn(f,{name:"fgDim",children:[s.label,": "]}),Ss(f,{name:Dw(s.level),children:s.value})]},`s-${s.label}`)),r&&o.resetText!==void 0&&Tn($w,{children:[Ss(G$,{children:" "}),Tn(f,{name:"fgDim",children:["\xB7 ",o.resetText]})]})]})}var z$=p(()=>{"use strict";N();ae()});import"react";import{jsx as PQ}from"react/jsx-runtime";function Mi(t){let o=ne().box.horizontal,n=Math.max(1,t.columns??80),r=t.subtle?Math.min(LQ,n):n,s=t.subtle?"fgDim":t.role??"fgDim",i=o.repeat(r);return PQ(f,{name:s,children:i})}var LQ,K$=p(()=>{"use strict";ae();LQ=12});var wh=p(()=>{"use strict";EN();gi();_N();$N();jN();DD();UD();HD();qD();WD();GD();zD();KD();e$();t$();n$();r$();c$();u$();m$();f$();p$();h$();b$();k$();S$();nh();w$();yw();ou();vw();O$();L$();P$();I$();D$();$$();B$();j$();H$();q$();z$();K$()});import{useEffect as IQ,useState as NQ}from"react";function bu(t={}){let e=t.enabled??!0,o=t.intervalMs??DQ,[n,r]=NQ(0);return IQ(()=>{if(!e)return;let s=setInterval(()=>r(i=>i+1),o);return()=>clearInterval(s)},[e,o]),e?n:0}var DQ,Bw=p(()=>{"use strict";DQ=120});import{useCallback as Zn,useMemo as $Q,useRef as FQ,useState as cl}from"react";function Y$(t){let[e,o]=cl(!1),[n,r]=cl(""),[s,i]=cl(0),[a,l]=cl([]),[c,d]=cl([]),[m,u]=cl(null),h=FQ(!1),g=$Q(()=>wx(n,a),[n,a]),y=Zn(async()=>{if(!h.current){h.current=!0;try{let I=await t.fileIndex.list();l(I.filter(J=>Rk(J)))}catch{l([])}}},[t.fileIndex]),b=Zn(()=>{o(!0),r(""),i(0),y()},[y]),w=Zn(()=>{o(!1),r(""),i(0)},[]),T=Zn(I=>{r(I),i(0)},[]),E=Zn(I=>{i(J=>{let Q=Math.max(0,g.length-1);return Math.min(Q,Math.max(0,J+I))})},[g.length]),L=Zn(async(I,J)=>{let Q=await t.attachReader.attach(I,J!==void 0?{confirmSensitive:J}:{});return Q.kind==="rejected"?(u(`@${Q.path||I} \u2014 ${Q.reason}`),null):(u(null),d(K=>K.some(D=>D.path===Q.path)?K:[...K,{path:Q.path,item:Q.item,truncated:Q.truncated}]),Q.path)},[t.attachReader]),B=Zn(async()=>{let I=g[s];return w(),I?L(I.path):null},[g,s,w,L]),j=Zn(()=>{d(I=>I.length===0?I:I.slice(0,-1))},[]),z=Zn(()=>d([]),[]),V=Zn(()=>u(null),[]);return{open:e,query:n,selected:s,hits:g,attachments:c,notice:m,openPicker:b,closePicker:w,setQuery:T,move:E,confirm:B,removeLast:j,clear:z,dismissNotice:V,attachPath:L}}var V$=p(()=>{"use strict";Pd()});import{useCallback as uo,useMemo as ws,useRef as BQ,useState as To}from"react";function X$(t,e){return t.id.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e)}function J$(t){let[e,o]=To(!1),[n,r]=To(0),[s,i]=To([]),[a,l]=To(!1),[c,d]=To(null),[m,u]=To(!1),[h,g]=To(""),[y,b]=To(0),[w,T]=To(!1),[E,L]=To(null),[B,j]=To(0),[z,V]=To(!1),[I,J]=To(""),Q=BQ(!1),K=ws(()=>Jl(),[]),[D,X]=To([]),Oe=uo(oe=>{let U=oe.findIndex(k=>k.key===t.currentTier);return U>=0?U:0},[t.currentTier]),Y=uo(async()=>{if(Q.current)return;Q.current=!0,l(!0);let oe=async()=>{try{let k=await t.catalog.list();k.length===0?(i(yn),d(!0)):(i(k),d(!1)),r(Oe(k.length===0?yn:k))}catch{i(yn),d(!0),r(Oe(yn))}},U=async()=>{if(!t.customModels){X([]);return}try{X(await t.customModels.list())}catch{X([])}};try{await Promise.all([oe(),U()])}finally{l(!1)}},[t.catalog,t.customModels,Oe]),ce=uo(()=>{o(!0),u(!1),g(""),b(0),T(!1),L(null),j(0),V(!1),J(""),Y()},[Y]),O=uo(()=>{o(!1),u(!1),g(""),b(0),T(!1),L(null),j(0),V(!1),J("")},[]),se=s.length,de=e&&n===se,ye=uo(oe=>{m||r(U=>{let k=Math.max(0,s.length);return Math.min(k,Math.max(0,U+oe))})},[s.length,m]),Z=ws(()=>{let oe=h.trim().toLowerCase();return D.filter(U=>!(w&&U.supportsTools!==!0||oe!==""&&!X$(U,oe)))},[D,h,w]),te=Z.length===0?-1:Math.min(Math.max(0,y),Z.length-1),Me=ws(()=>{if(Z.length<=vu||te<0)return 0;let oe=Math.floor(vu/2),U=Z.length-vu;return Math.min(Math.max(0,te-oe),U)},[Z.length,te]),Ht=ws(()=>Z.slice(Me,Me+vu).map((oe,U)=>({model:oe,highlighted:Me+U===te})),[Z,Me,te]),pt=ws(()=>{if(!m||te<0)return null;let oe=Z[te];return oe&&oe.supportsTools===!1?oe.id:null},[m,te,Z]),it=ws(()=>{let oe=h.trim().toLowerCase();return oe===""||D.length===0?[]:D.filter(U=>X$(U,oe)).slice(0,8).map(UQ)},[h,D]),At=ws(()=>{let oe=h.trim();if(oe===""||D.length===0)return!1;let U=oe.toLowerCase();return!D.some(k=>k.id.toLowerCase()===U)},[h,D]),ct=uo(oe=>{m&&b(U=>{let k=Z.length;return k===0?0:Math.min(k-1,Math.max(0,U+oe))})},[m,Z.length]),ht=uo(()=>{m&&(T(oe=>!oe),b(0))},[m]),F=uo(oe=>{L(oe),j(0),V(!1),J(""),u(!1)},[]),W=uo(()=>{if(E){if(z){let Co=xy(I);if(Co===null)return null;let Ie=E;return O(),{model:Ie,effort:Co}}if(K[Ji(B)]?.kind==="custom")return V(!0),J(""),null;let k=ky(Ji(B));if(k===null)return null;let Xe=E;return O(),{model:Xe,effort:k}}if(m){let U=te>=0?Z[te]:void 0;if(U)return F(U.supportsTools===void 0?{kind:"custom",model:U.id}:{kind:"custom",model:U.id,supportsTools:U.supportsTools}),null;let k=h.trim();return k===""||F({kind:"custom",model:k}),null}if(n===se)return u(!0),g(""),b(0),T(!1),null;let oe=s[n];return oe&&F({kind:"tier",key:oe.key}),null},[E,z,I,K,B,s,n,se,m,h,Z,te,O,F]),Be=uo(oe=>{!E||z||j(U=>Ji(U+oe))},[E,z]),ue=uo(oe=>{if(!z)return;let U=oe.replace(/[\r\n\t]/g,"");U!==""&&J(k=>k+U)},[z]),xe=uo(()=>{z&&J(oe=>oe.slice(0,-1))},[z]),Ze=uo(()=>z?(V(!1),J(""),!0):E?(L(null),j(0),!0):!1,[z,E]),tr=ws(()=>{if(!z)return null;let oe=km(I);return oe.ok?null:oe.reason},[z,I]),Ro=uo(oe=>{if(!m)return;let U=oe.replace(/[\r\n\t]/g,"");U!==""&&(b(0),g(k=>k+U))},[m]),Uo=uo(()=>{m&&(b(0),g(oe=>oe.slice(0,-1)))},[m]);return{open:e,selected:n,tiers:s,loading:a,usingFallback:c,customSelected:de,customInputOpen:m,customInput:h,customSuggestions:it,customWarnOutOfCatalog:At,customBrowserAvailable:D.length>0,customFilteredCount:Z.length,customTotalCount:D.length,customRows:Ht,customBrowseIndex:te,customHasMoreAbove:Me>0,customHasMoreBelow:Me+vu<Z.length,customToolsOnly:w,customNoToolsWarning:pt,openPicker:ce,closePicker:O,move:ye,confirm:W,appendCustom:Ro,backspaceCustom:Uo,browseMove:ct,toggleToolsOnly:ht,effortStepOpen:E!==null,effortOptions:K,effortSelected:Ji(B),currentEffort:t.currentEffort,effortCustomOpen:z,effortCustomInput:I,effortCustomWarn:tr,effortMove:Be,appendEffortCustom:ue,backspaceEffortCustom:xe,backFromEffort:Ze}}function UQ(t){let e=[t.name,t.family].map(o=>o.trim()).filter(o=>o!=="");return e.length>0?`${t.id} \xB7 ${e.join(" \xB7 ")}`:t.id}var vu,Q$=p(()=>{"use strict";N();_r();vu=10});import{useCallback as Ah,useState as Uw}from"react";function Z$(t){let e=[];e.push({kind:"mode",mode:t.mode,actionable:!0});for(let o of Zu)e.push({kind:"safe-tool",tool:o,decision:t.effectiveSafeDefault(o),actionable:!0});for(let o of t.sessionGrants.list())e.push({kind:"grant",grantKey:o,actionable:!0});for(let o of Ig)e.push({kind:"locked",category:o,actionable:!1});return e}function eF(t){let[e,o]=Uw(!1),[n,r]=Uw(0),[s,i]=Uw(0),a=Z$(t),l=Ah(()=>{o(!0),r(0),i(u=>u+1)},[]),c=Ah(()=>{o(!1)},[]),d=Ah(u=>{r(h=>{let g=Math.max(0,a.length-1);return Math.min(g,Math.max(0,h+u))})},[a.length]),m=Ah(()=>{let u=a[n];if(!(!u||!u.actionable)){switch(u.kind){case"mode":t.setMode(Dx(t.mode));break;case"grant":t.sessionGrants.revoke(u.grantKey);break;case"safe-tool":{let h=u.decision==="allow"?"ask":"allow";t.setSafeToolDefault(u.tool,h);break}}i(h=>h+1),r(h=>Math.min(h,Math.max(0,Z$(t).length-1)))}},[a,n,t]);return{open:e,selected:n,rows:a,mode:t.mode,openPanel:l,closePanel:c,move:d,act:m}}var tF=p(()=>{"use strict";N();$x()});import{useCallback as Eh,useState as oF}from"react";function nF(t){let e=Do.findIndex(o=>o.name===t);return e>=0?e:0}function rF(t){let[e,o]=oF(!1),[n,r]=oF(()=>nF(t.currentTheme)),s=Eh(()=>{r(nF(t.currentTheme)),o(!0)},[t.currentTheme]),i=Eh(()=>{o(!1)},[]),a=Eh(c=>{r(d=>{let m=Math.max(0,Do.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Eh(()=>{let c=Do[n];return o(!1),c?c.name:null},[n]);return{open:e,selected:n,themes:Do,openPicker:s,closePicker:i,move:a,confirm:l}}var sF=p(()=>{"use strict";ts()});import{useCallback as Th,useState as iF}from"react";function aF(t){let e=Pt.findIndex(o=>o.code===t);return e>=0?e:0}function lF(t){let[e,o]=iF(!1),[n,r]=iF(()=>aF(t.currentLang)),s=Th(()=>{r(aF(t.currentLang)),o(!0)},[t.currentLang]),i=Th(()=>{o(!1)},[]),a=Th(c=>{r(d=>{let m=Math.max(0,Pt.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Th(()=>{let c=Pt[n];return o(!1),c?c.code:null},[n]);return{open:e,selected:n,langs:Pt,openPicker:s,closePicker:i,move:a,confirm:l}}var cF=p(()=>{"use strict";ft()});function _h(t,e=an){let o=t.trim().toLowerCase();if(o!=="")return e.find(n=>n.name.toLowerCase()===o)}function dF(t,e=an){if(t.length===0)return e;let o=new Map(e.map(s=>[s.name.toLowerCase(),s])),n=new Set,r=[];for(let s of t){let i=s.name.trim();if(i==="")continue;let a=i.toLowerCase();if(n.has(a))continue;n.add(a);let l=o.get(a);r.push(l?{...l,name:i}:{name:i,label:jQ(i),summary:"cadastrado no broker"})}return r.sort((s,i)=>s.isDefault&&!i.isDefault?-1:i.isDefault&&!s.isDefault?1:s.name.localeCompare(i.name)),r}function jQ(t){return t.charAt(0).toUpperCase()+t.slice(1)}var an,Rh=p(()=>{"use strict";an=[{name:"openrouter",label:"OpenRouter",summary:"gateway multi-provider (padr\xE3o do broker)",isDefault:!0},{name:"deepseek",label:"DeepSeek",summary:"API direta da DeepSeek"}]});import{useCallback as ku,useRef as HQ,useState as xu}from"react";function Su(t,e){if(e===void 0)return 0;let o=t.findIndex(n=>n.name.toLowerCase()===e.toLowerCase());return o>=0?o:0}function uF(t){let[e,o]=xu(!1),[n,r]=xu(an),[s,i]=xu(()=>Su(an,t.currentProvider)),[a,l]=xu(!1),[c,d]=xu(null),m=HQ(!1),u=ku(async()=>{if(!m.current){if(m.current=!0,!t.providersClient){r(an),d(!0),i(Su(an,t.currentProvider));return}l(!0);try{let w=await t.providersClient.list(),T=dF(w),E=w.length===0;r(T),d(E),i(Su(T,t.currentProvider))}catch{r(an),d(!0),i(Su(an,t.currentProvider))}finally{l(!1)}}},[t.providersClient,t.currentProvider]),h=ku(()=>{i(Su(n,t.currentProvider)),o(!0),u()},[t.currentProvider,n,u]),g=ku(()=>{o(!1)},[]),y=ku(w=>{i(T=>{let E=Math.max(0,n.length-1);return Math.min(E,Math.max(0,T+w))})},[n.length]),b=ku(()=>{let w=n[s];return o(!1),w?w.name:null},[n,s]);return{open:e,selected:s,providers:n,loading:a,usingFallback:c,openPicker:h,closePicker:g,move:y,confirm:b}}var mF=p(()=>{"use strict";Rh()});import{useCallback as Ch,useState as jw}from"react";function fF(t){let[e,o]=jw(!1),[n,r]=jw(0),[s,i]=jw([]),a=Ch(()=>{i(ew(t.store,t.limit??ZS)),r(0),o(!0)},[t.store,t.limit]),l=Ch(()=>{o(!1)},[]),c=Ch(m=>{r(u=>{let h=Math.max(0,s.length-1);return Math.min(h,Math.max(0,u+m))})},[s.length]),d=Ch(()=>{let m=s[n];return o(!1),m?m.id:null},[s,n]);return{open:e,selected:n,sessions:s,openPicker:a,closePicker:l,move:c,confirm:d}}var pF=p(()=>{"use strict";mh()});import{useCallback as wu,useState as Oh}from"react";function hF(t){let[e,o]=Oh("closed"),[n,r]=Oh(0),[s,i]=Oh([]),[a,l]=Oh(0),c=wu(()=>{let g=[];try{g=d$(t.source.list(),t.limit??30)}catch{g=[]}i(g),r(0),l(0),o("list")},[t.source,t.limit]),d=wu(()=>{o("closed")},[]),m=wu(g=>{r(y=>{let b=e==="action"?ph.length:s.length,w=Math.max(0,b-1);return Math.min(w,Math.max(0,y+g))})},[e,s.length]),u=wu(()=>{if(e==="list")return s.length===0||(l(n),r(0),o("action")),null;if(e==="action"){let g=s[a],y=ph[n];return o("closed"),!g||!y?null:{checkpointId:g.id,action:y}}return null},[e,s,n,a]),h=wu(()=>{if(e==="action"){r(a),o("list");return}o("closed")},[e,a]);return{phase:e,open:e!=="closed",selected:n,checkpoints:s,actions:ph,target:e==="action"?s[a]:void 0,openPicker:c,closePicker:d,move:m,confirm:u,back:h}}var gF=p(()=>{"use strict";ow()});import{useCallback as Au,useMemo as WQ,useState as Hw}from"react";function yF(t={}){let[e,o]=Hw(!1),[n,r]=Hw(""),[s,i]=Hw(0),a=t.userCommands??[],l=t.natives,c=WQ(()=>JD(n,a,l),[n,a,l]),d=Au(()=>{r(""),i(0),o(!0)},[]),m=Au(()=>{o(!1)},[]),u=Au(y=>{r(y),i(0)},[]),h=Au(y=>{i(b=>{let w=Math.max(0,c.length-1);return Math.min(w,Math.max(0,b+y))})},[c.length]),g=Au(()=>{let y=c[s]??null;return o(!1),y},[c,s]);return{open:e,query:n,hits:c,selected:s,openPalette:d,closePalette:m,setQuery:u,move:h,confirm:g}}var bF=p(()=>{"use strict";tl()});function vF(t){let e=t.trim();if(e==="")return{kind:"stop"};if(GQ.test(e)){let o=e.replace(zQ,"").trim();return o===""?{kind:"stop"}:{kind:"redirect",inject:o}}return{kind:"redirect",inject:e}}var GQ,zQ,kF=p(()=>{"use strict";GQ=/^\/ask(?=\s|$)/i,zQ=/^\/ask\s*/i});function xF(t,e=!0){return t==="thinking"||t==="boot"||t==="compacting"?!0:t==="streaming"||t==="retrying"?e:!1}function SF(t){return t==="thinking"||t==="streaming"||t==="retrying"||t==="compacting"}var wF=p(()=>{"use strict"});import{appendFileSync as KQ}from"node:fs";import{homedir as YQ}from"node:os";import{join as VQ}from"node:path";function XQ(t=process.env){let e=t.ALUY_DEBUG_RENDER;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function Mh(t){if(XQ())try{qw===void 0&&(qw=VQ(YQ(),".aluy","render-debug.log")),KQ(qw,`${new Date().toISOString()} ${t}
621
621
  `)}catch{}}var qw,AF=p(()=>{"use strict"});function EF(t){return t.subagentsRunning&&t.isPlainGoal&&t.nonEmpty&&!t.hasPendingAttachment}var TF=p(()=>{"use strict"});function _F(t,e){let o=Number.isFinite(t)&&t>0?Math.floor(t):0;if(!e)return{layout:"single",chatCols:o,logCols:0,disabledByWidth:!1};if(o<QQ)return{layout:"single",chatCols:o,logCols:0,disabledByWidth:!0};if(o>=JQ){let n=Math.max(1,Math.floor(o*e9)),r=o-n-t9;return r>=ZQ?{layout:"side",chatCols:n,logCols:r,disabledByWidth:!1}:{layout:"tabs",chatCols:o,logCols:o,disabledByWidth:!1}}return{layout:"tabs",chatCols:o,logCols:o,disabledByWidth:!1}}function r9(t){return t==="side"?o9:t==="tabs"?n9:0}function RF(t){let e=oh({live:t.live,phase:t.phase,hasBlocks:t.hasBlocks,...t.columns!==void 0?{columns:t.columns}:{}}),o=r9(t.layout),n=Math.min(Li,Math.max(0,t.logColumnLines??0)),r=t.rows-ru-Jp(t.rows)-o-Zp-Qp(t.mode)-(t.queuedLines??0)-1,s=r-e,i=r-Math.max(e,n),a=Math.min(s,i);return Math.max(eh,a)}var JQ,QQ,ZQ,e9,t9,o9,n9,Li,CF=p(()=>{"use strict";Va();JQ=100,QQ=60,ZQ=34,e9=.62,t9=1,o9=1,n9=1,Li=12});function s9(t){let e=t.running?"running":t.ok===!1?"err":"ok";return{kind:"tool",label:t.tool,detail:t.target,status:e,...t.durationMs!==void 0?{durationMs:t.durationMs}:{},...t.added!==void 0?{added:t.added}:{},...t.removed!==void 0?{removed:t.removed}:{},...t.summary!==void 0?{summary:t.summary}:{},...t.tokens!==void 0?{tokens:t.tokens}:{},...t.tail!==void 0?{tail:t.tail}:{}}}function Ww(t,e,o={}){let n=o.collapsed??new Set,r=o.cap??500,s=[],i=0;for(let a of t){let l=n.has(a.id),d=(e(a.id)?.recent??[]).map(s9);a.phase==="thinking"&&(d=[...d,{kind:"broker",label:"broker",detail:"gerando",status:"running",...a.accounting.tokens>0?{tokens:a.accounting.tokens}:{}}]),o.errorsOnly&&(d=d.filter(m=>m.status==="err"||m.kind==="deny")),i+=d.length,s.push({id:a.id,kind:a.kind,label:a.label,phase:a.phase,tokens:a.accounting.tokens,toolCalls:a.accounting.toolCalls,durationMs:a.accounting.durationMs,collapsed:l,events:l?[]:d})}if(i>r){let a=r;for(let l=s.length-1;l>=0;l--){let c=s[l];if(a<=0){s[l]={...c,events:[]};continue}c.events.length>a?(s[l]={...c,events:c.events.slice(c.events.length-a)},a=0):a-=c.events.length}}return{sections:s,totalEvents:i}}function OF(t){let e=0;for(let o of t)e+=1+(o.collapsed?0:o.events.length);return e}var MF=p(()=>{"use strict"});function LF(t,e,o){let n=Math.max(0,e),r=Math.max(0,t-n),s=Math.min(Math.max(0,Math.trunc(o)),r),i=t-s,a=Math.max(0,i-n);return{start:a,end:i,hiddenAbove:a,hiddenBelow:t-i,offset:s}}function Gw(t,e,o,n){let r=Math.max(1,n),s=Math.max(1,r-1),i=Math.max(0,o-r),a=e;switch(t){case"up":a=e+1;break;case"down":a=e-1;break;case"pageUp":a=e+s;break;case"pageDown":a=e-s;break;case"home":a=i;break;case"end":a=0;break}return Math.min(Math.max(0,a),i)}var zw=p(()=>{"use strict"});function PF(t){let e=!1,o=[],n=[];for(let r of t)r.kind==="you"&&(e=!0),!e&&r.kind==="note"&&i9.has(r.title)?o.push(r):n.push(r);return{startupNotes:o,conversation:n}}var i9,IF=p(()=>{"use strict";i9=new Set(["config","agentes"])});import"react";import{Box as Qt,Text as NF}from"ink";import{Fragment as $F,jsx as _e,jsxs as mo}from"react/jsx-runtime";function a9(t,e){if(t.kind!=="note")return t;let o=Math.max(1,e-3);if(t.lines.length<=o)return t;let n=t.lines.slice(0,Math.max(1,o-1));return{...t,lines:[...n,`\u2026(+${t.lines.length-n.length} linhas \u2014 saia do /fullscreen p/ ver tudo)`]}}function Kw(t){let e=Math.max(1,t.columns);if(t.label!==void 0&&t.label!==""){let r=`\u2500\u2500 ${t.focused===!0?"\u258C ":""}${t.label} `,s=Math.max(0,e-r.length);return mo(Qt,{children:[_e(f,{name:"fgDim",children:"\u2500\u2500 "}),t.focused===!0&&mo($F,{children:[_e(P,{name:"you",role:"accent"}),_e(f,{name:"fgDim",children:" "})]}),_e(f,{name:"accent",children:t.label}),mo(f,{name:"fgDim",children:[" ","\u2500".repeat(s)]})]})}return _e(f,{name:"fgDim",children:"\u2500".repeat(e)})}function l9(t){let{t:e}=ke(),o=t.blocks,n=Math.max(1,t.rows-1),r=LF(o.length,n,t.scroll),s=o.slice(r.start,r.end).map(i=>a9(i,n));return t.overlay!==void 0&&t.overlay!==null?mo(Qt,{flexDirection:"column",height:t.rows,children:[mo(Qt,{children:[_e(f,{name:"accent",children:e("cockpit.conversa")}),_e(f,{name:"fgDim",children:" \xB7 /menu"})]}),_e(Qt,{flexDirection:"column",height:n,overflow:"hidden",children:t.overlay})]}):o.length===0?mo(Qt,{flexDirection:"column",height:t.rows,children:[mo(Qt,{children:[t.focused===!0&&mo($F,{children:[_e(P,{name:"you",role:"accent"}),_e(NF,{children:" "})]}),_e(f,{name:t.focused?"accent":"fgDim",children:e("cockpit.conversa")}),_e(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"})]}),mo(Qt,{height:n,width:t.columns,flexDirection:"column",alignItems:"center",justifyContent:"center",children:[_e(f,{name:"accent",children:e("cockpit.welcomeTitle")}),_e(f,{name:"fgDim",children:e("cockpit.welcomeHint")})]})]}):mo(Qt,{flexDirection:"column",height:t.rows,children:[mo(Qt,{children:[_e(f,{name:t.focused?"accent":"fgDim",children:e("cockpit.conversa")}),r.hiddenAbove>0&&mo(f,{name:"fgDim",children:[" \xB7 \u2191",r.hiddenAbove]}),r.hiddenBelow===0?_e(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"}):mo(f,{name:"fgDim",children:[" \xB7 \u2193",r.hiddenBelow]})]}),_e(Qt,{flexDirection:"column",height:n,overflow:"hidden",justifyContent:"flex-end",children:s.map((i,a)=>_e(Lh,{block:i,isCurrent:r.start+a===o.length-1,frame:t.frame,columns:t.columns,maxLines:n},r.start+a))})]})}function DF(t){let{t:e}=ke(),{layout:o}=t,n=t.state.meta.tokens,r=t.state.meta.windowPct,{startupNotes:s,conversation:i}=PF(t.state.blocks),a=s.map(l=>({title:l.title,lines:l.lines}));return mo(Qt,{flexDirection:"column",width:t.columns,height:o.rows,children:[_e(Qt,{height:o.headerRows,children:_e(Kd,{tier:t.tierDisplay,columns:t.columns,rows:1,...t.version!==void 0?{version:t.version}:{}})}),_e(Kw,{columns:t.columns}),_e(l9,{blocks:i,rows:o.regions.conversaRows,columns:t.columns,focused:t.focus==="conversa",scroll:t.conversaScroll,frame:t.frame,overlay:t.overlay}),_e(Kw,{columns:t.columns,label:e("cockpit.log"),focused:t.focus==="log"}),_e(Qt,{height:o.regions.logRows,children:_e(ll,{sections:t.logSections,visibleRows:o.regions.logRows,scrollOffset:t.logScroll,focused:t.focus==="log",columns:t.columns,bootInfo:a})}),_e(Kw,{columns:t.columns}),_e(Qt,{height:o.statusRows,children:_e(Vd,{cwd:t.cwd,tier:t.tierDisplay,isDefaultTier:t.isDefaultTier,...t.state.meta.model!==void 0?{model:t.state.meta.model}:{},tokens:n,windowPct:r,columns:t.columns,error:t.state.phase==="error",...t.state.meta.focus!==void 0?{focus:t.state.meta.focus}:{}})}),_e(Qt,{height:o.composerRows,children:_e(Zd,{value:t.input,cursorPos:t.cursorPos,active:t.composerActive,showCursor:t.showCursor,shellMode:t.input.startsWith("!"),maxRows:o.composerRows,...t.state.meta.label!==void 0?{sessionLabel:t.state.meta.label}:{},...t.state.meta.labelColor!==void 0?{sessionColor:t.state.meta.labelColor}:{}})}),_e(Qt,{height:o.hintsRows,children:t.hintState===null||t.hintState==="idle"?mo(f,{name:"fgDim",children:[e("hints.cockpit"),_e(NF,{children:" \xB7 "}),Nt(n)," tok"]}):_e(gu,{state:t.hintState})})]})}var FF=p(()=>{"use strict";ae();ft();wh();wh();Yw();vn();zw();IF()});function c9(t){return!Number.isFinite(t)||t<=1?1:Math.min(5,Math.floor(t))}function d9(t,e){let o=Math.min(3,t-1);if(e===void 0){let s=Math.round(t*.3);return Math.min(t-1,Math.max(o,s))}if(!e.hasActivity&&e.activeAgents===0)return Math.min(1,t-1);let n=Math.floor(t*(e.focused||e.activeAgents>0?.6:.5)),r=Math.max(1,e.lines);return Math.min(t-1,Math.max(o,Math.min(n,r)))}function As(t,e,o=1,n){if(e<80)return{kind:"refuse",reason:"narrow",rows:t,cols:e};if(t<9)return{kind:"refuse",reason:"short",rows:t,cols:e};let r=t-7,s=c9(o)-1,i=Math.max(0,Math.min(s,r-2)),a=1+i,l=r-i,c=d9(l,n),d=l-c;return{kind:"cockpit",rows:t,cols:e,headerRows:1,statusRows:1,composerRows:a,hintsRows:1,regions:{conversaRows:d,logRows:c}}}var Vw=p(()=>{"use strict"});function UF(t){if(t==="")return 0;let e=0;for(let n=0;n<t.length;n+=1)t[n]===`
622
622
  `&&(e+=1);let o=t.endsWith(`
623
623
  `)?1:0;return e-o+1}function jF(t,e={}){let o=e.minLines??u9,n=e.minChars??m9;return UF(t)>=o||t.length>n}function f9(t,e){return`[texto colado #${t}, +${e} ${e===1?"linha":"linhas"}]`}function HF(){let t=1,e=new Map;return{add(o,n){let r=t;return t+=1,e.set(r,o),{id:r,label:f9(r,n),content:o}},get(o){return e.get(o)},remove(o){e.delete(o)},reset(){e.clear(),t=1},snapshot(){return e}}}function qF(t,e,o){let n=UF(e),r=o.add(e,n);return ki(t,r.label)}function WF(t,e){let o=[];BF.lastIndex=0;let n;for(;(n=BF.exec(t))!==null;){let r=Number(n[1]);e.get(r)!==void 0&&o.push({id:r,start:n.index,end:n.index+n[0].length})}return o}function GF(t,e,o){let n=Rt(t.text,t.cursor),r=WF(t.text,e);for(let s of r){let i=o==="backward"&&n===s.end,a=o==="forward"&&n===s.start,l=n>s.start&&n<s.end;if(i||a||l)return{handled:!0,state:{text:t.text.slice(0,s.start)+t.text.slice(s.end),cursor:s.start},removedId:s.id}}return{handled:!1,state:t}}function zF(t,e){let o=WF(t,e);if(o.length===0)return t;let n=t;for(let r=o.length-1;r>=0;r-=1){let s=o[r],i=e.get(s.id);i!==void 0&&(n=n.slice(0,s.start)+i+n.slice(s.end))}return n}var u9,m9,BF,KF=p(()=>{"use strict";Up();u9=6,m9=800;BF=/\[texto colado #(\d+), \+\d+ linhas?\]/g});var YF=p(()=>{"use strict";N()});function Jw(t,e){let o=t.trim().toLowerCase(),n;o==="on"||o==="ligar"?n=!0:o==="off"||o==="desligar"?n=!1:n=!e.enabled;let s=[`sino de aten\xE7\xE3o: ${n?"ligado":"desligado"}`,"avisa quando o Aluy pede aprova\xE7\xE3o ou conclui um turno longo (BEL + notifica\xE7\xE3o","de desktop best-effort). texto neutro \u2014 nunca o conte\xFAdo da conversa.",...e.tty?[]:["\u26A0 sem TTY (sa\xEDda piped/CI) \u2014 o sino n\xE3o soa aqui; a prefer\xEAncia vale num terminal."]];return{kind:"notify",enable:n,note:{title:"notify",lines:s}}}function Eu(t,e){let o=t.trim();if(o==="")return{kind:"theme",theme:void 0,note:{title:"theme",lines:["temas dispon\xEDveis (use `/theme <nome>`):",...Do.map(r=>`${r.name===e?"\u25CF ":" "}${r.name} \u2014 ${r.summary}`)]}};let n=Sr(o);return n?n.name===e?{kind:"theme",theme:void 0,note:{title:"theme",lines:[`o tema j\xE1 \xE9 ${n.label} (${n.name}).`]}}:{kind:"theme",theme:n.name,note:{title:"theme",lines:[`tema trocado para: ${n.label} (${n.name})`]}}:{kind:"theme",theme:void 0,note:{title:"theme",lines:[`tema desconhecido: "${o}".`,`dispon\xEDveis: ${Do.map(r=>r.name).join(", ")}.`]}}}function Qw(t,e){let o=t.trim();if(o==="")return{kind:"lang",lang:void 0,note:{title:"lang",lines:[fs(e,"lang.listTitle"),...Pt.map(r=>`${r.code===e?"\u25CF ":" "}${r.code} \u2014 ${r.label}`)]}};let n=os(o);return n?n.code===e?{kind:"lang",lang:void 0,note:{title:"lang",lines:[fs(e,"lang.current",{label:n.label})]}}:{kind:"lang",lang:n.code,note:{title:"lang",lines:[fs(n.code,"lang.changed",{label:n.label})]}}:{kind:"lang",lang:void 0,note:{title:"lang",lines:[fs(e,"lang.unknown",{input:o}),`${fs(e,"lang.listTitle")}: ${Pt.map(r=>r.code).join(", ")}.`]}}}function Tu(t,e){let o=t.trim();if(o==="")return{kind:"provider",provider:void 0,note:{title:"provider",lines:["providers do modo Custom (use `/provider <nome>`):",...an.map(r=>`${r.name===e?"\u25CF ":" "}${r.name} \u2014 ${r.summary}${r.isDefault?" (padr\xE3o)":""}`),"\u25CD s\xF3 o NOME vai ao broker, que resolve provider/credencial (nunca exibido)","pareia com o modelo Custom (`/model` \u2192 Custom). fora de Custom, \xE9 ignorado."]}};let n=_h(o);return n?n.name===e?{kind:"provider",provider:void 0,note:{title:"provider",lines:[`o provider j\xE1 \xE9 ${n.label} (${n.name}).`]}}:{kind:"provider",provider:n.name,note:{title:"provider",lines:[`provider do modo Custom: ${n.label} (${n.name})`,"\u25CD enviado ao broker em par com o modelo Custom \u2014 ele resolve a credencial (nunca exibida)","vale s\xF3 nesta sess\xE3o (n\xE3o persiste). pareie com `/model` \u2192 Custom."]}}:{kind:"provider",provider:void 0,note:{title:"provider",lines:[`provider desconhecido: "${o}".`,`dispon\xEDveis: ${an.map(r=>r.name).join(", ")}.`]}}}function p9(t){return t<1e3?String(t):t<1e6?`${(t/1e3).toFixed(1).replace(/\.0$/,"")}k`:`${(t/1e6).toFixed(1).replace(/\.0$/,"")}M`}function VF(t,e){switch(t){case"help":return{kind:"note",note:{title:"comandos",lines:Fo.map(o=>`/${o.name.padEnd(12)} ${o.summary}`)}};case"model":return{kind:"note",note:{title:"model",lines:[`tier: ${e.usage.tier}`,...e.unsafe?["\u26A0 sess\xE3o em modo yolo (aprova\xE7\xE3o desligada)"]:[]]}};case"provider":return Tu("",void 0);case"effort":return{kind:"note",note:{title:"effort",lines:["use /effort <valor> para setar (low/medium/high/custom)"]}};case"usage":return{kind:"note",note:{title:"usage",lines:[`tokens nesta sess\xE3o: ${p9(e.usage.tokens)}`,`janela de contexto: ${e.usage.windowPct}% usada`,`tier: ${e.usage.tier}`]}};case"permissions":return{kind:"note",note:{title:"permissions",lines:e.unsafe?["\u26A0 MODO YOLO ativo \u2014 a catraca est\xE1 DESLIGADA: tudo \xE9 auto-aprovado.","sem --yolo: leitura = allow \xB7 escrita/bash = ask \xB7 sempre-ask (rede/","destrutivo/escalada/exec-de-pacote/config) sempre pergunta."]:["leitura (read/grep) = allow","escrita (edit) e bash (run_command) = ask com o efeito exato","sempre-ask (rede/destrutivo/escalada/exec-de-pacote/config): sempre pergunta","regras por workspace = evolu\xE7\xE3o p\xF3s-v1"]}};case"tools":return{kind:"note",note:h9(void 0,e.unsafe??!1)};case"init":return{kind:"note",note:{title:"init",lines:["analiso o repo (stack, comandos, estrutura) e crio um AGENT.md na raiz","com esse contexto \u2014 voc\xEA confirma a escrita (diff) e edita \xE0 vontade.","o agente l\xEA o AGENT.md como contexto de projeto no boot de cada sess\xE3o."]}};case"login":return{kind:"note",note:{title:"login",lines:["para entrar, rode `aluy login` num terminal (device-flow RFC 8628)","ou `aluy login --token <PAT>` em CI/headless.","o fluxo device-flow dentro da TUI \xE9 a evolu\xE7\xE3o natural."]}};case"whoami":case"logout":return{kind:"async",id:t};case"telegram":return{kind:"note",note:{title:"telegram",lines:["uso: /telegram [status | allow <chat-id> | deny <chat-id> | logout | login]"]}};case"doctor":return{kind:"note",note:{title:"doctor",lines:["health-check indispon\xEDvel neste contexto \u2014 rode `aluy doctor` no shell."]}};case"undo":case"redo":return{kind:"note",note:{title:`/${t}`,lines:["desfazer/refazer indispon\xEDvel neste contexto (sem journal de sess\xE3o)."]}};case"rewind":return{kind:"note",note:{title:"/rewind",lines:["rewind indispon\xEDvel neste contexto (precisa da TUI interativa)."]}};case"memory":return{kind:"note",note:{title:"memory",lines:["vejo/edito/esque\xE7o/fixo os fatos que o agente lembra entre sess\xF5es","(global + projeto), pela mec\xE2nica interna \u2014 nunca por `cat` (read-deny).","a mem\xF3ria \xE9 relembrada como DADO, nunca instru\xE7\xE3o.","uso: /memory [forget|edit|pin|unpin <id>]"]}};case"todo":return{kind:"note",note:{title:"todo",lines:["vejo/gerencio o backlog de tarefas anotadas pelo agente (persistente).","o agente anota pedidos com a tool add_todo; voc\xEA gerencia com /todo.","uso: /todo [done <id>|clear]"]}};case"history":return{kind:"note",note:{title:"history",lines:["lista as sess\xF5es anteriores (data \xB7 diret\xF3rio \xB7 1\xAA mensagem) e RETOMA a","escolhida sem sair do aluy \u2014 a conversa antiga reaparece e voc\xEA continua.","no TTY: \u2191\u2193 navega \xB7 enter retoma \xB7 esc cancela. no n\xE3o-TTY: `/history <id>`."]}};case"ask":return{kind:"note",note:{title:"/ask",lines:["`/ask <pergunta>` responde em PARALELO, sem parar o trabalho em curso \u2014","read-only (n\xE3o toca arquivos nem o hist\xF3rico). Dispon\xEDvel no modo interativo."]}};case"rooms":return{kind:"note",note:{title:"/rooms",lines:["`/rooms` (ou `list`) lista as salas (c\xF3digo \xB7 msgs \xB7 atividade \xB7 quem);","`/rooms new` cria; `/rooms read [c\xF3digo]` snapshot \u2014 SEM c\xF3digo abre um PICKER","pra escolher a sala; `/rooms watch <c\xF3digo>` observa AO VIVO. Modo interativo."]}};case"subagent":return{kind:"note",note:{title:"/subagent",lines:["`/subagent <nome>` abre uma conversa 1:1 FOCADA e cont\xEDnua com um perfil `.md`;","sua entrada vai S\xD3 p/ ele (escopo \u2286 voc\xEA). `/back` volta ao principal. Modo interativo."]}};case"back":return{kind:"note",note:{title:"/back",lines:["`/back` sai do foco de `/subagent` e volta ao agente principal."]}};case"rename":return{kind:"note",note:{title:"rename",lines:["dou um NOME amig\xE1vel + uma COR de identifica\xE7\xE3o \xE0 sess\xE3o corrente:"," /rename <nome> \u2192 nome + cor autom\xE1tica (est\xE1vel pelo nome)"," /rename <nome> --cor <cor> \u2192 nome + cor escolhida (paleta do DS)"," /rename \u2192 mostra o nome/cor atuais"," /rename --limpar \u2192 remove o r\xF3tulo (volta ao default)","o \u25CF+nome aparece no composer e no /history. \xE9 s\xF3 identifica\xE7\xE3o local","(dado de UI) \u2014 nunca sai da sua m\xE1quina."]}};case"clear":return{kind:"clear"};case"compact":return{kind:"note",note:{title:"compact",lines:["resumo a conversa at\xE9 aqui num sum\xE1rio denso (decis\xF5es, estado, arquivos","tocados) e continuo a sess\xE3o com o contexto reduzido \u2014 libera a janela.","o resumo \xE9 gerado pelo modelo via broker; nada sai do dado para instru\xE7\xE3o."]}};case"theme":return Eu("",Do[0].name);case"lang":return Qw("",Pt[0].code);case"cycle":return{kind:"note",note:{title:"cycle",lines:['rodo uma tarefa em CICLOS: `/cycle <intervalo|--por dur> "tarefa"`.',"cada ciclo passa pela MESMA catraca (n\xE3o \xE9 bypass); cercado por PARADAS","DURAS (dura\xE7\xE3o \xB7 itera\xE7\xF5es \xB7 budget agregado \xB7 conclus\xE3o) e par\xE1vel a","qualquer hora. sem teto \u21D2 N\xC3O inicia (prote\xE7\xE3o contra loop infinito).","dois ritmos: fixo (intervalo/--por) e --auto (o agente decide o ritmo)."]}};case"cron":return{kind:"note",note:{title:"cron",lines:["agendamento PERSISTENTE (mesmo motor do `aluy cron`):",'`/cron list` \xB7 `/cron add <quando> "<tarefa>" [--yolo]` \xB7 `/cron edit <id> \u2026`',"`/cron enable|disable <id>` \xB7 `/cron rm <id>`. <quando> = cron de 5 campos."]}};case"notify":return Jw("",{enabled:!1,tty:!0});case"split":return{kind:"note",note:{title:"split",lines:["liga/desliga o MODO VIEW AVAN\xC7ADO (split CHAT | LOG) \u2014 o painel de LOG de","atividade (agrupado por agente) ao lado da conversa. Tamb\xE9m via Ctrl+L.","\u2265100 col: lado-a-lado \xB7 60\u201399 col: abas (Tab alterna) \xB7 <60 col: desabilita.","a prefer\xEAncia PERSISTE entre sess\xF5es (ui.splitView)."]}};case"fullscreen":return{kind:"note",note:{title:"fullscreen",lines:["liga/desliga o MODO COCKPIT (tela cheia, alt-screen): 6 regi\xF5es fixas","(header/conversa/log/status/composer/hints), cada uma com scroll pr\xF3prio.","perde o scrollback/copy-paste NATIVOS \u2014 use /export ou ctrl+s p/ o transcript","redigido. INLINE \xE9 o DEFAULT \u2014 /fullscreen sai e volta a ele. <80 col cai pro","inline com aviso. a prefer\xEAncia PERSISTE (ui.fullscreen). s\xF3 vale em TTY."]}};case"mcp":return{kind:"note",note:{title:"mcp",lines:["lista os servers MCP (de ~/.aluy/mcp.json, do .mcp.json do projeto e do","Codex), com origem, command, estado (\u2713 ativo / \u25CB desativado) e as tools.","gerencie sem editar o JSON \xE0 m\xE3o, direto na sess\xE3o:"," /mcp add <nome> -- <command> [args...] \xB7 /mcp remove <nome>"," /mcp disable <nome> (desliga sem desinstalar) \xB7 /mcp enable <nome>","as tools MCP passam pela catraca (efeito \u21D2 confirma\xE7\xE3o); nunca auto-allow.","descubra novos no registro oficial: `/mcp search <termo>`."]}};case"agents":return{kind:"note",note:{title:"agents",lines:["lista os perfis de sub-agente .md que o aluy mapeou \u2014 GLOBAIS","(~/.aluy/agents/*.md, config do dono) e de PROJETO (.claude/agents/*.md, dado","do repo), com nome, escopo, tools (\u2286 pai) e a persona. Mostra tamb\xE9m os","rejeitados (.md malformado / `tools:` ileg\xEDvel) com o motivo.","s\xE3o os perfis que o spawn_agent (sub-agentes) invoca por nome."]}};case"skills":return{kind:"note",note:{title:"skills",lines:["lista as skills (SKILL.md) que o aluy mapeou \u2014 GLOBAIS","(~/.aluy/skills/<nome>/SKILL.md, config do dono) e de PROJETO","(.claude/skills/<nome>/SKILL.md, dado do repo), com nome, escopo e descri\xE7\xE3o.","Mostra tamb\xE9m as rejeitadas (sem name / corpo vazio) com o motivo.","uma skill \xE9 uma capacidade empacotada cujas instru\xE7\xF5es s\xE3o injetadas sob demanda."]}};case"workflows":return{kind:"note",note:{title:"workflows",lines:["lista os workflows .md que o aluy mapeou \u2014 GLOBAIS","(~/.aluy/workflows/*.md, config do dono) e de PROJETO (.aluy/workflows/*.md,","dado do repo), com nome, descri\xE7\xE3o e N atividades. Mostra tamb\xE9m os rejeitados","(.md malformado / sem name / sem atividades) com o motivo.","workflows s\xE3o fluxos de atividades que coordenam o agente (fatia 2: run)."]}};case"add-dir":return{kind:"note",note:{title:"add-dir",lines:["autoriza um diret\xF3rio EXTRA al\xE9m da raiz do workspace \u2014 o agente passa a","ler/editar/navegar nele (a conten\xE7\xE3o dura continua valendo em cada raiz).","ATO DO USU\xC1RIO: o agente n\xE3o tem ferramenta p/ se auto-ampliar.","uso: /add-dir <path> \xB7 sem args lista as ra\xEDzes \xB7 vale s\xF3 nesta sess\xE3o."]}};case"quit":return{kind:"quit"}}}function Xw(t,e){return!e||e===""?t:t===e?"~":t.startsWith(e+"/")?`~${t.slice(e.length)}`:t}function XF(t,e,o=process.env.HOME){let n=t.trim();if(n==="")return{title:"add-dir",lines:["ra\xEDzes autorizadas desta sess\xE3o (o agente l\xEA/edita/navega s\xF3 dentro delas):",...e.roots.map((a,l)=>`${l===0?"\u25CF ":"+ "}${Xw(a,o)}${l===0?" (raiz do workspace)":""}`),"adicione outra com `/add-dir <path>` \u2014 vale s\xF3 nesta sess\xE3o."]};let r=e.roots,s;try{s=e.addRoot(n)}catch(i){return{title:"add-dir",lines:[i instanceof Error?i.message:`n\xE3o foi poss\xEDvel autorizar "${n}".`,"uso: /add-dir <path> \u2014 o diret\xF3rio precisa existir. nada mudou."]}}return e.roots.length===r.length?{title:"add-dir",lines:[`${Xw(s,o)} j\xE1 est\xE1 autorizado \u2014 nada a fazer.`]}:{title:"add-dir",lines:[`\u2713 ${Xw(s,o)} adicionado \u2014 o agente pode ler/editar/navegar nele.`,"vale s\xF3 nesta SESS\xC3O (n\xE3o persiste). `/add-dir` sem args lista as ra\xEDzes."]}}function JF(t,e){let o=[];if(e&&o.push(`\u26A0 config: ${e}`),t.length===0)return o.push("nenhum server MCP configurado."),o.push("adicione sem sair daqui: /mcp add <nome> -- <command> [args...]"),{title:"mcp",lines:o};for(let n of t){let r=n.state.kind==="ok"?`\u2713 ativo \xB7 ${n.state.toolCount} tool${n.state.toolCount===1?"":"s"}`:n.state.kind==="disabled"?"\u25CB desativado":n.state.kind==="error"?`erro \xB7 ${n.state.error}`:"\u2014",s=n.managed?"":" [n\xE3o-gerenciado pelo aluy]";o.push(`${n.name} \u2014 ${Hc(n.origin)} \xB7 ${r}${s}`),o.push(` ${n.command}${n.args.length?" "+n.args.join(" "):""}`),n.envKeys.length&&o.push(` env: ${n.envKeys.join(", ")}`);let i=Qs(n);i!==void 0&&o.push(` \u26A0 ${i}`);for(let a of n.tools)o.push(` \u2022 ${a.qualifiedName}${a.description?` \u2014 ${a.description}`:""}`)}return o.push("gerencie daqui: /mcp add <nome> -- <command> [args...] \xB7 /mcp remove|disable|enable <nome>."),o.push("tools MCP passam pela catraca (efeito \u21D2 confirma\xE7\xE3o)."),o.push("busca no registro oficial aberto: `/mcp search <termo>`."),{title:"mcp",lines:o}}function QF(t){let e=t.trim();if(e==="")return null;let o=/^search(?:\s+([\s\S]*))?$/i.exec(e);return o?{query:(o[1]??"").trim().replace(/\s+/g," ")}:null}function ZF(t){let e=t.trim();if(e==="")return null;let o=e.split(/\s+/),n=o[0].toLowerCase();if(n!=="reconnect"&&n!=="reload")return null;let r=o.slice(1).join(" ")||"all";return{kind:n,scope:r}}function eB(){return{title:"mcp",lines:["uso: /mcp search <termo>","busca servers MCP no registro oficial aberto (sem login) e mostra a linha","`\u2192 aluy mcp add \u2026` pronta p/ copiar. ex.: /mcp search github"]}}function tB(t){return{title:"mcp",lines:[`buscando "${t}" no registro oficial\u2026`]}}function h9(t,e){let o=[],n={read_file:"l\xEA o conte\xFAdo de um arquivo",write_file:"cria um arquivo novo (ou reescreve com overwrite:true)",edit_file:"edita um arquivo existente substituindo um trecho exato",glob:"acha arquivos por padr\xE3o de caminho (ex.: **/*.ts)",grep:"busca uma substring literal em arquivos (n\xE3o regex)",run_command:"executa um comando de shell",run_tests:"roda testes (vitest/jest/pytest/go test) e mostra resultado",change_dir:"muda o diret\xF3rio de trabalho da sess\xE3o (cd)"},r={read:"leitura",write:"escrita",exec:"execu\xE7\xE3o"};o.push("ferramentas nativas (8):");let s=Object.entries(n).map(([i,a])=>{let l=i==="run_command"||i==="run_tests"?"exec":i==="write_file"||i==="edit_file"?"write":"read";return[i,r[l]??l,a]});if(o.push(...gr(["ferramenta","efeito","o que faz"],s,{maxWidths:[14,9,48]})),t&&t.length>0){o.push(""),o.push(`ferramentas MCP (${t.length} server(s)):`);for(let i of t){let a=i.state.kind==="ok"?`\u2713 ${i.state.toolCount}`:i.state.kind==="error"?"\u2717 erro":i.state.kind==="disabled"?"\u26A0 desabilitado":"? desconhecido";if(o.push(` mcp__${i.name} (${i.command}) \u2014 ${a}`),i.state.kind==="ok")for(let l of i.tools){let c=l.description?` \u2014 ${l.description}`:"";o.push(` ${l.qualifiedName}${c}`)}}}else o.push(""),o.push("MCP: use /mcp para ver os servers e suas ferramentas.");return o.push(""),o.push("delega\xE7\xE3o:"),o.push(" spawn_agent \u2014 delega subtarefas a sub-agentes locais paralelos"),o.push(" room_post / room_read \u2014 conversa entre agentes em sala"),o.push(""),o.push("permiss\xE3o (catraca):"),e?o.push(" \u26A0 MODO YOLO \u2014 catraca DESLIGADA: tudo \xE9 auto-aprovado."):o.push(" leitura = allow \xB7 escrita/bash = ask \xB7 rede/destrutivo = sempre-ask"),{title:"tools",lines:o}}async function oB(t,e){let{text:o}=await Qx(t,e);return{title:"mcp",lines:o.split(`
@@ -653,8 +653,8 @@ Notas:
653
653
  `),!0}function SB(t){switch(t.kind){case"testrun":{let e=t.score;return e.unknownFormat?"[testes] placar indispon\xEDvel (formato n\xE3o reconhecido)":`[testes] ${e.passed} \u2713 ${e.failed} \u2717 (${e.total})`}case"you":return`[voc\xEA] ${t.text}`;case"aluy":{let e=Kr(t.text);return e.trim()===""?"":`[aluy] ${e}`}case"tool":return t.status==="running"?`[tool] ${t.verb} ${t.target} \u2014 ${t.verbGerund??"rodando"}`:`[tool] ${t.verb} ${t.target} \u2014 ${t.result} ${t.status==="ok"?"ok":"erro"}`;case"bang":{if(t.status==="running")return`[shell] $ ${t.command} \u2014 rodando`;let e=t.status==="blocked"?"bloqueado":t.status==="ok"?"ok":"erro",o=t.output&&t.output.trim()!==""?`
654
654
  ${t.output}`:"";return`[shell] $ ${t.command} \u2014 ${e}${o}`}case"subagents":{let e=`[sub-agentes] ${t.children.length}:`,o=t.children.map(n=>{let r=n.status==="running"?"rodando":n.status==="done"?"pronto":n.stop==="timeout"?"timeout":n.stop==="limit"?"teto":"falhou",s=n.summary!==void 0&&n.status!=="running"?` \xB7 ${n.summary}`:"";return` [${n.label}] ${r}${s}`});return[e,...o].join(`
655
655
  `)}case"deny":return`[negado] ${t.verb} ${t.exact}`;case"broker-error":return`[erro de broker] ${t.message}${t.status!==void 0?` (${t.status})`:""}`;case"note":return`[${t.title}] ${t.lines.join(" \xB7 ")}`;case"doctor":{let e="[doctor]",o=t.checks.flatMap(r=>{let s=r.status==="ok"?"\u2713":r.status==="warn"?"\u26A0":r.status==="fail"?"\u2717":"\u25F7",i=r.detail!==void 0&&r.detail!==""?`: ${r.detail}`:": testando\u2026",a=` ${s} ${r.label}${i}`;return r.status!=="ok"&&r.status!=="pending"&&r.fix!==void 0?[a,` \u2192 ${r.fix}`]:[a]}),n=t.summary!==void 0?[` resumo: ${t.summary}`]:[];return[e,...o,...n].join(`
656
- `)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var v9,rA=p(()=>{"use strict";N();Pd();_r();Zw();eA();oA();nA();v9="-".repeat(12)});import{useEffect as _o,useState as ze,useReducer as k9,useCallback as Ut,useMemo as wB,useRef as ln}from"react";import{Box as le,Static as x9,Text as S9,useApp as w9,useInput as A9,useStdin as E9,useStdout as T9}from"ink";import{Fragment as TB,jsx as C,jsxs as fo}from"react/jsx-runtime";function _B(t){let{controller:e}=t,{exit:o}=w9(),{stdout:n}=T9(),r=ne(),{lang:s,t:i}=ke(),[,a]=k9(x=>x+1,0);_o(()=>{if(!n||typeof n.on!="function")return;let x=()=>a();return n.on("resize",x),()=>{typeof n.off=="function"&&n.off("resize",x)}},[n]);let l=n?.columns??80,c=n?.rows??24,d=r.density!=="compact",m=r.density!=="compact",[u,h]=ze(e.current),[g,y]=ze({text:"",cursor:0}),b=g.text,w=g.cursor,[T,E]=ze(!1),[L,B]=ze(0),[j,z]=ze(()=>new Set),[V,I]=ze(!1),[J,Q]=ze(""),K=u.phase==="questioning"?u.pendingQuestion?.spec:void 0,D=ln(void 0);_o(()=>{K!==D.current&&(D.current=K,B(0),z(new Set),Q(""),I(K?.kind==="text"))},[K]);let[X,Oe]=ze(0),[Y,ce]=ze(!1),[O,se]=ze(0),[de,ye]=ze([]),[Z,te]=ze(-1),[Me,Ht]=ze([]),pt=ln([]),at=ln(0);pt.current=Me,Me.length===0&&(at.current=0);let At=Ut(x=>{pt.current=[...pt.current,x],Ht(v=>[...v,x])},[]),dt=Ut(()=>{pt.current=[],Ht([]),at.current=0},[]),[ht,F]=ze(!1),[W,Be]=ze(0),[ue,xe]=ze(null),[Ze,tr]=ze(t.initialSplitView===!0),[Ro,Uo]=ze(!1),[oe,U]=ze("chat"),[k,Xe]=ze(()=>new Set),[Co,Ie]=ze(0),[Ts,Pi]=ze(!1),[qt,Nr]=ze(t.initialFullscreen===!0),[_s,Rs]=ze("conversa"),[Mu,jo]=ze(0),[cn,dn]=ze(!1),Oo=ln(void 0),po=ln(!1),Zt=ln(void 0),Ho=Ut(()=>{Oo.current!==void 0&&(clearTimeout(Oo.current),Oo.current=void 0),dn(!1)},[]);_o(()=>()=>{Oo.current!==void 0&&clearTimeout(Oo.current),Zt.current!==void 0&&clearTimeout(Zt.current)},[]);let Ii=b.length===0?1:b.split(`
657
- `).length,Dr=qt?e.flowOverview():[],un=qt?Ww(Dr,x=>e.drillInFlow(x),{collapsed:k,errorsOnly:Ts}).sections:[],H=Dr.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,he=qt?{lines:OF(un),hasActivity:un.length>0,activeAgents:H,focused:_s==="log"}:void 0,Je=As(c,l,Ii,he),gt=qt&&Je.kind==="cockpit",xt=_F(l,Ze),Et=xt.layout,$r=Et==="side"||Et==="tabs"&&oe==="log",or=$r&&Ro,fe=Y$({fileIndex:t.fileIndex??_9,attachReader:t.attachReader??R9}),$=J$({catalog:t.catalog??C9,...t.customModels?{customModels:t.customModels}:{},currentTier:u.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),ho=eF(t.permissionControl??L9),ml=t.currentTheme??ei(r.brightness),Tt=rF({currentTheme:ml}),Ni=t.currentLang??s,We=lF({currentLang:Ni}),Di=(u.meta.provider??"")!==""?u.meta.provider:t.currentProvider,Ot=uF({...Di!==void 0?{currentProvider:Di}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Lu=wB(()=>XD(Fo,i),[i]),yt=fF({store:t.sessionStore??O9}),fl=t.rewindSource??M9,Le=hF({source:fl}),Pu=wB(()=>Le.target?fl.barriersAfter(Le.target.id):[],[Le.target,fl]),Ge=yF({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Lu}),pl=t.syncActive??!0,qh=xF(u.phase,pl)||N9(u.blocks),nr=bu({enabled:r.animate&&qh}),Iu=SF(u.phase);bu({enabled:Iu,intervalMs:1e3}),_o(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),_o(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(As(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{Nr(!1);let v=As(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let A=ln(t.initialFullscreen===!0&&Je.kind==="cockpit"),q=ln(t.initialFullscreen===!0);_o(()=>{let x=q.current!==qt;if(q.current=qt,!qt){A.current=!1;return}let v=Je.kind==="cockpit";if(x){A.current=v;return}let S=A.current;if(S&&!v){t.cockpitScreen?.leave();let _=Je.kind==="refuse"&&Je.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[_])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();A.current=v},[c,l,qt]);let{stdin:be}=E9();_o(()=>{if(!be)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),dt();return}let _=LN(S);_==="home"?y(ie=>({...ie,cursor:0})):_==="end"&&y(ie=>({...ie,cursor:ie.text.length}))};return be.on("data",x),()=>{be.removeListener("data",x)}},[be,e,dt,y]),_o(()=>{if(u.phase!=="boot")return;let x=t.bootMs??900;if(x<=0)return;let v=setTimeout(()=>e.dismissBoot(),x);return()=>clearTimeout(v)},[u.phase,e,t.bootMs]),_o(()=>{u.phase!=="stuck"&&T&&E(!1)},[u.phase,T]);let R=t.userCommands??[],M=b.startsWith("/")?b.slice(1):"",G=QD(M,R,Lu),ee=Ut((x,v)=>{y({text:x,cursor:Rt(x,v??x.length)})},[]),ge=Ut(x=>{ce(XS(x,t.userCommands??[])),se(0)},[t.userCommands]),Ke=Ut(()=>{Mh("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),Oe(x=>x+1)},[n]),eo=t.registerClearScreen;_o(()=>{eo?.(Ke)},[eo,Ke]),_o(()=>{Mh(`slashOpen=${Y} (rows=${c} cols=${l})`)},[Y,c,l]);let go=ln({rows:c,columns:l});_o(()=>{if(qt){go.current={rows:c,columns:l};return}let x=go.current;if(x.rows===c&&x.columns===l)return;Mh(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),go.current={rows:c,columns:l};let v=setTimeout(()=>Ke(),90);return()=>clearTimeout(v)},[c,l,qt,Ke]);let qo=Ut(()=>{tr(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(Uo(!1),U("chat")),v})},[t]),rr=Ut(()=>{if(process.env.ALUY_FULLSCREEN!=="1"){e.replaceNote("fullscreen",["O modo tela cheia (/fullscreen) est\xE1 desativado nesta vers\xE3o \u2014 ainda em ajustes.","A sess\xE3o continua no modo inline (o padr\xE3o), que \xE9 o recomendado."]);return}Nr(x=>{let v=!x,S=As(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let _=As(c,l),ie=_.kind==="refuse"&&_.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[ie])}else t.cockpitScreen?.leave(),Ke(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Rs("conversa"),jo(0),Ie(0)},[t,e,i,c,l,Ke]),Mt=Ut((x,v)=>{if(x.id==="split"){qo();return}if(x.id==="fullscreen"){rr();return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){$.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){ho.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){yt.openPicker();return}Ke(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Le.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Tt.openPicker();return}let _=Sr(S);if(_){t.onSelectTheme(_.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){We.openPicker();return}let _=os(S);if(_){t.onSelectLang(_.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){Ot.openPicker();return}let _=_h(S,Ot.providers);if(_){t.onSelectProvider(_.name);return}}t.onCommand?.(x,v)},[t,$,ho,Tt,We,Ot,yt,Le,Ke,qo]),$i=Ut(x=>{if(x.action.kind==="command"){Mt(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[Mt,e]),Fr=Ut(x=>{let v=el(x,R);if(v.kind==="goal"){if(v.text!==""){if(fi(v.text).length>0&&t.attachReader){let _=fe.attachments.map(ie=>ie.item);_u(v.text,t.attachReader).then(({goal:ie,items:Qe})=>{if(ie===""&&Qe.length===0){fe.clear();return}let Re=[..._,...Qe],yo=ie!==""?ie:v.text;ye(Jh=>[...Jh,yo]),e.submit(yo,Re),fe.clear()});return}let S=fe.attachments.map(_=>_.item);ye(_=>[..._,v.text]),e.submit(v.text,S),fe.clear()}return}if(v.kind==="command"){Mt(v.command,v.args);return}if(v.kind==="bang"){ye(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,R,fe,Mt,t.attachReader]),Ae=Ut(x=>{let v=el(x,R);return v.kind!=="goal"||v.text===""||fe.attachments.length>0||fi(v.text).length>0?!1:e.injectInput("root",v.text)},[e,R,fe]),Ce=Ut(x=>{let v=el(x,R);return v.kind!=="command"||!zS(v.command,v.args)?!1:(Mt(v.command,v.args),!0)},[R,Mt]),sr=Ut(x=>{if(pt.current.length>0){At(x);return}let v=el(x,R),S=v.kind==="goal"?v.text:"";if(EF({subagentsRunning:EB(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:fe.attachments.length>0||S!==""&&fi(S).length>0})){e.askParallel(S);return}!Ae(x)&&!Ce(x)&&At(x)},[At,Ae,Ce,e,R,fe]),Br=ln();Br.current||(Br.current=nN());let mn=ln();mn.current||(mn.current=HF());let ir=Ut(x=>{let v=zF(x,mn.current);return mn.current.reset(),v},[]),hl=Ut(x=>{let v=GF(x,mn.current,"backward");return v.handled?(v.removedId!==void 0&&mn.current.remove(v.removedId),v.state):pS(x)},[]),Wh=ln({open:!1}),Mo=Ut(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),fe.dismissNotice();let v=jF(x);y(S=>{let _=v?qF(S,x,mn.current):ki(S,x);return ge(_.text),Wo(_.text),_}),te(-1)},[e,fe,ge]);_o(()=>{if(!be)return;let x=Br.current,v=S=>{let _=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!_.includes("\x1B[20"))return;let ie=x.feed(_);for(let Qe of ie)Qe.kind==="paste"&&Mo(Qe.text)};return be.on("data",v),()=>{be.removeListener("data",v)}},[be,Mo]);let _n=fe.open||$.open||ho.open||Tt.open||We.open||Ot.open||yt.open||Le.open||Ge.open,Fi=cP({...u,anyPickerOpen:_n});_o(()=>{if(!Fi||Me.length===0)return;let x=Me[0]??"",v=el(x,R);if(v.kind==="command"&&v.command.id==="clear"){dt(),Fr(x);return}Ht(S=>S.slice(1)),Fr(x)},[Fi,Me,Fr,R,dt]),A9((x,v)=>{if(!oN(Wh.current,x)){if(u.phase==="boot"){if(v.ctrl&&x==="c"){o();return}if(x&&!v.ctrl&&!v.meta){e.dismissBoot();let S=x.search(/[\r\n]/);S!==-1?Fr(b+x.slice(0,S)):y(_=>{let ie=_.text+x;return ce(XS(ie,t.userCommands??[])),{text:ie,cursor:ie.length}});return}e.dismissBoot();return}if(gt&&!Y&&!fe.open&&!Ge.open&&u.phase!=="asking"){if(v.tab&&!v.shift){Rs(_=>_==="conversa"?"log":"conversa");return}if(v.ctrl&&(x==="s"||x==="")){t.onExportTranscript?t.onExportTranscript().then(_=>{_.ok&&_.path?e.pushNote("export",[`${i("cockpit.exported")} ${_.path}`]):e.pushNote("export",[_.error??"export indispon\xEDvel"])}):e.pushNote("export",["export indispon\xEDvel nesta sess\xE3o"]);return}let S=Je.kind==="cockpit"?Je:void 0;if(S){let _=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(_!==void 0){if(_s==="conversa"){let ie=Math.max(1,S.regions.conversaRows-1);jo(Qe=>Gw(_,Qe,u.blocks.length,ie))}else{let ie=Math.max(1,S.regions.logRows-1);Ie(Qe=>Gw(_,Qe,un.length+1,ie))}return}}}if(!ht){if(v.ctrl&&x==="l"){Ze&&Et==="tabs"?(U(S=>S==="chat"?"log":"chat"),Uo(S=>!S)):qo();return}if(v.tab&&!v.shift&&$r){Et==="tabs"?(U(S=>S==="chat"?"log":"chat"),Uo(S=>!S)):Uo(S=>!S);return}if(or){if(v.escape){Uo(!1);return}if(v.upArrow){Ie(S=>S+1);return}if(v.downArrow){Ie(S=>Math.max(0,S-1));return}if(v.pageUp){Ie(S=>S+Li);return}if(v.pageDown){Ie(S=>Math.max(0,S-Li));return}if(v.return){Xe(S=>{let _=new Set(S);return _.has("root")?_.delete("root"):_.add("root"),_});return}if(x==="e"&&!v.ctrl&&!v.meta){Pi(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(ht){if(ue){if(v.escape||v.return){xe(null);return}if(x==="p"){e.cancelFlow(ue);return}if(x==="i"){b.trim()!==""&&(e.injectInput(ue,b),ee(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){F(!1);return}if(v.upArrow){Be(_=>Math.max(0,_-1));return}if(v.downArrow){Be(_=>Math.min(Math.max(0,S.length-1),_+1));return}if(v.return){let _=S[Math.min(W,S.length-1)];_&&xe(_.id);return}if(x==="p"){let _=S[Math.min(W,S.length-1)];_&&e.cancelFlow(_.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let _=S[Math.min(W,S.length-1)];_&&b.trim()!==""&&(e.injectInput(_.id,b),ee(""));return}return}if(u.phase==="asking"&&u.pendingAsk){let S=u.pendingAsk.request.alwaysAsk;return x==="a"?e.resolveAsk({kind:"approve-once"}):x==="s"&&S===!1?e.resolveAsk({kind:"approve-session"}):x==="n"?e.resolveAsk({kind:"deny",reason:"negado pelo usu\xE1rio"}):v.escape?e.resolveAsk({kind:"deny",reason:"cancelado (esc)"}):x==="e"?e.resolveAsk({kind:"deny",reason:"editar (n\xE3o aplicado)"}):void 0}if(u.phase==="questioning"&&u.pendingQuestion){let S=u.pendingQuestion.spec,_=S.options??[],ie=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(V&&S.kind!=="text"){I(!1),Q("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(V){if(v.return){let Re=J.trim();return Re===""?void 0:e.resolveQuestion({kind:"text",text:Re})}if(v.backspace||v.delete){Q(Re=>Re.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){Q(Re=>Re+x);return}return}let Qe=_.length-1;if(v.upArrow){B(Re=>Re===zn?Qe:Re<=0?ie?zn:Qe:Re-1);return}if(v.downArrow){B(Re=>Re===zn?0:Re>=Qe?ie?zn:0:Re+1);return}if(S.kind==="multi"&&x===" "&&L!==zn&&L>=0){z(Re=>{let yo=new Set(Re);return yo.has(L)?yo.delete(L):yo.add(L),yo});return}if(v.return){if(L===zn){I(!0);return}if(S.kind==="multi"){let yo=[...j].sort((yl,fU)=>yl-fU),Jh=yo.map(yl=>_[yl]?.label??"").filter(yl=>yl!=="");return e.resolveQuestion({kind:"choices",indices:yo,labels:Jh})}let Re=_[L];return Re?e.resolveQuestion({kind:"choice",index:L,label:Re.label}):void 0}return}if(u.phase==="budget"){if(x==="n")return o();if(x==="c"){e.continueAfterBudget();return}if(x==="k"&&e.canCompact){e.compactAfterBudget();return}return}if(u.pendingUnsafeConfirm===!0){if(x==="s"||x==="y"){e.confirmUnsafe();return}if(x==="n"||v.escape){e.cancelUnsafe();return}return}if(u.phase==="stuck")if(T){if(v.escape){E(!1);return}if(v.return&&!v.shift){let S=g.text;y({text:"",cursor:0}),E(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){E(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(I9(u.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),dt();return}if(u.phase==="thinking"||u.phase==="streaming"||u.phase==="retrying"){if(v.ctrl&&x==="t"){xe(null),Be(0),F(!0);return}if(Y){if(v.upArrow){se(_=>Math.max(0,_-1));return}if(v.downArrow){se(_=>Math.min(G.length-1,_+1));return}if(v.escape){ce(!1),se(0);return}if(v.tab){let _=G[O];if(_){let ie=ah(_);ee(ie),ge(ie)}return}if(v.return&&!v.shift){let _=G[O];if(_&&_.kind==="subcommand"&&VS(_)){ce(!1),se(0);let ie=VD(_);At(ie),ye(Qe=>[...Qe,ie]),ee(""),te(-1);return}if(_&&_.kind==="subcommand"){let ie=ah(_);ee(ie),ge(ie);return}if(ce(!1),se(0),_){if(zS(_.command,"")){Mt(_.command,""),ee(""),te(-1);return}let ie=`/${_.command.name}`;At(ie),ye(Qe=>[...Qe,ie]),ee(""),te(-1)}return}}if(v.escape||v.ctrl&&x==="c"){let _=pt.current.length>0,ie=Date.now(),Qe=_&&ie-at.current<500;if(at.current=ie,_&&!Qe&&v.escape){let Re=ir(b).trim();Re!==""&&(At(Re),ye(yo=>[...yo,Re]),ee(""),te(-1));return}if(b.trim()!==""){let Re=vF(ir(b));if(Re.kind==="redirect"){e.injectInput("root",Re.inject),ee(""),ye(yo=>[...yo,Re.inject]),te(-1);return}}e.interrupt(),dt();return}if(v.return&&v.ctrl||!v.return&&x===`
656
+ `)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var v9,rA=p(()=>{"use strict";N();Pd();_r();Zw();eA();oA();nA();v9="-".repeat(12)});import{useEffect as _o,useState as ze,useReducer as k9,useCallback as Ut,useMemo as wB,useRef as ln}from"react";import{Box as le,Static as x9,Text as S9,useApp as w9,useInput as A9,useStdin as E9,useStdout as T9}from"ink";import{Fragment as TB,jsx as C,jsxs as fo}from"react/jsx-runtime";function _B(t){let{controller:e}=t,{exit:o}=w9(),{stdout:n}=T9(),r=ne(),{lang:s,t:i}=ke(),[,a]=k9(x=>x+1,0);_o(()=>{if(!n||typeof n.on!="function")return;let x=()=>a();return n.on("resize",x),()=>{typeof n.off=="function"&&n.off("resize",x)}},[n]);let l=n?.columns??80,c=n?.rows??24,d=r.density!=="compact",m=r.density!=="compact",[u,h]=ze(e.current),[g,y]=ze({text:"",cursor:0}),b=g.text,w=g.cursor,[T,E]=ze(!1),[L,B]=ze(0),[j,z]=ze(()=>new Set),[V,I]=ze(!1),[J,Q]=ze(""),K=u.phase==="questioning"?u.pendingQuestion?.spec:void 0,D=ln(void 0);_o(()=>{K!==D.current&&(D.current=K,B(0),z(new Set),Q(""),I(K?.kind==="text"))},[K]);let[X,Oe]=ze(0),[Y,ce]=ze(!1),[O,se]=ze(0),[de,ye]=ze([]),[Z,te]=ze(-1),[Me,Ht]=ze([]),pt=ln([]),it=ln(0);pt.current=Me,Me.length===0&&(it.current=0);let At=Ut(x=>{pt.current=[...pt.current,x],Ht(v=>[...v,x])},[]),ct=Ut(()=>{pt.current=[],Ht([]),it.current=0},[]),[ht,F]=ze(!1),[W,Be]=ze(0),[ue,xe]=ze(null),[Ze,tr]=ze(t.initialSplitView===!0),[Ro,Uo]=ze(!1),[oe,U]=ze("chat"),[k,Xe]=ze(()=>new Set),[Co,Ie]=ze(0),[Ts,Pi]=ze(!1),[qt,Nr]=ze(t.initialFullscreen===!0),[_s,Rs]=ze("conversa"),[Mu,jo]=ze(0),[cn,dn]=ze(!1),Oo=ln(void 0),po=ln(!1),Zt=ln(void 0),Ho=Ut(()=>{Oo.current!==void 0&&(clearTimeout(Oo.current),Oo.current=void 0),dn(!1)},[]);_o(()=>()=>{Oo.current!==void 0&&clearTimeout(Oo.current),Zt.current!==void 0&&clearTimeout(Zt.current)},[]);let Ii=b.length===0?1:b.split(`
657
+ `).length,Dr=qt?e.flowOverview():[],un=qt?Ww(Dr,x=>e.drillInFlow(x),{collapsed:k,errorsOnly:Ts}).sections:[],H=Dr.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,he=qt?{lines:OF(un),hasActivity:un.length>0,activeAgents:H,focused:_s==="log"}:void 0,Je=As(c,l,Ii,he),gt=qt&&Je.kind==="cockpit",xt=_F(l,Ze),Et=xt.layout,$r=Et==="side"||Et==="tabs"&&oe==="log",or=$r&&Ro,fe=Y$({fileIndex:t.fileIndex??_9,attachReader:t.attachReader??R9}),$=J$({catalog:t.catalog??C9,...t.customModels?{customModels:t.customModels}:{},currentTier:u.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),ho=eF(t.permissionControl??L9),ml=t.currentTheme??ei(r.brightness),Tt=rF({currentTheme:ml}),Ni=t.currentLang??s,We=lF({currentLang:Ni}),Di=(u.meta.provider??"")!==""?u.meta.provider:t.currentProvider,Ot=uF({...Di!==void 0?{currentProvider:Di}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Lu=wB(()=>XD(Fo,i),[i]),yt=fF({store:t.sessionStore??O9}),fl=t.rewindSource??M9,Le=hF({source:fl}),Pu=wB(()=>Le.target?fl.barriersAfter(Le.target.id):[],[Le.target,fl]),Ge=yF({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Lu}),pl=t.syncActive??!0,qh=xF(u.phase,pl)||N9(u.blocks),nr=bu({enabled:r.animate&&qh}),Iu=SF(u.phase);bu({enabled:Iu,intervalMs:1e3}),_o(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),_o(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(As(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{Nr(!1);let v=As(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let A=ln(t.initialFullscreen===!0&&Je.kind==="cockpit"),q=ln(t.initialFullscreen===!0);_o(()=>{let x=q.current!==qt;if(q.current=qt,!qt){A.current=!1;return}let v=Je.kind==="cockpit";if(x){A.current=v;return}let S=A.current;if(S&&!v){t.cockpitScreen?.leave();let _=Je.kind==="refuse"&&Je.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[_])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();A.current=v},[c,l,qt]);let{stdin:be}=E9();_o(()=>{if(!be)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),ct();return}let _=LN(S);_==="home"?y(ie=>({...ie,cursor:0})):_==="end"&&y(ie=>({...ie,cursor:ie.text.length}))};return be.on("data",x),()=>{be.removeListener("data",x)}},[be,e,ct,y]),_o(()=>{if(u.phase!=="boot")return;let x=t.bootMs??900;if(x<=0)return;let v=setTimeout(()=>e.dismissBoot(),x);return()=>clearTimeout(v)},[u.phase,e,t.bootMs]),_o(()=>{u.phase!=="stuck"&&T&&E(!1)},[u.phase,T]);let R=t.userCommands??[],M=b.startsWith("/")?b.slice(1):"",G=QD(M,R,Lu),ee=Ut((x,v)=>{y({text:x,cursor:Rt(x,v??x.length)})},[]),ge=Ut(x=>{ce(XS(x,t.userCommands??[])),se(0)},[t.userCommands]),Ke=Ut(()=>{Mh("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),Oe(x=>x+1)},[n]),eo=t.registerClearScreen;_o(()=>{eo?.(Ke)},[eo,Ke]),_o(()=>{Mh(`slashOpen=${Y} (rows=${c} cols=${l})`)},[Y,c,l]);let go=ln({rows:c,columns:l});_o(()=>{if(qt){go.current={rows:c,columns:l};return}let x=go.current;if(x.rows===c&&x.columns===l)return;Mh(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),go.current={rows:c,columns:l};let v=setTimeout(()=>Ke(),90);return()=>clearTimeout(v)},[c,l,qt,Ke]);let qo=Ut(()=>{tr(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(Uo(!1),U("chat")),v})},[t]),rr=Ut(()=>{if(process.env.ALUY_FULLSCREEN!=="1"){e.replaceNote("fullscreen",["O modo tela cheia (/fullscreen) est\xE1 desativado nesta vers\xE3o \u2014 ainda em ajustes.","A sess\xE3o continua no modo inline (o padr\xE3o), que \xE9 o recomendado."]);return}Nr(x=>{let v=!x,S=As(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let _=As(c,l),ie=_.kind==="refuse"&&_.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[ie])}else t.cockpitScreen?.leave(),Ke(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Rs("conversa"),jo(0),Ie(0)},[t,e,i,c,l,Ke]),Mt=Ut((x,v)=>{if(x.id==="split"){qo();return}if(x.id==="fullscreen"){rr();return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){$.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){ho.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){yt.openPicker();return}Ke(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Le.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Tt.openPicker();return}let _=Sr(S);if(_){t.onSelectTheme(_.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){We.openPicker();return}let _=os(S);if(_){t.onSelectLang(_.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){Ot.openPicker();return}let _=_h(S,Ot.providers);if(_){t.onSelectProvider(_.name);return}}t.onCommand?.(x,v)},[t,$,ho,Tt,We,Ot,yt,Le,Ke,qo]),$i=Ut(x=>{if(x.action.kind==="command"){Mt(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[Mt,e]),Fr=Ut(x=>{let v=el(x,R);if(v.kind==="goal"){if(v.text!==""){if(fi(v.text).length>0&&t.attachReader){let _=fe.attachments.map(ie=>ie.item);_u(v.text,t.attachReader).then(({goal:ie,items:Qe})=>{if(ie===""&&Qe.length===0){fe.clear();return}let Re=[..._,...Qe],yo=ie!==""?ie:v.text;ye(Jh=>[...Jh,yo]),e.submit(yo,Re),fe.clear()});return}let S=fe.attachments.map(_=>_.item);ye(_=>[..._,v.text]),e.submit(v.text,S),fe.clear()}return}if(v.kind==="command"){Mt(v.command,v.args);return}if(v.kind==="bang"){ye(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,R,fe,Mt,t.attachReader]),Ae=Ut(x=>{let v=el(x,R);return v.kind!=="goal"||v.text===""||fe.attachments.length>0||fi(v.text).length>0?!1:e.injectInput("root",v.text)},[e,R,fe]),Ce=Ut(x=>{let v=el(x,R);return v.kind!=="command"||!zS(v.command,v.args)?!1:(Mt(v.command,v.args),!0)},[R,Mt]),sr=Ut(x=>{if(pt.current.length>0){At(x);return}let v=el(x,R),S=v.kind==="goal"?v.text:"";if(EF({subagentsRunning:EB(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:fe.attachments.length>0||S!==""&&fi(S).length>0})){e.askParallel(S);return}!Ae(x)&&!Ce(x)&&At(x)},[At,Ae,Ce,e,R,fe]),Br=ln();Br.current||(Br.current=nN());let mn=ln();mn.current||(mn.current=HF());let ir=Ut(x=>{let v=zF(x,mn.current);return mn.current.reset(),v},[]),hl=Ut(x=>{let v=GF(x,mn.current,"backward");return v.handled?(v.removedId!==void 0&&mn.current.remove(v.removedId),v.state):pS(x)},[]),Wh=ln({open:!1}),Mo=Ut(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),fe.dismissNotice();let v=jF(x);y(S=>{let _=v?qF(S,x,mn.current):ki(S,x);return ge(_.text),Wo(_.text),_}),te(-1)},[e,fe,ge]);_o(()=>{if(!be)return;let x=Br.current,v=S=>{let _=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!_.includes("\x1B[20"))return;let ie=x.feed(_);for(let Qe of ie)Qe.kind==="paste"&&Mo(Qe.text)};return be.on("data",v),()=>{be.removeListener("data",v)}},[be,Mo]);let _n=fe.open||$.open||ho.open||Tt.open||We.open||Ot.open||yt.open||Le.open||Ge.open,Fi=cP({...u,anyPickerOpen:_n});_o(()=>{if(!Fi||Me.length===0)return;let x=Me[0]??"",v=el(x,R);if(v.kind==="command"&&v.command.id==="clear"){ct(),Fr(x);return}Ht(S=>S.slice(1)),Fr(x)},[Fi,Me,Fr,R,ct]),A9((x,v)=>{if(!oN(Wh.current,x)){if(u.phase==="boot"){if(v.ctrl&&x==="c"){o();return}if(x&&!v.ctrl&&!v.meta){e.dismissBoot();let S=x.search(/[\r\n]/);S!==-1?Fr(b+x.slice(0,S)):y(_=>{let ie=_.text+x;return ce(XS(ie,t.userCommands??[])),{text:ie,cursor:ie.length}});return}e.dismissBoot();return}if(gt&&!Y&&!fe.open&&!Ge.open&&u.phase!=="asking"){if(v.tab&&!v.shift){Rs(_=>_==="conversa"?"log":"conversa");return}if(v.ctrl&&(x==="s"||x==="")){t.onExportTranscript?t.onExportTranscript().then(_=>{_.ok&&_.path?e.pushNote("export",[`${i("cockpit.exported")} ${_.path}`]):e.pushNote("export",[_.error??"export indispon\xEDvel"])}):e.pushNote("export",["export indispon\xEDvel nesta sess\xE3o"]);return}let S=Je.kind==="cockpit"?Je:void 0;if(S){let _=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(_!==void 0){if(_s==="conversa"){let ie=Math.max(1,S.regions.conversaRows-1);jo(Qe=>Gw(_,Qe,u.blocks.length,ie))}else{let ie=Math.max(1,S.regions.logRows-1);Ie(Qe=>Gw(_,Qe,un.length+1,ie))}return}}}if(!ht){if(v.ctrl&&x==="l"){Ze&&Et==="tabs"?(U(S=>S==="chat"?"log":"chat"),Uo(S=>!S)):qo();return}if(v.tab&&!v.shift&&$r){Et==="tabs"?(U(S=>S==="chat"?"log":"chat"),Uo(S=>!S)):Uo(S=>!S);return}if(or){if(v.escape){Uo(!1);return}if(v.upArrow){Ie(S=>S+1);return}if(v.downArrow){Ie(S=>Math.max(0,S-1));return}if(v.pageUp){Ie(S=>S+Li);return}if(v.pageDown){Ie(S=>Math.max(0,S-Li));return}if(v.return){Xe(S=>{let _=new Set(S);return _.has("root")?_.delete("root"):_.add("root"),_});return}if(x==="e"&&!v.ctrl&&!v.meta){Pi(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(ht){if(ue){if(v.escape||v.return){xe(null);return}if(x==="p"){e.cancelFlow(ue);return}if(x==="i"){b.trim()!==""&&(e.injectInput(ue,b),ee(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){F(!1);return}if(v.upArrow){Be(_=>Math.max(0,_-1));return}if(v.downArrow){Be(_=>Math.min(Math.max(0,S.length-1),_+1));return}if(v.return){let _=S[Math.min(W,S.length-1)];_&&xe(_.id);return}if(x==="p"){let _=S[Math.min(W,S.length-1)];_&&e.cancelFlow(_.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let _=S[Math.min(W,S.length-1)];_&&b.trim()!==""&&(e.injectInput(_.id,b),ee(""));return}return}if(u.phase==="asking"&&u.pendingAsk){let S=u.pendingAsk.request.alwaysAsk;return x==="a"?e.resolveAsk({kind:"approve-once"}):x==="s"&&S===!1?e.resolveAsk({kind:"approve-session"}):x==="n"?e.resolveAsk({kind:"deny",reason:"negado pelo usu\xE1rio"}):v.escape?e.resolveAsk({kind:"deny",reason:"cancelado (esc)"}):x==="e"?e.resolveAsk({kind:"deny",reason:"editar (n\xE3o aplicado)"}):void 0}if(u.phase==="questioning"&&u.pendingQuestion){let S=u.pendingQuestion.spec,_=S.options??[],ie=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(V&&S.kind!=="text"){I(!1),Q("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(V){if(v.return){let Re=J.trim();return Re===""?void 0:e.resolveQuestion({kind:"text",text:Re})}if(v.backspace||v.delete){Q(Re=>Re.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){Q(Re=>Re+x);return}return}let Qe=_.length-1;if(v.upArrow){B(Re=>Re===zn?Qe:Re<=0?ie?zn:Qe:Re-1);return}if(v.downArrow){B(Re=>Re===zn?0:Re>=Qe?ie?zn:0:Re+1);return}if(S.kind==="multi"&&x===" "&&L!==zn&&L>=0){z(Re=>{let yo=new Set(Re);return yo.has(L)?yo.delete(L):yo.add(L),yo});return}if(v.return){if(L===zn){I(!0);return}if(S.kind==="multi"){let yo=[...j].sort((yl,fU)=>yl-fU),Jh=yo.map(yl=>_[yl]?.label??"").filter(yl=>yl!=="");return e.resolveQuestion({kind:"choices",indices:yo,labels:Jh})}let Re=_[L];return Re?e.resolveQuestion({kind:"choice",index:L,label:Re.label}):void 0}return}if(u.phase==="budget"){if(x==="n")return o();if(x==="c"){e.continueAfterBudget();return}if(x==="k"&&e.canCompact){e.compactAfterBudget();return}return}if(u.pendingUnsafeConfirm===!0){if(x==="s"||x==="y"){e.confirmUnsafe();return}if(x==="n"||v.escape){e.cancelUnsafe();return}return}if(u.phase==="stuck")if(T){if(v.escape){E(!1);return}if(v.return&&!v.shift){let S=g.text;y({text:"",cursor:0}),E(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){E(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(I9(u.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),ct();return}if(u.phase==="thinking"||u.phase==="streaming"||u.phase==="retrying"){if(v.ctrl&&x==="t"){xe(null),Be(0),F(!0);return}if(Y){if(v.upArrow){se(_=>Math.max(0,_-1));return}if(v.downArrow){se(_=>Math.min(G.length-1,_+1));return}if(v.escape){ce(!1),se(0);return}if(v.tab){let _=G[O];if(_){let ie=ah(_);ee(ie),ge(ie)}return}if(v.return&&!v.shift){let _=G[O];if(_&&_.kind==="subcommand"&&VS(_)){ce(!1),se(0);let ie=VD(_);At(ie),ye(Qe=>[...Qe,ie]),ee(""),te(-1);return}if(_&&_.kind==="subcommand"){let ie=ah(_);ee(ie),ge(ie);return}if(ce(!1),se(0),_){if(zS(_.command,"")){Mt(_.command,""),ee(""),te(-1);return}let ie=`/${_.command.name}`;At(ie),ye(Qe=>[...Qe,ie]),ee(""),te(-1)}return}}if(v.escape||v.ctrl&&x==="c"){let _=pt.current.length>0,ie=Date.now(),Qe=_&&ie-it.current<500;if(it.current=ie,_&&!Qe&&v.escape){let Re=ir(b).trim();Re!==""&&(At(Re),ye(yo=>[...yo,Re]),ee(""),te(-1));return}if(b.trim()!==""){let Re=vF(ir(b));if(Re.kind==="redirect"){e.injectInput("root",Re.inject),ee(""),ye(yo=>[...yo,Re.inject]),te(-1);return}}e.interrupt(),ct();return}if(v.return&&v.ctrl||!v.return&&x===`
658
658
  `&&!v.ctrl&&!v.meta){let _=ir(b).trim();_!==""&&(e.injectInput("root",_),ee(""),ye(ie=>[...ie,_]),te(-1));return}if(v.return&&v.shift){y(_=>ki(_,`
659
659
  `));return}if(v.return){let _=ir(b).trim();_!==""&&(sr(_),ye(ie=>[...ie,_]),ee(""),te(-1));return}if(v.backspace||v.delete){if(b===""&&Me.length>0){Ht(_=>_.slice(0,-1));return}y(_=>{let ie=hl(_);return ge(ie.text),ie});return}if(v.leftArrow){y(_=>({..._,cursor:v.meta?Jd(_):hS(_)}));return}if(v.rightArrow){y(_=>({..._,cursor:v.meta?Bp(_):gS(_)}));return}if(v.ctrl&&x==="a"){y(_=>({..._,cursor:0}));return}if(v.ctrl&&x==="e"){y(_=>({..._,cursor:_.text.length}));return}if(x&&!v.ctrl&&!v.meta){if(x.search(/[\r\n]/)!==-1){y(_=>{let ie=Xd(_,x),Qe=ir(ie.state.text).trim();return Qe!==""&&(ie.newline===`
660
660
  `?e.injectInput("root",Qe):sr(Qe),ye(Re=>[...Re,Qe])),te(-1),{text:"",cursor:0}}),ce(!1),se(0);return}y(_=>{let ie=Xd(_,x).state;return ge(ie.text),ie});return}return}if(u.phase==="error"){if(v.escape){e.dismissError(),Ke();return}if((x==="r"||x==="R")&&!v.ctrl&&!v.meta){e.retryLastGoal(),Ke();return}if(!(v.ctrl&&x==="c"))return}if(Ge.open){if(v.escape){Ge.closePalette();return}if(v.upArrow){Ge.move(-1);return}if(v.downArrow){Ge.move(1);return}if(v.return){let S=Ge.confirm();S&&$i(S);return}if(v.backspace||v.delete){Ge.setQuery(Ge.query.slice(0,-1));return}if(v.ctrl&&(x==="p"||x==="x"||x==="c")){Ge.closePalette();return}x&&!v.ctrl&&!v.meta&&Ge.setQuery(Ge.query+x);return}if($.open){if($.effortStepOpen){if($.effortCustomOpen){if(v.escape){$.backFromEffort();return}if(v.return){let S=$.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.backspace||v.delete){$.backspaceEffortCustom();return}x&&!v.ctrl&&!v.meta&&$.appendEffortCustom(x);return}if(v.upArrow){$.effortMove(-1);return}if(v.downArrow){$.effortMove(1);return}if(v.return||v.tab){let S=$.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.escape){$.backFromEffort();return}return}if($.customInputOpen){if(v.escape){$.closePicker();return}if(v.upArrow){$.browseMove(-1);return}if(v.downArrow){$.browseMove(1);return}if(v.return){$.confirm();return}if(v.backspace||v.delete){$.backspaceCustom();return}if(v.ctrl&&x==="t"){$.toggleToolsOnly();return}x&&!v.ctrl&&!v.meta&&$.appendCustom(x);return}if(v.upArrow){$.move(-1);return}if(v.downArrow){$.move(1);return}if(v.return||v.tab){$.confirm();return}if(v.escape){$.closePicker();return}return}if(ho.open){if(v.upArrow){ho.move(-1);return}if(v.downArrow){ho.move(1);return}if(v.return){ho.act();return}if(v.escape){ho.closePanel();return}return}if(Tt.open){if(v.upArrow){Tt.move(-1);return}if(v.downArrow){Tt.move(1);return}if(v.return||v.tab){let S=Tt.confirm();S&&t.onSelectTheme?.(S);return}if(v.escape){Tt.closePicker();return}return}if(We.open){if(v.upArrow){We.move(-1);return}if(v.downArrow){We.move(1);return}if(v.return||v.tab){let S=We.confirm();S&&t.onSelectLang?.(S);return}if(v.escape){We.closePicker();return}return}if(Ot.open){if(v.upArrow){Ot.move(-1);return}if(v.downArrow){Ot.move(1);return}if(v.return||v.tab){let S=Ot.confirm();S&&t.onSelectProvider?.(S);return}if(v.escape){Ot.closePicker();return}return}if(yt.open){if(v.upArrow){yt.move(-1);return}if(v.downArrow){yt.move(1);return}if(v.return||v.tab){let S=yt.confirm();S&&(Ke(),t.onResumeSession?.(S));return}if(v.escape){yt.closePicker();return}return}if(Le.open){if(v.upArrow){Le.move(-1);return}if(v.downArrow){Le.move(1);return}if(v.return){let S=Le.confirm();S&&t.onRewind?.(S);return}if(v.escape){Le.back();return}return}if(Y){if(v.upArrow){se(S=>Math.max(0,S-1));return}if(v.downArrow){se(S=>Math.min(G.length-1,S+1));return}if(v.return||v.tab){let S=G[O];if(S){let _=S.kind==="command"&&S.command.subcommands!==void 0&&S.command.subcommands.length>0;if(S.kind==="subcommand"&&VS(S)&&v.return){ee(""),ce(!1),se(0),Mt(S.parent,S.sub.name);return}if(S.kind==="subcommand"||_&&v.tab){let ie=ah(S);ee(ie),ge(ie);return}ee(""),ce(!1),se(0),Mt(S.command,"")}return}if(v.escape){ce(!1),se(0);return}}if(fe.open){if(v.upArrow){fe.move(-1);return}if(v.downArrow){fe.move(1);return}if(v.return||v.tab){fe.confirm(),ee(Tx(b));return}if(v.escape){fe.closePicker();return}}if(v.ctrl&&x==="c"){let S=PN(b,cn);if(S==="clear"){ee(""),Ho();return}if(S==="exit"){Ho(),o();return}dn(!0),Oo.current!==void 0&&clearTimeout(Oo.current),Oo.current=setTimeout(()=>dn(!1),2500);return}if(cn&&Ho(),v.escape){if(t.rewindSource!==void 0&&t.onRewind!==void 0&&b===""){if(po.current){po.current=!1,Zt.current!==void 0&&clearTimeout(Zt.current),Le.openPicker();return}po.current=!0,Zt.current!==void 0&&clearTimeout(Zt.current),Zt.current=setTimeout(()=>{po.current=!1},600);return}po.current=!1}else po.current&&(po.current=!1,Zt.current!==void 0&&clearTimeout(Zt.current));if(v.ctrl&&(x==="p"||x==="x")&&!Y&&!fe.open){Ge.openPalette();return}if(v.tab&&!Y){e.cycleMode();return}if(!Y&&v.upArrow&&de.length>0){let S=Z<0?de.length-1:Math.max(0,Z-1);te(S),ee(de[S]??"");return}if(!Y&&v.downArrow&&Z>=0){let S=Z+1;S>=de.length?(te(-1),ee("")):(te(S),ee(de[S]??""));return}if(v.leftArrow){y(S=>({...S,cursor:v.meta?Jd(S):hS(S)}));return}if(v.rightArrow){y(S=>({...S,cursor:v.meta?Bp(S):gS(S)}));return}if(v.meta&&(x==="b"||x==="f")){y(S=>({...S,cursor:x==="b"?Jd(S):Bp(S)}));return}if(v.ctrl&&x==="a"){y(S=>({...S,cursor:0}));return}if(v.ctrl&&x==="e"){y(S=>({...S,cursor:S.text.length}));return}if(v.ctrl&&(x==="u"||x==="k"||x==="w")){y(S=>{let _=x==="u"?CN(S):x==="k"?ON(S):MN(S);return ge(_.text),_}),te(-1);return}if(v.return&&v.shift){y(S=>ki(S,`
@@ -668,11 +668,11 @@ ${t.output}`:"";return`[shell] $ ${t.command} \u2014 ${e}${o}`}case"subagents":{
668
668
  `)}function $7(){return["---","summary: Analisa um arquivo e sugere melhorias de c\xF3digo.","---","Analise o arquivo $ARGUMENTS e sugira melhorias de legibilidade, performance e seguran\xE7a.","Seja conciso \u2014 foque no que realmente importa.",""].join(`
669
669
  `)}function F7(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(`
670
670
  `)}function F1(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(`
671
- `)}async function B7(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 U7(t){return[{path:li,content:F7(t)},{path:N1,content:N7()},{path:D1,content:D7()},{path:$1,content:$7()}]}async function j7(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=ar(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 Hm.run(a.input,o)).ok?"created":"error"}function Hh(t){return t===li?`${li} (config do projeto)`:t===N1?".aluy/agents/exemplo.md (agente de exemplo)":t===D1?".aluy/workflows/exemplo.md (workflow de exemplo)":t===$1?".aluy/commands/exemplo.md (comando de exemplo)":t}async function B1(t){let{ports:e,permission:o,askResolver:n}=t,r=await B7(e,t.rootName),s=U7(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 ${li} 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 ${li}, 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 j7(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}: ${Hh(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 ${Hh(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 ${Hh(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 ${Hh(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 kA,N1,D1,$1,U1=p(()=>{"use strict";N();sx();kA=".aluy",N1=`${kA}/agents/exemplo.md`,D1=`${kA}/workflows/exemplo.md`,$1=`${kA}/commands/exemplo.md`});var z1={};ut(z1,{NATIVE_COMMANDS:()=>Fo,NO_CYCLE_CEILING_MESSAGE:()=>xA,defaultBootPrompt:()=>W1,describeConfigSources:()=>G1,emitBootClear:()=>ul,isLoggedOut:()=>q1,preflightCycleCeiling:()=>H1,resolveCycleBootCeilings:()=>j1,runSession:()=>W7});import{render as H7}from"ink";import{basename as q7}from"node:path";import{jsx as V7}from"react/jsx-runtime";function j1(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 H1(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 Nn)return{kind:"no-ceiling"};if(o instanceof Gt)return{kind:"parse-error",message:o.message};throw o}}async function W7(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=s1(r,process),i=n&&t.promptYesNo===void 0,a;if(i){let A=t.stdout??process.stdout;ul(A,!0);let q=Ko({env:e,...t.dense?{density:"compact"}:{},...t.safeGlyphs?{safeGlyphs:!0}:{}});a=M1({theme:q,stdout:A});let be=O1(e);be>0&&await new Promise(R=>setTimeout(R,be))}let l=a?.promptYesNo??t.promptYesNo??W1(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.
671
+ `)}async function B7(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 U7(t){return[{path:li,content:F7(t)},{path:N1,content:N7()},{path:D1,content:D7()},{path:$1,content:$7()}]}async function j7(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=ar(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 Hm.run(a.input,o)).ok?"created":"error"}function Hh(t){return t===li?`${li} (config do projeto)`:t===N1?".aluy/agents/exemplo.md (agente de exemplo)":t===D1?".aluy/workflows/exemplo.md (workflow de exemplo)":t===$1?".aluy/commands/exemplo.md (comando de exemplo)":t}async function B1(t){let{ports:e,permission:o,askResolver:n}=t,r=await B7(e,t.rootName),s=U7(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 ${li} 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 ${li}, 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 j7(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}: ${Hh(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 ${Hh(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 ${Hh(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 ${Hh(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 kA,N1,D1,$1,U1=p(()=>{"use strict";N();sx();kA=".aluy",N1=`${kA}/agents/exemplo.md`,D1=`${kA}/workflows/exemplo.md`,$1=`${kA}/commands/exemplo.md`});var z1={};dt(z1,{NATIVE_COMMANDS:()=>Fo,NO_CYCLE_CEILING_MESSAGE:()=>xA,defaultBootPrompt:()=>W1,describeConfigSources:()=>G1,emitBootClear:()=>ul,isLoggedOut:()=>q1,preflightCycleCeiling:()=>H1,resolveCycleBootCeilings:()=>j1,runSession:()=>W7});import{render as H7}from"ink";import{basename as q7}from"node:path";import{jsx as V7}from"react/jsx-runtime";function j1(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 H1(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 Nn)return{kind:"no-ceiling"};if(o instanceof Gt)return{kind:"parse-error",message:o.message};throw o}}async function W7(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=s1(r,process),i=n&&t.promptYesNo===void 0,a;if(i){let A=t.stdout??process.stdout;ul(A,!0);let q=Ko({env:e,...t.dense?{density:"compact"}:{},...t.safeGlyphs?{safeGlyphs:!0}:{}});a=M1({theme:q,stdout:A});let be=O1(e);be>0&&await new Promise(R=>setTimeout(R,be))}let l=a?.promptYesNo??t.promptYesNo??W1(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.
672
672
  `)));let m=t.projectInstructions!==void 0?{instructions:t.projectInstructions,sources:[]}:await z7(t),u=m.instructions,h=m.sources,g=t.configStore??new ot,y=g.load(),b=ok(t.lang,e0(y),e),w=sk(t.split,y),T=process.env.ALUY_FULLSCREEN==="1"?ik(t.fullscreen,y):!1,E=t.sessionStore??new Sd;try{E.gc()}catch{}let L=new Yt(t.workspaceRoot!==void 0?{root:t.workspaceRoot}:{}),B=L.root,j=await y1({request:t.resume,fresh:t.fresh===!0,isTty:n,store:E,cwd:B,promptYesNo:l});j.kind==="not-found"&&process.stderr.write(`aluy: sess\xE3o "${j.requestedId}" n\xE3o encontrada \u2014 iniciando uma nova.
673
673
  `);let z=j.kind==="resumed"?j.record:null,V=z?Cu(z,Jo):void 0,I=h1(y,Jo),J=V&&V.tier.trim()!==""?V.tier:void 0,Q=I.tier.trim()!==""?I.tier:void 0,K=Kc(t.tier,{...y,...Q!==void 0?{tier:Q}:{},...J!==void 0?{tier:J}:{}},Jo),D=K!=="custom"?void 0:t.model!==void 0&&t.model.trim()!==""?t.model.trim():t.tier!==void 0&&t.tier.trim()!==""?void 0:V?.model??I.model,X=K!=="custom"||D===void 0||t.model!==void 0&&t.model.trim()!==""||t.tier!==void 0&&t.tier.trim()!==""?void 0:V?.provider??I.provider,Oe=V===void 0&&(t.tier===void 0||t.tier.trim()==="")&&I.warning!==void 0?I.warning:void 0,Y=new cs({workspace:L}),ce=new nd({workspace:L,readFile:A=>Y.readFile(A),exists:A=>Y.exists(A)}),O=t.codexMcpConfigStore??new Xo,se=!1,de=!1,ye=e.ALUY_SANDBOX_MCP?np({processEnv:e}):void 0,Z=t.mcpTools!==void 0?void 0:await Uh({workspaceRoot:B,parentEnv:e,...ye?{sandboxLauncher:ye}:{},loadProjectConfig:async()=>{let A=await ce.load();return se=A.config.servers.length>0,A},loadCodexConfig:()=>{let A=O.load();return de=A.config.servers.length>0,A}}),te=t.mcpTools??Z?.tools??[];Z?.configError&&process.stderr.write(`aluy: MCP \u2014 ${Z.configError}
674
674
  `);for(let A of Z?.warnings??[])process.stderr.write(`aluy: MCP \u2014 ${A}
675
- `);let Me=t.mcpRegistryFetch??Jx(),Ht=t.userAgentsLoader??new Cr,pt=t.projectAgentsLoader??new di({workspace:L}),at=Ht.load(),At=pt.load(),dt=new gc(at.profiles,At.profiles),ht=[...at.errors,...At.errors],F=PB({flag:t.backend,env:e,config:y}),W=(()=>{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 y.localBudget!==void 0?y.localBudget:F!=="local"})(),Be,ue;if(F==="local"&&t.brokerClient===void 0){let A=ns(),q=IB({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:y});Be=q.provider,ue=await UB({catalog:A,provider:q.provider,model:q.model,auth:q.auth,...q.baseUrl!==void 0?{baseUrl:q.baseUrl}:{},env:e,...q.auth==="oauth"?{oauthAccessToken:k0(q.provider)}:{}})}let{provider:xe,backend:Ze,localProvider:tr,localModel:Ro,localAuth:Uo,localBaseUrl:oe,...U}=t,k=LP({...U,...ue!==void 0?{brokerClient:ue}:{},...c!==void 0?{mode:c}:{},agentRegistry:dt,tier:K,effectiveBackend:F,...y.services?{services:y.services}:{},...y.limits?{limits:y.limits}:{},...y.context?{context:y.context}:{},localBudget:W,...D!==void 0?{model:D}:{},...F==="local"&&Be!==void 0&&Be!==""?{provider:Be}:K==="custom"&&t.provider!==void 0&&t.provider.trim()!==""&&t.model!==void 0&&t.model.trim()!==""&&D===t.model.trim()?{provider:t.provider.trim()}:X!==void 0&&X.trim()!==""?{provider:X.trim()}:{},...z!==null?{sessionId:z.id}:{},...u!==void 0?{projectInstructions:u}:{},...(()=>{let A=Ub(dt.list());return A!==void 0?{availableAgents:A}:{}})(),...(()=>{let A=ZD();return A!==void 0?{sessionCommands:A}:{}})(),...te.length>0?{mcpTools:te}:{},memoryMonitor:{heapLimitMb:oa(e),sampleHeapUsed:()=>process.memoryUsage().heapUsed}}),Xe={id:z?.id??ea(),cwd:B},Co=z?ci(z.blocks):[];z&&k.controller.restoreBlocks(z.blocks),z?.label!==void 0&&k.controller.setLabel(z.label,z.labelColor),V?.warning&&k.controller.pushNote("model",[V.warning]),Oe!==void 0&&k.controller.pushNote("model",[Oe]);let Ie=()=>{u1(E,{id:Xe.id,cwd:Xe.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})},Ts=t.userCommandsLoader??new wd,Pi=t.projectCommandsLoader??new Ad({workspace:L}),qt=Ts.load(),Nr=Pi.load(),_s=px(qt,Nr),Rs=_s.map(A=>({name:A.name,summary:A.summary,source:"user",section:"usu\xE1rio"})),Mu=new Map(_s.map(A=>[A.name,A])),jo=k.hookRunner,cn=k.hooksConfig;if(j.kind==="pick"){(t.stdout??process.stdout).write(f1(j.choices).join(`
675
+ `);let Me=t.mcpRegistryFetch??Jx(),Ht=t.userAgentsLoader??new Cr,pt=t.projectAgentsLoader??new di({workspace:L}),it=Ht.load(),At=pt.load(),ct=new gc(it.profiles,At.profiles),ht=[...it.errors,...At.errors],F=PB({flag:t.backend,env:e,config:y}),W=(()=>{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 y.localBudget!==void 0?y.localBudget:F!=="local"})(),Be,ue;if(F==="local"&&t.brokerClient===void 0){let A=ns(),q=IB({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:y});Be=q.provider,ue=await UB({catalog:A,provider:q.provider,model:q.model,auth:q.auth,...q.baseUrl!==void 0?{baseUrl:q.baseUrl}:{},env:e,...q.auth==="oauth"?{oauthAccessToken:k0(q.provider)}:{}})}let{provider:xe,backend:Ze,localProvider:tr,localModel:Ro,localAuth:Uo,localBaseUrl:oe,...U}=t,k=LP({...U,...ue!==void 0?{brokerClient:ue}:{},...c!==void 0?{mode:c}:{},agentRegistry:ct,tier:K,effectiveBackend:F,...y.services?{services:y.services}:{},...y.limits?{limits:y.limits}:{},...y.context?{context:y.context}:{},localBudget:W,...D!==void 0?{model:D}:{},...F==="local"&&Be!==void 0&&Be!==""?{provider:Be}:K==="custom"&&t.provider!==void 0&&t.provider.trim()!==""&&t.model!==void 0&&t.model.trim()!==""&&D===t.model.trim()?{provider:t.provider.trim()}:X!==void 0&&X.trim()!==""?{provider:X.trim()}:{},...z!==null?{sessionId:z.id}:{},...u!==void 0?{projectInstructions:u}:{},...(()=>{let A=Ub(ct.list());return A!==void 0?{availableAgents:A}:{}})(),...(()=>{let A=ZD();return A!==void 0?{sessionCommands:A}:{}})(),...te.length>0?{mcpTools:te}:{},memoryMonitor:{heapLimitMb:oa(e),sampleHeapUsed:()=>process.memoryUsage().heapUsed}}),Xe={id:z?.id??ea(),cwd:B},Co=z?ci(z.blocks):[];z&&k.controller.restoreBlocks(z.blocks),z?.label!==void 0&&k.controller.setLabel(z.label,z.labelColor),V?.warning&&k.controller.pushNote("model",[V.warning]),Oe!==void 0&&k.controller.pushNote("model",[Oe]);let Ie=()=>{u1(E,{id:Xe.id,cwd:Xe.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})},Ts=t.userCommandsLoader??new wd,Pi=t.projectCommandsLoader??new Ad({workspace:L}),qt=Ts.load(),Nr=Pi.load(),_s=px(qt,Nr),Rs=_s.map(A=>({name:A.name,summary:A.summary,source:"user",section:"usu\xE1rio"})),Mu=new Map(_s.map(A=>[A.name,A])),jo=k.hookRunner,cn=k.hooksConfig;if(j.kind==="pick"){(t.stdout??process.stdout).write(f1(j.choices).join(`
676
676
  `)+`
677
677
  `);return}if(!n){let A=t.stdout??process.stdout;k.askResolver.setNonInteractive(!0),k.questionResolver.setNonInteractive(!0),k.controller.setNonInteractive(!0);try{let q=_t(cn,"session-start");if(q.length>0&&await jo.runAll(q),o){let Ae=(t.goal??"").trim(),Ce=t.onExitCode??(()=>{});if(Ae===""){process.stderr.write(`aluy: -p sem prompt \u2014 passe via arg, posicional ou stdin.
678
678
  `),Ce(2);return}let sr=[];try{sr=[...await k.memory.recall()]}catch{sr=[]}let Br=[...sr,...Co],mn=t.headless?.outputFormat??"text",ir=jh(_n=>k.controller.subscribe(_n),{runner:jo,config:cn}),hl=n1({runner:jo,config:cn}),Wh=hl?k.controller.addToolObserver(hl):()=>{},Mo;try{if(mn==="stream-json")t.headless?.cycle&&process.stderr.write(`aluy: aviso: --cycle ignora --output-format stream-json (sa\xEDda linear)
@@ -684,7 +684,7 @@ ${t.output}`:"";return`[shell] $ ${t.command} \u2014 ${e}${o}`}case"subagents":{
684
684
  `),mn==="json"){let _n={result:Mo.result,ok:Mo.ok,tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{}};A.write(JSON.stringify(_n)+`
685
685
  `)}else mn==="text"&&Mo.result!==""&&A.write(Mo.result+`
686
686
  `);await k.controller.drainMemoryWrites(),Ce(Mo.ok?0:1);return}if(gB(t.goal,A,{currentTheme:ei(Ko({env:e}).brightness)})){let Ae=K7(t.goal),Ce=Ae?Sr(Ae):void 0;Ce&&g.saveTheme(Ce.name);return}if(yB(t.goal,A,{currentLang:b})){let Ae=Y7(t.goal),Ce=Ae?os(Ae):void 0;Ce&&g.saveLang(Ce.code);return}if(await pB(t.goal,A,{catalog:k.catalogClient,tier:{setTier:(Ae,Ce)=>{k.controller.setTier(Ae,Ce),g.saveTier(Ae,Ce)}},currentTier:k.controller.tier})||bB(t.goal,A,{currentProvider:k.controller.provider,setProvider:Ae=>k.controller.setProvider(Ae)})||await hB(t.goal,A,new Ru({journal:k.journal}))||await vB(t.goal,A,{memory:k.memory,isPlan:k.engine.isPlan})||await kB(t.goal,A,{store:k.todoStore,isPlan:k.engine.isPlan})||await xB(t.goal,A,{memory:k.memory,clearSession:()=>k.controller.clear()})||iN(t.goal,A,{setLabel:(Ae,Ce)=>k.controller.setLabel(Ae,Ce),currentLabel:k.controller.label,currentColor:k.controller.labelColor,persist:()=>Ie()})||a$(t.goal,A,{store:E,resume:Ae=>{Xe.id=Ae.id,Xe.cwd=Ae.cwd;let Ce=Cu(Ae,Jo);Ce.tier.trim()!==""&&k.controller.setTier(Ce.tier,Ce.model),Ce.tier==="custom"&&Ce.model&&k.controller.setProvider(Ce.provider),Ce.warning&&A.write(`[history] ${Ce.warning}
687
- `),k.controller.resetResumeContext(),k.controller.restoreBlocks(Ae.blocks);let sr=ci(Ae.blocks);sr.length>0&&k.controller.seedHistory(sr),Ie()}}))return;{let Ae=!1,Ce=k.controller.subscribe(()=>Ie());try{Ae=await fB(k.controller,t.goal,A)}finally{Ce(),Ae&&Ie()}if(Ae)return}let rr=[];try{rr=[...await k.memory.recall()]}catch{rr=[]}let Mt=[...rr,...Co],$i=k.controller.subscribe(()=>Ie()),Fr=jh(Ae=>k.controller.subscribe(Ae),{runner:jo,config:cn});try{await dB(k.controller,t.goal,A,{attachReader:k.attachReader,...Mt.length>0?{seedHistory:Mt}:{}})}finally{Fr(),$i(),Ie()}return}finally{Z&&await Z.close()}}if(a?await a.finish():ul(t.stdout??process.stdout,n),n)try{process.stdin.resume(),await new Promise(A=>setImmediate(A)),await new Promise(A=>setImmediate(A)),process.stdin.pause()}catch{}let dn=await G7(e,t.stdout,y),Oo=t.safeGlyphs?{safeGlyphs:!0}:{},po=t.dense?{density:"compact"}:{},Zt=Sr(dn)?Ko({env:e,theme:Sr(dn).brightness,...po,...Oo}):Ko({env:e,...po,...Oo}),Ho=new Rp({stdout:t.stdout??process.stdout,env:e});{let A=es(dn);A&&Ho.apply(A.bg)}let Ii=t.stdout??process.stdout,Dr=ox(e),un=new kd({write:A=>Ii.write(A),isTty:!0,enabled:Dr.enabled,desktop:Dr.desktop}),H=ZB(A=>k.controller.subscribe(A),{port:un}),he=jh(A=>k.controller.subscribe(A),{runner:jo,config:cn});d&&i&&k.controller.pushNote("yolo",["YOLO cancelado \u2014 seguindo em modo normal."]);{let A=G1({instructionSources:h,globalCommands:qt.length,projectCommands:Nr.length,mcpServers:Z?.discovery.servers.length??0,projectMcp:se,codexMcp:de});A.length>0&&k.controller.pushNote("config",A)}{let A=pN(Fn,e);A!==void 0&&k.controller.pushNote("update",[A]),hN(Fn,e)}F==="broker"&&await q1({login:k.login,env:e})&&k.controller.pushNote("login",["sem credencial \u2014 rode `aluy login` (ou defina ALUY_TOKEN)."]);{let A=[],q=dt.list().length;if(q>0){let be=dt.list().map(R=>`${R.name} (${R.origin==="global"?"global":"projeto"})`).join(" \xB7 ");A.push(`${q} agente(s) .md: ${be}`)}for(let be of dt.crossLayerConflicts)A.push(`\u26A0 "${be.name}": h\xE1 um .md de PROJETO hom\xF4nimo de um agente GLOBAL confi\xE1vel \u2014 delegar por nome pedir\xE1 CONFIRMA\xC7\xC3O (sem TTY \u21D2 negado).`);for(let be of ht)A.push(`\u26A0 ${be.reason}`);A.length>0&&k.controller.pushNote("agentes",A)}let Je=new Ru({journal:k.journal}),gt=null,xt=A=>{k.controller.pushNote(A.note.title,A.note.lines),gt=A.kind==="confirm"?A.proceed:null},Et=null,$r,or,fe=async A=>{Z&&await Z.close();let q=await Uh({workspaceRoot:B,parentEnv:e,...ye?{sandboxLauncher:ye}:{},loadProjectConfig:async()=>{let M=await ce.load();return se=M.config.servers.length>0,M},loadCodexConfig:()=>{let M=O.load();return de=M.config.servers.length>0,M}});k.controller.refreshMcpTools(q.tools),Z=q;let be=[],R=[];for(let M of q.discovery.servers)A!=="all"&&M.server!==A||(M.ok?be.push(M.server):R.push(`${M.server} (${M.error??"desconhecido"})`));return{ok:be,failed:R}},$=(A,q="")=>{if(A.id!=="clear"&&(or=void 0),A.source==="user"||A.id===void 0){let R=Mu.get(A.name);if(!R){k.controller.pushNote(`/${A.name}`,["comando do usu\xE1rio sem corpo \u2014 ignorado."]);return}let M=Hb(R.template,q);if(M.trim()===""){k.controller.pushNote(`/${A.name}`,["comando do usu\xE1rio expandiu p/ vazio \u2014 nada a fazer."]);return}k.controller.submit(M);return}if(A.id==="model"&&q.trim()!==""){let R=jf((M,G)=>{k.controller.setTier(M,G),g.saveTier(M,G)},q.trim());k.controller.pushNote(R.title,R.lines);return}if(A.id==="theme"){let R=Eu(q,ei(Zt.brightness));R.kind==="theme"&&k.controller.pushNote(R.note.title,R.note.lines);return}if(A.id==="provider"){let R=Tu(q,k.controller.provider);R.kind==="provider"&&(R.provider!==void 0&&k.controller.setProvider(R.provider),k.controller.pushNote(R.note.title,R.note.lines));return}if(A.id==="effort"){if(!q||q.trim()==="")k.controller.pushNote("effort",[`atual: ${k.controller.effort??"(default do modelo)"}`]);else{let R=q.trim();R.length>32?k.controller.pushNote("effort",[`erro: "effort" aceita no m\xE1ximo 32 caracteres (recebeu ${R.length})`]):(k.controller.setEffort(R),k.controller.pushNote("effort",[`definido para: ${R}`]))}return}if(A.id==="ask"){k.controller.askParallel(q);return}if(A.id==="rooms"){let[R,...M]=q.trim().split(/\s+/);if(R===""||R===void 0||R==="list")k.controller.roomList();else if(R==="new")k.controller.roomNew();else if(R==="read"){let G=M.join(" ").trim();G===""?k.controller.roomReadPick():k.controller.roomRead(G)}else R==="watch"?k.controller.roomWatch(M.join(" ")):k.controller.pushNote("/rooms",[`subcomando "${R}" \u2014 use list | new | read <c\xF3digo> | watch <c\xF3digo>.`]);return}if(A.id==="subagent"){let R=q.trim();R===""?k.controller.exitFocus():k.controller.enterSubagentFocus(R);return}if(A.id==="back"){k.controller.exitFocus();return}if(A.id==="rename"){let R=sS(q);switch(R.kind){case"set":k.controller.setLabel(R.label.label,R.label.color),iS(`aluy \xB7 ${R.label.label}`),Ie(),k.controller.pushNote("rename",[`sess\xE3o: \u25CF ${R.label.label}`,`cor: ${R.label.color}`,"o \u25CF+nome aparece no composer e no /history. troque a cor com `--cor <cor>`;","limpe com `/rename --limpar`. \xE9 s\xF3 identifica\xE7\xE3o local (dado de UI)."]);return;case"clear":k.controller.setLabel(void 0),iS(void 0),Ie(),k.controller.pushNote("rename",["r\xF3tulo removido \u2014 a sess\xE3o volta sem nome."]);return;case"show":{let M=k.controller.label;k.controller.pushNote("rename",M!==void 0?[`sess\xE3o: \u25CF ${M}${k.controller.labelColor?` (${k.controller.labelColor})`:""}`,"troque com `/rename <nome> [--cor <cor>]` \xB7 limpe com `/rename --limpar`."]:["esta sess\xE3o n\xE3o tem r\xF3tulo.","d\xEA um: `/rename <nome>` (cor autom\xE1tica) ou `/rename <nome> --cor <cor>`.",`cores: ${ya.join(", ")}.`]);return}case"error":k.controller.pushNote("rename",[R.message]);return}}if(A.id==="init"){let R=/(?:^|\s)--force\b/.test(q)||q.trim()==="--force",M=q.replace(/--force\b/,"").trim();if(M!==""&&!R){let G=F1(M);k.controller.pushNote("init",[`gerando scaffold sob medida para: ${M}`,"o agente vai analisar a descri\xE7\xE3o e criar os arquivos em .aluy/\u2026"]),k.controller.submit(G);return}B1({ports:k.ports,permission:k.engine,askResolver:k.askResolver,rootName:q7(k.workspace.root),overwrite:R}).then(G=>k.controller.pushNote(G.note.title,G.note.lines));return}if(A.id==="notify"){let R=Jw(q,{enabled:un.enabled,tty:!0});R.kind==="notify"&&(un.setEnabled(R.enable),k.controller.pushNote(R.note.title,R.note.lines));return}if(A.id==="undo"){let R=gt??(()=>Je.undo());gt=null,R().then(xt);return}if(A.id==="redo"){gt=null,Je.redo().then(xt);return}if(A.id==="compact"){k.controller.compact();return}if(A.id==="cycle"){let R=q.trim().split(/\s+/)[0]?.toLowerCase();if(R==="pause"){k.controller.cyclePause();return}if(R==="resume"){k.controller.cycleResume();return}if(R==="stop"){k.controller.cycleStop();return}if(R==="status"){k.controller.cycleStatus();return}if(R==="edit"){let G=(q.trim().match(/^edit\b\s*(.*)$/i)?.[1]??"").trim().match(/"[^"]*"|\S+/g)??[],ee={},ge=[];for(let eo=0;eo<G.length;eo+=1){let go=G[eo];if(go==="--max-iter"||go==="--iter"){let Mt=Number(G[eo+1]);eo+=1,Number.isInteger(Mt)&&(ee.maxIterations=Mt);continue}let qo=go.match(/^(\d+)x$/i);if(qo){ee.maxIterations=Number(qo[1]);continue}let rr=go.match(/^(\d+)(s|m|h)$/i);if(rr&&ee.intervalMs===void 0&&ge.length===0){let Mt=Number(rr[1]),$i=rr[2].toLowerCase();ee.intervalMs=Mt*($i==="s"?1e3:$i==="m"?6e4:36e5);continue}ge.push(go.replace(/^"|"$/g,""))}let Ke=ge.join(" ").trim();Ke&&(ee.task=Ke),k.controller.cycleEdit(ee);return}if(q.trim()===""){k.controller.pushNote("/cycle",['uso: `/cycle <intervalo|--por dur> "tarefa"` \u2014 ex.: `/cycle 5m "rode os testes e corrija o que quebrar"`.',"sem teto (dura\xE7\xE3o/itera\xE7\xF5es/intervalo), o /cycle N\xC3O inicia \u2014 \xE9 uma prote\xE7\xE3o contra execu\xE7\xE3o sem fim."]);return}k.controller.cycle(q);return}if(A.id==="clear"){let R=$h(q),{armed:M,nextArmed:G}=cB(or,R);or=G,Fh(R,{clearSession:()=>k.controller.clear(),memory:k.memory},M).then(ee=>{ee.armed||(or=void 0),ee.note.lines.length>0&&k.controller.pushNote(ee.note.title,ee.note.lines),ee.cleared&&Et?.()});return}if(A.id==="memory"){let R=Ph(q);Ih(R,k.memory,k.engine.isPlan).then(M=>k.controller.pushNote(M.title,M.lines));return}if(A.id==="todo"){let R=Nh(q);Dh(R,k.todoStore,k.engine.isPlan).then(M=>k.controller.pushNote(M.title,M.lines));return}if(A.id==="cron"){let R=[],M={out:ge=>R.push(ge),err:ge=>R.push(ge)},G=q.match(/"[^"]*"|\S+/g)?.map(ge=>ge.replace(/^"|"$/g,""))??[],ee=G.length===0?["list"]:G;eS(ee,{io:M}).then(()=>k.controller.pushNote("cron",R.length>0?R:["(sem sa\xEDda)"]));return}if(A.id==="add-dir"){let R=XF(q,k.workspace);k.controller.pushNote(R.title,R.lines);return}if(A.id==="agents"){let R=yc({profiles:[...at.profiles,...At.profiles],errors:ht});k.controller.pushNote(R.title,R.lines);return}if(A.id==="workflows"){let R=/^\s*run\s+(\S+)/.exec(q);if(R){let Ke=R[1];k.controller.workflowRun(Ke);return}let M=/^\s*use\s+(\S+)/.exec(q);if(M){let Ke=M[1];k.controller.workflowsUse(Ke);return}let G=new ds().load(),ee=new us({workspace:k.workspace}).load(),ge=wc({workflows:[...G.workflows,...ee.workflows],errors:[...G.errors,...ee.errors]});k.controller.pushNote(ge.title,ge.lines);return}if(A.id==="skills"){let R=new ui().load(),M=new mi({workspace:k.workspace}).load(),G=kc({skills:[...R.skills,...M.skills],errors:[...R.errors,...M.errors]});k.controller.pushNote(G.title,G.lines);return}if(A.id==="doctor"){let R=/(^|\s)--(deep|test)(\s|$)/.test(q),M=k.workspace.root;WB({login:k.login,memory:{count:async()=>(await k.memory.list()).length},workspaceRoot:M,unsafe:k.engine.isUnsafe,env:e,probeOverride:{makeMcpTransport:()=>new Tr({cwd:M,parentEnv:e}),...R?{tierTester:()=>Qf({tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{},login:k.login,env:e})}:{}}},G=>k.controller.upsertDoctor(G.checks,G.summary));return}if(A.id==="mcp"){let R=ZF(q);if(R){let{kind:ee,scope:ge}=R,Ke=ee==="reload"?"reload":"reconnect";k.controller.pushNote("mcp",[`/${Ke} ${ge==="all"?"todos":ge}: recarregando\u2026`]),fe(ge).then(({ok:eo,failed:go})=>{let qo=[];eo.length>0&&qo.push(`\u2713 ${eo.join(", ")}`),go.length>0&&qo.push(`\u2717 ${go.join(", ")}`),eo.length===0&&go.length===0&&qo.push("nenhum server afetado."),k.controller.pushNote(`mcp ${Ke}`,qo)});return}let M=YB(q);if(M){let ee=VB(M);k.controller.pushNote(ee.title,ee.lines);return}let G=QF(q);if(G){if(G.query===""){let ge=eB();k.controller.pushNote(ge.title,ge.lines);return}let ee=tB(G.query);k.controller.pushNote(ee.title,ee.lines),oB(G.query,Me).then(ge=>k.controller.pushNote(ge.title,ge.lines));return}if(Z){let ee=Js(Z.sources,Z.discovery),ge=JF(ee,Z.configError);k.controller.pushNote(ge.title,ge.lines);return}}if(A.id==="telegram"){rB(q,{configStore:g,secretStore:new Ea("telegram")}).then(R=>k.controller.pushNote(R.title,R.lines));return}let be=VF(A.id,{usage:k.controller.usage,unsafe:k.engine.isUnsafe});if(be.kind==="quit"){$r.unmount();return}if(be.kind==="async"){nB(be.id,k.login).then(R=>k.controller.pushNote(R.title,R.lines));return}sB(be,k.controller)},ho=A=>{let q=E.load(A);if(!q){k.controller.pushNote("history",[`sess\xE3o n\xE3o encontrada: ${A} \u2014 nada mudou.`]);return}let be=Cu(q,Jo);i$(q,{restoreBlocks:R=>k.controller.restoreBlocks(R),seedHistory:R=>k.controller.seedHistory(R),resetContinuation:()=>k.controller.resetResumeContext(),switchSession:R=>{Xe.id=R.id,Xe.cwd=R.cwd,be.tier.trim()!==""&&k.controller.setTier(be.tier,be.model),be.tier==="custom"&&be.model&&k.controller.setProvider(be.provider)},clearScreen:()=>{}}),k.controller.setLabel(q.label,q.labelColor),Ie(),be.warning&&k.controller.pushNote("model",[be.warning]),k.controller.pushNote("history",[`sess\xE3o retomada: ${A} \u2014 continue de onde parou.`])},ml=A=>{let q=k.checkpoints.get(A.checkpointId);if(!q){k.controller.pushNote("rewind",["ponto n\xE3o encontrado \u2014 nada mudou."]);return}let be=[`voltando ao ponto #${q.ordinal}: ${q.label}`];if((A.action==="both"||A.action==="code")&&k.checkpoints.restoreCode(q.id).then(R=>{let M=[];R.written.length>0&&M.push(`arquivos restaurados: ${R.written.length}`),R.removed.length>0&&M.push(`arquivos removidos (eram novos): ${R.removed.length}`),R.written.length===0&&R.removed.length===0&&M.push("nenhuma edi\xE7\xE3o de arquivo posterior ao ponto \u2014 c\xF3digo intacto.");for(let G of R.failed)M.push(`\u26A0 falhou: ${G.path} \u2014 ${G.reason}`);if(R.barrierWarnings.length>0){M.push("comando(s) rodaram depois do ponto (efeito de shell N\xC3O desfeito):");for(let G of R.barrierWarnings)M.push(` \xB7 ${G}`)}k.controller.pushNote("rewind \u2014 c\xF3digo",M)}),A.action==="both"||A.action==="conversation"){let R=k.controller.rewindConversation(q.blockCount,ci);be.push(R>0?`conversa rebobinada \u2014 ${R} bloco(s) posterior(es) descartado(s).`:"conversa j\xE1 estava neste ponto."),Et?.(),Ie()}k.controller.pushNote("rewind",be)},Tt=KI(e),Ni=YI(e),We=Tt||Ni?XI(r,{sync:Tt,overwrite:Ni}):void 0,Di=We?.stdout??r,Ot=T&&As(r.rows??0,r.columns??0).kind==="cockpit";Ot&&(mA(r),We?.setCockpit(!0));let Lu=tN(r),yt=()=>Lu.disable();process.once("exit",yt);let fl=t.exportStore??new xd,Le=async A=>{let q=c1(k.controller.blocks,{sessionId:Xe.id,...k.controller.label!==void 0?{label:k.controller.label}:{},tier:k.controller.tier});return fl.write(q,{sessionId:Xe.id,...A!==void 0?{fileName:A}:{}})},Pu=()=>{We?.cleanup(),Ho.reset(),yt()},Ge=a1(process,Pu),pl=k.controller.provider,qh=pl!==void 0&&pl!==""?{currentProvider:pl}:{},nr=k.controller.effort,Iu=nr!==void 0&&nr!==""?{currentEffort:nr}:{};P1(process.stdin);try{i&&k.controller.dismissBoot(),$r=H7(V7(MB,{initialTheme:dn,env:e,...po,...Oo,onThemeChanged:M=>{let G=Sr(M);G&&Ho.apply(G.bg),G&&g.saveTheme(G.name),k.controller.pushNote("theme",[`tema trocado para: ${G?G.label:M} (${M})`])},initialLang:b,onLangChanged:M=>{let G=ti(M);g.saveLang(M);let ee=bi(M).t;k.controller.pushNote("lang",[ee("lang.changed",{label:G?G.label:M})])},controller:k.controller,egress:k.egress,userCommands:Rs,animate:Zt.animate,syncActive:We!==void 0,version:Fn,onCommand:$,registerClearScreen:M=>{Et=M},fileIndex:k.fileIndex,attachReader:k.attachReader,catalog:k.catalogClient,customModels:k.customModelClient,providersClient:k.providersClient,sessionStore:E,onResumeSession:ho,rewindSource:k.checkpoints,onRewind:ml,initialSplitView:w,onSplitViewChange:M=>{g.saveSplitView(M)},initialFullscreen:T,cockpitEnteredAtBoot:Ot,cockpitScreen:{enter:()=>{mA(r),We?.setCockpit(!0)},leave:()=>{We?.setCockpit(!1),r.write("\x1B[?1049l\x1B[?25h\x1B[2J\x1B[3J\x1B[H"),We?.resetDiffer()},resetDiffer:()=>{We?.resetDiffer()}},onFullscreenChange:M=>{g.saveFullscreen(M)},onExportTranscript:Le,onSelectTier:(M,G,ee)=>{k.controller.setTier(M,G),g.saveTier(M,G),M==="custom"&&G?k.controller.pushNote("model",[`modelo Custom: ${G}`,"\u25CD slug enviado ao broker, que revalida e resolve o provider/credencial (nunca exibido)","\u26A0 warn-but-allow \u2014 fora do cat\xE1logo curado pode ter custo/qualidade vari\xE1vel",...ee?.supportsTools===!1?["\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem"]:[]]):k.controller.pushNote("model",[`tier trocado para: ${M}`])},...Iu,onSelectConjugated:(M,G)=>{let ee=M.kind==="tier"?M.key:"custom",ge=M.kind==="custom"?M.model:void 0;k.controller.setTier(ee,ge),g.saveTier(ee,ge),G.kind==="set"&&k.controller.setEffort(G.value);let Ke=G.kind==="set"?`esfor\xE7o: ${G.value}`:`esfor\xE7o: ${k.controller.effort??"(default do modelo)"} (mantido)`,eo=M.kind==="custom"&&M.supportsTools===!1?["\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem"]:[];ee==="custom"&&ge?k.controller.pushNote("model",[`modelo Custom: ${ge}`,Ke,"\u25CD slug enviado ao broker, que revalida e resolve o provider/credencial (nunca exibido)","\u26A0 warn-but-allow \u2014 fora do cat\xE1logo curado pode ter custo/qualidade vari\xE1vel",...eo]):k.controller.pushNote("model",[`tier trocado para: ${ee}`,Ke])},...qh,onSelectProvider:M=>{k.controller.setProvider(M);let G=k.controller.provider===M;k.controller.pushNote("provider",G?[`provider do modo Custom: ${M}`,"\u25CD enviado ao broker em par com o modelo Custom \u2014 ele resolve a credencial (nunca exibida)","vale s\xF3 nesta sess\xE3o (n\xE3o persiste)."]:[`provider pretendido: ${M}`,"\u26A0 sem modelo Custom ativo \u2014 o provider pareia com um modelo Custom.","selecione um modelo via `/model` \u2192 Custom e refa\xE7a o `/provider`."])},permissionControl:{get mode(){return k.engine.mode},setMode:M=>k.controller.setMode(M),sessionGrants:k.engine.sessionGrants,effectiveSafeDefault:M=>k.engine.effectiveSafeDefault(M),setSafeToolDefault:(M,G)=>k.engine.setSafeToolDefault(M,G)}}),{stdout:Di,exitOnCtrlC:!1});let A=[];try{A=[...await k.memory.recall()]}catch{A=[]}let q=[...A,...Co];q.length>0&&k.controller.seedHistory(q);let be=k.controller.subscribe(()=>Ie());k.controller.setMemoryShutdown(()=>{Ie(),process.exitCode=1;try{$r.unmount()}catch{}}),k.controller.startMemoryMonitor();let R=_t(cn,"session-start");R.length>0&&jo.runAll(R),t.goal!==void 0&&t.goal.trim()!==""&&k.controller.submit(t.goal);try{await $r.waitUntilExit()}finally{We?.cleanup(),Ho.reset(),s.dispose(),Ge.dispose()}Z&&await Z.close(),H(),he(),be(),Ie(),process.stdout.isTTY&&k.controller.current.blocks.length>0&&process.stdout.write(`
687
+ `),k.controller.resetResumeContext(),k.controller.restoreBlocks(Ae.blocks);let sr=ci(Ae.blocks);sr.length>0&&k.controller.seedHistory(sr),Ie()}}))return;{let Ae=!1,Ce=k.controller.subscribe(()=>Ie());try{Ae=await fB(k.controller,t.goal,A)}finally{Ce(),Ae&&Ie()}if(Ae)return}let rr=[];try{rr=[...await k.memory.recall()]}catch{rr=[]}let Mt=[...rr,...Co],$i=k.controller.subscribe(()=>Ie()),Fr=jh(Ae=>k.controller.subscribe(Ae),{runner:jo,config:cn});try{await dB(k.controller,t.goal,A,{attachReader:k.attachReader,...Mt.length>0?{seedHistory:Mt}:{}})}finally{Fr(),$i(),Ie()}return}finally{Z&&await Z.close()}}if(a?await a.finish():ul(t.stdout??process.stdout,n),n)try{process.stdin.resume(),await new Promise(A=>setImmediate(A)),await new Promise(A=>setImmediate(A)),process.stdin.pause()}catch{}let dn=await G7(e,t.stdout,y),Oo=t.safeGlyphs?{safeGlyphs:!0}:{},po=t.dense?{density:"compact"}:{},Zt=Sr(dn)?Ko({env:e,theme:Sr(dn).brightness,...po,...Oo}):Ko({env:e,...po,...Oo}),Ho=new Rp({stdout:t.stdout??process.stdout,env:e});{let A=es(dn);A&&Ho.apply(A.bg)}let Ii=t.stdout??process.stdout,Dr=ox(e),un=new kd({write:A=>Ii.write(A),isTty:!0,enabled:Dr.enabled,desktop:Dr.desktop}),H=ZB(A=>k.controller.subscribe(A),{port:un}),he=jh(A=>k.controller.subscribe(A),{runner:jo,config:cn});d&&i&&k.controller.pushNote("yolo",["YOLO cancelado \u2014 seguindo em modo normal."]);{let A=G1({instructionSources:h,globalCommands:qt.length,projectCommands:Nr.length,mcpServers:Z?.discovery.servers.length??0,projectMcp:se,codexMcp:de});A.length>0&&k.controller.pushNote("config",A)}{let A=pN(Fn,e);A!==void 0&&k.controller.pushNote("update",[A]),hN(Fn,e)}F==="broker"&&await q1({login:k.login,env:e})&&k.controller.pushNote("login",["sem credencial \u2014 rode `aluy login` (ou defina ALUY_TOKEN)."]);{let A=[],q=ct.list().length;if(q>0){let be=ct.list().map(R=>`${R.name} (${R.origin==="global"?"global":"projeto"})`).join(" \xB7 ");A.push(`${q} agente(s) .md: ${be}`)}for(let be of ct.crossLayerConflicts)A.push(`\u26A0 "${be.name}": h\xE1 um .md de PROJETO hom\xF4nimo de um agente GLOBAL confi\xE1vel \u2014 delegar por nome pedir\xE1 CONFIRMA\xC7\xC3O (sem TTY \u21D2 negado).`);for(let be of ht)A.push(`\u26A0 ${be.reason}`);A.length>0&&k.controller.pushNote("agentes",A)}let Je=new Ru({journal:k.journal}),gt=null,xt=A=>{k.controller.pushNote(A.note.title,A.note.lines),gt=A.kind==="confirm"?A.proceed:null},Et=null,$r,or,fe=async A=>{Z&&await Z.close();let q=await Uh({workspaceRoot:B,parentEnv:e,...ye?{sandboxLauncher:ye}:{},loadProjectConfig:async()=>{let M=await ce.load();return se=M.config.servers.length>0,M},loadCodexConfig:()=>{let M=O.load();return de=M.config.servers.length>0,M}});k.controller.refreshMcpTools(q.tools),Z=q;let be=[],R=[];for(let M of q.discovery.servers)A!=="all"&&M.server!==A||(M.ok?be.push(M.server):R.push(`${M.server} (${M.error??"desconhecido"})`));return{ok:be,failed:R}},$=(A,q="")=>{if(A.id!=="clear"&&(or=void 0),A.source==="user"||A.id===void 0){let R=Mu.get(A.name);if(!R){k.controller.pushNote(`/${A.name}`,["comando do usu\xE1rio sem corpo \u2014 ignorado."]);return}let M=Hb(R.template,q);if(M.trim()===""){k.controller.pushNote(`/${A.name}`,["comando do usu\xE1rio expandiu p/ vazio \u2014 nada a fazer."]);return}k.controller.submit(M);return}if(A.id==="model"&&q.trim()!==""){let R=jf((M,G)=>{k.controller.setTier(M,G),g.saveTier(M,G)},q.trim());k.controller.pushNote(R.title,R.lines);return}if(A.id==="theme"){let R=Eu(q,ei(Zt.brightness));R.kind==="theme"&&k.controller.pushNote(R.note.title,R.note.lines);return}if(A.id==="provider"){let R=Tu(q,k.controller.provider);R.kind==="provider"&&(R.provider!==void 0&&k.controller.setProvider(R.provider),k.controller.pushNote(R.note.title,R.note.lines));return}if(A.id==="effort"){if(!q||q.trim()==="")k.controller.pushNote("effort",[`atual: ${k.controller.effort??"(default do modelo)"}`]);else{let R=q.trim();R.length>32?k.controller.pushNote("effort",[`erro: "effort" aceita no m\xE1ximo 32 caracteres (recebeu ${R.length})`]):(k.controller.setEffort(R),k.controller.pushNote("effort",[`definido para: ${R}`]))}return}if(A.id==="ask"){k.controller.askParallel(q);return}if(A.id==="rooms"){let[R,...M]=q.trim().split(/\s+/);if(R===""||R===void 0||R==="list")k.controller.roomList();else if(R==="new")k.controller.roomNew();else if(R==="read"){let G=M.join(" ").trim();G===""?k.controller.roomReadPick():k.controller.roomRead(G)}else R==="watch"?k.controller.roomWatch(M.join(" ")):k.controller.pushNote("/rooms",[`subcomando "${R}" \u2014 use list | new | read <c\xF3digo> | watch <c\xF3digo>.`]);return}if(A.id==="subagent"){let R=q.trim();R===""?k.controller.exitFocus():k.controller.enterSubagentFocus(R);return}if(A.id==="back"){k.controller.exitFocus();return}if(A.id==="rename"){let R=sS(q);switch(R.kind){case"set":k.controller.setLabel(R.label.label,R.label.color),iS(`aluy \xB7 ${R.label.label}`),Ie(),k.controller.pushNote("rename",[`sess\xE3o: \u25CF ${R.label.label}`,`cor: ${R.label.color}`,"o \u25CF+nome aparece no composer e no /history. troque a cor com `--cor <cor>`;","limpe com `/rename --limpar`. \xE9 s\xF3 identifica\xE7\xE3o local (dado de UI)."]);return;case"clear":k.controller.setLabel(void 0),iS(void 0),Ie(),k.controller.pushNote("rename",["r\xF3tulo removido \u2014 a sess\xE3o volta sem nome."]);return;case"show":{let M=k.controller.label;k.controller.pushNote("rename",M!==void 0?[`sess\xE3o: \u25CF ${M}${k.controller.labelColor?` (${k.controller.labelColor})`:""}`,"troque com `/rename <nome> [--cor <cor>]` \xB7 limpe com `/rename --limpar`."]:["esta sess\xE3o n\xE3o tem r\xF3tulo.","d\xEA um: `/rename <nome>` (cor autom\xE1tica) ou `/rename <nome> --cor <cor>`.",`cores: ${ya.join(", ")}.`]);return}case"error":k.controller.pushNote("rename",[R.message]);return}}if(A.id==="init"){let R=/(?:^|\s)--force\b/.test(q)||q.trim()==="--force",M=q.replace(/--force\b/,"").trim();if(M!==""&&!R){let G=F1(M);k.controller.pushNote("init",[`gerando scaffold sob medida para: ${M}`,"o agente vai analisar a descri\xE7\xE3o e criar os arquivos em .aluy/\u2026"]),k.controller.submit(G);return}B1({ports:k.ports,permission:k.engine,askResolver:k.askResolver,rootName:q7(k.workspace.root),overwrite:R}).then(G=>k.controller.pushNote(G.note.title,G.note.lines));return}if(A.id==="notify"){let R=Jw(q,{enabled:un.enabled,tty:!0});R.kind==="notify"&&(un.setEnabled(R.enable),k.controller.pushNote(R.note.title,R.note.lines));return}if(A.id==="undo"){let R=gt??(()=>Je.undo());gt=null,R().then(xt);return}if(A.id==="redo"){gt=null,Je.redo().then(xt);return}if(A.id==="compact"){k.controller.compact();return}if(A.id==="cycle"){let R=q.trim().split(/\s+/)[0]?.toLowerCase();if(R==="pause"){k.controller.cyclePause();return}if(R==="resume"){k.controller.cycleResume();return}if(R==="stop"){k.controller.cycleStop();return}if(R==="status"){k.controller.cycleStatus();return}if(R==="edit"){let G=(q.trim().match(/^edit\b\s*(.*)$/i)?.[1]??"").trim().match(/"[^"]*"|\S+/g)??[],ee={},ge=[];for(let eo=0;eo<G.length;eo+=1){let go=G[eo];if(go==="--max-iter"||go==="--iter"){let Mt=Number(G[eo+1]);eo+=1,Number.isInteger(Mt)&&(ee.maxIterations=Mt);continue}let qo=go.match(/^(\d+)x$/i);if(qo){ee.maxIterations=Number(qo[1]);continue}let rr=go.match(/^(\d+)(s|m|h)$/i);if(rr&&ee.intervalMs===void 0&&ge.length===0){let Mt=Number(rr[1]),$i=rr[2].toLowerCase();ee.intervalMs=Mt*($i==="s"?1e3:$i==="m"?6e4:36e5);continue}ge.push(go.replace(/^"|"$/g,""))}let Ke=ge.join(" ").trim();Ke&&(ee.task=Ke),k.controller.cycleEdit(ee);return}if(q.trim()===""){k.controller.pushNote("/cycle",['uso: `/cycle <intervalo|--por dur> "tarefa"` \u2014 ex.: `/cycle 5m "rode os testes e corrija o que quebrar"`.',"sem teto (dura\xE7\xE3o/itera\xE7\xF5es/intervalo), o /cycle N\xC3O inicia \u2014 \xE9 uma prote\xE7\xE3o contra execu\xE7\xE3o sem fim."]);return}k.controller.cycle(q);return}if(A.id==="clear"){let R=$h(q),{armed:M,nextArmed:G}=cB(or,R);or=G,Fh(R,{clearSession:()=>k.controller.clear(),memory:k.memory},M).then(ee=>{ee.armed||(or=void 0),ee.note.lines.length>0&&k.controller.pushNote(ee.note.title,ee.note.lines),ee.cleared&&Et?.()});return}if(A.id==="memory"){let R=Ph(q);Ih(R,k.memory,k.engine.isPlan).then(M=>k.controller.pushNote(M.title,M.lines));return}if(A.id==="todo"){let R=Nh(q);Dh(R,k.todoStore,k.engine.isPlan).then(M=>k.controller.pushNote(M.title,M.lines));return}if(A.id==="cron"){let R=[],M={out:ge=>R.push(ge),err:ge=>R.push(ge)},G=q.match(/"[^"]*"|\S+/g)?.map(ge=>ge.replace(/^"|"$/g,""))??[],ee=G.length===0?["list"]:G;eS(ee,{io:M}).then(()=>k.controller.pushNote("cron",R.length>0?R:["(sem sa\xEDda)"]));return}if(A.id==="add-dir"){let R=XF(q,k.workspace);k.controller.pushNote(R.title,R.lines);return}if(A.id==="agents"){let R=yc({profiles:[...it.profiles,...At.profiles],errors:ht});k.controller.pushNote(R.title,R.lines);return}if(A.id==="workflows"){let R=/^\s*run\s+(\S+)/.exec(q);if(R){let Ke=R[1];k.controller.workflowRun(Ke);return}let M=/^\s*use\s+(\S+)/.exec(q);if(M){let Ke=M[1];k.controller.workflowsUse(Ke);return}let G=new ds().load(),ee=new us({workspace:k.workspace}).load(),ge=wc({workflows:[...G.workflows,...ee.workflows],errors:[...G.errors,...ee.errors]});k.controller.pushNote(ge.title,ge.lines);return}if(A.id==="skills"){let R=new ui().load(),M=new mi({workspace:k.workspace}).load(),G=kc({skills:[...R.skills,...M.skills],errors:[...R.errors,...M.errors]});k.controller.pushNote(G.title,G.lines);return}if(A.id==="doctor"){let R=/(^|\s)--(deep|test)(\s|$)/.test(q),M=k.workspace.root;WB({login:k.login,memory:{count:async()=>(await k.memory.list()).length},workspaceRoot:M,unsafe:k.engine.isUnsafe,env:e,probeOverride:{makeMcpTransport:()=>new Tr({cwd:M,parentEnv:e}),...R?{tierTester:()=>Qf({tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{},login:k.login,env:e})}:{}}},G=>k.controller.upsertDoctor(G.checks,G.summary));return}if(A.id==="mcp"){let R=ZF(q);if(R){let{kind:ee,scope:ge}=R,Ke=ee==="reload"?"reload":"reconnect";k.controller.pushNote("mcp",[`/${Ke} ${ge==="all"?"todos":ge}: recarregando\u2026`]),fe(ge).then(({ok:eo,failed:go})=>{let qo=[];eo.length>0&&qo.push(`\u2713 ${eo.join(", ")}`),go.length>0&&qo.push(`\u2717 ${go.join(", ")}`),eo.length===0&&go.length===0&&qo.push("nenhum server afetado."),k.controller.pushNote(`mcp ${Ke}`,qo)});return}let M=YB(q);if(M){let ee=VB(M);k.controller.pushNote(ee.title,ee.lines);return}let G=QF(q);if(G){if(G.query===""){let ge=eB();k.controller.pushNote(ge.title,ge.lines);return}let ee=tB(G.query);k.controller.pushNote(ee.title,ee.lines),oB(G.query,Me).then(ge=>k.controller.pushNote(ge.title,ge.lines));return}if(Z){let ee=Js(Z.sources,Z.discovery),ge=JF(ee,Z.configError);k.controller.pushNote(ge.title,ge.lines);return}}if(A.id==="telegram"){rB(q,{configStore:g,secretStore:new Ea("telegram")}).then(R=>k.controller.pushNote(R.title,R.lines));return}let be=VF(A.id,{usage:k.controller.usage,unsafe:k.engine.isUnsafe});if(be.kind==="quit"){$r.unmount();return}if(be.kind==="async"){nB(be.id,k.login).then(R=>k.controller.pushNote(R.title,R.lines));return}sB(be,k.controller)},ho=A=>{let q=E.load(A);if(!q){k.controller.pushNote("history",[`sess\xE3o n\xE3o encontrada: ${A} \u2014 nada mudou.`]);return}let be=Cu(q,Jo);i$(q,{restoreBlocks:R=>k.controller.restoreBlocks(R),seedHistory:R=>k.controller.seedHistory(R),resetContinuation:()=>k.controller.resetResumeContext(),switchSession:R=>{Xe.id=R.id,Xe.cwd=R.cwd,be.tier.trim()!==""&&k.controller.setTier(be.tier,be.model),be.tier==="custom"&&be.model&&k.controller.setProvider(be.provider)},clearScreen:()=>{}}),k.controller.setLabel(q.label,q.labelColor),Ie(),be.warning&&k.controller.pushNote("model",[be.warning]),k.controller.pushNote("history",[`sess\xE3o retomada: ${A} \u2014 continue de onde parou.`])},ml=A=>{let q=k.checkpoints.get(A.checkpointId);if(!q){k.controller.pushNote("rewind",["ponto n\xE3o encontrado \u2014 nada mudou."]);return}let be=[`voltando ao ponto #${q.ordinal}: ${q.label}`];if((A.action==="both"||A.action==="code")&&k.checkpoints.restoreCode(q.id).then(R=>{let M=[];R.written.length>0&&M.push(`arquivos restaurados: ${R.written.length}`),R.removed.length>0&&M.push(`arquivos removidos (eram novos): ${R.removed.length}`),R.written.length===0&&R.removed.length===0&&M.push("nenhuma edi\xE7\xE3o de arquivo posterior ao ponto \u2014 c\xF3digo intacto.");for(let G of R.failed)M.push(`\u26A0 falhou: ${G.path} \u2014 ${G.reason}`);if(R.barrierWarnings.length>0){M.push("comando(s) rodaram depois do ponto (efeito de shell N\xC3O desfeito):");for(let G of R.barrierWarnings)M.push(` \xB7 ${G}`)}k.controller.pushNote("rewind \u2014 c\xF3digo",M)}),A.action==="both"||A.action==="conversation"){let R=k.controller.rewindConversation(q.blockCount,ci);be.push(R>0?`conversa rebobinada \u2014 ${R} bloco(s) posterior(es) descartado(s).`:"conversa j\xE1 estava neste ponto."),Et?.(),Ie()}k.controller.pushNote("rewind",be)},Tt=KI(e),Ni=YI(e),We=Tt||Ni?XI(r,{sync:Tt,overwrite:Ni}):void 0,Di=We?.stdout??r,Ot=T&&As(r.rows??0,r.columns??0).kind==="cockpit";Ot&&(mA(r),We?.setCockpit(!0));let Lu=tN(r),yt=()=>Lu.disable();process.once("exit",yt);let fl=t.exportStore??new xd,Le=async A=>{let q=c1(k.controller.blocks,{sessionId:Xe.id,...k.controller.label!==void 0?{label:k.controller.label}:{},tier:k.controller.tier});return fl.write(q,{sessionId:Xe.id,...A!==void 0?{fileName:A}:{}})},Pu=()=>{We?.cleanup(),Ho.reset(),yt()},Ge=a1(process,Pu),pl=k.controller.provider,qh=pl!==void 0&&pl!==""?{currentProvider:pl}:{},nr=k.controller.effort,Iu=nr!==void 0&&nr!==""?{currentEffort:nr}:{};P1(process.stdin);try{i&&k.controller.dismissBoot(),$r=H7(V7(MB,{initialTheme:dn,env:e,...po,...Oo,onThemeChanged:M=>{let G=Sr(M);G&&Ho.apply(G.bg),G&&g.saveTheme(G.name),k.controller.pushNote("theme",[`tema trocado para: ${G?G.label:M} (${M})`])},initialLang:b,onLangChanged:M=>{let G=ti(M);g.saveLang(M);let ee=bi(M).t;k.controller.pushNote("lang",[ee("lang.changed",{label:G?G.label:M})])},controller:k.controller,egress:k.egress,userCommands:Rs,animate:Zt.animate,syncActive:We!==void 0,version:Fn,onCommand:$,registerClearScreen:M=>{Et=M},fileIndex:k.fileIndex,attachReader:k.attachReader,catalog:k.catalogClient,customModels:k.customModelClient,providersClient:k.providersClient,sessionStore:E,onResumeSession:ho,rewindSource:k.checkpoints,onRewind:ml,initialSplitView:w,onSplitViewChange:M=>{g.saveSplitView(M)},initialFullscreen:T,cockpitEnteredAtBoot:Ot,cockpitScreen:{enter:()=>{mA(r),We?.setCockpit(!0)},leave:()=>{We?.setCockpit(!1),r.write("\x1B[?1049l\x1B[?25h\x1B[2J\x1B[3J\x1B[H"),We?.resetDiffer()},resetDiffer:()=>{We?.resetDiffer()}},onFullscreenChange:M=>{g.saveFullscreen(M)},onExportTranscript:Le,onSelectTier:(M,G,ee)=>{k.controller.setTier(M,G),g.saveTier(M,G),M==="custom"&&G?k.controller.pushNote("model",[`modelo Custom: ${G}`,"\u25CD slug enviado ao broker, que revalida e resolve o provider/credencial (nunca exibido)","\u26A0 warn-but-allow \u2014 fora do cat\xE1logo curado pode ter custo/qualidade vari\xE1vel",...ee?.supportsTools===!1?["\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem"]:[]]):k.controller.pushNote("model",[`tier trocado para: ${M}`])},...Iu,onSelectConjugated:(M,G)=>{let ee=M.kind==="tier"?M.key:"custom",ge=M.kind==="custom"?M.model:void 0;k.controller.setTier(ee,ge),g.saveTier(ee,ge),G.kind==="set"&&k.controller.setEffort(G.value);let Ke=G.kind==="set"?`esfor\xE7o: ${G.value}`:`esfor\xE7o: ${k.controller.effort??"(default do modelo)"} (mantido)`,eo=M.kind==="custom"&&M.supportsTools===!1?["\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem"]:[];ee==="custom"&&ge?k.controller.pushNote("model",[`modelo Custom: ${ge}`,Ke,"\u25CD slug enviado ao broker, que revalida e resolve o provider/credencial (nunca exibido)","\u26A0 warn-but-allow \u2014 fora do cat\xE1logo curado pode ter custo/qualidade vari\xE1vel",...eo]):k.controller.pushNote("model",[`tier trocado para: ${ee}`,Ke])},...qh,onSelectProvider:M=>{k.controller.setProvider(M);let G=k.controller.provider===M;k.controller.pushNote("provider",G?[`provider do modo Custom: ${M}`,"\u25CD enviado ao broker em par com o modelo Custom \u2014 ele resolve a credencial (nunca exibida)","vale s\xF3 nesta sess\xE3o (n\xE3o persiste)."]:[`provider pretendido: ${M}`,"\u26A0 sem modelo Custom ativo \u2014 o provider pareia com um modelo Custom.","selecione um modelo via `/model` \u2192 Custom e refa\xE7a o `/provider`."])},permissionControl:{get mode(){return k.engine.mode},setMode:M=>k.controller.setMode(M),sessionGrants:k.engine.sessionGrants,effectiveSafeDefault:M=>k.engine.effectiveSafeDefault(M),setSafeToolDefault:(M,G)=>k.engine.setSafeToolDefault(M,G)}}),{stdout:Di,exitOnCtrlC:!1});let A=[];try{A=[...await k.memory.recall()]}catch{A=[]}let q=[...A,...Co];q.length>0&&k.controller.seedHistory(q);let be=k.controller.subscribe(()=>Ie());k.controller.setMemoryShutdown(()=>{Ie(),process.exitCode=1;try{$r.unmount()}catch{}}),k.controller.startMemoryMonitor();let R=_t(cn,"session-start");R.length>0&&jo.runAll(R),t.goal!==void 0&&t.goal.trim()!==""&&k.controller.submit(t.goal);try{await $r.waitUntilExit()}finally{We?.cleanup(),Ho.reset(),s.dispose(),Ge.dispose()}Z&&await Z.close(),H(),he(),be(),Ie(),process.stdout.isTTY&&k.controller.current.blocks.length>0&&process.stdout.write(`
688
688
  Sess\xE3o salva \u2014 id: ${Xe.id}
689
689
  Para retomar esta conversa: aluy --resume ${Xe.id}
690
690
  (ou \`aluy --continue\` para a sess\xE3o mais recente deste diret\xF3rio)