@hiperplano/aluy-cli 1.0.0-rc.43 → 1.0.0-rc.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-bundle/bin/aluy.js +24 -24
- package/dist-bundle/index.js +20 -20
- package/package.json +1 -1
package/dist-bundle/bin/aluy.js
CHANGED
|
@@ -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
|
|
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 mt=(t,e)=>{for(var o in e)PU(t,o,{get:e[o],enumerable:!0})};import{homedir as IU}from"node:os";import{join as NU}from"node:path";function Sl(t=IU()){return NU(t,".aluy")}var qu=p(()=>{"use strict"});var wl,qA=p(()=>{"use strict";wl="1.0.0-rc.44"});function ur(t,e){return t.decide(e)}var Ms=p(()=>{"use strict"});var Ln,mr,fr=p(()=>{"use strict";Ln="remember",mr="recall"});var mg,DU,Hi,fg=p(()=>{"use strict";mg=class{id;horizon;label;parentId;children;dependencies;pinned;closed;createdAt;lastAccessedAt;accessCount;context;constructor(e,o,n,r,s){this.id=e,this.horizon=o,this.label=n,this.parentId=r,this.children=new Set,this.dependencies=new Set,this.pinned=!1,this.closed=!1,this.createdAt=s,this.lastAccessedAt=s,this.accessCount=0,this.context=[]}touch(e){this.lastAccessedAt=e,this.accessCount+=1}snapshot(){return{id:this.id,horizon:this.horizon,label:this.label,parentId:this.parentId,children:[...this.children],dependencies:[...this.dependencies],pinned:this.pinned,closed:this.closed,createdAt:this.createdAt,lastAccessedAt:this.lastAccessedAt,accessCount:this.accessCount,contextSize:this.context.length}}},DU=200,Hi=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??DU,this.now=e?.clock??Date.now}static boxId(e,o){return`${e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)}-${o.toString(36)}`}openBox(e,o,n,r){let s=this.nodes.get(e);if(s)return s.touch(this.now()),{box:s.snapshot(),created:!1};if(this.nodes.size>=this.maxBoxes&&(this.evictOne(),this.nodes.size>=this.maxBoxes))return null;let i=this.now(),a=new mg(e,o,n,r??null,i);if(r){let l=this.nodes.get(r);l&&l.children.add(e)}return this.nodes.set(e,a),{box:a.snapshot(),created:!0}}closeBox(e){let o=this.nodes.get(e);return o?(o.closed=!0,o.touch(this.now()),o.snapshot()):null}isClosed(e){let o=this.nodes.get(e);return o?o.closed:!1}reopenBox(e){let o=this.nodes.get(e);return o?(o.closed=!1,o.touch(this.now()),o.snapshot()):null}setHorizon(e,o){let n=this.nodes.get(e);return n?(n.horizon=o,n.touch(this.now()),n.snapshot()):null}setParent(e,o){let n=this.nodes.get(e);return n?n.parentId===o?n.snapshot():o!==null&&this.wouldCreateCycle(e,o)?null:(n.parentId&&this.nodes.get(n.parentId)?.children.delete(e),n.parentId=o,o&&this.nodes.get(o)?.children.add(e),n.touch(this.now()),n.snapshot()):null}wouldCreateCycle(e,o){let n=new Set,r=o;for(;r!==null;){if(r===e||n.has(r))return!0;n.add(r),r=this.nodes.get(r)?.parentId??null}return!1}getBox(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),o.snapshot()):null}listBoxes(e="lastAccessedAt"){let o=[...this.nodes.values()].map(n=>n.snapshot());switch(e){case"createdAt":return o.sort((n,r)=>n.createdAt-r.createdAt);case"accessCount":return o.sort((n,r)=>r.accessCount-n.accessCount);default:return o.sort((n,r)=>r.lastAccessedAt-n.lastAccessedAt)}}get size(){return this.nodes.size}addContext(e,o){let n=this.nodes.get(e);return n?(n.context.push({ts:this.now(),text:o}),n.touch(this.now()),n.snapshot()):null}getContext(e){let o=this.nodes.get(e);return o?(o.touch(this.now()),[...o.context]):[]}getContextChain(e){let o=[],n=new Set,r=e;for(;r&&!n.has(r);){n.add(r);let s=this.nodes.get(r);if(!s)break;s.touch(this.now()),o.push({boxId:s.id,entries:[...s.context]}),r=s.parentId}return o}addDependency(e,o){let n=this.nodes.get(e);return!n||!this.nodes.has(o)||n.id===o?!1:(n.dependencies.add(o),n.touch(this.now()),!0)}getDependencies(e){let o=this.nodes.get(e);return o?[...o.dependencies]:[]}pinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!0,o.touch(this.now()),o.snapshot()):null}unpinBox(e){let o=this.nodes.get(e);return o?(o.pinned=!1,o.touch(this.now()),o.snapshot()):null}evictOne(){let e=[];for(let n of this.nodes.values())n.horizon==="longo"||n.pinned||e.push(n);if(e.length===0)return null;e.sort((n,r)=>{let s=n.horizon==="curto"?0:1,i=r.horizon==="curto"?0:1;if(s!==i)return s-i;let a=n.closed?0:1,l=r.closed?0:1;return a!==l?a-l:n.lastAccessedAt!==r.lastAccessedAt?n.lastAccessedAt-r.lastAccessedAt:n.accessCount-r.accessCount});let o=e[0];return this.removeNode(o)}forceEvict(e){let o=this.nodes.get(e);return!o||o.horizon==="longo"||o.pinned?null:this.removeNode(o)}removeBox(e){let o=this.nodes.get(e);return o?this.removeNode(o):null}removeNode(e){if(e.parentId){let o=this.nodes.get(e.parentId);o&&o.children.delete(e.id)}return this.nodes.delete(e.id),e.snapshot()}}});function Wu(t){let e=[];for(let o of t){e.push({step:o,depth:0});for(let n of o.substeps??[])e.push({step:n,depth:1})}return e}function zA(t,e){let o,n="pending",r;if(typeof t=="string")o=t;else if(t!==null&&typeof t=="object"){let i=t,a=i.title??i.step??i.text??i.name??i.content;if(typeof a=="string"&&(o=a),typeof i.status=="string"&&$U.has(i.status)&&(n=i.status),e){let l=i.substeps??i.subtasks??i.subpassos??i.children;if(Array.isArray(l)&&l.length>0){let c=[];for(let d of l){let m=zA(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return BU;let s=o.trim().slice(0,FU);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function UU(t){let e=t.steps??t.plan??t.todos??t.items;if(!Array.isArray(e))return{error:'update_plan: passe "steps" como uma LISTA de passos (string ou {title,status}).'};if(e.length===0)return{error:"update_plan: a lista de passos est\xE1 vazia."};let o=[];for(let i of e){let a=zA(i,!0);if(typeof a=="string")return{error:a};o.push(a)}let n=new Set,r=i=>{if(!n.has(i))return n.add(i),i;for(let a=2;;a++){let l=`${i} #${a}`;if(!n.has(l))return n.add(l),l}};for(let i=0;i<o.length;i++){let a=o[i],l=r(a.title),c=a.substeps?.map(d=>({...d,title:r(d.title)}));o[i]=c!==void 0?{...a,title:l,substeps:c}:{...a,title:l}}let s=Wu(o).length;return s>WA?{error:`update_plan: no m\xE1ximo ${WA} passos (recebidos ${s}).`}:{steps:o}}function jU(t){let e=Wu(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${KA[r.step.status]} ${r.step.title}`).join(`
|
|
3
3
|
`);return`plano (${o}/${e.length}):
|
|
4
4
|
${n}`}function qU(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function WU(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??Hi.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=qU(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 GU(t,e){if(!e)return jU(t);let o=new Map;for(let c of e.listBoxes())o.set(c.label,c);let n=new Map;for(let c of e.listBoxes())n.set(c.id,c);let r=new Map,s=(c,d=new Set)=>{let m=r.get(c);if(m!==void 0)return m;let u=n.get(c);if(!u||!u.parentId||d.has(c))return r.set(c,0),0;let h=s(u.parentId,new Set(d).add(c))+1;return r.set(c,h),h},i=Wu(t),l=[`plano (${i.filter(c=>c.step.status==="completed").length}/${i.length}):`];for(let{step:c,depth:d}of i){let m=o.get(c.title),u=m?HU[m.horizon]:"",h=m?s(m.id):d,g=" ".repeat(h),y=KA[c.status];l.push(`${g}${u} ${y} ${c.title}`)}return l.join(`
|
|
5
5
|
`)}var Al,$U,WA,FU,BU,KA,HU,GA,zU,YA,Gu=p(()=>{"use strict";fg();Al="update_plan";$U=new Set(["pending","in_progress","completed"]),WA=30,FU=120,BU="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";KA={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};HU={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};GA=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),zU=Object.freeze({type:"object",properties:{steps:{type:"array",description:"A lista COMPLETA de passos do plano (re-emita TODOS a cada atualiza\xE7\xE3o \u2014 substitui o anterior).",items:{type:"object",properties:{title:{type:"string",description:"O passo, curto e no imperativo."},status:GA,substeps:{type:"array",description:"OPCIONAL: sub-passos que detalham este passo (1 n\xEDvel). Aparecem indentados sob o passo e seguem o foco dele. Use quando um passo tem a\xE7\xF5es menores distintas.",items:{type:"object",properties:{title:{type:"string",description:"O sub-passo, curto e no imperativo."},status:GA},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),YA={name:Al,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:zU,async run(t,e){let o=UU(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&WU(o.steps,e.graph),e.plan&&e.plan.set(Wu(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:GU(o.steps,e.graph)})}}});function VA(t){let e=t.question??t.prompt??t.text??t.message;if(typeof e!="string"||e.trim()==="")return{error:'perguntar: passe "question" (a pergunta em texto). Para escolha, passe tamb\xE9m "options".'};let o=e.trim().slice(0,2e3),n=t.header??t.title,r=typeof n=="string"&&n.trim()!==""?n.trim().slice(0,200):void 0,s=t.options??t.choices,i=Array.isArray(s)?YU(s):void 0;if(typeof i=="string")return{error:i};let a,l=t.kind??t.type;if(typeof l=="string"&&KU.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 YU(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 VU(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=Je(e),r=Je(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 Wi(this.limits),i={iterations:0,toolCalls:0,tokens:0},a=n??this.sessionId,l=this.tools.list(),c=this.stuckResolver?sb(this.watchdogEnv):void 0,d=lb(),m,u=0,h=iq(e),g=0,y=!1,b=0,w=0,T,A=0;for(;;){if(o?.aborted)throw jm(this.maestro?.bus,"ESC/Ctrl+C no topo da itera\xE7\xE3o"),new st;let M=s.peekExceeded();if(M)return this.stopAtLimit(s,i,e,M,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 H=Mm(a,u);if(u+=1,this.onProgress?.({kind:"iteration",iteration:u}),c?.noteIteration(),this.pollInjected){let K=this.pollInjected().filter(ue=>ue.role==="user_inject");K.length>0&&(e.push(...K),this.onProgress?.({kind:"inject",count:K.length}),c?.noteRedirect())}if(this.monitorQueue&&this.monitorQueue.pending()>0){let K=this.monitorQueue.drain();K.length>0&&(e.push(...K.map(rc)),this.onProgress?.({kind:"monitor",count:K.length}),c?.noteProgress())}if(this.selfCheck.enabled&&b>0&&u%this.selfCheck.reanchorEveryK===0&&e.push({role:"reanchor",text:Jy(h,aq(e))}),this.weakYoloGuardrail&&!y&&eb({yolo:this.permission instanceof no&&this.permission.isUnsafe,tier:this.weakYoloGuardrail.tier(),history:e})){y=!0,T_(this.maestro?.bus,this.weakYoloGuardrail.tier()??"unknown");try{this.weakYoloGuardrail.onWarn(tb(this.weakYoloGuardrail.tier()))}catch{}e.push({role:"reanchor",text:ob()})}if(this.maestro)try{let K=this.maestro.bus.poll(),ue=await this.maestro.rege(K);if(await this.applyMaestroDecision(ue,e,d,o,c)==="stop")return this.stopByMaestro(i,e,a)}catch(K){if(K instanceof st||o?.aborted)throw K}await this.maybeAutoCompact(e,m,d,o);let G=this.ports.cwd?this.ports.cwd.roots??[this.ports.cwd.root]:void 0,Y=Om(l,e,this.projectInstructions,G,this.availableAgents,this.sessionCommands),$;try{$=await this.model.call({messages:Y,idempotencyKey:H,...o?{signal:o}:{}})}catch(K){if(K instanceof Is)return A_(this.maestro?.bus,K.kind,K.repeats,K.sample),this.stopAtDegenerate(i,e,K,a);throw K}let te=cq($.usage);s.addTokens(te),$.usage&&Number.isFinite($.usage.tokens_in)&&$.usage.tokens_in>0&&(m=$.usage.tokens_in),Number.isFinite(te)&&te>0&&(i.tokens+=te,this.onUsage?.({...i})),this.onProgress?.({kind:"model",tokens:te});let oe=$.content.trim().length>0;oe&&c?.noteModelContent($.content);let J=$.tool_calls!==void 0?dq($.tool_calls):void 0;if(J!==void 0&&J.length>0){e.push({role:"model_tool_calls",text:$.content,calls:J});for(let ue=0;ue<J.length;ue+=1){let Z=J[ue];if(o?.aborted)throw jm(this.maestro?.bus,"ESC/Ctrl+C durante batch de tool-calls"),new st;let ie=await this.executeToolCall(Z.name,Z.input,s,i,o,c);if(ie.kind==="limit"){for(let P=ue;P<J.length;P+=1){let ge=J[P];e.push({role:"tool_result",toolCallId:ge.id,toolName:ge.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,ie.limit,a)}ie.ok&&(b+=1),e.push({role:"tool_result",toolCallId:Z.id,toolName:Z.name,text:ie.observation})}if(await this.checkStuck(c,e,o)==="end")return this.stopByStuck(i,e,a);continue}e.push({role:"model",text:$.content});let D=XT($.content);if(D.kind==="final"){let K=this.selfCheck.enabled&&b>0;if(K&&g<this.selfCheck.maxVerifications){g+=1,(T===void 0||b>A)&&(T=D.text),A=b,e.push({role:"reanchor",text:Qy(h,g,this.selfCheck.maxVerifications)}),this.onProgress?.({kind:"self-check",attempt:g,max:this.selfCheck.maxVerifications});continue}if(K&&g>=this.selfCheck.maxVerifications&&e.push({role:"reanchor",text:Zy(this.selfCheck.maxVerifications)}),!oe){c?.noteEmptyTurn();let Z=await this.checkStuck(c,e,o);if(Z==="redirect"||Z==="continue")continue}if(this.maestro&&this.continuationCfg&&oe){let Z=o?.aborted??!1,ie=yb(D.text,!1),P=hb(this.ports.graph?.listBoxes()??[]),ge=!1;if(ie||P){let ee=pb({continuationsThisTurn:w,signalAborted:Z,askedUser:ge},this.continuationCfg);if(ee.action==="continue"){w+=1;let le=ie?bb(ee.reason):gb();e.push({role:"reanchor",text:le}),this.onProgress?.({kind:"continue",reason:ie?ee.reason:"plano-pendente"});continue}}}let ue=T!==void 0&&b===A?T:D.text;return{sessionId:a,stop:{kind:"final",answer:ue},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 z=await this.executeToolCall(D.call.name,D.call.input,s,i,o,c);if(z.kind==="limit")return this.stopAtLimit(s,i,e,z.limit,a);if(z.ok&&(b+=1),e.push({role:"observation",toolName:D.call.name,text:z.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=ab(o,this.autoCompact.contextWindow),i=cb(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=ur(this.permission,l);if(c.decision==="deny")return i?.noteToolResult(e,!1,`blocked:${c.decision}`),{kind:"observation",observation:M_(e,c)};if(c.decision==="ask"&&!await this.resolveAsk(l,c,s))return i?.noteToolResult(e,!1,`blocked:${c.decision}`),{kind:"observation",observation:M_(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===Ln&&h.ok&&this.permission instanceof no&&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 no&&this.permission.grantSession(e),!0)}stopAtLimit(e,o,n,r,s=this.sessionId){return __(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=lq(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(E_(this.maestro?.bus,r.kind,r.count,r.sample),n?.aborted)return jm(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=oa(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=oa(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"}},nq=2500,O_=.6});function N_(){return globalThis.process?.env??{}}function uq(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 na(t=N_(),e,o){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.min(32768,Math.max(512,Math.floor(e)));let n=uq(t[L_],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 D_(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 xb(t=N_()){let e=(t[P_]??"").trim().toLowerCase();return!(e==="1"||e==="true"||e==="yes"||e==="on")}function Sb(t){let e=Math.max(0,Math.floor(t.heapLimitMb*I_));if(e<=0)return qm;let o=D_(t.pressureAtEnv)??.8,n=.88-.8,r=.95-.8,s=Math.min(.99-2*Hm,Math.max(.5,o)),i=Math.min(.99-Hm,Math.max(s+Hm,o+n)),a=Math.min(.99,Math.max(i+Hm,o+r));return{heapLimitBytes:e,compactAt:s,warnAt:i,shutdownAt:a}}function wb(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 Ab(){return{compactedThisEpisode:!1,warnedThisEpisode:!1,shutdownInitiated:!1}}function Eb(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 dc(t,e){e==="compact"?t.compactedThisEpisode=!0:e==="warn"?t.warnedThisEpisode=!0:e==="shutdown"&&(t.shutdownInitiated=!0)}function Tb(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/I_)}var L_,P_,qm,I_,Hm,uc,_b,$_=p(()=>{"use strict";L_="ALUY_MAX_HEAP_MB",P_="ALUY_MEM_PRESSURE_OFF",qm={heapLimitBytes:0,compactAt:.8,warnAt:.88,shutdownAt:.95},I_=1024*1024;Hm=.01;uc="mem\xF3ria apertada",_b="mem\xF3ria esgotada"});var mc,Rb=p(()=>{"use strict";No();mc=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 He&&e.isToolsUnsupported?(this.disabled=!0,!0):!1}}});var Dn,F_=p(()=>{"use strict";No();Rb();Dn=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 qe)||d===o-1)throw m}throw i}catch(d){if(l&&this.nativeTools?.degradeOnUnsupported(d)){i=d;continue}throw d}}throw i}}});var B_=p(()=>{"use strict"});function H_(t){return/[.*+?^${}()|[\]\\]/.test(t)?`\\${t}`:t}function q_(t){return t==="\\"||t==="]"?`\\${t}`:t}function mq(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 Do('escape "\\" no fim do segmento (sem char para escapar).');e+=H_(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 Do('escape "\\" n\xE3o terminado dentro de "[...]".');i+=q_(d),s+=2;continue}i+=q_(c),s+=1}if(!l)throw new Do(`classe de chars "[" n\xE3o fechada (falta "]") em "${t}".`);e+=a?`[^/${i}]`:`[${i}]`,o=s+1;continue}e+=H_(r),o+=1}return new RegExp(`^${e}$`)}function fq(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:mq(n)});return o}function pq(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 Ob(t,e=0){if(e>U_)throw new Do(`aninhamento de "{...}" excede o teto (${U_}).`);let o=hq(t,"{",0);if(o===-1)return[t];let n=gq(t,o);if(n===-1)throw new Do(`"{" sem "}" correspondente em "${t}".`);let r=t.slice(0,o),s=t.slice(o+1,n),i=t.slice(n+1),a=yq(s),l=[];for(let c of a)for(let d of Ob(`${r}${c}${i}`,e+1)){if(l.length>=j_)throw new Do(`expans\xE3o de "{...}" gera alternativas demais (> ${j_}).`);l.push(d)}return l}function hq(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 gq(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 yq(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 Mb(t){if(t==="")throw new Do("padr\xE3o vazio.");if(t.length>Cb)throw new Do(`padr\xE3o longo demais (${t.length} > ${Cb} chars).`);let e=Ob(t).map(o=>fq(o));return o=>{let n=o.split("\\").join("/"),r=n===""?[""]:n.split("/");return e.some(s=>pq(s,r))}}var Do,Cb,U_,j_,Lb=p(()=>{"use strict";Do=class extends Error{constructor(e){super(e),this.name="GlobSyntaxError"}},Cb=1024,U_=5,j_=1024});var Pb,Ib,Nb,Db=p(()=>{"use strict";Pb="add_todo",Ib="list_todos",Nb="done_todo"});function z_(t,e){let o=t[e];return typeof o=="string"&&o.length>0?o:void 0}function G_(t){return`${t.done?"\u2713":"\u25CB"} ${t.id} ${t.text}`}var bq,vq,kq,W_,Wm,Gm,zm,$b=p(()=>{"use strict";Db();bq=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"]}),vq=Object.freeze({type:"object",properties:{}}),kq=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"]}),W_=500;Wm={name:Pb,effect:"memory",parameters:bq,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=z_(t,"item");if(!n)return{ok:!1,observation:'add_todo requer "item" (string n\xE3o-vazia).'};if(n.length>W_)return{ok:!1,observation:`item muito longo (>${W_} 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)}`}}}},Gm={name:Ib,effect:"read",parameters:vq,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(G_)]:["","(nenhum pendente)"],...s.length>0?["","\u2500\u2500 Feitos \u2500\u2500",...s.map(G_)]:[],"","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)}`}}}},zm={name:Nb,effect:"memory",parameters:kq,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=z_(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 Y_={};
|
|
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)}`}}}},zm={name:Nb,effect:"memory",parameters:kq,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=z_(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 Y_={};mt(Y_,{MAX_FAILURES_SHOWN:()=>Sq,MAX_FAIL_MESSAGE_BYTES:()=>wq,MAX_LINE_BYTES:()=>xq,TestRunAccumulator:()=>Fb,detectDialect:()=>K_,renderTestSummary:()=>jq});function K_(t){for(let e of Uq)if(e.matches(t))return e;return null}function jq(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 xq,Sq,wq,Aq,Eq,Tq,_q,Rq,Cq,Oq,Mq,Lq,Pq,Iq,Nq,Dq,$q,Fq,Bq,Uq,Fb,Bb=p(()=>{"use strict";xq=8192,Sq=50,wq=2048,Aq={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}},Eq={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}},Tq={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}},_q={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}},Rq={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}},Cq={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}},Oq={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}},Lq={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}},Iq={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}},Nq={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}},Dq={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}},$q={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}},Fq={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}},Bq={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}},Uq=[Aq,$q,Eq,Tq,Mq,Bq,Cq,_q,Iq,Nq,Rq,Oq,Lq,Pq,Dq,Fq];Fb=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+`
|
|
@@ -152,7 +152,7 @@ ${t.trim()}`}}function YC(t,e,o=Nc){let{older:n,recent:r}=hf(t,o);if(n.length===
|
|
|
152
152
|
`);let i=so(process.execPath,[n,"-p",o,"--yolo","--no-self-check"],{stdio:"inherit",timeout:9e5,env:{...process.env,ALUY_OVERWRITE_RENDER:"0",ALUY_SYNC_OUTPUT:"0",ALUY_NO_WEAK_YOLO_WARN:"1",ALUY_PRINT_VERBOSE:"1"}});if(t==="mem0")try{let l=be(Xo(),Sr),c=be(l,vn);Ye(l)&&Wf(zf(),c)}catch{}t==="ollama"&&(await sz(),iz()),process.stderr.write(`
|
|
153
153
|
verificando "${t}"\u2026 (alguns segundos; a pr\xF3xima etapa vem em seguida)
|
|
154
154
|
`);let a=await k0(t,process.platform,!0);for(let l=0;l<oz&&!a;l++)await rz(nz),a=await k0(t,process.platform,!0);return{target:t,hashOk:a,installed:a,message:a?`complemento "${t}" instalado e verificado.`:`o complemento "${t}" ainda n\xE3o respondeu como esperado. O Aluy CLI funciona sem ele; voc\xEA pode tentar de novo depois com \`aluy bootstrap\`.`}}function rz(t){return new Promise(e=>setTimeout(e,t))}async function sz(){for(let t of[bn,Kf()])try{await(await fetch(`http://${Yo}:${Un}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:t,stream:!1})})).text()}catch{}}function iz(){if(process.platform!=="win32")try{let t=so("sh",["-lc","command -v ollama"],{encoding:"utf8",timeout:1e4});if(t.status===0&&(t.stdout??"").trim()!=="")return;let e=Gf(),n=["/usr/local/bin/ollama","/usr/bin/ollama","/opt/homebrew/bin/ollama",be(e,".ollama","bin","ollama"),be(Xo(),Zr,"bin","ollama")].find(i=>Ye(i));if(n===void 0)return;let r=be(e,".local","bin");Ak(r,{recursive:!0});let s=be(r,"ollama");try{if(g0(s)===g0(n))return;FG(s)}catch{}try{$G(n,s)}catch{}}catch{}}function az(){try{return so("python3",["-m","venv","--help"],{timeout:1e4}).status===0}catch{return!1}}function lz(){try{return so("python3",["-m","pip","--version"],{timeout:1e4}).status===0}catch{return!1}}function cz(t){let e=[],o=[];if(t.has("ollama")&&(S0()||(e.push("zstd (extrair o Ollama)"),o.push("zstd")),w0()||(e.push("tar (extrair o Ollama)"),o.push("tar"))),t.has("mem0")||t.has("headroom")){let r=Tk();r.ok?(az()||(e.push("m\xF3dulo venv do Python (mem0/headroom criam um virtualenv)"),o.push("python3-venv")),lz()||(e.push("pip do Python (mem0/headroom instalam pacotes)"),o.push("python3-pip"))):(e.push(`python3 >= ${Fc} para mem0/headroom (encontrado: ${r.version||"nenhum"})`),o.push("python3","python3-venv","python3-pip"))}if(e.length===0)return[];let n=[...new Set(o)];return["Faltam pr\xE9-requisitos para o modo turbo (o que conseguir, instala; o resto fica de fora):",...e.map(r=>` \u2022 ${r}`),`Instale e rode \`aluy bootstrap\` de novo: sudo apt install -y ${n.join(" ")}`,""]}async function E0(t,e,o){let n=t??"turbo",r=wr(e??{}),s=o?.useAgent!==!1,i=new wk({...o?.platform?{platform:o.platform}:{},...s?{agentInstaller:tz}:{}});if(!s)for(let a of cz(r))process.stderr.write(a+`
|
|
155
|
-
`);return i.provisionAll(n,r)}var x0,Aa,HG,vn,b0,wk,v0,ZG,oz,nz,_k=p(()=>{"use strict";N();x0=".aluy",Aa=448,HG=384;vn="aluy-mem0-server.py";b0="application/vnd.ollama.image.model";wk=class{platform;agentInstaller;constructor(e={}){this.platform=e.platform??process.platform,this.agentInstaller=e.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(e){switch(e){case"ollama":{let o=be(Xo(),Zr,"bin","ollama");return Ye(o)}case"mem0":{let o=be(Xo(),Sr,"bin","python3");return Ye(o)&&Qc(o)}case"headroom":{let o=be(Xo(),es,"bin","headroom");return Ye(o)}default:return!1}}async provision(e,o){let n=UG().uid;if(Hv(n))return{target:e,hashOk:!1,installed:!1,message:"RECUSA ROOT (uid=0): provisionamento de sidecars \xE9 user-space. Execute como usu\xE1rio normal."};if(this.agentInstaller)return this.agentInstaller(e,o);if(!this.hasPinnedArtifact())return{target:e,hashOk:!1,installed:!1,message:`SO '${this.platform}' sem artefato pinado p/ provisionamento direto. Rode \`aluy bootstrap\` (o aluy instala via o pr\xF3prio agente, \u26A0 --yolo) ou instale manualmente.`};switch(e){case"ollama":return KG();case"mem0":return JG();case"headroom":return QG();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!Uc(e))return{profile:e,targets:[],anySuccess:!1,allFailed:!1};let n=[],r=[...o];for(let a=0;a<r.length;a++){let l=r[a],c={index:a+1,total:r.length,plan:r};try{n.push(await this.provision(l,c))}catch(d){let m=d instanceof Error?d.message:String(d);n.push({target:l,hashOk:!1,installed:!1,message:`falha inesperada ao provisionar \u2014 seguindo p/ os pr\xF3ximos (${m}).`})}}let s=n.some(a=>a.installed),i=n.length>0&&n.every(a=>!a.installed);return{profile:e,targets:n,anySuccess:s,allFailed:i}}},v0="na faixa 3.10\u20133.12 (N\xC3O use 3.13+/3.14 \u2014 as depend\xEAncias nativas n\xE3o t\xEAm wheels e o pip falha ao compilar; no Windows prefira `py -3.12` ou `py -3.11`). Se N\xC3O houver um Python 3.10\u20133.12 instalado, INSTALE primeiro (no Windows: `winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements`; no Linux/macOS use o gerenciador do sistema). Se j\xE1 existir um venv nesse caminho numa vers\xE3o incompat\xEDvel (ex.: 3.14), APAGUE e recrie com a vers\xE3o certa",ZG="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. ";oz=24,nz=5e3});var Hn,Zc=p(()=>{"use strict";Hn="1.0.0-rc.43"});var O0={};ut(O0,{HELP_TEXT:()=>_0,parseArgs:()=>Rk,suggestFlag:()=>fz,versionText:()=>R0});function it(t,e,o={}){let n=`--${e}=`;for(let r=0;r<t.length;r++){let s=t[r];if(s===`--${e}`){let i=t[r+1];return i===void 0||(o.allowDashValue?i.startsWith("--"):i.startsWith("-"))?void 0:i}if(s!==void 0&&s.startsWith(n))return s.slice(n.length)}}function dz(t,e){let o=`-${e}=`;for(let n=0;n<t.length;n++){let r=t[n];if(r===`-${e}`){let s=t[n+1];return s!==void 0&&!s.startsWith("-")?s:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function R0(){return`aluy ${Hn} (@hiperplano/aluy-cli-core ${wl})`}function mz(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 fz(t){let e,o=3;for(let n of C0){let r=mz(t,n);r<o&&(o=r,e=n)}return e}function pz(t,e){let o=[];for(let n=0;n<t.length;n++){let r=t[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||e.has(n))continue;let s=r.slice(2).split("=",1)[0];s===""||C0.has(s)||o.push(`--${s}`)}return o}function Rk(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let q=t.slice(1),he=it(q,"token"),ot=it(q,"org"),bt=q.includes("--device"),At=it(q,"provider"),_t=q.includes("--oauth");return{kind:"login",forceDeviceFlow:bt,...he!==void 0?{token:he}:{},...ot!==void 0?{org:ot}:{},...At!==void 0?{provider:At}:{},..._t?{oauth:!0}:{}}}if(e==="logout"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"logout"};if(e==="whoami"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"whoami"};if(e==="doctor"&&!t.includes("-h")&&!t.includes("--help")){let q=t.includes("--deep")||t.includes("--test"),he=t.includes("--json");return{kind:"doctor",deep:q,json:he}}if(e==="config"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"config",json:t.includes("--json")};if(e==="agents"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"agents"};if(e==="bootstrap"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"bootstrap",agent:!t.includes("--no-agent")};if(e==="uninstall"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"uninstall",agent:t.includes("--agent")};if(e==="onboard"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"onboard"};if(e==="skills"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"skills"};if(e==="workflows"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"workflows"};if((e==="models"||e==="providers")&&!t.includes("-h")&&!t.includes("--help")){let q=t.includes("--json"),he=t.findIndex(bt=>bt==="--backend"||bt.startsWith("--backend=")),ot="both";if(he!==-1){let At=(t[he].includes("=")?t[he].slice(10):t[he+1]??"").trim().toLowerCase();At==="local"?ot="local":At==="broker"&&(ot="broker")}return{kind:"models",scope:ot,json:q,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let q=t[1];if(q===void 0||!["login","logout","allow","deny","status"].includes(q))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ot=t.slice(2);if(q==="login"){let bt=it(ot,"token");return{kind:"telegram",sub:"login",...bt!==void 0?{token:bt}:{}}}if(q==="allow"||q==="deny"){let bt=ot.find(_t=>!_t.startsWith("-")),At=bt!==void 0&&/^-?\d+$/.test(bt)?Number(bt):void 0;return At===void 0?{kind:"usage-error",message:`uso: aluy telegram ${q} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:q,chatId:At}}return{kind:"telegram",sub:q}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(he=>!he.startsWith("-")).join(" ").trim()};if(e==="mcp")return{kind:"mcp",argv:t.slice(1)};if(e==="cron")return{kind:"cron",argv:t.slice(1)};if(t.includes("-v")||t.includes("--version"))return{kind:"version",text:R0()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:_0};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--split")||t.includes("--view")?!0:void 0,c=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,d=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,m=it(t,"tier"),u=it(t,"lang"),h=it(t,"max-tokens"),g=it(t,"max-iterations"),y=it(t,"max-output-tokens"),b=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,T=t.includes("--no-autocompact")?"off":it(t,"autocompact-at"),A=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,B=it(t,"cycles"),H=it(t,"cycle-for"),G=it(t,"backend"),Y=it(t,"local-provider"),$=it(t,"local-model"),te=it(t,"local-auth"),oe=it(t,"local-base-url"),J=it(t,"model"),D=it(t,"provider");if((t.includes("--provider")||t.some(q=>q.startsWith("--provider=")))&&(J===void 0||J.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((J===void 0||J.trim()==="")&&m!==void 0&&m.trim().toLowerCase()==="custom")return{kind:"usage-error",message:"aluy: --tier custom exige --model <slug> (ex.: --model deepseek-v4-pro). A via Custom precisa do slug do modelo; sem ele use um tier can\xF4nico (aluy-flux, aluy-granito, \u2026).",exitCode:2};let xe=it(t,"effort"),K=t.includes("--effort")||t.some(q=>q.startsWith("--effort=")),ue;if(xe!==void 0){if(xe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(xe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ue=xe}else if(K)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Z=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec=")),ie=Z?it(t,"print",{allowDashValue:!0})??it(t,"exec",{allowDashValue:!0})??dz(t,"p")??void 0:void 0,P=Z?it(t,"output-format"):void 0,ge=t.includes("--new"),ee=t.includes("--continue"),le=t.indexOf("--resume"),Ce=t.find(q=>q.startsWith("--resume=")),Oo=le>=0||Ce!==void 0,Le;if(Ce!==void 0)Le=Ce.slice(9);else if(le>=0){let q=t[le+1];q!==void 0&&!q.startsWith("-")&&(Le=q)}let ct=m!==void 0?t.indexOf("--tier")+1:-1,ht=u!==void 0&&!t.some(q=>q.startsWith("--lang="))?t.indexOf("--lang")+1:-1,gt=Le!==void 0&&Ce===void 0?le+1:-1,Zt=h!==void 0&&!t.some(q=>q.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,L=g!==void 0&&!t.some(q=>q.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,ke=B!==void 0&&!t.some(q=>q.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Pe=H!==void 0&&!t.some(q=>q.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,V=y!==void 0&&!t.some(q=>q.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,k=T!==void 0&&!t.includes("--no-autocompact")&&!t.some(q=>q.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,Mo=G!==void 0&&!t.some(q=>q.startsWith("--backend="))?t.indexOf("--backend")+1:-1,$e=(q,he)=>he!==void 0&&!t.some(ot=>ot.startsWith(`--${q}=`))?t.indexOf(`--${q}`)+1:-1,Rs=$e("local-provider",Y),Ii=$e("local-model",$),Wt=$e("local-auth",te),Dr=$e("local-base-url",oe),Os=J!==void 0&&!t.some(q=>q.startsWith("--model="))?t.indexOf("--model")+1:-1,qo=D!==void 0&&!t.some(q=>q.startsWith("--provider="))?t.indexOf("--provider")+1:-1,un=ue!==void 0&&!t.some(q=>q.startsWith("--effort="))?t.indexOf("--effort")+1:-1,yo=P!==void 0&&!t.some(q=>q.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,to=ie!==void 0&&!t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Wo=t.find((q,he)=>!q.startsWith("-")&&he!==ct&&he!==ht&&he!==Mo&&he!==Rs&&he!==Ii&&he!==Wt&&he!==Dr&&he!==Os&&he!==qo&&he!==un&&he!==yo&&he!==to&&he!==gt&&he!==Zt&&he!==L&&he!==V&&he!==k&&he!==ke&&he!==Pe),Ni=ee?{kind:"continue"}:Oo?{kind:"resume",...Le!==void 0?{id:Le}:{}}:void 0,$r=new Set([ct,ht,Mo,Rs,Ii,Wt,Dr,Os,qo,un,yo,to,gt,Zt,L,V,k,ke,Pe].filter(q=>q>=0));for(let q of uz){let he=t.indexOf(q);he>=0&&!t[he].includes("=")&&$r.add(he+1)}let mn=pz(t,$r);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...mn.length>0?{unknownFlags:mn}:{},dense:i,fresh:ge,subAgents:b,safeGlyphs:a,print:Z,...l!==void 0?{split:l}:{},...c!==void 0?{fullscreen:c}:{},...d!==void 0?{budget:d}:{},...Wo!==void 0?{goal:Wo}:{},...m!==void 0?{tier:m}:{},...G!==void 0?{backend:G}:{},...Y!==void 0?{localProvider:Y}:{},...$!==void 0?{localModel:$}:{},...te!==void 0?{localAuth:te}:{},...oe!==void 0?{localBaseUrl:oe}:{},...J!==void 0?{model:J}:{},...D!==void 0?{provider:D}:{},...ue!==void 0?{effort:ue}:{},...ie!==void 0?{printArg:ie}:{},...P!==void 0?{outputFormat:P}:{},...u!==void 0?{lang:u}:{},...Ni!==void 0?{resume:Ni}:{},...h!==void 0?{maxTokens:h}:{},...g!==void 0?{maxIterations:g}:{},...y!==void 0?{maxOutputTokens:y}:{},...w!==void 0?{selfCheck:w}:{},...T!==void 0?{autoCompactAt:T}:{},...A!==void 0?{quiet:A}:{},...M!==void 0?{cycle:M}:{},...B!==void 0?{cycles:B}:{},...H!==void 0?{cycleFor:H}:{}}}var _0,C0,uz,Ck=p(()=>{"use strict";N();Zc();_0=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
155
|
+
`);return i.provisionAll(n,r)}var x0,Aa,HG,vn,b0,wk,v0,ZG,oz,nz,_k=p(()=>{"use strict";N();x0=".aluy",Aa=448,HG=384;vn="aluy-mem0-server.py";b0="application/vnd.ollama.image.model";wk=class{platform;agentInstaller;constructor(e={}){this.platform=e.platform??process.platform,this.agentInstaller=e.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(e){switch(e){case"ollama":{let o=be(Xo(),Zr,"bin","ollama");return Ye(o)}case"mem0":{let o=be(Xo(),Sr,"bin","python3");return Ye(o)&&Qc(o)}case"headroom":{let o=be(Xo(),es,"bin","headroom");return Ye(o)}default:return!1}}async provision(e,o){let n=UG().uid;if(Hv(n))return{target:e,hashOk:!1,installed:!1,message:"RECUSA ROOT (uid=0): provisionamento de sidecars \xE9 user-space. Execute como usu\xE1rio normal."};if(this.agentInstaller)return this.agentInstaller(e,o);if(!this.hasPinnedArtifact())return{target:e,hashOk:!1,installed:!1,message:`SO '${this.platform}' sem artefato pinado p/ provisionamento direto. Rode \`aluy bootstrap\` (o aluy instala via o pr\xF3prio agente, \u26A0 --yolo) ou instale manualmente.`};switch(e){case"ollama":return KG();case"mem0":return JG();case"headroom":return QG();default:return{target:e,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(e)}`}}}async provisionAll(e,o){if(!Uc(e))return{profile:e,targets:[],anySuccess:!1,allFailed:!1};let n=[],r=[...o];for(let a=0;a<r.length;a++){let l=r[a],c={index:a+1,total:r.length,plan:r};try{n.push(await this.provision(l,c))}catch(d){let m=d instanceof Error?d.message:String(d);n.push({target:l,hashOk:!1,installed:!1,message:`falha inesperada ao provisionar \u2014 seguindo p/ os pr\xF3ximos (${m}).`})}}let s=n.some(a=>a.installed),i=n.length>0&&n.every(a=>!a.installed);return{profile:e,targets:n,anySuccess:s,allFailed:i}}},v0="na faixa 3.10\u20133.12 (N\xC3O use 3.13+/3.14 \u2014 as depend\xEAncias nativas n\xE3o t\xEAm wheels e o pip falha ao compilar; no Windows prefira `py -3.12` ou `py -3.11`). Se N\xC3O houver um Python 3.10\u20133.12 instalado, INSTALE primeiro (no Windows: `winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements`; no Linux/macOS use o gerenciador do sistema). Se j\xE1 existir um venv nesse caminho numa vers\xE3o incompat\xEDvel (ex.: 3.14), APAGUE e recrie com a vers\xE3o certa",ZG="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. ";oz=24,nz=5e3});var Hn,Zc=p(()=>{"use strict";Hn="1.0.0-rc.44"});var O0={};mt(O0,{HELP_TEXT:()=>_0,parseArgs:()=>Rk,suggestFlag:()=>fz,versionText:()=>R0});function it(t,e,o={}){let n=`--${e}=`;for(let r=0;r<t.length;r++){let s=t[r];if(s===`--${e}`){let i=t[r+1];return i===void 0||(o.allowDashValue?i.startsWith("--"):i.startsWith("-"))?void 0:i}if(s!==void 0&&s.startsWith(n))return s.slice(n.length)}}function dz(t,e){let o=`-${e}=`;for(let n=0;n<t.length;n++){let r=t[n];if(r===`-${e}`){let s=t[n+1];return s!==void 0&&!s.startsWith("-")?s:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function R0(){return`aluy ${Hn} (@hiperplano/aluy-cli-core ${wl})`}function mz(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 fz(t){let e,o=3;for(let n of C0){let r=mz(t,n);r<o&&(o=r,e=n)}return e}function pz(t,e){let o=[];for(let n=0;n<t.length;n++){let r=t[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||e.has(n))continue;let s=r.slice(2).split("=",1)[0];s===""||C0.has(s)||o.push(`--${s}`)}return o}function Rk(t){let e=t[0];if(e==="login"&&!t.includes("-h")&&!t.includes("--help")){let q=t.slice(1),he=it(q,"token"),ot=it(q,"org"),bt=q.includes("--device"),At=it(q,"provider"),_t=q.includes("--oauth");return{kind:"login",forceDeviceFlow:bt,...he!==void 0?{token:he}:{},...ot!==void 0?{org:ot}:{},...At!==void 0?{provider:At}:{},..._t?{oauth:!0}:{}}}if(e==="logout"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"logout"};if(e==="whoami"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"whoami"};if(e==="doctor"&&!t.includes("-h")&&!t.includes("--help")){let q=t.includes("--deep")||t.includes("--test"),he=t.includes("--json");return{kind:"doctor",deep:q,json:he}}if(e==="config"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"config",json:t.includes("--json")};if(e==="agents"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"agents"};if(e==="bootstrap"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"bootstrap",agent:!t.includes("--no-agent")};if(e==="uninstall"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"uninstall",agent:t.includes("--agent")};if(e==="onboard"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"onboard"};if(e==="skills"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"skills"};if(e==="workflows"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"workflows"};if((e==="models"||e==="providers")&&!t.includes("-h")&&!t.includes("--help")){let q=t.includes("--json"),he=t.findIndex(bt=>bt==="--backend"||bt.startsWith("--backend=")),ot="both";if(he!==-1){let At=(t[he].includes("=")?t[he].slice(10):t[he+1]??"").trim().toLowerCase();At==="local"?ot="local":At==="broker"&&(ot="broker")}return{kind:"models",scope:ot,json:q,which:e==="providers"?"providers":"models"}}if(e==="telegram"&&!t.includes("-h")&&!t.includes("--help")){let q=t[1];if(q===void 0||!["login","logout","allow","deny","status"].includes(q))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let ot=t.slice(2);if(q==="login"){let bt=it(ot,"token");return{kind:"telegram",sub:"login",...bt!==void 0?{token:bt}:{}}}if(q==="allow"||q==="deny"){let bt=ot.find(_t=>!_t.startsWith("-")),At=bt!==void 0&&/^-?\d+$/.test(bt)?Number(bt):void 0;return At===void 0?{kind:"usage-error",message:`uso: aluy telegram ${q} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:q,chatId:At}}return{kind:"telegram",sub:q}}if(e==="mcp"&&t[1]==="search"&&!t.includes("-h")&&!t.includes("--help"))return{kind:"mcp-search",query:t.slice(2).filter(he=>!he.startsWith("-")).join(" ").trim()};if(e==="mcp")return{kind:"mcp",argv:t.slice(1)};if(e==="cron")return{kind:"cron",argv:t.slice(1)};if(t.includes("-v")||t.includes("--version"))return{kind:"version",text:R0()};if(t.includes("-h")||t.includes("--help"))return{kind:"help",text:_0};let o=t.includes("--plan"),n=t.includes("--unsafe"),r=t.includes("--yolo")||n,s=o?"plan":r?"unsafe":"normal",i=t.includes("--dense"),a=t.includes("--ascii"),l=t.includes("--split")||t.includes("--view")?!0:void 0,c=t.includes("--fullscreen")||t.includes("--cockpit")?!0:void 0,d=t.includes("--no-budget")?!1:t.includes("--budget")?!0:void 0,m=it(t,"tier"),u=it(t,"lang"),h=it(t,"max-tokens"),g=it(t,"max-iterations"),y=it(t,"max-output-tokens"),b=!(t.includes("--no-subagents")||t.includes("--no-subagent")),w=t.includes("--no-self-check")?"0":t.includes("--self-check")?"1":void 0,T=t.includes("--no-autocompact")?"off":it(t,"autocompact-at"),A=t.includes("--quiet")?!0:void 0,M=t.includes("--cycle")?!0:void 0,B=it(t,"cycles"),H=it(t,"cycle-for"),G=it(t,"backend"),Y=it(t,"local-provider"),$=it(t,"local-model"),te=it(t,"local-auth"),oe=it(t,"local-base-url"),J=it(t,"model"),D=it(t,"provider");if((t.includes("--provider")||t.some(q=>q.startsWith("--provider=")))&&(J===void 0||J.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((J===void 0||J.trim()==="")&&m!==void 0&&m.trim().toLowerCase()==="custom")return{kind:"usage-error",message:"aluy: --tier custom exige --model <slug> (ex.: --model deepseek-v4-pro). A via Custom precisa do slug do modelo; sem ele use um tier can\xF4nico (aluy-flux, aluy-granito, \u2026).",exitCode:2};let xe=it(t,"effort"),K=t.includes("--effort")||t.some(q=>q.startsWith("--effort=")),ue;if(xe!==void 0){if(xe.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(xe.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ue=xe}else if(K)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Z=t.includes("-p")||t.includes("--print")||t.includes("--exec")||t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec=")),ie=Z?it(t,"print",{allowDashValue:!0})??it(t,"exec",{allowDashValue:!0})??dz(t,"p")??void 0:void 0,P=Z?it(t,"output-format"):void 0,ge=t.includes("--new"),ee=t.includes("--continue"),le=t.indexOf("--resume"),Ce=t.find(q=>q.startsWith("--resume=")),Oo=le>=0||Ce!==void 0,Le;if(Ce!==void 0)Le=Ce.slice(9);else if(le>=0){let q=t[le+1];q!==void 0&&!q.startsWith("-")&&(Le=q)}let ct=m!==void 0?t.indexOf("--tier")+1:-1,ht=u!==void 0&&!t.some(q=>q.startsWith("--lang="))?t.indexOf("--lang")+1:-1,gt=Le!==void 0&&Ce===void 0?le+1:-1,Zt=h!==void 0&&!t.some(q=>q.startsWith("--max-tokens="))?t.indexOf("--max-tokens")+1:-1,L=g!==void 0&&!t.some(q=>q.startsWith("--max-iterations="))?t.indexOf("--max-iterations")+1:-1,ke=B!==void 0&&!t.some(q=>q.startsWith("--cycles="))?t.indexOf("--cycles")+1:-1,Pe=H!==void 0&&!t.some(q=>q.startsWith("--cycle-for="))?t.indexOf("--cycle-for")+1:-1,V=y!==void 0&&!t.some(q=>q.startsWith("--max-output-tokens="))?t.indexOf("--max-output-tokens")+1:-1,k=T!==void 0&&!t.includes("--no-autocompact")&&!t.some(q=>q.startsWith("--autocompact-at="))?t.indexOf("--autocompact-at")+1:-1,Mo=G!==void 0&&!t.some(q=>q.startsWith("--backend="))?t.indexOf("--backend")+1:-1,$e=(q,he)=>he!==void 0&&!t.some(ot=>ot.startsWith(`--${q}=`))?t.indexOf(`--${q}`)+1:-1,Rs=$e("local-provider",Y),Ii=$e("local-model",$),Wt=$e("local-auth",te),Dr=$e("local-base-url",oe),Os=J!==void 0&&!t.some(q=>q.startsWith("--model="))?t.indexOf("--model")+1:-1,qo=D!==void 0&&!t.some(q=>q.startsWith("--provider="))?t.indexOf("--provider")+1:-1,un=ue!==void 0&&!t.some(q=>q.startsWith("--effort="))?t.indexOf("--effort")+1:-1,yo=P!==void 0&&!t.some(q=>q.startsWith("--output-format="))?t.indexOf("--output-format")+1:-1,to=ie!==void 0&&!t.some(q=>q.startsWith("-p=")||q.startsWith("--print=")||q.startsWith("--exec="))?Math.max(t.indexOf("-p"),t.indexOf("--print"),t.indexOf("--exec"))+1:-1,Wo=t.find((q,he)=>!q.startsWith("-")&&he!==ct&&he!==ht&&he!==Mo&&he!==Rs&&he!==Ii&&he!==Wt&&he!==Dr&&he!==Os&&he!==qo&&he!==un&&he!==yo&&he!==to&&he!==gt&&he!==Zt&&he!==L&&he!==V&&he!==k&&he!==ke&&he!==Pe),Ni=ee?{kind:"continue"}:Oo?{kind:"resume",...Le!==void 0?{id:Le}:{}}:void 0,$r=new Set([ct,ht,Mo,Rs,Ii,Wt,Dr,Os,qo,un,yo,to,gt,Zt,L,V,k,ke,Pe].filter(q=>q>=0));for(let q of uz){let he=t.indexOf(q);he>=0&&!t[he].includes("=")&&$r.add(he+1)}let mn=pz(t,$r);return{kind:"launch",mode:s,unsafe:s==="unsafe",unsafeAliasUsed:n,...mn.length>0?{unknownFlags:mn}:{},dense:i,fresh:ge,subAgents:b,safeGlyphs:a,print:Z,...l!==void 0?{split:l}:{},...c!==void 0?{fullscreen:c}:{},...d!==void 0?{budget:d}:{},...Wo!==void 0?{goal:Wo}:{},...m!==void 0?{tier:m}:{},...G!==void 0?{backend:G}:{},...Y!==void 0?{localProvider:Y}:{},...$!==void 0?{localModel:$}:{},...te!==void 0?{localAuth:te}:{},...oe!==void 0?{localBaseUrl:oe}:{},...J!==void 0?{model:J}:{},...D!==void 0?{provider:D}:{},...ue!==void 0?{effort:ue}:{},...ie!==void 0?{printArg:ie}:{},...P!==void 0?{outputFormat:P}:{},...u!==void 0?{lang:u}:{},...Ni!==void 0?{resume:Ni}:{},...h!==void 0?{maxTokens:h}:{},...g!==void 0?{maxIterations:g}:{},...y!==void 0?{maxOutputTokens:y}:{},...w!==void 0?{selfCheck:w}:{},...T!==void 0?{autoCompactAt:T}:{},...A!==void 0?{quiet:A}:{},...M!==void 0?{cycle:M}:{},...B!==void 0?{cycles:B}:{},...H!==void 0?{cycleFor:H}:{}}}var _0,C0,uz,Ck=p(()=>{"use strict";N();Zc();_0=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
|
|
156
156
|
|
|
157
157
|
Uso:
|
|
158
158
|
aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
|
|
@@ -443,11 +443,11 @@ Notas:
|
|
|
443
443
|
`)},prompt:async(t,e)=>{let{createInterface:o}=await import("node:readline"),n=o({input:vz,output:Ok,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===`
|
|
444
444
|
`||a===`\r
|
|
445
445
|
`)&&i(a)})}let r=await new Promise(s=>{n.question(t,i=>s(i))});return e?.secret&&Ok.write(`
|
|
446
|
-
`),r.trim()}finally{n.close()}}}}var qn=p(()=>{"use strict"});import{Entry as kz}from"@napi-rs/keyring";function Vf(t){return`${t}:apikey`}function Xf(t){return`${t}:oauth`}function I0(t,e,o){return t!==void 0?t(e,o):new kz(e,o)}function xz(t,e){try{let n=I0(t,ri,e).getPassword();return n!==""?n:void 0}catch{return}}function N0(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 Yf(e,"oauth");return{kind:"oauth",secret:c}}let r=xz(t.entryFactory,Vf(e)),s=P0[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 Yf(e,"apikey");return{kind:"apikey",secret:l}}}function Ta(t,e,o){I0(o,ri,Vf(t)).setPassword(e)}var ri,P0,Yf,_a=p(()=>{"use strict";ri="aluy-cli-local",P0={anthropic:"ANTHROPIC_API_KEY",openrouter:"OPENROUTER_API_KEY",openai:"OPENAI_API_KEY"};Yf=class extends Error{constructor(e,o){let n=o==="apikey"?`configure a chave: \`${P0[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 Sz}from"node:os";import{join as D0}from"node:path";import{readFileSync as wz,renameSync as Az}from"node:fs";function $0(t){let e=new Qe(t?{baseDir:t}:{}),o=e.load().providers;if(o&&o.length>0)return o;let n=Tz(t),r;try{r=JSON.parse(wz(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{Az(n,n+".migrated")}catch{}return e.load().providers??[]}function Tz(t){return D0(t??D0(Sz(),".aluy"),Ez)}function ss(t={}){let e=$0(t.baseDir);return e.length===0?Nn():wy(e)}function F0(t,e){let o=new Qe(e?{baseDir:e}:{}),n=$0(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 Ez,ed=p(()=>{"use strict";N();Bo();Ez="providers.json"});function Mk(t,e=process.env){let o=j0[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[U0[t]]??o.clientId).trim();if(n==="")throw new Error(`backend local: OAuth de "${t}" exige um client_id \u2014 defina ${U0[t]}.`);let r=(e.ALUY_OAUTH_REDIRECT_URI??o.redirectUri).trim();return{...o,clientId:n,redirectUri:r}}var B0,j0,U0,H0,Lk=p(()=>{"use strict";B0="http://127.0.0.1:49876/callback",j0={anthropic:{authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://console.anthropic.com/v1/oauth/token",clientId:"",redirectUri:B0,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:B0,scopes:["openid","profile","offline_access"]}},U0={anthropic:"ALUY_OAUTH_ANTHROPIC_CLIENT_ID",openai:"ALUY_OAUTH_OPENAI_CLIENT_ID",openrouter:"ALUY_OAUTH_OPENROUTER_CLIENT_ID"};H0=new Proxy(j0,{get(t,e){let o=e;if(t[o]!==void 0)try{return Mk(o)}catch{return t[o]}}})});import{Entry as _z}from"@napi-rs/keyring";function Pk(t,e){return t!==void 0?t(ri,e):new _z(ri,e)}function q0(t,e={}){let o=new td({provider:t,...e});return()=>o.getAccessToken()}var td,Ik=p(()=>{"use strict";N();_a();Lk();td=class{provider;config;entryFactory;doFetch;now;inFlight;constructor(e){this.provider=e.provider;let o=e.config??H0[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=Pk(this.entryFactory,Xf(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){Pk(this.entryFactory,Xf(this.provider)).setPassword(JSON.stringify(e))}clear(){try{Pk(this.entryFactory,Xf(this.provider)).deletePassword()}catch{}}async getAccessToken(){let e=this.read();return e===void 0?void 0:TE(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 AE({config:this.config,refreshToken:e,fetch:this.doFetch,now:this.now});return this.write(o),o}finally{this.inFlight=void 0}})(),this.inFlight)}}});var G0={};
|
|
446
|
+
`),r.trim()}finally{n.close()}}}}var qn=p(()=>{"use strict"});import{Entry as kz}from"@napi-rs/keyring";function Vf(t){return`${t}:apikey`}function Xf(t){return`${t}:oauth`}function I0(t,e,o){return t!==void 0?t(e,o):new kz(e,o)}function xz(t,e){try{let n=I0(t,ri,e).getPassword();return n!==""?n:void 0}catch{return}}function N0(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 Yf(e,"oauth");return{kind:"oauth",secret:c}}let r=xz(t.entryFactory,Vf(e)),s=P0[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 Yf(e,"apikey");return{kind:"apikey",secret:l}}}function Ta(t,e,o){I0(o,ri,Vf(t)).setPassword(e)}var ri,P0,Yf,_a=p(()=>{"use strict";ri="aluy-cli-local",P0={anthropic:"ANTHROPIC_API_KEY",openrouter:"OPENROUTER_API_KEY",openai:"OPENAI_API_KEY"};Yf=class extends Error{constructor(e,o){let n=o==="apikey"?`configure a chave: \`${P0[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 Sz}from"node:os";import{join as D0}from"node:path";import{readFileSync as wz,renameSync as Az}from"node:fs";function $0(t){let e=new Qe(t?{baseDir:t}:{}),o=e.load().providers;if(o&&o.length>0)return o;let n=Tz(t),r;try{r=JSON.parse(wz(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{Az(n,n+".migrated")}catch{}return e.load().providers??[]}function Tz(t){return D0(t??D0(Sz(),".aluy"),Ez)}function ss(t={}){let e=$0(t.baseDir);return e.length===0?Nn():wy(e)}function F0(t,e){let o=new Qe(e?{baseDir:e}:{}),n=$0(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 Ez,ed=p(()=>{"use strict";N();Bo();Ez="providers.json"});function Mk(t,e=process.env){let o=j0[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[U0[t]]??o.clientId).trim();if(n==="")throw new Error(`backend local: OAuth de "${t}" exige um client_id \u2014 defina ${U0[t]}.`);let r=(e.ALUY_OAUTH_REDIRECT_URI??o.redirectUri).trim();return{...o,clientId:n,redirectUri:r}}var B0,j0,U0,H0,Lk=p(()=>{"use strict";B0="http://127.0.0.1:49876/callback",j0={anthropic:{authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://console.anthropic.com/v1/oauth/token",clientId:"",redirectUri:B0,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:B0,scopes:["openid","profile","offline_access"]}},U0={anthropic:"ALUY_OAUTH_ANTHROPIC_CLIENT_ID",openai:"ALUY_OAUTH_OPENAI_CLIENT_ID",openrouter:"ALUY_OAUTH_OPENROUTER_CLIENT_ID"};H0=new Proxy(j0,{get(t,e){let o=e;if(t[o]!==void 0)try{return Mk(o)}catch{return t[o]}}})});import{Entry as _z}from"@napi-rs/keyring";function Pk(t,e){return t!==void 0?t(ri,e):new _z(ri,e)}function q0(t,e={}){let o=new td({provider:t,...e});return()=>o.getAccessToken()}var td,Ik=p(()=>{"use strict";N();_a();Lk();td=class{provider;config;entryFactory;doFetch;now;inFlight;constructor(e){this.provider=e.provider;let o=e.config??H0[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=Pk(this.entryFactory,Xf(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){Pk(this.entryFactory,Xf(this.provider)).setPassword(JSON.stringify(e))}clear(){try{Pk(this.entryFactory,Xf(this.provider)).deletePassword()}catch{}}async getAccessToken(){let e=this.read();return e===void 0?void 0:TE(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 AE({config:this.config,refreshToken:e,fetch:this.doFetch,now:this.now});return this.write(o),o}finally{this.inFlight=void 0}})(),this.inFlight)}}});var G0={};mt(G0,{rejectNonGetCallback:()=>W0,runLocalLogin:()=>Iz});import{createServer as Rz}from"node:http";import{createHash as Cz,randomBytes as Oz}from"node:crypto";function Pz(t,e){let o=e.trim().toLowerCase(),n=ss();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}.
|
|
447
447
|
Custom (OpenAI-compat\xEDvel)? Registre antes: \`aluy onboard\` (ou edite ~/.aluy/providers.json).`)}async function Iz(t,e={}){let o=e.io??Ot(),n=Pz(o,t.provider);return n===void 0?2:t.oauth===!0?await Dz(n,o,e):await Nz(n,t.token,o,e)}async function Nz(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{Ta(t,r,n.entryFactory)}catch(s){return o.err(`login: falha ao gravar no keychain do SO: ${od(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 Qe().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 Dz(t,e,o){let n=o.env??process.env;e.err(Mz);let r;try{r=Mk(t,n)}catch(u){return e.err(`login: ${od(u)}`),2}let s=o.crypto??Lz,i=xE(s),a=Uz(s.randomBytes(16)),l=SE(r,i,a),c;try{c=await $z({authorizeUrl:l,state:a,io:e,deps:o})}catch(u){return e.err(`login: ${od(u)}`),1}let d=o.fetch??globalThis.fetch,m;try{m=await wE({config:r,code:c,codeVerifier:i.codeVerifier,fetch:d,...o.now?{now:o.now}:{}})}catch(u){return e.err(`login: troca de token falhou: ${od(u)}`),1}try{new td({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: ${od(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 $z(t){let{authorizeUrl:e,state:o,io:n,deps:r}=t;try{return await Fz(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:
|
|
448
448
|
${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 W0(t,e){return(t??"GET").toUpperCase()==="GET"?!1:(e.statusCode=405,e.setHeader("allow","GET"),e.end("method not allowed"),!0)}function Fz(t,e,o,n){return new Promise((r,s)=>{let i=Rz((l,c)=>{if(W0(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??Bz(o))(t).catch(()=>{o.out(`Abra manualmente:
|
|
449
449
|
${t}`)})}),setTimeout(()=>{i.close(),s(new Error("tempo esgotado aguardando a autoriza\xE7\xE3o (5 min)"))},300*1e3).unref?.()})}function Bz(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:
|
|
450
|
-
${e}`)}}}function Uz(t){return Buffer.from(t).toString("base64url")}function od(t){return t instanceof Error?t.message:String(t)}var Mz,Lz,z0=p(()=>{"use strict";N();qn();_a();ed();Bo();Ik();Lk();Mz="\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.",Lz={randomBytes:t=>new Uint8Array(Oz(t)),sha256:t=>new Uint8Array(Cz("sha256").update(t).digest())}});function wo(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??jz).replace(/\/+$/,""),clientId:Dk}}var Dk,jz,is=p(()=>{"use strict";Dk="aluy-cli",jz="https://api.aluy.app/api/v1"});function Jo(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??Jf).replace(/\/+$/,"")}}var Jf,si=p(()=>{"use strict";Jf="https://broker.dev.aluy.example"});import{Entry as Hz}from"@napi-rs/keyring";function K0(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 $t,Kt,Wn=p(()=>{"use strict";N();$t=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??cm,this.account=e.account??pE,this.makeEntry=e.entryFactory??((o,n)=>new Hz(o,n))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new $t(e)}}async get(){let e=this.entry(),o;try{o=e.getPassword()}catch(n){return K0(n),null}return gE(o)}async set(e){let o=this.entry();try{o.setPassword(hE(e))}catch(n){throw new $t(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){return K0(o),void 0}}}});var J0={};ut(J0,{runLogin:()=>Wz,validatePatOnBroker:()=>X0});async function X0(t,e,o){let{brokerBaseUrl:n}=Jo(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 Y0(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 Wz(t={},e={}){let o=e.env??process.env,n=e.io??Ot(),r=e.store??new Kt,s=wo(o),i=new Gt({...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(!Ol(l))return n.err("PAT inv\xE1lido: esperado o formato `pat_<id>_<segredo>`."),1;let m=e.fetch??globalThis.fetch,u=await X0(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 Y0(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 V0(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(` ${qz}`),n.out("Aguardando aprova\xE7\xE3o\u2026")}});return Y0(n,d),0}catch(d){return V0(n,d)}}function V0(t,e){return e instanceof $t?(t.err(`erro: ${e.message}`),1):e instanceof Error?(t.err(`erro: ${e.message}`),1):(t.err("erro inesperado no login."),1)}var qz,Q0=p(()=>{"use strict";N();is();si();Wn();qn();qz="escopo m\xEDnimo: assistant:session + llm:call (quota:read \xE9 opt-in). Sem admin/`*`."});var Z0={};ut(Z0,{runLogout:()=>Gz});async function Gz(t={}){let e=t.env??process.env,o=t.io??Ot(),n=t.store??new Kt,r=wo(e),s=new Gt({...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 $t?(o.err(`erro: ${i.message}`),1):(o.err(`erro no logout: ${i instanceof Error?i.message:String(i)}`),1)}}var eM=p(()=>{"use strict";N();is();Wn();qn()});import{Entry as zz}from"@napi-rs/keyring";function tM(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 Ra,$k=p(()=>{"use strict";N();Wn();Ra=class{service;account;makeEntry;constructor(e,o={}){this.service=o.service??cm,this.account=dk(e),this.makeEntry=o.entryFactory??((n,r)=>new zz(n,r))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new $t(e)}}async get(){let e=this.entry();try{let o=e.getPassword();return o!==""?o:null}catch(o){return tM(o),null}}async set(e){let o=this.entry();try{o.setPassword(e)}catch(n){throw new $t(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){if(tM(o))return}}}});var nM={};ut(nM,{runTelegram:()=>Kz});async function Kz(t,e={}){let o=e.io??Ot(),n=e.secretStore??new Ra("telegram"),r=e.configStore??new Qe,s=e.env??process.env;switch(t.sub){case"login":return Yz(t,o,n,s);case"logout":return Vz(o,n);case"allow":return oM(t,o,r,!0);case"deny":return oM(t,o,r,!1);case"status":return Xz(o,n,r)}}async function Yz(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(),!uk(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 $t?(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 (${ba(r)}).`),e.out(" pr\xF3ximo: autorize seu chat com `aluy telegram allow <chat-id>` (default fechado)."),0}async function Vz(t,e){return await e.clear(),t.out("\u2713 token do bot removido do keychain (a bridge n\xE3o autentica mais)."),0}async function oM(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?Bf(r,t.chatId):Uf(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 Xz(t,e,o){let n=await e.get(),r=xa(o.load());return t.out("Telegram (conector):"),t.out(` token: ${n?`presente (${ba(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 rM=p(()=>{"use strict";N();qn();$k();Wn();Bo()});var sM={};ut(sM,{runWhoami:()=>Jz});async function Jz(t={}){let e=t.env??process.env,o=t.io??Ot(),n=t.store??new Kt,r=wo(e),s=new Gt({...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 $t?(o.err(`erro: ${i.message}`),1):(o.err(`erro no whoami: ${i instanceof Error?i.message:String(i)}`),1)}}var iM=p(()=>{"use strict";N();is();Wn();qn()});import{realpathSync as Fk,statSync as aM,lstatSync as Qz,readlinkSync as Zz}from"node:fs";import{homedir as lM}from"node:os";import{isAbsolute as rd,resolve as Ao,relative as eK,sep as tK,dirname as oK,parse as nK}from"node:path";function nd(t,e=0){try{return Fk(t)}catch{let o=t,n=[];for(;;){let r=Ao(o,"..");if(r===o)return t;let s=o.slice(r.length).replace(/^[/\\]/,"");n.unshift(s);let i;try{i=Fk(r)}catch{o=r;continue}let a=n[0],l=Ao(i,a);if(e<rK&&sK(l)){let c;try{c=Zz(l)}catch{return Ao(i,...n)}let d=rd(c)?c:Ao(oK(l),c),m=n.slice(1),u=nd(d,e+1);return m.length>0?Ao(u,...m):u}return Ao(i,...n)}}}function sK(t){try{return Qz(t).isSymbolicLink()}catch{return!1}}function iK(t,e){if(e===t)return!0;let o=eK(t,e);return o!==""&&!o.startsWith(".."+tK)&&o!==".."&&!rd(o)}var Tr,Ca,rK,Yt,Oa=p(()=>{"use strict";Tr=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},Ca=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};rK=40;Yt=class{root;extraRoots=[];sessionCwd;constructor(e={}){let o=e.root??process.cwd(),n=nd(Ao(o));e.unconfined===!0?(this.root=nd(nK(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 Ca(e,"path vazio");let n=o==="~"?lM():o.startsWith("~/")?Ao(lM(),o.slice(2)):o,r=rd(n)?Ao(n):Ao(this.sessionCwd,n),s;try{s=Fk(r)}catch{throw new Ca(e,"o diret\xF3rio n\xE3o existe")}let i=!1;try{i=aM(s).isDirectory()}catch{i=!1}if(!i)throw new Ca(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(iK(o,e))return o;return null}setCwd(e){if(e==="")throw new Tr(e,"path vazio");let o=rd(e)?Ao(e):Ao(this.sessionCwd,e),n;try{n=nd(o)}catch{throw new Tr(e,"falha ao canonicalizar o caminho")}let r=this.rootContaining(n)!==null?n:this.rootContaining(this.sessionCwd)??this.root,s=!1;try{s=aM(r).isDirectory()}catch{s=!1}if(!s)throw new Tr(e,"n\xE3o \xE9 um diret\xF3rio existente dentro do projeto");return this.sessionCwd=r,this.sessionCwd}resolveInside(e){if(e==="")throw new Tr(e,"path vazio");let o=rd(e)?Ao(e):Ao(this.sessionCwd,e),n;try{n=nd(o)}catch{throw new Tr(e,"falha ao canonicalizar o caminho")}if(this.rootContaining(n)===null)throw new Tr(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 Gn from"node:fs/promises";function lK(t,e){return e-t.createdAt>cM||t.createdAt>e+cM}async function uM(t,e){let o=`${t}.steal.${process.pid}.${e}`;try{await Gn.rename(t,o)}catch{return}try{await Gn.unlink(o)}catch{}}async function cK(t){let e=Date.now()+dM;for(;;){let o=Date.now();if(o>=e)throw new Error(`Timeout ao adquirir lock "${t}" (${dM}ms).`);try{let n={pid:process.pid,createdAt:o};return await Gn.writeFile(t,JSON.stringify(n),{flag:"wx",mode:384}),n}catch(n){if(n.code!=="EEXIST")throw n;try{let r=await Gn.readFile(t,"utf-8");lK(JSON.parse(r),o)&&await uM(t,o)}catch{await uM(t,o)}}await new Promise(n=>setTimeout(n,aK))}}async function dK(t,e){if(e!==void 0)try{let o=await Gn.readFile(t,"utf-8"),n=JSON.parse(o);if(n.pid!==e.pid||n.createdAt!==e.createdAt)return}catch{return}try{await Gn.unlink(t)}catch{}}async function _r(t,e){let o=await cK(t);try{return await e()}finally{await dK(t,o)}}var cM,aK,dM,Bk=p(()=>{"use strict";cM=3e4,aK=50,dM=1e4});import{homedir as uK}from"node:os";import{join as sd,dirname as mM}from"node:path";import{openSync as mK,writeSync as fK,closeSync as pK,readFileSync as hK,mkdirSync as Uk,renameSync as gK,unlinkSync as yK,existsSync as fM,constants as jk}from"node:fs";function xK(t){return t.replace(/\\/g,"\\\\").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/<!--aluy-mem /g,"\\<!--aluy-mem ").replace(/-->/g,"\\-->")}function SK(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+=`
|
|
450
|
+
${e}`)}}}function Uz(t){return Buffer.from(t).toString("base64url")}function od(t){return t instanceof Error?t.message:String(t)}var Mz,Lz,z0=p(()=>{"use strict";N();qn();_a();ed();Bo();Ik();Lk();Mz="\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.",Lz={randomBytes:t=>new Uint8Array(Oz(t)),sha256:t=>new Uint8Array(Cz("sha256").update(t).digest())}});function wo(t=process.env){return{identityBaseUrl:(t.ALUY_IDENTITY_URL??jz).replace(/\/+$/,""),clientId:Dk}}var Dk,jz,is=p(()=>{"use strict";Dk="aluy-cli",jz="https://api.aluy.app/api/v1"});function Jo(t=process.env){return{brokerBaseUrl:(t.ALUY_BROKER_URL??Jf).replace(/\/+$/,"")}}var Jf,si=p(()=>{"use strict";Jf="https://broker.dev.aluy.example"});import{Entry as Hz}from"@napi-rs/keyring";function K0(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 $t,Kt,Wn=p(()=>{"use strict";N();$t=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??cm,this.account=e.account??pE,this.makeEntry=e.entryFactory??((o,n)=>new Hz(o,n))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new $t(e)}}async get(){let e=this.entry(),o;try{o=e.getPassword()}catch(n){return K0(n),null}return gE(o)}async set(e){let o=this.entry();try{o.setPassword(hE(e))}catch(n){throw new $t(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){return K0(o),void 0}}}});var J0={};mt(J0,{runLogin:()=>Wz,validatePatOnBroker:()=>X0});async function X0(t,e,o){let{brokerBaseUrl:n}=Jo(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 Y0(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 Wz(t={},e={}){let o=e.env??process.env,n=e.io??Ot(),r=e.store??new Kt,s=wo(o),i=new Gt({...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(!Ol(l))return n.err("PAT inv\xE1lido: esperado o formato `pat_<id>_<segredo>`."),1;let m=e.fetch??globalThis.fetch,u=await X0(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 Y0(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 V0(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(` ${qz}`),n.out("Aguardando aprova\xE7\xE3o\u2026")}});return Y0(n,d),0}catch(d){return V0(n,d)}}function V0(t,e){return e instanceof $t?(t.err(`erro: ${e.message}`),1):e instanceof Error?(t.err(`erro: ${e.message}`),1):(t.err("erro inesperado no login."),1)}var qz,Q0=p(()=>{"use strict";N();is();si();Wn();qn();qz="escopo m\xEDnimo: assistant:session + llm:call (quota:read \xE9 opt-in). Sem admin/`*`."});var Z0={};mt(Z0,{runLogout:()=>Gz});async function Gz(t={}){let e=t.env??process.env,o=t.io??Ot(),n=t.store??new Kt,r=wo(e),s=new Gt({...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 $t?(o.err(`erro: ${i.message}`),1):(o.err(`erro no logout: ${i instanceof Error?i.message:String(i)}`),1)}}var eM=p(()=>{"use strict";N();is();Wn();qn()});import{Entry as zz}from"@napi-rs/keyring";function tM(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 Ra,$k=p(()=>{"use strict";N();Wn();Ra=class{service;account;makeEntry;constructor(e,o={}){this.service=o.service??cm,this.account=dk(e),this.makeEntry=o.entryFactory??((n,r)=>new zz(n,r))}entry(){try{return this.makeEntry(this.service,this.account)}catch(e){throw new $t(e)}}async get(){let e=this.entry();try{let o=e.getPassword();return o!==""?o:null}catch(o){return tM(o),null}}async set(e){let o=this.entry();try{o.setPassword(e)}catch(n){throw new $t(n)}}async clear(){let e=this.entry();try{e.deletePassword()}catch(o){if(tM(o))return}}}});var nM={};mt(nM,{runTelegram:()=>Kz});async function Kz(t,e={}){let o=e.io??Ot(),n=e.secretStore??new Ra("telegram"),r=e.configStore??new Qe,s=e.env??process.env;switch(t.sub){case"login":return Yz(t,o,n,s);case"logout":return Vz(o,n);case"allow":return oM(t,o,r,!0);case"deny":return oM(t,o,r,!1);case"status":return Xz(o,n,r)}}async function Yz(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(),!uk(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 $t?(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 (${ba(r)}).`),e.out(" pr\xF3ximo: autorize seu chat com `aluy telegram allow <chat-id>` (default fechado)."),0}async function Vz(t,e){return await e.clear(),t.out("\u2713 token do bot removido do keychain (a bridge n\xE3o autentica mais)."),0}async function oM(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?Bf(r,t.chatId):Uf(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 Xz(t,e,o){let n=await e.get(),r=xa(o.load());return t.out("Telegram (conector):"),t.out(` token: ${n?`presente (${ba(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 rM=p(()=>{"use strict";N();qn();$k();Wn();Bo()});var sM={};mt(sM,{runWhoami:()=>Jz});async function Jz(t={}){let e=t.env??process.env,o=t.io??Ot(),n=t.store??new Kt,r=wo(e),s=new Gt({...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 $t?(o.err(`erro: ${i.message}`),1):(o.err(`erro no whoami: ${i instanceof Error?i.message:String(i)}`),1)}}var iM=p(()=>{"use strict";N();is();Wn();qn()});import{realpathSync as Fk,statSync as aM,lstatSync as Qz,readlinkSync as Zz}from"node:fs";import{homedir as lM}from"node:os";import{isAbsolute as rd,resolve as Ao,relative as eK,sep as tK,dirname as oK,parse as nK}from"node:path";function nd(t,e=0){try{return Fk(t)}catch{let o=t,n=[];for(;;){let r=Ao(o,"..");if(r===o)return t;let s=o.slice(r.length).replace(/^[/\\]/,"");n.unshift(s);let i;try{i=Fk(r)}catch{o=r;continue}let a=n[0],l=Ao(i,a);if(e<rK&&sK(l)){let c;try{c=Zz(l)}catch{return Ao(i,...n)}let d=rd(c)?c:Ao(oK(l),c),m=n.slice(1),u=nd(d,e+1);return m.length>0?Ao(u,...m):u}return Ao(i,...n)}}}function sK(t){try{return Qz(t).isSymbolicLink()}catch{return!1}}function iK(t,e){if(e===t)return!0;let o=eK(t,e);return o!==""&&!o.startsWith(".."+tK)&&o!==".."&&!rd(o)}var Tr,Ca,rK,Yt,Oa=p(()=>{"use strict";Tr=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},Ca=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};rK=40;Yt=class{root;extraRoots=[];sessionCwd;constructor(e={}){let o=e.root??process.cwd(),n=nd(Ao(o));e.unconfined===!0?(this.root=nd(nK(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 Ca(e,"path vazio");let n=o==="~"?lM():o.startsWith("~/")?Ao(lM(),o.slice(2)):o,r=rd(n)?Ao(n):Ao(this.sessionCwd,n),s;try{s=Fk(r)}catch{throw new Ca(e,"o diret\xF3rio n\xE3o existe")}let i=!1;try{i=aM(s).isDirectory()}catch{i=!1}if(!i)throw new Ca(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(iK(o,e))return o;return null}setCwd(e){if(e==="")throw new Tr(e,"path vazio");let o=rd(e)?Ao(e):Ao(this.sessionCwd,e),n;try{n=nd(o)}catch{throw new Tr(e,"falha ao canonicalizar o caminho")}let r=this.rootContaining(n)!==null?n:this.rootContaining(this.sessionCwd)??this.root,s=!1;try{s=aM(r).isDirectory()}catch{s=!1}if(!s)throw new Tr(e,"n\xE3o \xE9 um diret\xF3rio existente dentro do projeto");return this.sessionCwd=r,this.sessionCwd}resolveInside(e){if(e==="")throw new Tr(e,"path vazio");let o=rd(e)?Ao(e):Ao(this.sessionCwd,e),n;try{n=nd(o)}catch{throw new Tr(e,"falha ao canonicalizar o caminho")}if(this.rootContaining(n)===null)throw new Tr(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 Gn from"node:fs/promises";function lK(t,e){return e-t.createdAt>cM||t.createdAt>e+cM}async function uM(t,e){let o=`${t}.steal.${process.pid}.${e}`;try{await Gn.rename(t,o)}catch{return}try{await Gn.unlink(o)}catch{}}async function cK(t){let e=Date.now()+dM;for(;;){let o=Date.now();if(o>=e)throw new Error(`Timeout ao adquirir lock "${t}" (${dM}ms).`);try{let n={pid:process.pid,createdAt:o};return await Gn.writeFile(t,JSON.stringify(n),{flag:"wx",mode:384}),n}catch(n){if(n.code!=="EEXIST")throw n;try{let r=await Gn.readFile(t,"utf-8");lK(JSON.parse(r),o)&&await uM(t,o)}catch{await uM(t,o)}}await new Promise(n=>setTimeout(n,aK))}}async function dK(t,e){if(e!==void 0)try{let o=await Gn.readFile(t,"utf-8"),n=JSON.parse(o);if(n.pid!==e.pid||n.createdAt!==e.createdAt)return}catch{return}try{await Gn.unlink(t)}catch{}}async function _r(t,e){let o=await cK(t);try{return await e()}finally{await dK(t,o)}}var cM,aK,dM,Bk=p(()=>{"use strict";cM=3e4,aK=50,dM=1e4});import{homedir as uK}from"node:os";import{join as sd,dirname as mM}from"node:path";import{openSync as mK,writeSync as fK,closeSync as pK,readFileSync as hK,mkdirSync as Uk,renameSync as gK,unlinkSync as yK,existsSync as fM,constants as jk}from"node:fs";function xK(t){return t.replace(/\\/g,"\\\\").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/<!--aluy-mem /g,"\\<!--aluy-mem ").replace(/-->/g,"\\-->")}function SK(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+=`
|
|
451
451
|
`,o++):r==="<"||r==="-"?(e+=r,o++):e+="\\"}return e}function wK(t){let e=JSON.stringify({id:t.id,p:t.provenance,pin:t.pinned,ts:t.ts});return`- ${t.pinned?"\u{1F4CC} ":""}${xK(t.text)} ${Qf}${e}${hM}`}function AK(t,e){let o=-1;for(let l=t.lastIndexOf(Qf);l>=0;l=t.lastIndexOf(Qf,l-1))if(l===0||t[l-1]!=="\\"){o=l;break}if(o<0)return null;let n=t.lastIndexOf(hM);if(n<=o)return null;let r=t.slice(0,o),s=t.slice(o+Qf.length,n),i=r.match(/^- (.*?)\s*$/);if(!i)return null;let a=i[1]??"";a=a.replace(/^📌\s*/,""),a=SK(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 pM,bK,Hk,vK,kK,Qf,hM,ii,qk=p(()=>{"use strict";Bk();pM=448,bK=384,Hk="memory",vK="global.md",kK="project.md",Qf="<!--aluy-mem ",hM="-->";ii=class{base;globalDir;globalFile;projectDir;projectFile;constructor(e){this.base=e.baseDir??sd(uK(),".aluy"),this.globalDir=sd(this.base,Hk),this.globalFile=sd(this.globalDir,vK),this.projectDir=e.workspace.resolveInside(sd(".aluy",Hk)),this.projectFile=sd(this.projectDir,kK)}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 _r(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 _r(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 _r(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 _r(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(!fM(o))return[];let n;try{n=hK(o,"utf8")}catch{return[]}let r=[];for(let s of n.split(`
|
|
452
452
|
`)){let i=AK(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=mK(i,jk.O_CREAT|jk.O_EXCL|jk.O_WRONLY,bK);try{fK(a,r,0,"utf8")}finally{pK(a)}try{gK(i,s)}catch(l){try{yK(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(wK);return[...r,...s,""].join(`
|
|
453
453
|
`)}ensureDir(e,o){if(e==="global"){let n=mM(o),r=mM(n);fM(r)||Uk(r,{recursive:!0});for(let s of[n,o])try{Uk(s,{mode:pM})}catch(i){if(i.code!=="EEXIST")throw i}}else Uk(o,{mode:pM,recursive:!0})}}});import{accessSync as EK,constants as TK,statSync as _K}from"node:fs";import{delimiter as RK,isAbsolute as xM,join as CK}from"node:path";import{Client as OK}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as MK}from"@modelcontextprotocol/sdk/client/stdio.js";function LK(t,e,o=process.env){let n=new Set,r=IK(t,o);r&&!yM(r)&&n.add(r);for(let s of e)xM(s)&&SM(s)&&!yM(s)&&n.add(s);return[...n]}function yM(t){return PK.some(e=>t===e.replace(/\/$/,"")||t.startsWith(e))}function SM(t){try{return _K(t).isFile()}catch{return!1}}function IK(t,e){if(xM(t))return SM(t)?t:void 0;if(t.includes("/"))return;let o=e.PATH??"";for(let n of o.split(RK)){if(!n)continue;let r=CK(n,t);try{return EK(r,TK.X_OK),r}catch{}}}function wM(t,e=process.env){let o={};for(let n of NK){let r=e[n];typeof r=="string"&&!bM(n)&&(o[n]=r)}for(let[n,r]of Object.entries(t.env))bM(n)||(o[n]=r);return o}function bM(t){return DK.some(e=>e.test(t))}function BK(t=process.env){let e=t.ALUY_MCP_TIMEOUT_MS;if(typeof e!="string"||e.trim()==="")return vM;let o=Number(e);return!Number.isFinite(o)||o<=0?vM:Math.min(FK,Math.max($K,Math.round(o)))}function HK(t=process.env){let e=t.ALUY_MCP_CONNECT_TIMEOUT_MS;if(typeof e!="string"||e.trim()==="")return kM;let o=Number(e);return!Number.isFinite(o)||o<=0?kM:Math.min(jK,Math.max(UK,Math.round(o)))}function qK(){return new OK({name:"aluy-cli",version:wl})}function GK(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 zK(t){if(!Array.isArray(t))return"";let e=[],o=0;for(let n of t){if(o>=WK){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}=GK(r.text,AM),a=i>0?`${s}
|
|
@@ -493,7 +493,7 @@ ${r.text}`).join(`
|
|
|
493
493
|
`)});break}case"bang":{let n=[`! ${o.command} (${o.status})`];o.output&&n.push(o.output),e.push({role:"observation",toolName:_x,text:n.join(`
|
|
494
494
|
`)});break}case"broker-error":e.push({role:"observation",toolName:_x,text:`(erro de broker anterior: ${o.message})`});break;case"note":case"deny":case"subagents":case"doctor":case"inject":break}return e}var e6,_x,Rx=p(()=>{"use strict";e6=new Set(["you","aluy","tool","deny","bang","broker-error","note","inject","doctor"]);_x="sess\xE3o-anterior"});function i6(t){return t.kind==="tool"&&s6.has(t.verb)}function nP(t){let e=!1,o=t.map(n=>{if(n.kind==="tool"&&i6(n)){let r=Je(n.result),s=n.output!==void 0?Je(n.output):void 0,i=n.liveOutput!==void 0?Je(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=ro(n.command);return r===n.command?n:(e=!0,{...n,command:r})}if(n.kind==="tool"&&r6.has(n.verb)){let r=ro(n.target);return r===n.target?n:(e=!0,{...n,target:r})}return n});return e?o:t}var r6,s6,rP=p(()=>{"use strict";N();r6=new Set(["bash","run_command"]),s6=new Set(["read","grep","attach","headroom_retrieve"])});import{homedir as a6}from"node:os";import{join as Cx}from"node:path";import{randomBytes as l6}from"node:crypto";import{openSync as c6,writeSync as d6,closeSync as sP,readFileSync as u6,readdirSync as iP,mkdirSync as m6,renameSync as f6,unlinkSync as aP,statSync as p6,existsSync as wpe,constants as Ox}from"node:fs";function S6(t,e){let o=[...t];return o.length>e?o.slice(0,e).join(""):t}function _p(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 S6(o,x6)}function w6(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 h6,g6,lP,cP,y6,b6,Mx,v6,k6,Tp,x6,_d,dP=p(()=>{"use strict";Rx();rP();h6=448,g6=384,lP="sessions",cP=1,y6=720*60*60*1e3,b6=50,Mx=8*1024*1024,v6=Mx*8,k6=Math.floor(Mx*.9),Tp=/^[A-Za-z0-9_-]{1,128}$/,x6=64;_d=class{base;dir;now;createdAtCache=new Map;constructor(e={}){this.base=e.baseDir??Cx(a6(),".aluy"),this.dir=Cx(this.base,lP),this.now=e.now??(()=>Date.now())}get sessionsDir(){return this.dir}pathFor(e){return Cx(this.dir,`${e}.json`)}save(e){if(!Tp.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=_p(e.label),a=i!==void 0?_p(e.labelColor):void 0,l={id:e.id,version:cP,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,nP(Ep(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(!Tp.test(e))return null;let o=this.pathFor(e),n,r=!1;try{let a=p6(o);if(a.size>v6)return null;r=a.size>Mx,n=u6(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=iP(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:w6(s.blocks)})}return o.sort((n,r)=>r.updatedAt-n.updatedAt),o}latestForCwd(e){let o;try{o=iP(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(Tp.test(e)){this.createdAtCache.delete(e);try{aP(this.pathFor(e))}catch{}}}gc(e={}){let o=e.maxAgeMs??y6,n=e.maxCount??b6,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"||!Tp.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=_p(o.label),m=d!==void 0?_p(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:Ep(o.blocks)}}fitBlocks(e,o){let n=i=>Buffer.byteLength(JSON.stringify({...e,blocks:i})+`
|
|
495
495
|
`,"utf8")<=k6;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){m6(this.dir,{recursive:!0,mode:h6});let o=this.pathFor(e.id),n=`${o}.${process.pid}.${l6(6).toString("hex")}.tmp`,r=JSON.stringify(e)+`
|
|
496
|
-
`,s;try{s=c6(n,Ox.O_CREAT|Ox.O_EXCL|Ox.O_WRONLY,g6),d6(s,r),sP(s),s=void 0,f6(n,o)}catch(i){if(s!==void 0)try{sP(s)}catch{}try{aP(n)}catch{}throw i}}}});import{homedir as A6}from"node:os";import{join as Lx}from"node:path";import{readdirSync as E6,readFileSync as T6,mkdirSync as _6,statSync as R6}from"node:fs";var C6,uP,O6,M6,Rd,mP=p(()=>{"use strict";N();C6=448,uP="commands",O6=64*1024,M6=256,Rd=class{dir;constructor(e={}){let o=e.baseDir??Lx(A6(),".aluy");this.dir=Lx(o,uP)}get commandsDir(){return this.dir}ensureDir(){try{_6(this.dir,{mode:C6,recursive:!0})}catch{}}load(){let e;try{e=E6(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>=M6)break;let i=this.readOne(s);i&&(n.has(i.name)||(n.add(i.name),r.push(i)))}return r}readOne(e){let o=Lx(this.dir,e);try{let n=R6(o);if(!n.isFile()||n.size>O6)return null;let r=T6(o,"utf8");return Rc(e,r)}catch{return null}}}});import{join as L6}from"node:path";import{readdirSync as P6,readFileSync as I6,statSync as N6}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 fP,D6,$6,Cd,pP=p(()=>{"use strict";N();as();fP=[".claude/commands",".aluy/commands"],D6=64*1024,$6=256,Cd=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[];for(let n of fP){let r;try{r=this.workspace.resolveInside(n)}catch{continue}let s;try{s=P6(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>=$6)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(Eo(r).kind!=="allow")return null;let s=L6(o,n);try{this.workspace.resolveInside(r);let i=N6(s);if(!i.isFile()||i.size>D6)return null;let a=I6(s,"utf8");return Rc(n,a)}catch{return null}}}});import{join as F6}from"node:path";import{readdirSync as B6,readFileSync as U6,statSync as j6}from"node:fs";var hP,H6,q6,mi,Ix=p(()=>{"use strict";N();as();hP=[".claude/agents",".aluy/agents"],H6=64*1024,q6=256,mi=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of hP){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=B6(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>=q6)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{profiles:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(Eo(r).kind!=="allow")return null;let s=F6(o,n);try{this.workspace.resolveInside(r);let i=j6(s);if(!i.isFile()||i.size>H6)return null;let a=U6(s,"utf8");return vc(n,a,"project")}catch{return null}}}});var Dx={};
|
|
496
|
+
`,s;try{s=c6(n,Ox.O_CREAT|Ox.O_EXCL|Ox.O_WRONLY,g6),d6(s,r),sP(s),s=void 0,f6(n,o)}catch(i){if(s!==void 0)try{sP(s)}catch{}try{aP(n)}catch{}throw i}}}});import{homedir as A6}from"node:os";import{join as Lx}from"node:path";import{readdirSync as E6,readFileSync as T6,mkdirSync as _6,statSync as R6}from"node:fs";var C6,uP,O6,M6,Rd,mP=p(()=>{"use strict";N();C6=448,uP="commands",O6=64*1024,M6=256,Rd=class{dir;constructor(e={}){let o=e.baseDir??Lx(A6(),".aluy");this.dir=Lx(o,uP)}get commandsDir(){return this.dir}ensureDir(){try{_6(this.dir,{mode:C6,recursive:!0})}catch{}}load(){let e;try{e=E6(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>=M6)break;let i=this.readOne(s);i&&(n.has(i.name)||(n.add(i.name),r.push(i)))}return r}readOne(e){let o=Lx(this.dir,e);try{let n=R6(o);if(!n.isFile()||n.size>O6)return null;let r=T6(o,"utf8");return Rc(e,r)}catch{return null}}}});import{join as L6}from"node:path";import{readdirSync as P6,readFileSync as I6,statSync as N6}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 fP,D6,$6,Cd,pP=p(()=>{"use strict";N();as();fP=[".claude/commands",".aluy/commands"],D6=64*1024,$6=256,Cd=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[];for(let n of fP){let r;try{r=this.workspace.resolveInside(n)}catch{continue}let s;try{s=P6(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>=$6)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(Eo(r).kind!=="allow")return null;let s=L6(o,n);try{this.workspace.resolveInside(r);let i=N6(s);if(!i.isFile()||i.size>D6)return null;let a=I6(s,"utf8");return Rc(n,a)}catch{return null}}}});import{join as F6}from"node:path";import{readdirSync as B6,readFileSync as U6,statSync as j6}from"node:fs";var hP,H6,q6,mi,Ix=p(()=>{"use strict";N();as();hP=[".claude/agents",".aluy/agents"],H6=64*1024,q6=256,mi=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of hP){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=B6(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>=q6)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{profiles:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}`;if(Eo(r).kind!=="allow")return null;let s=F6(o,n);try{this.workspace.resolveInside(r);let i=j6(s);if(!i.isFile()||i.size>H6)return null;let a=U6(s,"utf8");return vc(n,a,"project")}catch{return null}}}});var Dx={};mt(Dx,{UserWorkflowsLoader:()=>ms,WORKFLOWS_DIRNAME:()=>Fa});import{homedir as W6}from"node:os";import{join as Nx}from"node:path";import{readdirSync as G6,readFileSync as z6,mkdirSync as K6,statSync as Y6}from"node:fs";var V6,Fa,X6,J6,ms,Od=p(()=>{"use strict";N();V6=448,Fa="workflows",X6=64*1024,J6=256,ms=class{dir;constructor(e={}){let o=e.baseDir??Nx(W6(),".aluy");this.dir=Nx(o,Fa)}get workflowsDir(){return this.dir}ensureDir(){try{K6(this.dir,{mode:V6,recursive:!0})}catch{}}load(){let e;try{e=G6(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>=J6)break;let a=this.readOne(i);if(a!==null){if(Ac(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=Nx(this.dir,e);try{let n=Y6(o);if(!n.isFile()||n.size>X6)return null;let r=z6(o,"utf8");return Ec(e,r,"global")}catch{return null}}}});var Fx={};mt(Fx,{PROJECT_WORKFLOWS_DIRNAMES:()=>$x,ProjectWorkflowsLoader:()=>fs});import{join as Q6}from"node:path";import{readdirSync as Z6,readFileSync as e3,statSync as t3}from"node:fs";var $x,o3,n3,fs,Md=p(()=>{"use strict";N();as();$x=[".claude/workflows",".aluy/workflows"],o3=64*1024,n3=256,fs=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of $x){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=Z6(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>=n3)break;let c=this.readOne(r,s,l);if(c!==null){if(Ac(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(Eo(r).kind!=="allow")return null;let s=Q6(o,n);try{this.workspace.resolveInside(r);let i=t3(s);if(!i.isFile()||i.size>o3)return null;let a=e3(s,"utf8");return Ec(n,a,"project")}catch{return null}}}});import{homedir as r3}from"node:os";import{join as Bx}from"node:path";import{readdirSync as s3,readFileSync as i3,mkdirSync as a3,statSync as l3}from"node:fs";var c3,Ld,Pd,d3,u3,fi,Rp=p(()=>{"use strict";N();c3=448,Ld="skills",Pd="SKILL.md",d3=256*1024,u3=256,fi=class{dir;constructor(e={}){let o=e.baseDir??Bx(r3(),".aluy");this.dir=Bx(o,Ld)}get skillsDir(){return this.dir}ensureDir(){try{a3(this.dir,{mode:c3,recursive:!0})}catch{}}load(){let e;try{e=s3(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>=u3)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{skills:r,errors:s}}readOne(e){let o=Bx(this.dir,e,Pd);try{let n=l3(o);if(!n.isFile()||n.size>d3)return null;let r=i3(o,"utf8");return Sc(e,r,"global")}catch{return null}}}});import{join as m3}from"node:path";import{readdirSync as f3,readFileSync as p3,statSync as h3}from"node:fs";var gP,g3,y3,pi,Ux=p(()=>{"use strict";N();Rp();gP=[".claude/skills",".aluy/skills"],g3=256*1024,y3=256,pi=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of gP){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=f3(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>=y3)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{skills:o,errors:n}}readOne(e,o,n){let r=`${e}/${n}/${Pd}`,s=m3(o,n,Pd);try{this.workspace.resolveInside(r);let i=h3(s);if(!i.isFile()||i.size>g3)return null;let a=p3(s,"utf8");return Sc(n,a,"project")}catch{return null}}}});import{homedir as b3}from"node:os";import{join as jx}from"node:path";import{readFileSync as v3,statSync as k3}from"node:fs";var yP,x3,S3,Id,bP=p(()=>{"use strict";N();yP="hooks.json",x3="settings.json",S3=256*1024,Id=class{file;claudeProjectFile;constructor(e={}){let o=e.baseDir??jx(b3(),".aluy");this.file=jx(o,yP),e.workspaceRoot!==void 0&&(this.claudeProjectFile=jx(e.workspaceRoot,".claude",x3))}get configPath(){return this.file}load(){let e=nv(this.readJson(this.file));if(this.claudeProjectFile===void 0)return e;let o=sv(this.readJson(this.claudeProjectFile));return iv(e,o)}readJson(e){let o;try{let n=k3(e);if(!n.isFile()||n.size>S3)return;o=v3(e,"utf8")}catch{return}try{return JSON.parse(o)}catch{return}}}});var Nd=p(()=>{"use strict";Oa();TL();bp();CL();PL();$L();xp();cs();GL();qk();ex();YL();VL();Sx();Ax();Bo();eP();dP();Rx();mP();pP();np();Ix();Od();Md();Rp();Ux();bP()});function Dd(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 Hx(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=Dd(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 qx=p(()=>{"use strict"});function A3(t){return t.replace(/\\ /g," ")}function E3(t){return t.includes("/")?!0:/\.[A-Za-z0-9]+$/.test(t)}function T3(t){let e=t.replace(/\.+$/,"");return{token:e,trimmed:t.length-e.length}}function hi(t){let e=[];for(let o of t.matchAll(w3)){let n=o[1],r=o[4],s=o[2]??o[3]??r,{token:i,trimmed:a}=r!==void 0?T3(s):{token:s,trimmed:0},l=A3(i);if(!E3(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 Wx(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 w3,vP=p(()=>{"use strict";w3=/(?:^|\s)(@(?:"([^"]+)"|'([^']+)'|((?:[\p{L}\p{N}._/-]|\\ )+)))/gu});function Cp(t){let e=t.lastIndexOf("@");if(e<0)return null;let o=e>0?t[e-1]:" ";if(o!==" "&&o!==`
|
|
497
497
|
`&&o!==" ")return null;let n=t.slice(e+1);return/\s/.test(n)?null:{at:e,query:n}}function Gx(t){let e=Cp(t);return e?t.slice(0,e.at).replace(/\s+$/,""):t}var kP=p(()=>{"use strict"});import{relative as _3,sep as R3,isAbsolute as C3}from"node:path";var xP,O3,$d,SP=p(()=>{"use strict";N();as();yp();xP=16e3,O3=5*1024*1024,$d=class{workspace;fs;maxChars;sniffBytes;constructor(e){this.workspace=e.workspace,this.fs=e.fs,this.maxChars=e.maxChars??xP,this.sniffBytes=e.sniffBytes??O3}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=_3(this.workspace.root,r).split(R3).join("/");if(s===""||s.startsWith("..")||C3(s))return{kind:"rejected",path:n,reason:"caminho inv\xE1lido p/ o workspace."};let i=Eo(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 EL(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)+`
|
|
498
498
|
[\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:o_(s,a),truncated:l}}}});var Fd=p(()=>{"use strict";as();qx();vP();kP();SP()});function Op(t){return{kind:"deny",reason:t}}function M3(t,e){return t.kind==="approve-session"&&e.alwaysAsk===!0?{kind:"approve-once"}:t}var Mp,wP=p(()=>{"use strict";Mp=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(Op("sess\xE3o n\xE3o-interativa (sem TTY) \u2014 aprova\xE7\xE3o indispon\xEDvel")):o?.aborted?Promise.resolve(Op("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(Op("confirma\xE7\xE3o cancelada (abort/Ctrl-C)"))},l=c=>{i(M3(c,e))};this.current={request:e,resolve:l},o&&o.addEventListener("abort",a,{once:!0}),this.timeoutMs>0&&(s=this.setTimeoutFn(()=>{i(Op("confirma\xE7\xE3o expirou sem resposta"))},this.timeoutMs),s.unref?.()),this.notify()})}notify(){this.observer?.(this.current)}}});function zx(t){return{kind:"unavailable",reason:t}}var Lp,AP=p(()=>{"use strict";Lp=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(zx("sess\xE3o n\xE3o-interativa (sem terminal)")):o?.aborted?Promise.resolve(zx("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(zx("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)}}});async function EP(t,e){if(t.length===0)return t;let o=e.timeoutMs??L3,n=new AbortController,r=o>0?setTimeout(()=>n.abort(),o):void 0,s=()=>n.abort();e.signal?.addEventListener("abort",s,{once:!0}),e.signal?.aborted&&n.abort();try{let i=await fp(e.baseUrl,"/v1/compress",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({messages:t,model:e.model??"claude-3-5-sonnet"}),signal:n.signal},{...e.resolver?{resolver:e.resolver}:{},...e.fetchFn?{fetchFn:e.fetchFn}:{}});if(!i.ok)return e.onRefused?.(i.reason),t;let a=i.response;if(!a.ok)return t;let l=await a.json(),c=l.messages;if(!Array.isArray(c)||c.length!==t.length)return t;for(let d=0;d<t.length;d++){let m=t[d],u=c[d];if(u===void 0)return t;if(u.role!==void 0&&u.role!==m.role)return e.onRefused?.(`proxy adulterou o role da mensagem ${d} (${String(u.role)})`),t;if(u.tool_calls!==void 0&&m.tool_calls===void 0)return e.onRefused?.(`proxy injetou tool_calls na mensagem ${d}`),t;if(u.tool_call_id!==void 0&&m.tool_call_id===void 0)return e.onRefused?.(`proxy injetou tool_call_id na mensagem ${d}`),t}return e.onSavings?.({before:l.tokens_before??0,after:l.tokens_after??0,ratio:l.compression_ratio??1}),t.map((d,m)=>{let u=c[m]?.content;return typeof u=="string"&&d.content!==""&&u!==d.content?{...d,content:u}:d})}catch{return t}finally{r!==void 0&&clearTimeout(r),e.signal?.removeEventListener("abort",s)}}var L3,TP=p(()=>{"use strict";ax();L3=2500});var Pp,_P=p(()=>{"use strict";N();TP();Pp=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=this.opts.headroomUrl,n=o===void 0?e:{...e,messages:await EP(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})
|
|
499
499
|
`)},onRefused:r=>{this.headroomRefusedWarned||(this.headroomRefusedWarned=!0,process.stderr.write(`[headroom] compress\xE3o DESLIGADA nesta sess\xE3o \u2014 ${r}. Rodando sem headroom (fail-open).
|
|
@@ -518,15 +518,15 @@ Controles do HUMANO (n\xE3o seus \u2014 voc\xEA \xE9 canal read-only): Ctrl+T ab
|
|
|
518
518
|
`,{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=[nS(o)];for(let u=0;u<c.length;u++)d.push(rS(c[u],u+2));let m=d.join(`
|
|
519
519
|
`)+`
|
|
520
520
|
`;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 Ne.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+=rS(i[m],u)+`
|
|
521
|
-
`}if(this.maxBytes>0&&(await Ne.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 Ne.appendFile(this.filePath(e),d)}}finally{await this.releaseLock(e,n)}}async remove(e){try{return await Ne.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 Ne.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=Ua.join(this.baseDir,s.name);try{let l=await $p(a,i);(l.revoked||jr(l,o))&&(await Ne.unlink(a),r+=1)}catch{try{await Ne.unlink(a),r+=1}catch{}}}return r}}});function eI(t){if(t.config.hooks.some(o=>o.event==="pre-tool"&&o.gate===!0))return async(o,n)=>{let r=rv(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): ${a4(s.observation)}`}:{blocked:!1}}}function a4(t){return typeof t.text=="string"?t.text:""}var tI=p(()=>{"use strict";N()});function nI(t={}){let e=t.env??process.env,o=wo(e),n=t.store??new Kt,r=new Gt({baseUrl:o.identityBaseUrl,clientId:Dk,store:n,...t.identityFetch?{fetch:t.identityFetch}:{}},{envToken:()=>e.ALUY_TOKEN}),s=Jo(e),i=t.brokerClient??Jl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),a=t.catalogClient??Ql({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),l=t.customModelClient??Zl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),c=t.providersClient??ec({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),d=t.quotaClient??Ly({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??ta(),y=new xd({sessionId:g,...t.journalBaseDir!==void 0?{baseDir:t.journalBaseDir}:{}});y.gcOrphans();let b=new Lc({store:y,workspace:h,restoreWriter:new wd({workspace:h}),currentReader:new Ad({workspace:h})}),w=new Pc({journal:b}),T=new us({workspace:h}),A=new ci(t.egressAllow!==void 0?{allow:t.egressAllow}:{}),M=kv(e.ALUY_WEB_FETCH_MAX_CHARS),B=Xk({egress:A,policy:{maxObservationChars:M,...u?{allowInternalHosts:!0}:{}}}),H=new ii({workspace:h,...t.memoryBaseDir!==void 0?{baseDir:t.memoryBaseDir}:{}}),G=new Xs({store:H}),Y=new Sd({...t.todoBaseDir!==void 0?{baseDir:t.todoBaseDir}:{},sessionId:g}),$=process.env.ALUY_SANDBOX_BASH?gp():void 0,te=new Lp,oe=new Hi,J={fs:T,shell:new yd({workspace:h,timeoutMs:l4,...$?{sandboxLauncher:$}:{},egressAllows:U=>{let k=A.inspect(U);return k.hasNetwork&&!k.outsideAllowlist}}),search:new bd({workspace:h}),journal:b.toolPort,web:B,cwd:h,memory:{remember:(U,k,tt)=>G.remember(U,k,tt),searchFacts:(U,k)=>G.searchFacts(U,k)},todo:Y,question:te,graph:oe},D=new vd({workspace:h}),z=new $d({workspace:h,fs:T}),xe=new no({mode:m,diffPreview:(U,k,tt)=>tt!==void 0?ia(U,tt,k,!0):ia(U,"",k,!1),...t.maxMemoryWritesPerSession!==void 0?{maxMemoryWritesPerSession:t.maxMemoryWritesPerSession}:{}}),K=new Mp(t.askTimeoutMs!==void 0?{timeoutMs:t.askTimeoutMs}:{}),ue=(t.hooksConfigStore??new Id({workspaceRoot:t.workspaceRoot??process.cwd()})).load(),Z=new Oc({permission:xe,ports:J,askResolver:K}),ie=eI({runner:Z,config:ue}),P=t.tier??Zo,ge=ep(P,e,void 0,t.context?.window),ee=P==="custom"?t.model:void 0,le=ee!==void 0?t.provider:void 0,Ce=t.effort,Le=(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)?{...xo,maxIterations:em(t.maxIterations,e.ALUY_MAX_ITERATIONS,t.limits?.maxIterations),maxTokens:Zu(t.maxTokens,e.ALUY_MAX_TOKENS,t.limits?.maxTokens)}:{maxIterations:1e4,maxToolCalls:1e4*2},ct=oE(t.maxOutputTokens,e.ALUY_MAX_OUTPUT_TOKENS,t.limits?.maxOutputTokens,t.onConfigWarn),pt=Vy({flag:t.selfCheck,env:e.ALUY_SELF_CHECK,tier:P,everyKEnv:e.ALUY_SELF_CHECK_EVERY,maxVerificationsEnv:e.ALUY_SELF_CHECK_MAX}),ht={cwd:h.cwd,tier:P,...ee!==void 0?{model:ee}:{},...t.effectiveBackend!==void 0?{backend:t.effectiveBackend}:{},tokens:0,windowPct:0},gt=null,dt=new Pp({client:i,tier:P,...t.headroomUrl!==void 0?{headroomUrl:t.headroomUrl}:{},...ee!==void 0?{model:ee}:{},...le!==void 0?{provider:le}:{},...Ce!==void 0?{effort:Ce}:{},...ct!==void 0?{maxTokens:ct}:{},sink:{onStart:()=>gt?.sink.onStart?.(),onDelta:U=>gt?.sink.onDelta(U),onUsage:U=>gt?.sink.onUsage?.(U),onQuota:U=>gt?.sink.onQuota?.(U),onDone:()=>gt?.sink.onDone?.()}}),Zt=new Dn({client:i,tier:P,tierSource:dt,maxTokens:ff}),eo=new Dn({client:i,tier:P,tierSource:dt,maxTokens:2048}),L=t.subAgents?.enabled?new Dn({client:i,tier:P,tierSource:dt,...ct!==void 0?{maxTokens:ct}:{}}):void 0,X=new Map,ke,Se=t.subAgents?.enabled?U=>{let k=X.get(U);if(k)return k;let tt=new Dn({client:i,tier:U,...ct!==void 0?{maxTokens:ct}:{}});return ke&&tt.attachNativeTools(ke),X.set(U,tt),tt}:void 0,Pe=gv(e.ALUY_ROOM_BACKEND,t.roomsBackend);Pe.warning&&t.onConfigWarn&&t.onConfigWarn(Pe.warning);let De=(()=>{switch(Pe.backend){case"memory":return new kr;case"file":return new Fp;case"loopback":case"broker":throw new Error(`Room backend "${Pe.backend}" n\xE3o implementado ainda. Use "memory" ou "file", ou deixe o default.`);default:return new kr}})(),V=new Dp({model:dt,compactionModel:Zt,sideQueryModel:eo,permission:xe,roomStore:De,ports:J,askResolver:K,questionResolver:te,...ie?{preToolGate:ie}:{},...Ct(ue,"user-prompt-submit").length>0?{onUserPromptSubmit:()=>{Z.runAll(Ct(ue,"user-prompt-submit"))}}:{},meta:ht,limits:Le,...pt.enabled?{selfCheck:pt}:{},...t.autoCompactAt!==void 0?{autoCompactAt:t.autoCompactAt}:{},...t.context?{contextConfig:t.context}:{},contextWindow:ge,...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}:{},...t.headroomUrl!==void 0?{headroomRetrieveTool:fL({baseUrl:t.headroomUrl})}:{},...t.subAgents?.enabled?{subAgents:{...t.subAgents,...Ct(ue,"subagent-stop").length>0?{observer:{onChildEnd:()=>{Z.runAll(Ct(ue,"subagent-stop"))}}}:{}}}:{},...t.subAgents?.enabled&&t.agentRegistry?{agentRegistry:t.agentRegistry}:{},...t.subAgents?.enabled&&t.reloadProjectAgents?{reloadProjectAgents:t.reloadProjectAgents}:{},...L?{subAgentModel:L}:{},...Se?{callerForTier:Se}:{},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=ip({env:e,...t.services?{services:t.services}:{}});if(!U)return{};let k=GM(e);return k?{maestro:U,continuationConfig:k}:{maestro:U}})(),...(()=>{let U=WM({env:e,...t.services?{services:t.services}:{}});return U?{memoryEngine:U.memory,memoryScope:U.memoryScope,memoryRecallScopes:U.memoryRecallScopes}:{}})(),onToolsReady:U=>{dt.attachNativeTools(U),L?.attachNativeTools(U),ke=U;for(let k of X.values())k.attachNativeTools(U)}});return gt=V,{controller:V,login:r,engine:xe,egress:A,workspace:h,askResolver:K,questionResolver:te,journal:b,journalStore:y,checkpoints:w,fileIndex:D,attachReader:z,catalogClient:a,customModelClient:l,providersClient:c,quotaClient:d,ports:J,memory:G,todoStore:Y,hookRunner:Z,hooksConfig:ue}}var Zo,l4,jd=p(()=>{"use strict";N();is();si();pL();Wn();ux();Nd();Fd();wP();AP();_P();oS();Nd();ZP();tI();N();Cr();ox();Zo="aluy-flux",l4=12e4});var sI={};ut(sI,{runDoctor:()=>c4});async function c4(t={}){let e=t.io??Ot(),o=t.env??process.env,n=t.json===!0,r=t.probe??d4(o,t.deep===!0),s=r.tierTester!==void 0;if(!n){e.out("aluy doctor \u2014 diagn\xF3stico"),e.out("");for(let h of lp(s))e.out(`\u25F7 ${h.label}: testando\u2026`);let c={...r,onCheck:(h,g)=>{let y=cp(h,g);if(!y)return;let b=y.status==="ok"?hd.ok:y.status==="warn"?hd.warn:hd.fail;e.out(`${b} ${y.label}: ${y.detail}`),y.status!=="ok"&&y.fix!==void 0&&e.out(` \u2192 ${y.fix}`)}},d=await md(c),m=pd(d),u=uL(m,hd);return e.out(""),e.out(u[u.length-1]??""),sx(m)?1:0}let i=await md(r),a=pd(i),l=a.checks.map(c=>({id:c.id,status:c.status,label:c.label,detail:c.detail}));return e.out(JSON.stringify(l)),sx(a)?1:0}function d4(t,e){return{env:t,getAccessToken:()=>u4(t),memory:f4(),makeMcpTransport:()=>new Rr({cwd:process.cwd(),parentEnv:t}),...e?{tierTester:()=>mp({tier:m4(),login:rI(t),env:t})}:{}}}function rI(t){let e=wo(t),o=new Kt;return new Gt({...e,baseUrl:e.identityBaseUrl,store:o})}function u4(t){return rI(t).getAccessToken()}function m4(){try{let t=new Qe({}).load();return Xc(void 0,t,Zo)}catch{return Zo}}function f4(){return{async count(){try{let t=new Yt({}),e=new ii({workspace:t});return(await new Xs({store:e}).list()).length}catch{return null}}}}var iI=p(()=>{"use strict";N();qn();is();Wn();Oa();qk();id();rx();up();mL();ix();Bo();jd()});function p4(t){return(t.entries.find(o=>o.wave===1)??t.entries[0])?.id??"anthropic"}function Bp(t){return Ps({flag:t.flag,env:t.env.ALUY_BACKEND,config:t.config.backend})}function sS(t,e){return t==null?void 0:gn(e,t)?.id}function iS(t){if(t==null)return;let e=t.trim().toLowerCase();if(e==="apikey"||e==="oauth"||e==="none")return e}function h4(t,e){let o=gn(e,t)?.auth;return o!==void 0&&o.length>0&&o.every(n=>n==="none")?"none":"apikey"}function ja(t){if(t==null)return;let e=t.trim();return e!==""?e:void 0}function Ha(t){let e=t.flags??{},o=t.catalog??Nn(),n=sS(e.localProvider,o)??sS(t.env.ALUY_LOCAL_PROVIDER,o)??sS(t.config.localProvider,o)??p4(o),r=gn(o,n)?.defaultModel??n,s=ja(e.localModel)??ja(t.env.ALUY_LOCAL_MODEL)??ja(t.config.localModel)??r,i=iS(e.localAuth)??iS(t.env.ALUY_LOCAL_AUTH)??iS(t.config.localAuth)??h4(n,o),a=ja(e.localBaseUrl)??ja(t.env.ALUY_LOCAL_BASE_URL)??ja(t.config.localBaseUrl);return{provider:n,model:s,auth:i,...a!==void 0?{baseUrl:a}:{}}}var Up=p(()=>{"use strict";N()});var lI={};ut(lI,{collectSettings:()=>aI,runConfig:()=>k4});import{existsSync as g4}from"node:fs";import{homedir as y4}from"node:os";import{join as jp}from"node:path";function Hd(t,e,o,n,r){let s=o?.trim();return s!==void 0&&s!==""?{key:t,value:s,origin:"env",source:e}:n!=null?{key:t,value:String(n),origin:"config.json",source:`config.${t}`}:{key:t,value:r,origin:"default",source:"\u2014"}}function qa(t,e,o){return e!=null?{key:t,value:String(e),origin:"config.json",source:`config.${t}`}:{key:t,value:o,origin:"default",source:"\u2014"}}function aI(t,e){let o=Ha({env:{},config:{}}),n=o.baseUrl??"\u2014";return[Hd("backend","ALUY_BACKEND",t.ALUY_BACKEND,e.backend,Bp({env:{},config:{}})),Hd("localProvider","ALUY_LOCAL_PROVIDER",t.ALUY_LOCAL_PROVIDER,e.localProvider,o.provider),Hd("localModel","ALUY_LOCAL_MODEL",t.ALUY_LOCAL_MODEL,e.localModel,o.model),Hd("localAuth","ALUY_LOCAL_AUTH",t.ALUY_LOCAL_AUTH,e.localAuth,o.auth),Hd("localBaseUrl","ALUY_LOCAL_BASE_URL",t.ALUY_LOCAL_BASE_URL,e.localBaseUrl,n),qa("profile",e.profile,"turbo"),qa("sidecar.ollama",e.sidecarToggles?.ollama,"on (default)"),qa("sidecar.mem0",e.sidecarToggles?.mem0,"on (default)"),qa("sidecar.headroom",e.sidecarToggles?.headroom,"on (default)"),qa("lang",e.lang,"auto"),qa("theme",e.theme,"default")]}function b4(t){let e=(o,n)=>{let r=jp(t,o);return{path:r,role:n,exists:g4(r)}};return[e("config.json","configura\xE7\xE3o dur\xE1vel (este comando)"),e("mcp.json","servers MCP (interop; sem credencial \u2014 CLI-SEC-7)"),e("hooks.json","hooks (fronteira de execu\xE7\xE3o; o agente nunca escreve)"),e("providers.json","cat\xE1logo de providers (override do usu\xE1rio)"),e("update-check.json","estado/cache (reescrito pela m\xE1quina)"),e("memory","store do mem0 (chromadb + history)"),e("logs","logs dos sidecars (mem0/ollama/headroom)")]}function k4(t={}){let e=t.io??Ot(),o=t.env??process.env,n=t.baseDir??jp(y4(),".aluy"),s=(t.configStore??new Qe({baseDir:n})).load(),i=aI(o,s),a=b4(n);if(t.json===!0)return e.out(JSON.stringify({configPath:jp(n,"config.json"),settings:i.map(d=>({key:d.key,value:d.value,origin:d.origin,source:d.source})),files:a.map(d=>({path:d.path,role:d.role,exists:d.exists}))},null,2)),0;e.out("aluy config \u2014 configura\xE7\xE3o efetiva (read-only)"),e.out(` arquivo dur\xE1vel: ${jp(n,"config.json")}`),e.out(" preced\xEAncia: flag > env (ALUY_*) > config.json > default"),e.out("");let l=Math.max(...i.map(d=>d.key.length),3),c=Math.max(...i.map(d=>d.value.length),5);for(let d of i){let m=v4[d.origin],u=d.origin==="default"?"":` (${d.source})`;e.out(` ${d.key.padEnd(l)} ${d.value.padEnd(c)} [${m}]${u}`)}e.out(""),e.out(" outros arquivos (fora do config.json de prop\xF3sito \u2014 segredo/interop/execu\xE7\xE3o):");for(let d of a){let m=d.exists?"\xB7":"\u25CB";e.out(` ${m} ${d.path} \u2014 ${d.role}`)}return e.out(""),e.out(" segredos (chave de API/token) ficam no keychain do SO, NUNCA no config.json."),0}var v4,cI=p(()=>{"use strict";qn();Bo();Up();v4={env:"env","config.json":"config",default:"default"}});var uI={};ut(uI,{defaultUserAgentsDir:()=>A4,runAgents:()=>w4});import{homedir as x4}from"node:os";import{join as dI}from"node:path";function S4(){return dI("~",".aluy",cd)}function w4(t={}){let e=t.out??(a=>process.stdout.write(a+`
|
|
522
|
-
`)),o=t.loadGlobal??(()=>new Mr().load()),n=t.loadProject??(()=>new mi({workspace:new Yt}).load()),r=o(),s=n(),i=kc({profiles:[...r.profiles,...s.profiles],errors:[...r.errors,...s.errors],globalDir:t.globalDir??S4()});e(i.title==="agents"?"aluy agents \u2014 perfis .md mapeados":i.title);for(let a of i.lines)e(a);return 0}function A4(){return dI(x4(),".aluy",cd)}var mI=p(()=>{"use strict";N();np();Ix();Oa()});var pI={};
|
|
523
|
-
`)),o=t.loadGlobal??(()=>new fi().load()),n=t.loadProject??(()=>new pi({workspace:new Yt}).load()),r=o(),s=n(),i=wc({skills:[...r.skills,...s.skills],errors:[...r.errors,...s.errors],globalDir:t.globalDir??T4()});e("aluy skills \u2014 capacidades SKILL.md mapeadas");for(let a of i.lines)e(a);return 0}function R4(){return fI(E4(),".aluy",Ld)}var hI=p(()=>{"use strict";N();Rp();Ux();Oa()});var yI={};
|
|
524
|
-
`)),o=t.loadGlobal??(()=>new ms().load()),n=t.loadProject??(()=>new fs({workspace:new Yt}).load()),r=o(),s=n(),i=Tc({workflows:[...r.workflows,...s.workflows],errors:[...r.errors,...s.errors],globalDir:t.globalDir??O4(),projectDir:t.projectDir??".claude/workflows"});e("workflows \u2014 fluxos .md mapeados");for(let a of i.lines)e(a);return 0}function L4(){return gI(C4(),".aluy",Fa)}var bI=p(()=>{"use strict";N();Od();Md();Oa()});var xI={};ut(xI,{probeModelReachable:()=>vI,runFirstRunWizard:()=>kI,runInit:()=>N4});import{Entry as P4}from"@napi-rs/keyring";async function vI(t){let{config:e,env:o}=t,n=Ha({env:o,config:e}),r=gn(Nn(),n.provider)?.baseUrl,s=n.baseUrl??r;if(s===void 0||s==="")return!0;let i=t.fetchImpl??globalThis.fetch,a=t.timeoutMs??4e3,l=new AbortController,c=setTimeout(()=>l.abort(),a);try{return await i(`${s.replace(/\/+$/,"")}/models`,{signal:l.signal}),!0}catch{return!1}finally{clearTimeout(c)}}async function kI(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??I4)(ri,Vf(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 (${aS.join("/")}): `)).trim().toLowerCase();if(!aS.includes(u))return s(`Provider inv\xE1lido "${u}". Use: ${aS.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{Ta(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 I4(t,e){return new P4(t,e)}async function N4(t){let{out:e,err:o}=t,n=t.configStore??new Qe,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 kI({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&&(await(t.modelProbe??((u,h)=>vI({config:u,env:h})))(i,t.env??process.env)||(e(" \u26A0 O modelo local n\xE3o respondeu \u2014 o instalador via agente precisa dele para rodar."),e(" Caindo no caminho DIRETO (--no-agent), que provisiona sem usar modelo."),e(""),l=!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(""),process.env.ALUY_MEM0_EMBEDDER=jf(i);let c=await E0(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 aS,SI=p(()=>{"use strict";Bo();_k();_a();Up();N();aS=["anthropic","openrouter","openai"]});var wI={};ut(wI,{runUninstall:()=>j4});import{homedir as D4}from"node:os";import{join as Hp}from"node:path";import{rmSync as $4,existsSync as F4}from"node:fs";import{spawnSync as B4}from"node:child_process";function U4(t){return[{label:"ollama (instala\xE7\xE3o local em ~/.aluy)",path:Hp(t,Zr)},{label:"mem0 (venv)",path:Hp(t,Sr)},{label:"headroom (venv)",path:Hp(t,es)}]}function j4(t={},e={}){let o=e.io??Ot(),n=e.baseDir??Hp(D4(),".aluy"),r=e.remove??(i=>$4(i,{recursive:!0,force:!0})),s=e.exists??F4;o.out("Removendo os complementos gerenciados pelo aluy (em ~/.aluy/)\u2026");for(let i of U4(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?q4(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 H4(){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 q4(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(""),B4(process.execPath,[e,"-p",H4(),"--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 AI=p(()=>{"use strict";N();qn()});function G4(t){let e=/^#?([0-9a-f]{6})$/i.exec(t.trim());return e?`\x1B]11;#${e[1].toUpperCase()}\x07`:""}function z4(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 Y4(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:lS(e[1]),g:lS(e[2]),b:lS(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 lS(t){let e=parseInt(t,16),o=16**t.length-1;return Math.round(e/o*255)}function V4(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 X4(t){return V4(t)>=K4?"light":"dark"}function J4(t){let e=Y4(t);return e?X4(e):null}function Q4(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 TI(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??Q4(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=J4(i);h!==null&&d(h)};try{n.setRawMode(!0),n.resume(),n.on("data",m),t.stdout.write(W4)}catch{d(null);return}l.id=setTimeout(()=>d(null),o)})}var W4,EI,qp,K4,_I=p(()=>{"use strict";W4="\x1B]11;?\x07",EI="\x1B]111\x07";qp=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&&z4(o)}get active(){return this.enabled}apply(e){if(!this.enabled)return"";let o=G4(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(EI),EI)}},K4=.5});import{createContext as Z4,useContext as e8}from"react";import{Text as RI}from"ink";import{jsx as Wp}from"react/jsx-runtime";function gi(t){return Wp(CI.Provider,{value:t.theme,children:t.children})}function ne(){return e8(CI)}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),Wp(RI,{...n,children:t.children})}function I(t){let o=ne().glyph(t.name);return t.role?Wp(f,{name:t.role,children:o}):Wp(RI,{children:o})}var CI,OI=p(()=>{"use strict";Ff();CI=Z4(Vo())});var ae=p(()=>{"use strict";If();Nf();Ff();Df();os();_I();OI()});import"react";import{Box as Gp}from"ink";import{jsx as Wa,jsxs as MI}from"react/jsx-runtime";function Pr(t){let e=ne(),n=(t.columns??80)<Wd,r=e.unicode?"\u039B":"/\\";if(n)return MI(Gp,{children:[Wa(f,{name:"accent",children:r}),Wa(f,{name:"accent",children:" luy"})]});let s=e.unicode?Ga:LI,i=e.unicode?qd:PI;return MI(Gp,{flexDirection:"row",children:[Wa(Gp,{flexDirection:"column",children:s.map((a,l)=>Wa(f,{name:"accent",children:a},l))}),Wa(Gp,{flexDirection:"column",children:i.map((a,l)=>Wa(f,{name:"accent",children:t8+a},l))})]})}var Ga,qd,LI,PI,t8,Wd,cS,yi=p(()=>{"use strict";ae();Nf();Ga=[" \u2588\u2588 "," \u2588\u2588\u2588\u2588 "," \u2588\u2588 \u2588\u2588 ","\u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588"," "],qd=["\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"],LI=[" /\\ "," / \\ ","/ \\","/ \\","/ \\"," "],PI=["## ","## ## ## ## ##","## ## ## ## ##","## ## ## #####","## ##### ##"," ##"],t8=" ",Wd=28,cS=Ga.length});async function II(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 NI=p(()=>{"use strict"});import{mkdirSync as o8,readFileSync as n8,renameSync as r8,statSync as s8,writeFileSync as i8}from"node:fs";import{dirname as a8,join as l8}from"node:path";function DI(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)+`
|
|
525
|
-
`}var c8,Bt,zn,Gd=p(()=>{"use strict";N();c8=256*1024,Bt=class extends Error{constructor(e){super(e),this.name="McpWriteError"}},zn=class{file;constructor(e){this.file=e.file}get configPath(){return this.file}load(){let e;try{let n=s8(this.file);if(!n.isFile())throw new Bt(`${this.file}: n\xE3o \xE9 um arquivo regular.`);if(n.size>c8)throw new Bt(`${this.file}: grande demais p/ editar com seguran\xE7a.`);e=n8(this.file,"utf8")}catch(n){if(n instanceof Bt)throw n;return we}let o;try{o=JSON.parse(e)}catch{throw new Bt(`${this.file}: JSON inv\xE1lido \u2014 conserte \xE0 m\xE3o antes de usar 'aluy mcp'.`)}try{return $o(o)}catch(n){let r=n instanceof fe?n.message:String(n);throw new Bt(r)}}add(e,o={}){if(!ga(e.name))throw new Bt(`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 Bt(`server "${e.name}": "command" n\xE3o pode ser vazio.`);if(e.command.trim()==="--")throw new Bt(`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 Bt(`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=a8(this.file);o8(o,{recursive:!0});let n=DI(e),r=l8(o,`.mcp.json.${process.pid}.${Date.now()}.tmp`);i8(r,n,{encoding:"utf8",mode:384}),r8(r,this.file)}}});var UI={};ut(UI,{mcpCatalog:()=>BI,runOnboard:()=>y8});import{useEffect as d8,useMemo as $I,useState as io}from"react";import{render as u8,Box as Ze,useApp as m8,useInput as f8}from"ink";import{homedir as FI}from"node:os";import{join as p8}from"node:path";import{jsx as de,jsxs as kt}from"react/jsx-runtime";function BI(){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",FI()]},{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 h8(t){let e=m8(),o=t.store.load(),n=$I(()=>ss().entries,[]),[r,s]=io("lang"),[i,a]=io(o.lang??"pt-BR"),[l,c]=io("local"),[d,m]=io("anthropic"),[u,h]=io({id:"",url:"",model:""}),[g,y]=io(""),[b,w]=io(""),[T,A]=io("leve"),[M,B]=io(ha),[H,G]=io(""),Y=$I(()=>BI(),[]),[$,te]=io(new Set),[oe,J]=io(0),[D,z]=io(Math.max(0,Dt.findIndex(L=>L.code===i))),[xe,K]=io(""),[ue,Z]=io([]),ie=i==="pt-BR",P=(L,X)=>ie?L:X,ge=[{value:"local",label:P("Local (sua chave / BYO)","Local (your key / BYO)"),hint:P("direto no provider","direct to provider")},{value:"broker",label:P("Broker (conta Aluy)","Broker (Aluy account)"),hint:P("autentica depois com aluy login","authenticate later with aluy login")}],ee=[...n.map(L=>({value:L.id,label:L.label,hint:L.defaultModel})),{value:"__custom__",label:P("+ custom (OpenAI-compat\xEDvel)","+ custom (OpenAI-compatible)"),hint:P("ex.: TokenRouter, vLLM\u2026","e.g. TokenRouter, vLLM\u2026")}],le=[{value:"turbo",label:P("Turbo \u2014 instala tudo","Turbo \u2014 install all"),hint:P("ollama + mem0 + headroom \xB7 pede m\xE1quina razo\xE1vel","ollama + mem0 + headroom \xB7 needs a decent machine")},{value:"leve",label:P("Leve \u2014 nada agora","Lite \u2014 nothing now"),hint:P("liga depois com aluy bootstrap","enable later with aluy bootstrap")}],Ce=Sf.map(L=>({value:L.model,label:L.model,hint:P(L.hintPt,L.hintEn)})),Oo=L=>L==="lang"?Dt.length:L==="backend"?ge.length:L==="provider"?ee.length:L==="sidecars"?le.length:L==="embedder"?Ce.length:0;function Le(L,X=""){K(X),s(L)}function ct(){z(Math.max(0,le.findIndex(L=>L.value==="leve"))),s("sidecars")}function pt(){J(0),s("mcp")}function ht(){let L=d==="__custom__",X=n.find(ke=>ke.id===d);return{wireFormat:L?"openai-compat":X?.wireFormat??"openai-compat",baseUrl:L?u.url.trim():X?.baseUrl??"",model:(L?u.model:b.trim()||X?.defaultModel||"").trim(),key:g.trim()}}d8(()=>{if(r!=="validating")return;let L=ht();if(l!=="local"||L.key===""||L.baseUrl===""||L.model===""){pt();return}let X=!1;return II(L).then(ke=>{X||(ke.ok?(G(""),pt()):(G(ke.detail),s("validate-failed")))}),()=>{X=!0}},[r]);function gt(L,X){let ke=[],Se={lang:i,backend:l};if(l==="local"){Se.localProvider=d==="__custom__"?u.id.trim():d;let De=d==="__custom__"?u.model:b;De.trim()!==""&&(Se.localModel=De.trim())}if(Se.profile=L,L==="turbo"&&X!==void 0&&X!==""&&(Se.embedder=X),t.store.save(Se),ke.push(`\u2713 ${P("config","config")}: backend ${l}`),l==="local"&&d==="__custom__"&&u.id.trim()!==""&&u.url.trim()!=="")try{F0({id:u.id.trim(),wireFormat:"openai-compat",baseUrl:u.url.trim(),defaultModel:u.model.trim()||u.id.trim()}),ke.push(P(`\u2713 provider custom "${u.id.trim()}" registrado`,`\u2713 custom provider "${u.id.trim()}" registered`))}catch(De){ke.push(`\u26A0 providers.json: ${String(De)}`)}if(l==="local"&&g.trim()!==""){let De=d==="__custom__"?u.id.trim():d;try{Ta(De,g.trim()),ke.push(P(`\u2713 chave de "${De}" no keychain`,`\u2713 "${De}" key in keychain`))}catch{ke.push(P(`\u26A0 keychain indispon\xEDvel \u2014 rode: aluy login --provider ${De}`,`\u26A0 keychain unavailable \u2014 run: aluy login --provider ${De}`))}}let Pe=Y.filter((De,V)=>$.has(V));if(Pe.length>0)try{let De=new zn({file:p8(FI(),".aluy","mcp.json")});for(let V of Pe)De.add({name:V.id,command:V.command,args:[...V.args],env:{}},{force:!0});ke.push(P(`\u2713 ${Pe.length} MCP(s) registrado(s): ${Pe.map(V=>V.id).join(", ")}`,`\u2713 ${Pe.length} MCP(s) registered: ${Pe.map(V=>V.id).join(", ")}`))}catch(De){ke.push(`\u26A0 mcp.json: ${String(De)}`)}ke.push(`\u2713 sidecars: ${L}`),L==="turbo"&&X!==void 0&&X!==""&&ke.push(` \u2192 embedder: ${X}`),L==="turbo"&&ke.push(P(" \u2192 instale agora: aluy bootstrap"," \u2192 install now: aluy bootstrap")),H!==""&&ke.push(P("\u26A0 modelo N\xC3O validado \u2014 pode n\xE3o funcionar","\u26A0 model NOT validated \u2014 may not work")),l==="broker"&&ke.push(P("\u2192 broker: autentique com `aluy login`","\u2192 broker: authenticate with `aluy login`")),Z(ke),s("done")}f8((L,X)=>{if(r==="done"){(X.return||X.escape||L)&&e.exit();return}if(r==="validating")return;if(r==="validate-failed"){if(X.escape){e.exit();return}let Se=(L||"").toLowerCase();X.return||Se==="r"?s("validating"):Se==="k"?Le("key",""):Se==="u"&&d==="__custom__"?Le("custom-url",u.url):Se==="c"&&pt();return}if(X.escape){e.exit();return}if(r==="mcp"){X.upArrow?J(Se=>Math.max(0,Se-1)):X.downArrow?J(Se=>Math.min(Y.length-1,Se+1)):L===" "?te(Se=>{let Pe=new Set(Se);return Pe.has(oe)?Pe.delete(oe):Pe.add(oe),Pe}):X.return&&ct();return}if(r==="lang"||r==="backend"||r==="provider"||r==="sidecars"||r==="embedder"){let Se=Oo(r);X.upArrow?z(Pe=>Math.max(0,Pe-1)):X.downArrow?z(Pe=>Math.min(Se-1,Pe+1)):X.return&&dt();return}if(X.return){Zt();return}if(X.backspace||X.delete){K(Se=>Se.slice(0,-1));return}L&&!X.ctrl&&!X.meta&&!X.upArrow&&!X.downArrow&&!X.leftArrow&&!X.rightArrow&&K(Se=>Se+L)});function dt(){if(r==="lang"){let L=Dt[D].code;t.store.saveLang(L),a(L),z(0),s("backend")}else if(r==="backend"){let L=ge[D].value;c(L),L==="broker"?pt():(z(0),s("provider"))}else if(r==="provider"){let L=ee[D].value;if(m(L),L==="__custom__")Le("custom-id","");else{let X=n.find(Se=>Se.id===L);X?.auth?.length===1&&X.auth[0]==="none"?(y(""),Le("model",X?.defaultModel??"")):Le("key","")}}else if(r==="sidecars"){let L=le[D].value;A(L),L==="turbo"?(z(0),s("embedder")):gt(L)}else if(r==="embedder"){let L=Ce[D].value;B(L),gt("turbo",L)}}function Zt(){let L=xe.trim();if(r==="custom-id")h(X=>({...X,id:L})),Le("custom-url","");else if(r==="custom-url")h(X=>({...X,url:L})),Le("custom-model","");else if(r==="custom-model")h(X=>({...X,model:L})),Le("key","");else if(r==="key")if(y(xe),d==="__custom__")s("validating");else{let X=n.find(ke=>ke.id===d)?.defaultModel??"";Le("model",X)}else r==="model"&&(w(L),s("validating"))}let eo=()=>({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 kt(Ze,{flexDirection:"column",paddingY:1,children:[de(Pr,{columns:80}),de(Ze,{paddingTop:1,children:kt(f,{name:"fgDim",children:["aluy v",Hn," \xB7 ",P("configura\xE7\xE3o inicial","first-run setup"),r!=="done"?` \xB7 ${eo()}`:""]})}),kt(Ze,{paddingTop:1,flexDirection:"column",children:[r==="lang"&&de(zd,{title:P("Idioma","Language"),opts:Dt.map(L=>({value:L.code,label:L.label})),cursor:D,active:i}),r==="backend"&&de(zd,{title:P("Backend do modelo","Model backend"),opts:ge,cursor:D}),r==="provider"&&de(zd,{title:P("Provider","Provider"),opts:ee,cursor:D,active:d}),r==="mcp"&&de(g8,{title:P("MCPs (opcional) \u2014 quais instalar?","MCPs (optional) \u2014 which to install?"),entries:Y,cursor:oe,selected:$,pt:ie}),r==="sidecars"&&kt(Ze,{flexDirection:"column",children:[de(zd,{title:P("Complementos (modo turbo)","Complements (turbo mode)"),opts:le,cursor:D,active:T}),kt(Ze,{paddingTop:1,flexDirection:"column",children:[de(f,{name:"fgDim",children:P("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:")}),de(f,{name:"fgDim",children:P(" ~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).")}),de(f,{name:"fgDim",children:P(" 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==="embedder"&&kt(Ze,{flexDirection:"column",children:[de(zd,{title:P("Modelo de embedding (mem\xF3ria)","Embedding model (memory)"),opts:Ce,cursor:D,active:M}),kt(Ze,{paddingTop:1,flexDirection:"column",children:[de(f,{name:"fgDim",children:P("O embedder transforma suas mem\xF3rias em vetores p/ o recall sem\xE2ntico do mem0.","The embedder turns your memories into vectors for mem0\u2019s semantic recall.")}),de(f,{name:"fgDim",children:P(" bge-m3 \xE9 o mais forte (multil\xEDngue, melhor em PT) \u2014 por\xE9m o maior download."," bge-m3 is the strongest (multilingual) \u2014 but the biggest download.")})]})]}),r==="custom-id"&&de(Kd,{label:P("id do provider (ex.: tokenrouter)","provider id (e.g. tokenrouter)"),value:xe}),r==="custom-url"&&de(Kd,{label:P("base URL (https, .../v1)","base URL (https, .../v1)"),value:xe}),r==="custom-model"&&de(Kd,{label:P("modelo default","default model"),value:xe}),r==="key"&&de(Kd,{label:P(`API key de ${d==="__custom__"?u.id:d} (oculta)`,`${d==="__custom__"?u.id:d} API key (hidden)`),value:xe,mask:!0}),r==="model"&&kt(Ze,{flexDirection:"column",children:[de(Kd,{label:P("modelo (enter = default)","model (enter = default)"),value:xe}),(()=>{let L=n.find(X=>X.id===d)?.models??[];return L.length>0?de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:P("sugest\xF5es: ","suggestions: ")+L.join(" \xB7 ")})}):null})()]}),r==="validating"&&kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:P("Testando o modelo\u2026","Testing the model\u2026")}),de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:P("chamada real ao provider (n\xE3o prossigo se falhar)","real call to the provider (won't proceed if it fails)")})})]}),r==="validate-failed"&&kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:P("\u2717 o modelo N\xC3O respondeu","\u2717 the model did NOT respond")}),de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:H})}),de(Ze,{paddingTop:1,children:kt(f,{name:"fgDim",children:[P("enter/r tentar de novo \xB7 k trocar chave","enter/r retry \xB7 k change key"),d==="__custom__"?P(" \xB7 u trocar baseURL"," \xB7 u change baseURL"):"",P(" \xB7 c seguir mesmo assim \xB7 esc sair"," \xB7 c continue anyway \xB7 esc quit")]})})]}),r==="done"&&kt(Ze,{flexDirection:"column",children:[ue.map((L,X)=>de(f,{name:L.startsWith("\u26A0")?"fg":"accent",children:L},X)),de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:P("enter p/ entrar no aluy","enter to launch aluy")})})]})]}),r!=="done"&&r!=="validating"&&r!=="validate-failed"&&de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:r==="lang"||r==="backend"||r==="provider"||r==="sidecars"||r==="embedder"?`\u2191\u2193 ${P("navegar","move")} \xB7 enter ${P("escolher","select")} \xB7 esc ${P("sair","quit")}`:`${P("digite","type")} \xB7 enter ${P("confirmar","confirm")} \xB7 esc ${P("sair","quit")}`})})]})}function zd(t){return kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:t.title}),de(Ze,{flexDirection:"column",paddingTop:1,children:t.opts.map((e,o)=>kt(Ze,{children:[de(f,{name:o===t.cursor?"accent":"fgDim",children:o===t.cursor?"\u276F ":" "}),de(f,{name:o===t.cursor?"accent":"fg",children:e.label}),e.hint?kt(f,{name:"fgDim",children:[" \xB7 ",e.hint]}):null,t.active!==void 0&&e.value===t.active?de(f,{name:"fgDim",children:" \u25CF"}):null]},e.value))})]})}function g8(t){return kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:t.title}),de(Ze,{flexDirection:"column",paddingTop:1,children:t.entries.map((e,o)=>{let n=t.selected.has(o),r=o===t.cursor;return kt(Ze,{children:[de(f,{name:r?"accent":"fgDim",children:r?"\u276F ":" "}),de(f,{name:n?"accent":"fgDim",children:n?"[x] ":"[ ] "}),de(f,{name:r?"accent":"fg",children:e.label}),kt(f,{name:"fgDim",children:[" \xB7 ",t.pt?e.hintPt:e.hintEn]})]},e.id)})}),de(Ze,{paddingTop:1,children:de(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 Kd(t){let e=t.mask?"\u2022".repeat(t.value.length):t.value;return kt(Ze,{children:[kt(f,{name:"fg",children:[t.label,": "]}),de(f,{name:"accent",children:e}),de(f,{name:"accent",children:"\u258F"})]})}async function y8(){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stdout.write(`aluy onboard precisa de um terminal interativo.
|
|
521
|
+
`}if(this.maxBytes>0&&(await Ne.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 Ne.appendFile(this.filePath(e),d)}}finally{await this.releaseLock(e,n)}}async remove(e){try{return await Ne.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 Ne.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=Ua.join(this.baseDir,s.name);try{let l=await $p(a,i);(l.revoked||jr(l,o))&&(await Ne.unlink(a),r+=1)}catch{try{await Ne.unlink(a),r+=1}catch{}}}return r}}});function eI(t){if(t.config.hooks.some(o=>o.event==="pre-tool"&&o.gate===!0))return async(o,n)=>{let r=rv(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): ${a4(s.observation)}`}:{blocked:!1}}}function a4(t){return typeof t.text=="string"?t.text:""}var tI=p(()=>{"use strict";N()});function nI(t={}){let e=t.env??process.env,o=wo(e),n=t.store??new Kt,r=new Gt({baseUrl:o.identityBaseUrl,clientId:Dk,store:n,...t.identityFetch?{fetch:t.identityFetch}:{}},{envToken:()=>e.ALUY_TOKEN}),s=Jo(e),i=t.brokerClient??Jl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),a=t.catalogClient??Ql({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),l=t.customModelClient??Zl({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),c=t.providersClient??ec({brokerBaseUrl:s.brokerBaseUrl,login:r,...t.brokerFetch?{fetch:t.brokerFetch}:{}}),d=t.quotaClient??Ly({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??ta(),y=new xd({sessionId:g,...t.journalBaseDir!==void 0?{baseDir:t.journalBaseDir}:{}});y.gcOrphans();let b=new Lc({store:y,workspace:h,restoreWriter:new wd({workspace:h}),currentReader:new Ad({workspace:h})}),w=new Pc({journal:b}),T=new us({workspace:h}),A=new ci(t.egressAllow!==void 0?{allow:t.egressAllow}:{}),M=kv(e.ALUY_WEB_FETCH_MAX_CHARS),B=Xk({egress:A,policy:{maxObservationChars:M,...u?{allowInternalHosts:!0}:{}}}),H=new ii({workspace:h,...t.memoryBaseDir!==void 0?{baseDir:t.memoryBaseDir}:{}}),G=new Xs({store:H}),Y=new Sd({...t.todoBaseDir!==void 0?{baseDir:t.todoBaseDir}:{},sessionId:g}),$=process.env.ALUY_SANDBOX_BASH?gp():void 0,te=new Lp,oe=new Hi,J={fs:T,shell:new yd({workspace:h,timeoutMs:l4,...$?{sandboxLauncher:$}:{},egressAllows:U=>{let k=A.inspect(U);return k.hasNetwork&&!k.outsideAllowlist}}),search:new bd({workspace:h}),journal:b.toolPort,web:B,cwd:h,memory:{remember:(U,k,tt)=>G.remember(U,k,tt),searchFacts:(U,k)=>G.searchFacts(U,k)},todo:Y,question:te,graph:oe},D=new vd({workspace:h}),z=new $d({workspace:h,fs:T}),xe=new no({mode:m,diffPreview:(U,k,tt)=>tt!==void 0?ia(U,tt,k,!0):ia(U,"",k,!1),...t.maxMemoryWritesPerSession!==void 0?{maxMemoryWritesPerSession:t.maxMemoryWritesPerSession}:{}}),K=new Mp(t.askTimeoutMs!==void 0?{timeoutMs:t.askTimeoutMs}:{}),ue=(t.hooksConfigStore??new Id({workspaceRoot:t.workspaceRoot??process.cwd()})).load(),Z=new Oc({permission:xe,ports:J,askResolver:K}),ie=eI({runner:Z,config:ue}),P=t.tier??Zo,ge=ep(P,e,void 0,t.context?.window),ee=P==="custom"?t.model:void 0,le=ee!==void 0?t.provider:void 0,Ce=t.effort,Le=(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)?{...xo,maxIterations:em(t.maxIterations,e.ALUY_MAX_ITERATIONS,t.limits?.maxIterations),maxTokens:Zu(t.maxTokens,e.ALUY_MAX_TOKENS,t.limits?.maxTokens)}:{maxIterations:1e4,maxToolCalls:1e4*2},ct=oE(t.maxOutputTokens,e.ALUY_MAX_OUTPUT_TOKENS,t.limits?.maxOutputTokens,t.onConfigWarn),dt=Vy({flag:t.selfCheck,env:e.ALUY_SELF_CHECK,tier:P,everyKEnv:e.ALUY_SELF_CHECK_EVERY,maxVerificationsEnv:e.ALUY_SELF_CHECK_MAX}),ht={cwd:h.cwd,tier:P,...ee!==void 0?{model:ee}:{},...t.effectiveBackend!==void 0?{backend:t.effectiveBackend}:{},tokens:0,windowPct:0},gt=null,ut=new Pp({client:i,tier:P,...t.headroomUrl!==void 0?{headroomUrl:t.headroomUrl}:{},...ee!==void 0?{model:ee}:{},...le!==void 0?{provider:le}:{},...Ce!==void 0?{effort:Ce}:{},...ct!==void 0?{maxTokens:ct}:{},sink:{onStart:()=>gt?.sink.onStart?.(),onDelta:U=>gt?.sink.onDelta(U),onUsage:U=>gt?.sink.onUsage?.(U),onQuota:U=>gt?.sink.onQuota?.(U),onDone:()=>gt?.sink.onDone?.()}}),Zt=new Dn({client:i,tier:P,tierSource:ut,maxTokens:ff}),eo=new Dn({client:i,tier:P,tierSource:ut,maxTokens:2048}),L=t.subAgents?.enabled?new Dn({client:i,tier:P,tierSource:ut,...ct!==void 0?{maxTokens:ct}:{}}):void 0,X=new Map,ke,Se=t.subAgents?.enabled?U=>{let k=X.get(U);if(k)return k;let tt=new Dn({client:i,tier:U,...ct!==void 0?{maxTokens:ct}:{}});return ke&&tt.attachNativeTools(ke),X.set(U,tt),tt}:void 0,Pe=gv(e.ALUY_ROOM_BACKEND,t.roomsBackend);Pe.warning&&t.onConfigWarn&&t.onConfigWarn(Pe.warning);let De=(()=>{switch(Pe.backend){case"memory":return new kr;case"file":return new Fp;case"loopback":case"broker":throw new Error(`Room backend "${Pe.backend}" n\xE3o implementado ainda. Use "memory" ou "file", ou deixe o default.`);default:return new kr}})(),V=new Dp({model:ut,compactionModel:Zt,sideQueryModel:eo,permission:xe,roomStore:De,ports:J,askResolver:K,questionResolver:te,...ie?{preToolGate:ie}:{},...Ct(ue,"user-prompt-submit").length>0?{onUserPromptSubmit:()=>{Z.runAll(Ct(ue,"user-prompt-submit"))}}:{},meta:ht,limits:Le,...dt.enabled?{selfCheck:dt}:{},...t.autoCompactAt!==void 0?{autoCompactAt:t.autoCompactAt}:{},...t.context?{contextConfig:t.context}:{},contextWindow:ge,...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}:{},...t.headroomUrl!==void 0?{headroomRetrieveTool:fL({baseUrl:t.headroomUrl})}:{},...t.subAgents?.enabled?{subAgents:{...t.subAgents,...Ct(ue,"subagent-stop").length>0?{observer:{onChildEnd:()=>{Z.runAll(Ct(ue,"subagent-stop"))}}}:{}}}:{},...t.subAgents?.enabled&&t.agentRegistry?{agentRegistry:t.agentRegistry}:{},...t.subAgents?.enabled&&t.reloadProjectAgents?{reloadProjectAgents:t.reloadProjectAgents}:{},...L?{subAgentModel:L}:{},...Se?{callerForTier:Se}:{},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=ip({env:e,...t.services?{services:t.services}:{}});if(!U)return{};let k=GM(e);return k?{maestro:U,continuationConfig:k}:{maestro:U}})(),...(()=>{let U=WM({env:e,...t.services?{services:t.services}:{}});return U?{memoryEngine:U.memory,memoryScope:U.memoryScope,memoryRecallScopes:U.memoryRecallScopes}:{}})(),onToolsReady:U=>{ut.attachNativeTools(U),L?.attachNativeTools(U),ke=U;for(let k of X.values())k.attachNativeTools(U)}});return gt=V,{controller:V,login:r,engine:xe,egress:A,workspace:h,askResolver:K,questionResolver:te,journal:b,journalStore:y,checkpoints:w,fileIndex:D,attachReader:z,catalogClient:a,customModelClient:l,providersClient:c,quotaClient:d,ports:J,memory:G,todoStore:Y,hookRunner:Z,hooksConfig:ue}}var Zo,l4,jd=p(()=>{"use strict";N();is();si();pL();Wn();ux();Nd();Fd();wP();AP();_P();oS();Nd();ZP();tI();N();Cr();ox();Zo="aluy-flux",l4=12e4});var sI={};mt(sI,{runDoctor:()=>c4});async function c4(t={}){let e=t.io??Ot(),o=t.env??process.env,n=t.json===!0,r=t.probe??d4(o,t.deep===!0),s=r.tierTester!==void 0;if(!n){e.out("aluy doctor \u2014 diagn\xF3stico"),e.out("");for(let h of lp(s))e.out(`\u25F7 ${h.label}: testando\u2026`);let c={...r,onCheck:(h,g)=>{let y=cp(h,g);if(!y)return;let b=y.status==="ok"?hd.ok:y.status==="warn"?hd.warn:hd.fail;e.out(`${b} ${y.label}: ${y.detail}`),y.status!=="ok"&&y.fix!==void 0&&e.out(` \u2192 ${y.fix}`)}},d=await md(c),m=pd(d),u=uL(m,hd);return e.out(""),e.out(u[u.length-1]??""),sx(m)?1:0}let i=await md(r),a=pd(i),l=a.checks.map(c=>({id:c.id,status:c.status,label:c.label,detail:c.detail}));return e.out(JSON.stringify(l)),sx(a)?1:0}function d4(t,e){return{env:t,getAccessToken:()=>u4(t),memory:f4(),makeMcpTransport:()=>new Rr({cwd:process.cwd(),parentEnv:t}),...e?{tierTester:()=>mp({tier:m4(),login:rI(t),env:t})}:{}}}function rI(t){let e=wo(t),o=new Kt;return new Gt({...e,baseUrl:e.identityBaseUrl,store:o})}function u4(t){return rI(t).getAccessToken()}function m4(){try{let t=new Qe({}).load();return Xc(void 0,t,Zo)}catch{return Zo}}function f4(){return{async count(){try{let t=new Yt({}),e=new ii({workspace:t});return(await new Xs({store:e}).list()).length}catch{return null}}}}var iI=p(()=>{"use strict";N();qn();is();Wn();Oa();qk();id();rx();up();mL();ix();Bo();jd()});function p4(t){return(t.entries.find(o=>o.wave===1)??t.entries[0])?.id??"anthropic"}function Bp(t){return Ps({flag:t.flag,env:t.env.ALUY_BACKEND,config:t.config.backend})}function sS(t,e){return t==null?void 0:gn(e,t)?.id}function iS(t){if(t==null)return;let e=t.trim().toLowerCase();if(e==="apikey"||e==="oauth"||e==="none")return e}function h4(t,e){let o=gn(e,t)?.auth;return o!==void 0&&o.length>0&&o.every(n=>n==="none")?"none":"apikey"}function ja(t){if(t==null)return;let e=t.trim();return e!==""?e:void 0}function Ha(t){let e=t.flags??{},o=t.catalog??Nn(),n=sS(e.localProvider,o)??sS(t.env.ALUY_LOCAL_PROVIDER,o)??sS(t.config.localProvider,o)??p4(o),r=gn(o,n)?.defaultModel??n,s=ja(e.localModel)??ja(t.env.ALUY_LOCAL_MODEL)??ja(t.config.localModel)??r,i=iS(e.localAuth)??iS(t.env.ALUY_LOCAL_AUTH)??iS(t.config.localAuth)??h4(n,o),a=ja(e.localBaseUrl)??ja(t.env.ALUY_LOCAL_BASE_URL)??ja(t.config.localBaseUrl);return{provider:n,model:s,auth:i,...a!==void 0?{baseUrl:a}:{}}}var Up=p(()=>{"use strict";N()});var lI={};mt(lI,{collectSettings:()=>aI,runConfig:()=>k4});import{existsSync as g4}from"node:fs";import{homedir as y4}from"node:os";import{join as jp}from"node:path";function Hd(t,e,o,n,r){let s=o?.trim();return s!==void 0&&s!==""?{key:t,value:s,origin:"env",source:e}:n!=null?{key:t,value:String(n),origin:"config.json",source:`config.${t}`}:{key:t,value:r,origin:"default",source:"\u2014"}}function qa(t,e,o){return e!=null?{key:t,value:String(e),origin:"config.json",source:`config.${t}`}:{key:t,value:o,origin:"default",source:"\u2014"}}function aI(t,e){let o=Ha({env:{},config:{}}),n=o.baseUrl??"\u2014";return[Hd("backend","ALUY_BACKEND",t.ALUY_BACKEND,e.backend,Bp({env:{},config:{}})),Hd("localProvider","ALUY_LOCAL_PROVIDER",t.ALUY_LOCAL_PROVIDER,e.localProvider,o.provider),Hd("localModel","ALUY_LOCAL_MODEL",t.ALUY_LOCAL_MODEL,e.localModel,o.model),Hd("localAuth","ALUY_LOCAL_AUTH",t.ALUY_LOCAL_AUTH,e.localAuth,o.auth),Hd("localBaseUrl","ALUY_LOCAL_BASE_URL",t.ALUY_LOCAL_BASE_URL,e.localBaseUrl,n),qa("profile",e.profile,"turbo"),qa("sidecar.ollama",e.sidecarToggles?.ollama,"on (default)"),qa("sidecar.mem0",e.sidecarToggles?.mem0,"on (default)"),qa("sidecar.headroom",e.sidecarToggles?.headroom,"on (default)"),qa("lang",e.lang,"auto"),qa("theme",e.theme,"default")]}function b4(t){let e=(o,n)=>{let r=jp(t,o);return{path:r,role:n,exists:g4(r)}};return[e("config.json","configura\xE7\xE3o dur\xE1vel (este comando)"),e("mcp.json","servers MCP (interop; sem credencial \u2014 CLI-SEC-7)"),e("hooks.json","hooks (fronteira de execu\xE7\xE3o; o agente nunca escreve)"),e("providers.json","cat\xE1logo de providers (override do usu\xE1rio)"),e("update-check.json","estado/cache (reescrito pela m\xE1quina)"),e("memory","store do mem0 (chromadb + history)"),e("logs","logs dos sidecars (mem0/ollama/headroom)")]}function k4(t={}){let e=t.io??Ot(),o=t.env??process.env,n=t.baseDir??jp(y4(),".aluy"),s=(t.configStore??new Qe({baseDir:n})).load(),i=aI(o,s),a=b4(n);if(t.json===!0)return e.out(JSON.stringify({configPath:jp(n,"config.json"),settings:i.map(d=>({key:d.key,value:d.value,origin:d.origin,source:d.source})),files:a.map(d=>({path:d.path,role:d.role,exists:d.exists}))},null,2)),0;e.out("aluy config \u2014 configura\xE7\xE3o efetiva (read-only)"),e.out(` arquivo dur\xE1vel: ${jp(n,"config.json")}`),e.out(" preced\xEAncia: flag > env (ALUY_*) > config.json > default"),e.out("");let l=Math.max(...i.map(d=>d.key.length),3),c=Math.max(...i.map(d=>d.value.length),5);for(let d of i){let m=v4[d.origin],u=d.origin==="default"?"":` (${d.source})`;e.out(` ${d.key.padEnd(l)} ${d.value.padEnd(c)} [${m}]${u}`)}e.out(""),e.out(" outros arquivos (fora do config.json de prop\xF3sito \u2014 segredo/interop/execu\xE7\xE3o):");for(let d of a){let m=d.exists?"\xB7":"\u25CB";e.out(` ${m} ${d.path} \u2014 ${d.role}`)}return e.out(""),e.out(" segredos (chave de API/token) ficam no keychain do SO, NUNCA no config.json."),0}var v4,cI=p(()=>{"use strict";qn();Bo();Up();v4={env:"env","config.json":"config",default:"default"}});var uI={};mt(uI,{defaultUserAgentsDir:()=>A4,runAgents:()=>w4});import{homedir as x4}from"node:os";import{join as dI}from"node:path";function S4(){return dI("~",".aluy",cd)}function w4(t={}){let e=t.out??(a=>process.stdout.write(a+`
|
|
522
|
+
`)),o=t.loadGlobal??(()=>new Mr().load()),n=t.loadProject??(()=>new mi({workspace:new Yt}).load()),r=o(),s=n(),i=kc({profiles:[...r.profiles,...s.profiles],errors:[...r.errors,...s.errors],globalDir:t.globalDir??S4()});e(i.title==="agents"?"aluy agents \u2014 perfis .md mapeados":i.title);for(let a of i.lines)e(a);return 0}function A4(){return dI(x4(),".aluy",cd)}var mI=p(()=>{"use strict";N();np();Ix();Oa()});var pI={};mt(pI,{defaultUserSkillsDir:()=>R4,runSkills:()=>_4});import{homedir as E4}from"node:os";import{join as fI}from"node:path";function T4(){return fI("~",".aluy",Ld)}function _4(t={}){let e=t.out??(a=>process.stdout.write(a+`
|
|
523
|
+
`)),o=t.loadGlobal??(()=>new fi().load()),n=t.loadProject??(()=>new pi({workspace:new Yt}).load()),r=o(),s=n(),i=wc({skills:[...r.skills,...s.skills],errors:[...r.errors,...s.errors],globalDir:t.globalDir??T4()});e("aluy skills \u2014 capacidades SKILL.md mapeadas");for(let a of i.lines)e(a);return 0}function R4(){return fI(E4(),".aluy",Ld)}var hI=p(()=>{"use strict";N();Rp();Ux();Oa()});var yI={};mt(yI,{defaultUserWorkflowsDir:()=>L4,runWorkflows:()=>M4});import{homedir as C4}from"node:os";import{join as gI}from"node:path";function O4(){return gI("~",".aluy",Fa)}function M4(t={}){let e=t.out??(a=>process.stdout.write(a+`
|
|
524
|
+
`)),o=t.loadGlobal??(()=>new ms().load()),n=t.loadProject??(()=>new fs({workspace:new Yt}).load()),r=o(),s=n(),i=Tc({workflows:[...r.workflows,...s.workflows],errors:[...r.errors,...s.errors],globalDir:t.globalDir??O4(),projectDir:t.projectDir??".claude/workflows"});e("workflows \u2014 fluxos .md mapeados");for(let a of i.lines)e(a);return 0}function L4(){return gI(C4(),".aluy",Fa)}var bI=p(()=>{"use strict";N();Od();Md();Oa()});var xI={};mt(xI,{probeModelReachable:()=>vI,runFirstRunWizard:()=>kI,runInit:()=>N4});import{Entry as P4}from"@napi-rs/keyring";async function vI(t){let{config:e,env:o}=t,n=Ha({env:o,config:e}),r=gn(Nn(),n.provider)?.baseUrl,s=n.baseUrl??r;if(s===void 0||s==="")return!0;let i=t.fetchImpl??globalThis.fetch,a=t.timeoutMs??4e3,l=new AbortController,c=setTimeout(()=>l.abort(),a);try{return await i(`${s.replace(/\/+$/,"")}/models`,{signal:l.signal}),!0}catch{return!1}finally{clearTimeout(c)}}async function kI(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??I4)(ri,Vf(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 (${aS.join("/")}): `)).trim().toLowerCase();if(!aS.includes(u))return s(`Provider inv\xE1lido "${u}". Use: ${aS.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{Ta(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 I4(t,e){return new P4(t,e)}async function N4(t){let{out:e,err:o}=t,n=t.configStore??new Qe,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 kI({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&&(await(t.modelProbe??((u,h)=>vI({config:u,env:h})))(i,t.env??process.env)||(e(" \u26A0 O modelo local n\xE3o respondeu \u2014 o instalador via agente precisa dele para rodar."),e(" Caindo no caminho DIRETO (--no-agent), que provisiona sem usar modelo."),e(""),l=!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(""),process.env.ALUY_MEM0_EMBEDDER=jf(i);let c=await E0(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 aS,SI=p(()=>{"use strict";Bo();_k();_a();Up();N();aS=["anthropic","openrouter","openai"]});var wI={};mt(wI,{runUninstall:()=>j4});import{homedir as D4}from"node:os";import{join as Hp}from"node:path";import{rmSync as $4,existsSync as F4}from"node:fs";import{spawnSync as B4}from"node:child_process";function U4(t){return[{label:"ollama (instala\xE7\xE3o local em ~/.aluy)",path:Hp(t,Zr)},{label:"mem0 (venv)",path:Hp(t,Sr)},{label:"headroom (venv)",path:Hp(t,es)}]}function j4(t={},e={}){let o=e.io??Ot(),n=e.baseDir??Hp(D4(),".aluy"),r=e.remove??(i=>$4(i,{recursive:!0,force:!0})),s=e.exists??F4;o.out("Removendo os complementos gerenciados pelo aluy (em ~/.aluy/)\u2026");for(let i of U4(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?q4(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 H4(){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 q4(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(""),B4(process.execPath,[e,"-p",H4(),"--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 AI=p(()=>{"use strict";N();qn()});function G4(t){let e=/^#?([0-9a-f]{6})$/i.exec(t.trim());return e?`\x1B]11;#${e[1].toUpperCase()}\x07`:""}function z4(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 Y4(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:lS(e[1]),g:lS(e[2]),b:lS(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 lS(t){let e=parseInt(t,16),o=16**t.length-1;return Math.round(e/o*255)}function V4(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 X4(t){return V4(t)>=K4?"light":"dark"}function J4(t){let e=Y4(t);return e?X4(e):null}function Q4(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 TI(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??Q4(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=J4(i);h!==null&&d(h)};try{n.setRawMode(!0),n.resume(),n.on("data",m),t.stdout.write(W4)}catch{d(null);return}l.id=setTimeout(()=>d(null),o)})}var W4,EI,qp,K4,_I=p(()=>{"use strict";W4="\x1B]11;?\x07",EI="\x1B]111\x07";qp=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&&z4(o)}get active(){return this.enabled}apply(e){if(!this.enabled)return"";let o=G4(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(EI),EI)}},K4=.5});import{createContext as Z4,useContext as e8}from"react";import{Text as RI}from"ink";import{jsx as Wp}from"react/jsx-runtime";function gi(t){return Wp(CI.Provider,{value:t.theme,children:t.children})}function ne(){return e8(CI)}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),Wp(RI,{...n,children:t.children})}function I(t){let o=ne().glyph(t.name);return t.role?Wp(f,{name:t.role,children:o}):Wp(RI,{children:o})}var CI,OI=p(()=>{"use strict";Ff();CI=Z4(Vo())});var ae=p(()=>{"use strict";If();Nf();Ff();Df();os();_I();OI()});import"react";import{Box as Gp}from"ink";import{jsx as Wa,jsxs as MI}from"react/jsx-runtime";function Pr(t){let e=ne(),n=(t.columns??80)<Wd,r=e.unicode?"\u039B":"/\\";if(n)return MI(Gp,{children:[Wa(f,{name:"accent",children:r}),Wa(f,{name:"accent",children:" luy"})]});let s=e.unicode?Ga:LI,i=e.unicode?qd:PI;return MI(Gp,{flexDirection:"row",children:[Wa(Gp,{flexDirection:"column",children:s.map((a,l)=>Wa(f,{name:"accent",children:a},l))}),Wa(Gp,{flexDirection:"column",children:i.map((a,l)=>Wa(f,{name:"accent",children:t8+a},l))})]})}var Ga,qd,LI,PI,t8,Wd,cS,yi=p(()=>{"use strict";ae();Nf();Ga=[" \u2588\u2588 "," \u2588\u2588\u2588\u2588 "," \u2588\u2588 \u2588\u2588 ","\u2588\u2588 \u2588\u2588","\u2588\u2588 \u2588\u2588"," "],qd=["\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"],LI=[" /\\ "," / \\ ","/ \\","/ \\","/ \\"," "],PI=["## ","## ## ## ## ##","## ## ## ## ##","## ## ## #####","## ##### ##"," ##"],t8=" ",Wd=28,cS=Ga.length});async function II(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 NI=p(()=>{"use strict"});import{mkdirSync as o8,readFileSync as n8,renameSync as r8,statSync as s8,writeFileSync as i8}from"node:fs";import{dirname as a8,join as l8}from"node:path";function DI(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)+`
|
|
525
|
+
`}var c8,Bt,zn,Gd=p(()=>{"use strict";N();c8=256*1024,Bt=class extends Error{constructor(e){super(e),this.name="McpWriteError"}},zn=class{file;constructor(e){this.file=e.file}get configPath(){return this.file}load(){let e;try{let n=s8(this.file);if(!n.isFile())throw new Bt(`${this.file}: n\xE3o \xE9 um arquivo regular.`);if(n.size>c8)throw new Bt(`${this.file}: grande demais p/ editar com seguran\xE7a.`);e=n8(this.file,"utf8")}catch(n){if(n instanceof Bt)throw n;return we}let o;try{o=JSON.parse(e)}catch{throw new Bt(`${this.file}: JSON inv\xE1lido \u2014 conserte \xE0 m\xE3o antes de usar 'aluy mcp'.`)}try{return $o(o)}catch(n){let r=n instanceof fe?n.message:String(n);throw new Bt(r)}}add(e,o={}){if(!ga(e.name))throw new Bt(`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 Bt(`server "${e.name}": "command" n\xE3o pode ser vazio.`);if(e.command.trim()==="--")throw new Bt(`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 Bt(`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=a8(this.file);o8(o,{recursive:!0});let n=DI(e),r=l8(o,`.mcp.json.${process.pid}.${Date.now()}.tmp`);i8(r,n,{encoding:"utf8",mode:384}),r8(r,this.file)}}});var UI={};mt(UI,{mcpCatalog:()=>BI,runOnboard:()=>y8});import{useEffect as d8,useMemo as $I,useState as io}from"react";import{render as u8,Box as Ze,useApp as m8,useInput as f8}from"ink";import{homedir as FI}from"node:os";import{join as p8}from"node:path";import{jsx as de,jsxs as kt}from"react/jsx-runtime";function BI(){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",FI()]},{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 h8(t){let e=m8(),o=t.store.load(),n=$I(()=>ss().entries,[]),[r,s]=io("lang"),[i,a]=io(o.lang??"pt-BR"),[l,c]=io("local"),[d,m]=io("anthropic"),[u,h]=io({id:"",url:"",model:""}),[g,y]=io(""),[b,w]=io(""),[T,A]=io("leve"),[M,B]=io(ha),[H,G]=io(""),Y=$I(()=>BI(),[]),[$,te]=io(new Set),[oe,J]=io(0),[D,z]=io(Math.max(0,Dt.findIndex(L=>L.code===i))),[xe,K]=io(""),[ue,Z]=io([]),ie=i==="pt-BR",P=(L,X)=>ie?L:X,ge=[{value:"local",label:P("Local (sua chave / BYO)","Local (your key / BYO)"),hint:P("direto no provider","direct to provider")},{value:"broker",label:P("Broker (conta Aluy)","Broker (Aluy account)"),hint:P("autentica depois com aluy login","authenticate later with aluy login")}],ee=[...n.map(L=>({value:L.id,label:L.label,hint:L.defaultModel})),{value:"__custom__",label:P("+ custom (OpenAI-compat\xEDvel)","+ custom (OpenAI-compatible)"),hint:P("ex.: TokenRouter, vLLM\u2026","e.g. TokenRouter, vLLM\u2026")}],le=[{value:"turbo",label:P("Turbo \u2014 instala tudo","Turbo \u2014 install all"),hint:P("ollama + mem0 + headroom \xB7 pede m\xE1quina razo\xE1vel","ollama + mem0 + headroom \xB7 needs a decent machine")},{value:"leve",label:P("Leve \u2014 nada agora","Lite \u2014 nothing now"),hint:P("liga depois com aluy bootstrap","enable later with aluy bootstrap")}],Ce=Sf.map(L=>({value:L.model,label:L.model,hint:P(L.hintPt,L.hintEn)})),Oo=L=>L==="lang"?Dt.length:L==="backend"?ge.length:L==="provider"?ee.length:L==="sidecars"?le.length:L==="embedder"?Ce.length:0;function Le(L,X=""){K(X),s(L)}function ct(){z(Math.max(0,le.findIndex(L=>L.value==="leve"))),s("sidecars")}function dt(){J(0),s("mcp")}function ht(){let L=d==="__custom__",X=n.find(ke=>ke.id===d);return{wireFormat:L?"openai-compat":X?.wireFormat??"openai-compat",baseUrl:L?u.url.trim():X?.baseUrl??"",model:(L?u.model:b.trim()||X?.defaultModel||"").trim(),key:g.trim()}}d8(()=>{if(r!=="validating")return;let L=ht();if(l!=="local"||L.key===""||L.baseUrl===""||L.model===""){dt();return}let X=!1;return II(L).then(ke=>{X||(ke.ok?(G(""),dt()):(G(ke.detail),s("validate-failed")))}),()=>{X=!0}},[r]);function gt(L,X){let ke=[],Se={lang:i,backend:l};if(l==="local"){Se.localProvider=d==="__custom__"?u.id.trim():d;let De=d==="__custom__"?u.model:b;De.trim()!==""&&(Se.localModel=De.trim())}if(Se.profile=L,L==="turbo"&&X!==void 0&&X!==""&&(Se.embedder=X),t.store.save(Se),ke.push(`\u2713 ${P("config","config")}: backend ${l}`),l==="local"&&d==="__custom__"&&u.id.trim()!==""&&u.url.trim()!=="")try{F0({id:u.id.trim(),wireFormat:"openai-compat",baseUrl:u.url.trim(),defaultModel:u.model.trim()||u.id.trim()}),ke.push(P(`\u2713 provider custom "${u.id.trim()}" registrado`,`\u2713 custom provider "${u.id.trim()}" registered`))}catch(De){ke.push(`\u26A0 providers.json: ${String(De)}`)}if(l==="local"&&g.trim()!==""){let De=d==="__custom__"?u.id.trim():d;try{Ta(De,g.trim()),ke.push(P(`\u2713 chave de "${De}" no keychain`,`\u2713 "${De}" key in keychain`))}catch{ke.push(P(`\u26A0 keychain indispon\xEDvel \u2014 rode: aluy login --provider ${De}`,`\u26A0 keychain unavailable \u2014 run: aluy login --provider ${De}`))}}let Pe=Y.filter((De,V)=>$.has(V));if(Pe.length>0)try{let De=new zn({file:p8(FI(),".aluy","mcp.json")});for(let V of Pe)De.add({name:V.id,command:V.command,args:[...V.args],env:{}},{force:!0});ke.push(P(`\u2713 ${Pe.length} MCP(s) registrado(s): ${Pe.map(V=>V.id).join(", ")}`,`\u2713 ${Pe.length} MCP(s) registered: ${Pe.map(V=>V.id).join(", ")}`))}catch(De){ke.push(`\u26A0 mcp.json: ${String(De)}`)}ke.push(`\u2713 sidecars: ${L}`),L==="turbo"&&X!==void 0&&X!==""&&ke.push(` \u2192 embedder: ${X}`),L==="turbo"&&ke.push(P(" \u2192 instale agora: aluy bootstrap"," \u2192 install now: aluy bootstrap")),H!==""&&ke.push(P("\u26A0 modelo N\xC3O validado \u2014 pode n\xE3o funcionar","\u26A0 model NOT validated \u2014 may not work")),l==="broker"&&ke.push(P("\u2192 broker: autentique com `aluy login`","\u2192 broker: authenticate with `aluy login`")),Z(ke),s("done")}f8((L,X)=>{if(r==="done"){(X.return||X.escape||L)&&e.exit();return}if(r==="validating")return;if(r==="validate-failed"){if(X.escape){e.exit();return}let Se=(L||"").toLowerCase();X.return||Se==="r"?s("validating"):Se==="k"?Le("key",""):Se==="u"&&d==="__custom__"?Le("custom-url",u.url):Se==="c"&&dt();return}if(X.escape){e.exit();return}if(r==="mcp"){X.upArrow?J(Se=>Math.max(0,Se-1)):X.downArrow?J(Se=>Math.min(Y.length-1,Se+1)):L===" "?te(Se=>{let Pe=new Set(Se);return Pe.has(oe)?Pe.delete(oe):Pe.add(oe),Pe}):X.return&&ct();return}if(r==="lang"||r==="backend"||r==="provider"||r==="sidecars"||r==="embedder"){let Se=Oo(r);X.upArrow?z(Pe=>Math.max(0,Pe-1)):X.downArrow?z(Pe=>Math.min(Se-1,Pe+1)):X.return&&ut();return}if(X.return){Zt();return}if(X.backspace||X.delete){K(Se=>Se.slice(0,-1));return}L&&!X.ctrl&&!X.meta&&!X.upArrow&&!X.downArrow&&!X.leftArrow&&!X.rightArrow&&K(Se=>Se+L)});function ut(){if(r==="lang"){let L=Dt[D].code;t.store.saveLang(L),a(L),z(0),s("backend")}else if(r==="backend"){let L=ge[D].value;c(L),L==="broker"?dt():(z(0),s("provider"))}else if(r==="provider"){let L=ee[D].value;if(m(L),L==="__custom__")Le("custom-id","");else{let X=n.find(Se=>Se.id===L);X?.auth?.length===1&&X.auth[0]==="none"?(y(""),Le("model",X?.defaultModel??"")):Le("key","")}}else if(r==="sidecars"){let L=le[D].value;A(L),L==="turbo"?(z(0),s("embedder")):gt(L)}else if(r==="embedder"){let L=Ce[D].value;B(L),gt("turbo",L)}}function Zt(){let L=xe.trim();if(r==="custom-id")h(X=>({...X,id:L})),Le("custom-url","");else if(r==="custom-url")h(X=>({...X,url:L})),Le("custom-model","");else if(r==="custom-model")h(X=>({...X,model:L})),Le("key","");else if(r==="key")if(y(xe),d==="__custom__")s("validating");else{let X=n.find(ke=>ke.id===d)?.defaultModel??"";Le("model",X)}else r==="model"&&(w(L),s("validating"))}let eo=()=>({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 kt(Ze,{flexDirection:"column",paddingY:1,children:[de(Pr,{columns:80}),de(Ze,{paddingTop:1,children:kt(f,{name:"fgDim",children:["aluy v",Hn," \xB7 ",P("configura\xE7\xE3o inicial","first-run setup"),r!=="done"?` \xB7 ${eo()}`:""]})}),kt(Ze,{paddingTop:1,flexDirection:"column",children:[r==="lang"&&de(zd,{title:P("Idioma","Language"),opts:Dt.map(L=>({value:L.code,label:L.label})),cursor:D,active:i}),r==="backend"&&de(zd,{title:P("Backend do modelo","Model backend"),opts:ge,cursor:D}),r==="provider"&&de(zd,{title:P("Provider","Provider"),opts:ee,cursor:D,active:d}),r==="mcp"&&de(g8,{title:P("MCPs (opcional) \u2014 quais instalar?","MCPs (optional) \u2014 which to install?"),entries:Y,cursor:oe,selected:$,pt:ie}),r==="sidecars"&&kt(Ze,{flexDirection:"column",children:[de(zd,{title:P("Complementos (modo turbo)","Complements (turbo mode)"),opts:le,cursor:D,active:T}),kt(Ze,{paddingTop:1,flexDirection:"column",children:[de(f,{name:"fgDim",children:P("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:")}),de(f,{name:"fgDim",children:P(" ~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).")}),de(f,{name:"fgDim",children:P(" 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==="embedder"&&kt(Ze,{flexDirection:"column",children:[de(zd,{title:P("Modelo de embedding (mem\xF3ria)","Embedding model (memory)"),opts:Ce,cursor:D,active:M}),kt(Ze,{paddingTop:1,flexDirection:"column",children:[de(f,{name:"fgDim",children:P("O embedder transforma suas mem\xF3rias em vetores p/ o recall sem\xE2ntico do mem0.","The embedder turns your memories into vectors for mem0\u2019s semantic recall.")}),de(f,{name:"fgDim",children:P(" bge-m3 \xE9 o mais forte (multil\xEDngue, melhor em PT) \u2014 por\xE9m o maior download."," bge-m3 is the strongest (multilingual) \u2014 but the biggest download.")})]})]}),r==="custom-id"&&de(Kd,{label:P("id do provider (ex.: tokenrouter)","provider id (e.g. tokenrouter)"),value:xe}),r==="custom-url"&&de(Kd,{label:P("base URL (https, .../v1)","base URL (https, .../v1)"),value:xe}),r==="custom-model"&&de(Kd,{label:P("modelo default","default model"),value:xe}),r==="key"&&de(Kd,{label:P(`API key de ${d==="__custom__"?u.id:d} (oculta)`,`${d==="__custom__"?u.id:d} API key (hidden)`),value:xe,mask:!0}),r==="model"&&kt(Ze,{flexDirection:"column",children:[de(Kd,{label:P("modelo (enter = default)","model (enter = default)"),value:xe}),(()=>{let L=n.find(X=>X.id===d)?.models??[];return L.length>0?de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:P("sugest\xF5es: ","suggestions: ")+L.join(" \xB7 ")})}):null})()]}),r==="validating"&&kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:P("Testando o modelo\u2026","Testing the model\u2026")}),de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:P("chamada real ao provider (n\xE3o prossigo se falhar)","real call to the provider (won't proceed if it fails)")})})]}),r==="validate-failed"&&kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:P("\u2717 o modelo N\xC3O respondeu","\u2717 the model did NOT respond")}),de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:H})}),de(Ze,{paddingTop:1,children:kt(f,{name:"fgDim",children:[P("enter/r tentar de novo \xB7 k trocar chave","enter/r retry \xB7 k change key"),d==="__custom__"?P(" \xB7 u trocar baseURL"," \xB7 u change baseURL"):"",P(" \xB7 c seguir mesmo assim \xB7 esc sair"," \xB7 c continue anyway \xB7 esc quit")]})})]}),r==="done"&&kt(Ze,{flexDirection:"column",children:[ue.map((L,X)=>de(f,{name:L.startsWith("\u26A0")?"fg":"accent",children:L},X)),de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:P("enter p/ entrar no aluy","enter to launch aluy")})})]})]}),r!=="done"&&r!=="validating"&&r!=="validate-failed"&&de(Ze,{paddingTop:1,children:de(f,{name:"fgDim",children:r==="lang"||r==="backend"||r==="provider"||r==="sidecars"||r==="embedder"?`\u2191\u2193 ${P("navegar","move")} \xB7 enter ${P("escolher","select")} \xB7 esc ${P("sair","quit")}`:`${P("digite","type")} \xB7 enter ${P("confirmar","confirm")} \xB7 esc ${P("sair","quit")}`})})]})}function zd(t){return kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:t.title}),de(Ze,{flexDirection:"column",paddingTop:1,children:t.opts.map((e,o)=>kt(Ze,{children:[de(f,{name:o===t.cursor?"accent":"fgDim",children:o===t.cursor?"\u276F ":" "}),de(f,{name:o===t.cursor?"accent":"fg",children:e.label}),e.hint?kt(f,{name:"fgDim",children:[" \xB7 ",e.hint]}):null,t.active!==void 0&&e.value===t.active?de(f,{name:"fgDim",children:" \u25CF"}):null]},e.value))})]})}function g8(t){return kt(Ze,{flexDirection:"column",children:[de(f,{name:"fg",children:t.title}),de(Ze,{flexDirection:"column",paddingTop:1,children:t.entries.map((e,o)=>{let n=t.selected.has(o),r=o===t.cursor;return kt(Ze,{children:[de(f,{name:r?"accent":"fgDim",children:r?"\u276F ":" "}),de(f,{name:n?"accent":"fgDim",children:n?"[x] ":"[ ] "}),de(f,{name:r?"accent":"fg",children:e.label}),kt(f,{name:"fgDim",children:[" \xB7 ",t.pt?e.hintPt:e.hintEn]})]},e.id)})}),de(Ze,{paddingTop:1,children:de(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 Kd(t){let e=t.mask?"\u2022".repeat(t.value.length):t.value;return kt(Ze,{children:[kt(f,{name:"fg",children:[t.label,": "]}),de(f,{name:"accent",children:e}),de(f,{name:"accent",children:"\u258F"})]})}async function y8(){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stdout.write(`aluy onboard precisa de um terminal interativo.
|
|
526
526
|
Abra um terminal e rode: aluy onboard
|
|
527
|
-
`),0;let t=new Qe,e=Vo({});return await u8(de(gi,{theme:e,children:de(h8,{store:t})})).waitUntilExit(),0}var jI=p(()=>{"use strict";yi();ae();Zc();ka();Bo();ed();_a();NI();Gd();N()});var HI={};
|
|
528
|
-
`)),n=t.scope??"both",r=t.view??"models",s=t.localCatalog??ss(),i=b8(s),l=n==="broker"||n==="both"?await k8(t,e):void 0,c=Ps({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=Py({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 qI=p(()=>{"use strict";N();is();si();ed();Wn()});var WI={};
|
|
529
|
-
Busca servers MCP no registro oficial aberto (sem login). Ex.: aluy mcp search filesystem`,exitCode:2};let n=await sk(o,e);return{text:ik(n),exitCode:n.ok?0:1}}var S8,zp=p(()=>{"use strict";N();xp();cs();S8={maxBytes:1024*1024,timeoutMs:12e3,maxRedirects:0}});var QI={};
|
|
527
|
+
`),0;let t=new Qe,e=Vo({});return await u8(de(gi,{theme:e,children:de(h8,{store:t})})).waitUntilExit(),0}var jI=p(()=>{"use strict";yi();ae();Zc();ka();Bo();ed();_a();NI();Gd();N()});var HI={};mt(HI,{runModels:()=>x8});function b8(t){return t.entries.map(e=>({provider:e.id,authModes:e.auth,defaultModel:e.defaultModel,...e.catalogHint!==void 0?{catalogHint:e.catalogHint}:{}}))}function v8(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 dS(t){try{return{ok:!0,data:await t()}}catch(e){return{ok:!1,reason:v8(e)}}}async function k8(t,e){let o=wo(e),n=Jo(e),r=t.store??new Kt,s=new Gt({...o,baseUrl:o.identityBaseUrl,store:r},{envToken:()=>e.ALUY_TOKEN}),i=t.brokerFetch?{fetch:t.brokerFetch}:{},a=Ql({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),l=ec({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),c=Zl({brokerBaseUrl:n.brokerBaseUrl,login:s,...i}),[d,m,u]=await Promise.all([dS(()=>a.list()),dS(()=>l.list()),dS(()=>c.list())]);return{tiers:d,providers:m,custom:u}}async function x8(t={}){let e=t.env??process.env,o=t.out??(m=>process.stdout.write(m+`
|
|
528
|
+
`)),n=t.scope??"both",r=t.view??"models",s=t.localCatalog??ss(),i=b8(s),l=n==="broker"||n==="both"?await k8(t,e):void 0,c=Ps({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=Py({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 qI=p(()=>{"use strict";N();is();si();ed();Wn()});var WI={};mt(WI,{createRegistryFetch:()=>uS,runMcpSearch:()=>mS});function uS(t={}){let e=new ci({aluyHosts:[ya],includeSearchHosts:!1}),o=t.ports??{resolver:new Vt,fetcher:new ls},n=t.policy??S8;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 (${ya})`};let a=await pa(r,o,n,s?{signal:s}:{});return a.ok?{ok:!0,status:a.status,body:a.body}:{ok:!1,reason:a.reason}}}async function mS(t,e){let o=t.trim();if(o.length===0)return{text:`uso: aluy mcp search <query>
|
|
529
|
+
Busca servers MCP no registro oficial aberto (sem login). Ex.: aluy mcp search filesystem`,exitCode:2};let n=await sk(o,e);return{text:ik(n),exitCode:n.ok?0:1}}var S8,zp=p(()=>{"use strict";N();xp();cs();S8={maxBytes:1024*1024,timeoutMs:12e3,maxRedirects:0}});var QI={};mt(QI,{MCP_HELP_TEXT:()=>zI,parseMcpCommand:()=>KI,runMcp:()=>_8});import{homedir as GI}from"node:os";import{join as Yd}from"node:path";import{readFileSync as w8,statSync as A8}from"node:fs";function KI(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}=E8(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=T8(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 E8(t){let e=[],o=!1;for(let n of t)n==="--project"?o=!0:e.push(n);return{flags:{project:o},positionals:e}}function T8(t){let e=t.indexOf("=");if(!(e<=0))return[t.slice(0,e),t.slice(e+1)]}async function _8(t,e={}){let o=e.io??Ot(),n=KI(t);switch(n.kind){case"help":return o.out(zI),0;case"error":return o.err(`aluy: ${n.message}`),o.err("rode 'aluy mcp --help' p/ ver o uso."),2;case"add":return R8(n,e,o);case"remove":return C8(n,e,o);case"list":return O8(e,o)}}function YI(t){return t.aluyHome??Yd(GI(),".aluy")}function VI(t){return t.codexHome??Yd(GI(),".codex")}function XI(t){return t.workspaceRoot??process.cwd()}function JI(t,e){return t?Yd(XI(e),Uo):Yd(YI(e),Ma)}function R8(t,e,o){let n={};for(let[a,l]of t.env)Wc(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=JI(t.project,e),i=new zn({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 Bt?a.message:String(a)}`),1}}function C8(t,e,o){let n=JI(t.project,e),r=new zn({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 Qo({baseDir:VI(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 Bt?s.message:String(s)}`),1}}function O8(t,e){let o=new Qo({baseDir:VI(t)}).load(),n=new Or({baseDir:YI(t)}).load(),r=L8(XI(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=Zs(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 ${Gc(l.origin)}${c}`),e.out(` ${l.command}${l.args.length?" "+l.args.join(" "):""}`),l.envKeys.length&&e.out(` env: ${l.envKeys.join(", ")}`);let d=ei(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 L8(t){let e=Yd(t,Uo),o;try{let r=A8(e);if(!r.isFile()||r.size>M8)return{config:we};o=w8(e,"utf8")}catch{return{config:we}}let n;try{n=JSON.parse(o)}catch{return{config:we,error:`${e}: JSON inv\xE1lido.`}}try{return{config:$o(n)}}catch(r){return{config:we,error:r instanceof fe?r.message:String(r)}}}var zI,M8,ZI=p(()=>{"use strict";N();qn();ai();ad();Gd();ai();op();zI=`aluy mcp \u2014 gerencia servers MCP locais (stdio) sem editar o JSON \xE0 m\xE3o.
|
|
530
530
|
|
|
531
531
|
Uso:
|
|
532
532
|
aluy mcp add <nome> [--] <command> [args...] [--env K=V]... [--project] [--force]
|
|
@@ -548,7 +548,7 @@ Notas:
|
|
|
548
548
|
- As tools do server entram no toolset ATR\xC1S da catraca (efeito \u21D2 confirma\xE7\xE3o).
|
|
549
549
|
- \u26A0 v1 N\xC3O isola o server em sandbox de SO: roda com OS TEUS
|
|
550
550
|
privil\xE9gios. S\xF3 plugue servers que voc\xEA confia. A credencial do Aluy NUNCA \xE9
|
|
551
|
-
repassada ao server.`;M8=256*1024});var aN={};
|
|
551
|
+
repassada ao server.`;M8=256*1024});var aN={};mt(aN,{loadState:()=>ps,parseCronCommand:()=>iN,runCron:()=>pS,saveState:()=>Vd});import{execSync as tN,execFileSync as eN}from"node:child_process";import{mkdirSync as P8,readFileSync as I8,writeFileSync as N8}from"node:fs";import{homedir as D8}from"node:os";import{join as oN}from"node:path";import{randomUUID as $8}from"node:crypto";function nN(){return oN(D8(),".aluy","cron")}function rN(){return oN(nN(),"jobs.json")}function sN(){P8(nN(),{recursive:!0,mode:448})}function ps(){try{let t=I8(rN(),"utf8"),e=JSON.parse(t);return{jobs:Array.isArray(e.jobs)?e.jobs:[]}}catch{return{jobs:[]}}}function Vd(t){sN(),N8(rN(),JSON.stringify(t,null,2),{mode:384})}function Kp(){let t=ps(),e="";try{e=eN("crontab",["-l"],{encoding:"utf8"})}catch{}let o=e.split(`
|
|
552
552
|
`),n=[],r=!1;for(let l of o){if(l.trim()===fS){r=!r;continue}r||n.push(l)}let s=t.jobs.filter(l=>l.enabled!==!1),i=[];if(s.length>0){i.push(fS);for(let l of s)i.push(`${l.schedule} ${F8} ${l.id}`);i.push(fS)}let a=[...n.filter(l=>l.trim()!==""),...i].join(`
|
|
553
553
|
`)+`
|
|
554
554
|
`;if(a.trim()===""){try{eN("crontab",["-r"],{encoding:"utf8"})}catch{}return}tN("crontab -",{input:a,encoding:"utf8"})}function iN(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 pS(t,e={}){let o=e.io?.out??console.log,n=e.io?.err??console.error,r=iN(t);switch(r.kind){case"help":return o(B8),0;case"error":return n(`aluy: ${r.message}`),n("rode 'aluy cron --help' para ver o uso."),1;case"add":{sN();let s=ps(),i={id:$8(),schedule:r.quando,task:r.tarefa,criado_em:new Date().toISOString(),yolo:r.yolo,workspace:process.cwd()};if(s.jobs.push(i),Vd(s),process.platform==="linux")try{Kp()}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=ps();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=ps(),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),Vd(s),process.platform==="linux")try{Kp()}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=ps().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 tN(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=ps(),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",Vd(s),process.platform==="linux")try{Kp()}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=ps(),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),Vd(s),process.platform==="linux")try{Kp()}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 fS,F8,B8,hS=p(()=>{"use strict";fS="# aluy-cron-jobs",F8="aluy cron run";B8=`aluy cron \u2014 agendamento PERSISTENTE (jobs disparados pelo cron do SO)
|
|
@@ -603,8 +603,8 @@ Notas:
|
|
|
603
603
|
`)return{state:o,newlineIndex:n,newline:r};if(r===TJ||r===_J){o=RS(o);continue}o=xi(o,r)}return{state:o,newlineIndex:-1,newline:""}}function QN(t,e,o){let n=t.split(`
|
|
604
604
|
`);if(o<=0||n.length<=o)return{text:t,cursor:Mt(t,e),hiddenAbove:0,hiddenBelow:0};let r=Mt(t,e),s=0;for(let u=0;u<r;u++)t[u]===`
|
|
605
605
|
`&&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(`
|
|
606
|
-
`),d=0;for(let u=0;u<i;u++)d+=n[u].length+1;let m=Mt(c,r-d);return{text:c,cursor:m,hiddenAbove:i,hiddenBelow:n.length-a}}function nu(t){let e=Mt(t.text,t.cursor);for(;e>0&&!Qp.test(t.text[e-1]);)e--;for(;e>0&&Qp.test(t.text[e-1]);)e--;return e}function Zp(t){let e=t.text.length,o=Mt(t.text,t.cursor);for(;o<e&&!Qp.test(t.text[o]);)o++;for(;o<e&&Qp.test(t.text[o]);)o++;return o}var TJ,_J,Qp,eh=p(()=>{"use strict";TJ="\x7F",_J="\b";Qp=/[\p{L}\p{N}_]/u});import"react";import{Box as MS,Text as Si}from"ink";import{Fragment as ru,jsx as
|
|
607
|
-
`).length,m=t.maxRows!==void 0&&d>t.maxRows,u=m?Math.max(1,t.maxRows-1):0,h=m?QN(t.value,s,u):{text:t.value,cursor:s,hiddenAbove:0,hiddenBelow:0};return Yn(MS,{flexDirection:"column",children:[Yn(MS,{children:[mt(eD,{...t.sessionLabel!==void 0?{label:t.sessionLabel}:{},...t.sessionColor!==void 0?{color:t.sessionColor}:{}}),mt(I,{name:"prompt",role:"accent"}),mt(Si,{children:" "}),a?Yn(ru,{children:[l&&c,mt(f,{name:"fgDim",children:n})]}):mt(ZN,{text:h.text,pos:h.cursor,showCursor:l,active:t.active,cursorGlyph:r}),!t.active&&t.hint&&Yn(ru,{children:[mt(Si,{children:" "}),mt(f,{name:"fgDim",children:t.hint})]})]}),m&&(h.hiddenAbove>0||h.hiddenBelow>0)&&Yn(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 tD=p(()=>{"use strict";ae();yt();eh()});function wi(t,e){if(e<=0)return"";if(Te(t)<=e)return t;let o=e-1,n="",r=0;for(let s of t){let i=Te(s);if(r+i>o)break;n+=s,r+=i}return n+"\u2026"}function IS(t,e,o){let n=Math.max(0,e-Te(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 oD(t,e,o,n){let r=[];for(let d=0;d<o;d++){let m=Te(t[d]??"");for(let u of e)m=Math.max(m,Te(u[d]??""));r.push(Math.max(LS,m))}if(!n||n<=0)return r;let s=o>0?(o-1)*PS:0,i=Math.max(o*LS,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=LS;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 PS,LS,th=p(()=>{"use strict";ao();PS=3,LS=1});import"react";import{Box as Ya}from"ink";import{jsx as Vn,jsxs as rD}from"react/jsx-runtime";function nD(t){let e=t.replace(/\s+/g," ").trim();return wi(e,RJ)}function oh(t){if(t<=0)return 0;let e=Math.min(t,iu),o=t>iu?1:0;return 1+e+o}function NS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,iu),n=e.length-o.length;return rD(Ya,{flexDirection:"column",children:[Vn(f,{name:"depth",children:`\u229F ${e.length} na fila \xB7 enviada(s) ao terminar o turno`}),o.map((r,s)=>Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u203A ${nD(r)}`})},s)),n>0&&Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u2026+${n} na fila`})})]})}function DS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,iu),n=e.length-o.length;return rD(Ya,{flexDirection:"column",children:[Vn(f,{name:"depth",children:`\u21B3 ${e.length} encaixando\u2026 \xB7 incorporada(s) na pr\xF3xima itera\xE7\xE3o`}),o.map((r,s)=>Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u203A ${nD(r)}`})},s)),n>0&&Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u2026+${n} encaixando`})})]})}var iu,RJ,sD=p(()=>{"use strict";ae();th();iu=3,RJ=48});function iD(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"],A=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],M=["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,...A,"set","shopt",...M,...B]},contains:[h,t.SHEBANG(),g,m,s,i,w,a,l,c,d,o]}}var aD=p(()=>{});function lD(t){let e=t.regex,o=CJ(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:":("+IJ.join("|")+")"},{begin:":(:)?("+NJ.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:PJ.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,o.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+LJ.join("|")+")\\b"}]}}var CJ,OJ,MJ,LJ,PJ,IJ,NJ,DJ,cD=p(()=>{CJ=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_-]*/}}),OJ=["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"],MJ=["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"],LJ=[...OJ,...MJ],PJ=["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(),IJ=["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(),NJ=["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 dD(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 uD=p(()=>{});function mD(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 fD=p(()=>{});function bD(t){let e=t.regex,o=(Z,{after:ie})=>{let P="</"+Z[0].slice(1);return Z.input.indexOf(P,ie)!==-1},n=pD,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Z,ie)=>{let P=Z[0].length+Z.index,ge=Z.input[P];if(ge==="<"||ge===","){ie.ignoreMatch();return}ge===">"&&(o(Z,{after:P})||ie.ignoreMatch());let ee,le=Z.input.substring(P);if(ee=le.match(/^\s*=/)){ie.ignoreMatch();return}if((ee=le.match(/^\s+extends\s+/))&&ee.index===0){ie.ignoreMatch();return}}},a={$pattern:pD,keyword:$J,literal:FJ,built_in:UJ,"variable.language":BJ},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]},A=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=A.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(A)});let M=[].concat(T,u.contains),B=M.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(M)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},G={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"}}]},Y={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:{_:[...hD,...gD]}},$={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},te={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function J(Z){return e.concat("(?!",Z.join("|"),")")}let D={match:e.concat(/\b/,J([...yD,"super","import"].map(Z=>`${Z}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},z={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},xe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},K="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ue={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(K)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:Y},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),$,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,Y,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ue,{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:K,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"]}]}]},te,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},z,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},D,oe,G,xe,{match:/\$[(.]/}]}}var pD,$J,FJ,hD,gD,yD,BJ,UJ,vD=p(()=>{pD="[A-Za-z$_][0-9A-Za-z$_]*",$J=["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"],FJ=["true","false","null","undefined","NaN","Infinity"],hD=["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"],gD=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],yD=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],BJ=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],UJ=[].concat(yD,hD,gD)});function kD(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 xD=p(()=>{});function SD(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 wD=p(()=>{});function AD(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 ED=p(()=>{});function TD(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 _D=p(()=>{});function RD(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}var CD=p(()=>{});function OD(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(H=>H.replace(/\s+/,"\\s+"))),/\b/)}let A={scope:"keyword",match:T(u),relevance:0};function M(B,{exceptions:H,when:G}={}){let Y=G;return H=H||[],B.map($=>$.match(/\|\d+$/)||H.includes($)?$:Y($)?`${$}|0`:$)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:M(g,{when:B=>B.length<3}),literal:s,type:a,built_in:m},contains:[{scope:"type",match:T(i)},A,w,y,n,r,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,o,b]}}var MD=p(()=>{});function jJ(t){let e=t.regex,o=(Z,{after:ie})=>{let P="</"+Z[0].slice(1);return Z.input.indexOf(P,ie)!==-1},n=nh,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Z,ie)=>{let P=Z[0].length+Z.index,ge=Z.input[P];if(ge==="<"||ge===","){ie.ignoreMatch();return}ge===">"&&(o(Z,{after:P})||ie.ignoreMatch());let ee,le=Z.input.substring(P);if(ee=le.match(/^\s*=/)){ie.ignoreMatch();return}if((ee=le.match(/^\s+extends\s+/))&&ee.index===0){ie.ignoreMatch();return}}},a={$pattern:nh,keyword:LD,literal:PD,built_in:FD,"variable.language":$D},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]},A=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=A.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(A)});let M=[].concat(T,u.contains),B=M.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(M)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},G={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"}}]},Y={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:{_:[...ID,...ND]}},$={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},te={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function J(Z){return e.concat("(?!",Z.join("|"),")")}let D={match:e.concat(/\b/,J([...DD,"super","import"].map(Z=>`${Z}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},z={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},xe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},K="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ue={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(K)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:Y},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),$,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,Y,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ue,{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:K,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"]}]}]},te,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},z,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},D,oe,G,xe,{match:/\$[(.]/}]}}function BD(t){let e=t.regex,o=jJ(t),n=nh,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:nh,keyword:LD.concat(l),literal:PD,built_in:FD.concat(r),"variable.language":$D},d={className:"meta",begin:"@"+n},m=(y,b,w)=>{let T=y.contains.findIndex(A=>A.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 nh,LD,PD,ID,ND,DD,$D,FD,UD=p(()=>{nh="[A-Za-z$_][0-9A-Za-z$_]*",LD=["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"],PD=["true","false","null","undefined","NaN","Infinity"],ID=["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"],ND=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],DD=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],$D=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],FD=[].concat(DD,ID,ND)});function jD(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 HD=p(()=>{});function qD(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 WD=p(()=>{});import{createLowlight as HJ}from"lowlight";function Va(t){if(!t)return null;let e=t.trim().toLowerCase();if(e==="")return null;let o=qJ[e]??e;return GD.registered(o)?o:null}function WJ(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 GJ(t){let e=t.properties?.className;if(Array.isArray(e))return e[e.length-1];if(typeof e=="string")return e}function zD(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"?WJ(GJ(n)):e,s=n.type==="element"&&r!=="fg"?r:e;for(let i of n.children??[])zD(i,s,o)}function zJ(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 au(t,e){if(t==="")return[];let o=Va(e);if(!o)return[{text:t,role:"fg"}];try{let n=GD.highlight(o,t),r=[];zD(n,"fg",r);let s=zJ(r);return s.length>0?s:[{text:t,role:"fg"}]}catch{return[{text:t,role:"fg"}]}}var GD,qJ,$S=p(()=>{"use strict";aD();cD();uD();fD();vD();xD();wD();ED();_D();CD();MD();UD();HD();WD();GD=HJ({bash:iD,css:lD,diff:dD,go:mD,javascript:bD,json:kD,markdown:SD,python:AD,rust:TD,shell:RD,sql:OD,typescript:BD,xml:jD,yaml:qD}),qJ={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 rh,Text as KD}from"ink";import{jsx as Xa,jsxs as Ai}from"react/jsx-runtime";function FS(t){let o=ne().box,n=Va(t.lang),r=(n??t.lang??"code")+(t.open?" \u2026":""),s=t.code.split(`
|
|
606
|
+
`),d=0;for(let u=0;u<i;u++)d+=n[u].length+1;let m=Mt(c,r-d);return{text:c,cursor:m,hiddenAbove:i,hiddenBelow:n.length-a}}function nu(t){let e=Mt(t.text,t.cursor);for(;e>0&&!Qp.test(t.text[e-1]);)e--;for(;e>0&&Qp.test(t.text[e-1]);)e--;return e}function Zp(t){let e=t.text.length,o=Mt(t.text,t.cursor);for(;o<e&&!Qp.test(t.text[o]);)o++;for(;o<e&&Qp.test(t.text[o]);)o++;return o}var TJ,_J,Qp,eh=p(()=>{"use strict";TJ="\x7F",_J="\b";Qp=/[\p{L}\p{N}_]/u});import"react";import{Box as MS,Text as Si}from"ink";import{Fragment as ru,jsx as ft,jsxs as Yn}from"react/jsx-runtime";function ZN(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 ft(f,{name:s,children:e});if(i>=e.length)return Yn(ru,{children:[ft(f,{name:s,children:e}),ft(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 Yn(ru,{children:[c!==""&&ft(f,{name:s,children:c}),ft(Si,{inverse:!0,children:d}),m!==""&&ft(f,{name:s,children:m})]})}function eD(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),Yn(ru,{children:[ft(Si,{...s,children:n}),ft(Si,{children:" "}),ft(f,{name:"fg",children:o}),ft(Si,{children:" "})]})}function su(t){let e=ne(),{t:o}=ve(),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 Yn(MS,{children:[ft(eD,{...t.sessionLabel!==void 0?{label:t.sessionLabel}:{},...t.sessionColor!==void 0?{color:t.sessionColor}:{}}),Yn(f,{name:"danger",children:[e.glyph("ask")," shell "]}),ft(ZN,{text:t.value,pos:s,showCursor:g,active:t.active,cursorGlyph:r}),ft(Si,{children:" "}),ft(f,{name:"fgDim",children:o("composer.shellHint")})]})}let a=t.value===""&&t.active,l=t.active&&t.showCursor!==!1,c=ft(f,{name:"fg",children:r}),d=t.value===""?1:t.value.split(`
|
|
607
|
+
`).length,m=t.maxRows!==void 0&&d>t.maxRows,u=m?Math.max(1,t.maxRows-1):0,h=m?QN(t.value,s,u):{text:t.value,cursor:s,hiddenAbove:0,hiddenBelow:0};return Yn(MS,{flexDirection:"column",children:[Yn(MS,{children:[ft(eD,{...t.sessionLabel!==void 0?{label:t.sessionLabel}:{},...t.sessionColor!==void 0?{color:t.sessionColor}:{}}),ft(I,{name:"prompt",role:"accent"}),ft(Si,{children:" "}),a?Yn(ru,{children:[l&&c,ft(f,{name:"fgDim",children:n})]}):ft(ZN,{text:h.text,pos:h.cursor,showCursor:l,active:t.active,cursorGlyph:r}),!t.active&&t.hint&&Yn(ru,{children:[ft(Si,{children:" "}),ft(f,{name:"fgDim",children:t.hint})]})]}),m&&(h.hiddenAbove>0||h.hiddenBelow>0)&&Yn(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 tD=p(()=>{"use strict";ae();yt();eh()});function wi(t,e){if(e<=0)return"";if(Te(t)<=e)return t;let o=e-1,n="",r=0;for(let s of t){let i=Te(s);if(r+i>o)break;n+=s,r+=i}return n+"\u2026"}function IS(t,e,o){let n=Math.max(0,e-Te(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 oD(t,e,o,n){let r=[];for(let d=0;d<o;d++){let m=Te(t[d]??"");for(let u of e)m=Math.max(m,Te(u[d]??""));r.push(Math.max(LS,m))}if(!n||n<=0)return r;let s=o>0?(o-1)*PS:0,i=Math.max(o*LS,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=LS;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 PS,LS,th=p(()=>{"use strict";ao();PS=3,LS=1});import"react";import{Box as Ya}from"ink";import{jsx as Vn,jsxs as rD}from"react/jsx-runtime";function nD(t){let e=t.replace(/\s+/g," ").trim();return wi(e,RJ)}function oh(t){if(t<=0)return 0;let e=Math.min(t,iu),o=t>iu?1:0;return 1+e+o}function NS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,iu),n=e.length-o.length;return rD(Ya,{flexDirection:"column",children:[Vn(f,{name:"depth",children:`\u229F ${e.length} na fila \xB7 enviada(s) ao terminar o turno`}),o.map((r,s)=>Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u203A ${nD(r)}`})},s)),n>0&&Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u2026+${n} na fila`})})]})}function DS(t){let{items:e}=t;if(e.length===0)return null;let o=e.slice(0,iu),n=e.length-o.length;return rD(Ya,{flexDirection:"column",children:[Vn(f,{name:"depth",children:`\u21B3 ${e.length} encaixando\u2026 \xB7 incorporada(s) na pr\xF3xima itera\xE7\xE3o`}),o.map((r,s)=>Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u203A ${nD(r)}`})},s)),n>0&&Vn(Ya,{children:Vn(f,{name:"fgDim",children:` \u2026+${n} encaixando`})})]})}var iu,RJ,sD=p(()=>{"use strict";ae();th();iu=3,RJ=48});function iD(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"],A=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],M=["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,...A,"set","shopt",...M,...B]},contains:[h,t.SHEBANG(),g,m,s,i,w,a,l,c,d,o]}}var aD=p(()=>{});function lD(t){let e=t.regex,o=CJ(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:":("+IJ.join("|")+")"},{begin:":(:)?("+NJ.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:PJ.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,o.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+LJ.join("|")+")\\b"}]}}var CJ,OJ,MJ,LJ,PJ,IJ,NJ,DJ,cD=p(()=>{CJ=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_-]*/}}),OJ=["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"],MJ=["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"],LJ=[...OJ,...MJ],PJ=["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(),IJ=["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(),NJ=["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 dD(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 uD=p(()=>{});function mD(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 fD=p(()=>{});function bD(t){let e=t.regex,o=(Z,{after:ie})=>{let P="</"+Z[0].slice(1);return Z.input.indexOf(P,ie)!==-1},n=pD,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Z,ie)=>{let P=Z[0].length+Z.index,ge=Z.input[P];if(ge==="<"||ge===","){ie.ignoreMatch();return}ge===">"&&(o(Z,{after:P})||ie.ignoreMatch());let ee,le=Z.input.substring(P);if(ee=le.match(/^\s*=/)){ie.ignoreMatch();return}if((ee=le.match(/^\s+extends\s+/))&&ee.index===0){ie.ignoreMatch();return}}},a={$pattern:pD,keyword:$J,literal:FJ,built_in:UJ,"variable.language":BJ},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]},A=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=A.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(A)});let M=[].concat(T,u.contains),B=M.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(M)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},G={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"}}]},Y={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:{_:[...hD,...gD]}},$={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},te={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function J(Z){return e.concat("(?!",Z.join("|"),")")}let D={match:e.concat(/\b/,J([...yD,"super","import"].map(Z=>`${Z}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},z={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},xe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},K="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ue={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(K)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:Y},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),$,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,Y,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ue,{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:K,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"]}]}]},te,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},z,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},D,oe,G,xe,{match:/\$[(.]/}]}}var pD,$J,FJ,hD,gD,yD,BJ,UJ,vD=p(()=>{pD="[A-Za-z$_][0-9A-Za-z$_]*",$J=["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"],FJ=["true","false","null","undefined","NaN","Infinity"],hD=["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"],gD=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],yD=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],BJ=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],UJ=[].concat(yD,hD,gD)});function kD(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 xD=p(()=>{});function SD(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 wD=p(()=>{});function AD(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 ED=p(()=>{});function TD(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 _D=p(()=>{});function RD(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}var CD=p(()=>{});function OD(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(H=>H.replace(/\s+/,"\\s+"))),/\b/)}let A={scope:"keyword",match:T(u),relevance:0};function M(B,{exceptions:H,when:G}={}){let Y=G;return H=H||[],B.map($=>$.match(/\|\d+$/)||H.includes($)?$:Y($)?`${$}|0`:$)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:M(g,{when:B=>B.length<3}),literal:s,type:a,built_in:m},contains:[{scope:"type",match:T(i)},A,w,y,n,r,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,o,b]}}var MD=p(()=>{});function jJ(t){let e=t.regex,o=(Z,{after:ie})=>{let P="</"+Z[0].slice(1);return Z.input.indexOf(P,ie)!==-1},n=nh,r={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Z,ie)=>{let P=Z[0].length+Z.index,ge=Z.input[P];if(ge==="<"||ge===","){ie.ignoreMatch();return}ge===">"&&(o(Z,{after:P})||ie.ignoreMatch());let ee,le=Z.input.substring(P);if(ee=le.match(/^\s*=/)){ie.ignoreMatch();return}if((ee=le.match(/^\s+extends\s+/))&&ee.index===0){ie.ignoreMatch();return}}},a={$pattern:nh,keyword:LD,literal:PD,built_in:FD,"variable.language":$D},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]},A=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,{match:/\$\d+/},m];u.contains=A.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(A)});let M=[].concat(T,u.contains),B=M.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(M)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},G={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"}}]},Y={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:{_:[...ID,...ND]}},$={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},te={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function J(Z){return e.concat("(?!",Z.join("|"),")")}let D={match:e.concat(/\b/,J([...DD,"super","import"].map(Z=>`${Z}\\s*\\(`)),n,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},z={begin:e.concat(/\./,e.lookahead(e.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},xe={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},K="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",ue={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(K)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:Y},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),$,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,g,y,b,T,{match:/\$\d+/},m,Y,{scope:"attr",match:n+e.lookahead(":"),relevance:0},ue,{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:K,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"]}]}]},te,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,t.inherit(t.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},z,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},D,oe,G,xe,{match:/\$[(.]/}]}}function BD(t){let e=t.regex,o=jJ(t),n=nh,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:nh,keyword:LD.concat(l),literal:PD,built_in:FD.concat(r),"variable.language":$D},d={className:"meta",begin:"@"+n},m=(y,b,w)=>{let T=y.contains.findIndex(A=>A.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 nh,LD,PD,ID,ND,DD,$D,FD,UD=p(()=>{nh="[A-Za-z$_][0-9A-Za-z$_]*",LD=["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"],PD=["true","false","null","undefined","NaN","Infinity"],ID=["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"],ND=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],DD=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],$D=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],FD=[].concat(DD,ID,ND)});function jD(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 HD=p(()=>{});function qD(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 WD=p(()=>{});import{createLowlight as HJ}from"lowlight";function Va(t){if(!t)return null;let e=t.trim().toLowerCase();if(e==="")return null;let o=qJ[e]??e;return GD.registered(o)?o:null}function WJ(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 GJ(t){let e=t.properties?.className;if(Array.isArray(e))return e[e.length-1];if(typeof e=="string")return e}function zD(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"?WJ(GJ(n)):e,s=n.type==="element"&&r!=="fg"?r:e;for(let i of n.children??[])zD(i,s,o)}function zJ(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 au(t,e){if(t==="")return[];let o=Va(e);if(!o)return[{text:t,role:"fg"}];try{let n=GD.highlight(o,t),r=[];zD(n,"fg",r);let s=zJ(r);return s.length>0?s:[{text:t,role:"fg"}]}catch{return[{text:t,role:"fg"}]}}var GD,qJ,$S=p(()=>{"use strict";aD();cD();uD();fD();vD();xD();wD();ED();_D();CD();MD();UD();HD();WD();GD=HJ({bash:iD,css:lD,diff:dD,go:mD,javascript:bD,json:kD,markdown:SD,python:AD,rust:TD,shell:RD,sql:OD,typescript:BD,xml:jD,yaml:qD}),qJ={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 rh,Text as KD}from"ink";import{jsx as Xa,jsxs as Ai}from"react/jsx-runtime";function FS(t){let o=ne().box,n=Va(t.lang),r=(n??t.lang??"code")+(t.open?" \u2026":""),s=t.code.split(`
|
|
608
608
|
`);return Ai(rh,{flexDirection:"column",paddingY:0,children:[Ai(rh,{children:[Ai(f,{name:"fgDim",children:[o.topLeft,o.horizontal," "]}),Xa(f,{name:"depth",children:r}),Ai(f,{name:"fgDim",children:[" ",o.horizontal.repeat(2)]})]}),s.map((i,a)=>Ai(rh,{children:[Ai(f,{name:"fgDim",children:[o.vertical," "]}),Xa(KJ,{line:i,lang:n??t.lang})]},a)),Xa(rh,{children:Ai(f,{name:"fgDim",children:[o.bottomLeft,o.horizontal.repeat(3)]})})]})}function KJ(t){if(t.line==="")return Xa(KD,{children:" "});let e=au(t.line,t.lang);return Xa(KD,{children:e.map((o,n)=>Xa(f,{name:o.role,children:o.text},n))})}var BS=p(()=>{"use strict";ae();$S()});function Ir(t){let e=[],o=t;for(;o.length>0;){let n=YJ.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 US(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 YD(t){return/(?<!\\)\|/.test(t)}function t5(t){let e=US(t);if(e.length===0)return null;let o=[];for(let n of e){if(!e5.test(n))return null;let r=n.startsWith(":"),s=n.endsWith(":");o.push(r&&s?"center":s?"right":"left")}return o}function jS(t){let e=t.split(`
|
|
609
609
|
`),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=VJ.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(`
|
|
610
610
|
`),closed:y}),s=y?b:e.length;continue}if(i.trim()===""){r();continue}if(YD(i)){let h=s+1<e.length?t5(e[s+1]??""):null;if(h){r();let g=US(i),y=g.length,b=[];for(let A=0;A<y;A++)b.push(h[A]??"left");let w=[],T=s+2;for(;T<e.length;T++){let A=e[T]??"";if(A.trim()===""||!YD(A))break;let M=US(A),B=[];for(let H=0;H<y;H++)B.push(M[H]??"");w.push(B)}o.push({kind:"table",header:g,align:b,rows:w}),s=T-1;continue}}let l=XJ.exec(i);if(l){r(),o.push({kind:"heading",level:l[1].length,spans:Ir(l[2]??"")});continue}let c=QJ.exec(i);if(c){r(),o.push({kind:"list-item",ordered:!1,marker:"-",indent:Math.floor((c[1]??"").length/2),spans:Ir(c[3]??"")});continue}let d=ZJ.exec(i);if(d){r(),o.push({kind:"list-item",ordered:!0,marker:`${d[2]}.`,indent:Math.floor((d[1]??"").length/2),spans:Ir(d[3]??"")});continue}let m=JJ.exec(i);if(m){r(),o.push({kind:"quote",spans:Ir(m[1]??"")});continue}let u=Ir(i);n=n?[...n,{kind:"plain",text:" "},...u]:u}return r(),o}var YJ,VJ,XJ,JJ,QJ,ZJ,e5,sh=p(()=>{"use strict";YJ=/(`[^`]+`)|(\[([^\]]+)\]\(([^)\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;VJ=/^(\s*)```(.*)$/,XJ=/^(#{1,6})\s+(.*)$/,JJ=/^\s*>\s?(.*)$/,QJ=/^(\s*)([-*+])\s+(.*)$/,ZJ=/^(\s*)(\d+)[.)]\s+(.*)$/,e5=/^:?-+:?$/});import VD from"react";import{Box as ih,Text as HS}from"ink";import{jsx as Nr,jsxs as qS}from"react/jsx-runtime";function ah(t){return Ir(t).map(e=>e.text).join("")}function WS(t){let e=ne(),o=e.box,n=t.base??"fg",r=e.colorMode==="mono",s=t.header.length,i=t.header.map(ah),a=t.rows.map(h=>{let g=[];for(let y=0;y<s;y++)g.push(ah(h[y]??""));return g}),l=oD(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=ah(h),w=wi(b,g),T=IS(w,g,y),A=Ir(T);return Nr(Ja,{spans:A,base:n,mono:r})},u=" ".repeat(PS);return qS(ih,{flexDirection:"column",paddingY:0,children:[Nr(ih,{children:t.header.map((h,g)=>qS(VD.Fragment,{children:[g>0&&Nr(HS,{children:u}),Nr(f,{name:"accent",children:Nr(HS,{bold:!0,children:IS(wi(ah(h),l[g]??0),l[g]??0,t.align[g]??"left")})})]},g))}),Nr(ih,{children:Nr(f,{name:"fgDim",children:d})}),t.rows.map((h,g)=>Nr(ih,{children:h.map((y,b)=>qS(VD.Fragment,{children:[b>0&&Nr(HS,{children:u}),m(y,l[b]??0,t.align[b]??"left")]},b))},g))]})}var GS=p(()=>{"use strict";ae();zS();sh();th()});import"react";import{Box as Qa,Text as ys}from"ink";import{jsx as et,jsxs as wn}from"react/jsx-runtime";function KS(t){let e=t.baseRole??"fg",o=jS(t.text);return et(Qa,{flexDirection:"column",children:o.map((n,r)=>et(o5,{block:n,base:e,...t.columns!==void 0?{columns:t.columns}:{}},r))})}function o5(t){let e=ne(),o=t.block,n=e.colorMode==="mono";switch(o.kind){case"code":return et(Qa,{paddingY:0,children:et(FS,{code:o.code,lang:o.lang,open:!o.closed})});case"table":return et(WS,{header:o.header,align:o.align,rows:o.rows,base:t.base,...t.columns!==void 0?{columns:t.columns}:{}});case"heading":return wn(Qa,{children:[n&&wn(f,{name:"accent",children:["#".repeat(o.level)," "]}),et(f,{name:"accent",children:et(Ja,{spans:o.spans,base:"accent",mono:n})})]});case"quote":return wn(Qa,{children:[wn(f,{name:"depth",children:[e.glyph("you")," "]}),et(f,{name:"fgDim",children:et(Ja,{spans:o.spans,base:"fgDim",mono:n})})]});case"list-item":return wn(Qa,{paddingLeft:o.indent*2,children:[wn(f,{name:"accent",children:[o.ordered?o.marker:e.unicode?"\u2022":"-"," "]}),et(ys,{children:et(Ja,{spans:o.spans,base:t.base,mono:n})})]});case"paragraph":return et(Qa,{children:et(ys,{children:et(Ja,{spans:o.spans,base:t.base,mono:n})})})}}function Ja(t){return et(ys,{children:t.spans.map((e,o)=>et(n5,{span:e,base:t.base,mono:t.mono},o))})}function n5(t){let{span:e,base:o,mono:n}=t;switch(e.kind){case"plain":return et(f,{name:o,children:e.text});case"bold":return n?et(f,{name:o,children:wn(ys,{bold:!0,children:["*",e.text,"*"]})}):et(f,{name:o,children:et(ys,{bold:!0,children:e.text})});case"italic":return n?et(f,{name:o,children:wn(ys,{italic:!0,children:["_",e.text,"_"]})}):et(f,{name:o,children:et(ys,{italic:!0,children:e.text})});case"code":return n?wn(f,{name:"depth",children:["`",e.text,"`"]}):et(f,{name:"depth",children:e.text});case"link":return wn(ys,{children:[et(f,{name:"accent",children:e.text}),wn(f,{name:"fgDim",children:[" (",e.url,")"]})]})}}var zS=p(()=>{"use strict";ae();BS();GS();sh()});var YS=p(()=>{"use strict";zS();BS();GS();sh();$S()});import"react";import{Box as r5,Text as Nxe}from"ink";import{jsx as ch,jsxs as i5}from"react/jsx-runtime";function dh(t,e){return((t-e)%lh+lh)%lh<lh/2?"accent":"accentDim"}function Ei(t){let e=ne(),o=t.frame??0;if(!e.animate)return ch(f,{name:"accent",children:e.aluyMark});if(!e.unicode){let s=dh(o,0),i=dh(o,s5);return i5(r5,{children:[ch(f,{name:s,children:"/"}),ch(f,{name:i,children:"\\"})]})}let r=dh(o,0);return ch(f,{name:r,children:e.aluyMark})}var lh,s5,lu=p(()=>{"use strict";ae();lh=8,s5=2});function uh(t){return t>=VS?l5:0}function mh(t){return t==="unsafe"?d5-c5:0}function Za(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 m5(t,e){if(t.kind==="tool"||t.kind==="bang")return t.status==="running"?1+XD(t.liveOutput,e):0;if(t.kind==="subagents"){let o=0;for(let n of t.children)o+=f5(n,e);return 2+o}return t.kind==="broker-error"?t.retrying===!0?5:0:t.kind==="aluy"?0:1}function XD(t,e){let o=(t??"").replace(/\n+$/,"");if(o.length===0)return 0;let n=e>0?e-u5:0,r=za(o,n);return r<=cu?r:cu+1}function f5(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,za(r,e))}function gh(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+=m5(a,r)}return(o==="thinking"||o==="compacting")&&(s+=1+(n?1:0)),s}function QD(t){let e=du+uh(t.rows)+mh(t.mode)+gh({live:t.live,phase:t.phase,hasBlocks:t.hasBlocks,...t.columns!==void 0?{columns:t.columns}:{}})+ph+(t.stagedLines??0);return Math.max(4,t.rows-e-1-fh)}function ZD(t){let e=gh({live:t.live,phase:t.phase,hasBlocks:t.hasBlocks,...t.columns!==void 0?{columns:t.columns}:{}}),o=t.rows-du-uh(t.rows)-fh-e-mh(t.mode)-(t.queuedLines??0)-(t.overlayLines??0)-1;return Math.max(ph,o)}var a5,du,l5,VS,c5,d5,fh,ph,cu,hh,JD,u5,el=p(()=>{"use strict";ao();a5=9,du=8,l5=a5-du,VS=25;c5=1,d5=2;fh=2,ph=4,cu=6,hh=8192,JD=65536;u5=4});import"react";import{Box as ol,Text as p5}from"ink";import{jsx as Xn,jsxs as tl}from"react/jsx-runtime";function XS(t){let e=t.isCurrent===!1?"fgDim":"fg";return tl(ol,{flexDirection:"column",children:[tl(ol,{children:[Xn(I,{name:"you",role:"fg"}),Xn(f,{name:"fg",children:" voc\xEA"})]}),Xn(ol,{paddingLeft:2,children:Xn(f,{name:e,children:t.text})})]})}function JS(t){let e=ne(),o=t.streaming?Za(t.text,JD):t.text,n=Kr(o),r=t.isCurrent===!1?"fgDim":"fg",s=t.columns&&t.columns>0?t.columns-h5:0,{text:i,hidden:a}=Ka(n,t.streaming?t.maxLines:void 0,s),l=(t.frame??0)%g5,c=!e.animate||l<y5;return tl(ol,{flexDirection:"column",children:[tl(ol,{children:[t.streaming?Xn(Ei,{frame:t.frame??0}):Xn(I,{name:"aluy",role:"accent"}),Xn(f,{name:"accent",children:" aluy"})]}),tl(ol,{paddingLeft:2,flexDirection:"column",children:[a>0&&tl(f,{name:"fgDim",children:["\u2026 (",a," linhas acima)"]}),Xn(KS,{text:i,baseRole:r,...s>0?{columns:s}:{}}),t.streaming&&(c?Xn(f,{name:"accent",children:e.glyph("thinkingCursor")}):Xn(p5,{children:" "}))]})]})}var h5,g5,y5,e$=p(()=>{"use strict";N();ae();YS();lu();ao();el();h5=2,g5=10,y5=6});import"react";import{Box as b5,Text as t$}from"ink";import{jsx as nl,jsxs as o$}from"react/jsx-runtime";function Ti(t){let e=ne(),o=t.width??v5,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 o$(b5,{children:[r==="aluy"?nl(Ei,{frame:n}):nl(I,{name:r,role:s}),nl(t$,{children:" "}),Array.from({length:o},(d,m)=>m===c?nl(f,{name:"accent",children:l},m):nl(f,{name:"accentDim",children:a},m)),nl(t$,{children:" "}),o$(f,{name:"fgDim",children:[t.label,"\u2026"]})]})}var v5,yh=p(()=>{"use strict";ae();lu();v5=3});import"react";import{Box as _i,Text as QS}from"ink";import{jsx as en,jsxs as An}from"react/jsx-runtime";function x5(t){return t.length>=n$?t:t+" ".repeat(n$-t.length)}function ZS(t){let e=ne();if(t.status==="running"){let n=`${t.verbGerund??"rodando"}${t.target?` ${t.target}`:""}`,s=Za(t.liveOutput??"",hh).replace(/\n+$/,""),i=t.columns&&t.columns>0?t.columns-k5:0,{text:a,hidden:l}=Ka(s,t.maxLines,i);return An(_i,{flexDirection:"column",paddingLeft:2,children:[en(Ti,{glyph:"toolInflight",glyphRole:"depth",label:n,...t.frame!==void 0?{frame:t.frame}:{}}),a.length>0&&An(_i,{flexDirection:"column",paddingLeft:2,children:[l>0&&An(f,{name:"fgDim",children:["\u2026 (",l," linhas acima)"]}),a.split(`
|
|
@@ -619,8 +619,8 @@ Notas:
|
|
|
619
619
|
`),!0):(e.write(`[history] sess\xE3o n\xE3o encontrada: ${r}
|
|
620
620
|
`),!0)}var fw,Th=p(()=>{"use strict";Nd();Sn();fw=15});function tr(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 cl=p(()=>{"use strict"});import"react";import{Box as hu,Text as T$}from"ink";import{Fragment as yQ,jsx as ks,jsxs as gu}from"react/jsx-runtime";function _h(t){let e=ne(),{t:o}=ve(),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)+Te(pu(c,t.home));return Math.max(1,Math.ceil(d/s))}:void 0,{start:a,slice:l}=tr(t.sessions,t.selected,r,i);return gu(hu,{flexDirection:"column",children:[ks(hu,{children:ks(f,{name:"fgDim",children:o("picker.history.help")})}),t.sessions.length===0?ks(hu,{children:gu(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),gu(hu,{children:[ks(f,{name:u?"accent":"fgDim",children:u?"\u203A ":" "}),h&&gu(yQ,{children:[ks(T$,{...y,children:n}),ks(T$,{children:" "})]}),ks(f,{name:u?"accent":"fg",children:pu(c,t.home)})]},c.id)}),t.sessions.length>l.length&&ks(hu,{children:gu(f,{name:"fgDim",children:[" ",o("picker.history.more",{count:t.sessions.length-l.length})]})})]})}var _$=p(()=>{"use strict";ae();yt();Th();ao();cl()});function R$(t,e=30){return[...t].reverse().slice(0,e)}function hw(t){let e=bQ(t.ts);return`#${t.ordinal} \xB7 ${e} \xB7 ${t.label}`}function bQ(t){let e=new Date(t),o=String(e.getHours()).padStart(2,"0"),n=String(e.getMinutes()).padStart(2,"0");return`${o}:${n}`}var Rh,gw=p(()=>{"use strict";Rh=["both","conversation","code"]});import"react";import{Box as nn}from"ink";import{jsx as Jt,jsxs as Ci}from"react/jsx-runtime";function vQ(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 Ch(t){let{t:e}=ve();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+Te(hw(a)))/n)):void 0,{start:s,slice:i}=tr(t.checkpoints,t.selected,o,r);return Ci(nn,{flexDirection:"column",children:[Jt(nn,{children:Jt(f,{name:"fgDim",children:e("picker.rewind.help")})}),t.checkpoints.length===0?Jt(nn,{children:Ci(f,{name:"fgDim",children:[" ",e("picker.rewind.empty")]})}):i.map((a,l)=>{let c=s+l===t.selected;return Ci(nn,{children:[Jt(f,{name:c?"accent":"fgDim",children:c?"\u203A ":" "}),Jt(f,{name:c?"accent":"fg",children:hw(a)})]},a.id)}),t.checkpoints.length>i.length&&Jt(nn,{children:Ci(f,{name:"fgDim",children:[" ",e("picker.rewind.more",{count:t.checkpoints.length-i.length})]})})]})}return Ci(nn,{flexDirection:"column",children:[Jt(nn,{children:Jt(f,{name:"fgDim",children:e("picker.rewind.action.help")})}),t.target&&Jt(nn,{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 Ci(nn,{children:[Jt(f,{name:r?"accent":"fgDim",children:r?"\u203A ":" "}),Jt(f,{name:r?"accent":"fg",children:e(vQ(o))})]},o)}),t.barrierWarnings&&t.barrierWarnings.length>0&&Ci(nn,{flexDirection:"column",marginTop:1,children:[Jt(nn,{children:Jt(f,{name:"accent",children:`\u26A0 ${e("picker.rewind.barrier.warn")}:`})}),t.barrierWarnings.map((o,n)=>Jt(nn,{children:Jt(f,{name:"fgDim",children:` \xB7 ${o}`})},n))]})]})}var C$=p(()=>{"use strict";ae();yt();gw();ao();cl()});import kQ from"react";import{Box as mo,Text as xQ}from"ink";import{Fragment as EQ,jsx as Ue,jsxs as Ho}from"react/jsx-runtime";function SQ(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 wQ(t){let{row:e,sel:o}=t,n=Ue(f,{name:o?"accent":"fgDim",children:o?"\u203A ":" "});switch(e.kind){case"mode":return Ho(mo,{children:[n,Ue(f,{name:o?"accent":"fg",children:"modo: "}),Ue(f,{name:e.mode==="unsafe"?"danger":o?"accent":"fg",children:yw[e.mode]})]});case"safe-tool":return Ho(mo,{children:[n,Ue(f,{name:o?"accent":"fg",children:e.tool}),Ue(f,{name:"fgDim",children:" = "}),Ue(f,{name:e.decision==="allow"?"success":"fgDim",children:e.decision})]});case"grant":return Ho(mo,{children:[n,Ue(f,{name:"success",children:"\u25CF "}),Ue(f,{name:o?"accent":"fg",children:e.grantKey}),Ue(f,{name:"fgDim",children:" (enter revoga)"})]});case"locked":{let r=e.category.lock==="deny";return Ho(mo,{flexDirection:"column",children:[Ho(mo,{children:[n,Ue(I,{name:"ask",role:"danger"}),Ue(f,{name:"danger",children:" [travado] "}),Ue(f,{name:o?"accent":"fg",children:e.category.label}),Ho(f,{name:"danger",children:[" \xB7 ",r?"deny (nem --yolo)":"sempre pergunta"]})]}),o&&Ue(mo,{paddingLeft:4,children:Ue(f,{name:"fgDim",children:e.category.why})})]})}}}function bw(t){let e=Math.max(1,t.maxRows??14),o=t.columns,n=l=>{switch(l.kind){case"mode":return 8+Te(yw[l.mode]);case"safe-tool":return 5+Te(l.tool)+Te(l.decision);case"grant":return 19+Te(l.grantKey);case"locked":return 28+Te(l.category.label)}},r=o!==void 0&&o>0?l=>Math.max(1,Math.ceil(n(l)/o)):void 0,{start:s,slice:i}=tr(t.rows,t.selected,e,r),a=null;return Ho(mo,{flexDirection:"column",children:[Ue(mo,{children:Ue(f,{name:"fgDim",children:"permissoes \xB7 \u2191\u2193 navega \xB7 enter muda \xB7 esc fecha"})}),Ho(mo,{children:[Ue(f,{name:"fgDim",children:"modo atual: "}),Ue(f,{name:t.mode==="unsafe"?"danger":"fg",children:yw[t.mode]})]}),t.rows.length===0?Ue(mo,{children:Ue(f,{name:"fgDim",children:" nada a mostrar"})}):Ho(EQ,{children:[s>0&&Ue(mo,{children:Ho(f,{name:"fgDim",children:[" \u2191 ",s," acima"]})}),i.map((l,c)=>{let d=s+c,m=l.kind!==a?SQ(l.kind):null;return a=l.kind,Ho(kQ.Fragment,{children:[m&&Ue(mo,{paddingTop:1,children:Ho(f,{name:"fgDim",children:["\u2500\u2500\u2500 ",m]})}),Ue(wQ,{row:l,sel:d===t.selected})]},AQ(l,d))}),s+i.length<t.rows.length&&Ue(mo,{children:Ho(f,{name:"fgDim",children:[" \u2193 ",t.rows.length-(s+i.length)," abaixo"]})})]}),Ue(mo,{paddingTop:1,children:Ue(xQ,{children:" "})}),Ue(mo,{children:Ue(f,{name:"fgDim",children:"o painel nao relaxa as categorias travadas \u2014 o unico bypass total e --yolo"})})]})}function AQ(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 yw,O$=p(()=>{"use strict";ae();cl();ao();yw={plan:"PLAN (read-only)",normal:"NORMAL (catraca padrao)",unsafe:"YOLO (aprovacao DESLIGADA)"}});import"react";import{Box as vw}from"ink";import{jsx as yu,jsxs as kw}from"react/jsx-runtime";function Oh(t){let{t:e}=ve();return kw(vw,{flexDirection:"column",children:[yu(vw,{children:yu(f,{name:"fgDim",children:e("picker.theme.help")})}),t.themes.map((o,n)=>{let r=n===t.selected,s=o.name===t.currentTheme;return kw(vw,{children:[yu(f,{name:r?"accent":"fgDim",children:r?"\u203A ":" "}),yu(f,{name:s?"accent":"fgDim",children:s?"\u25CF ":" "}),yu(f,{name:r?"accent":"fg",children:o.label}),kw(f,{name:"fgDim",children:[" \xB7 ",o.summary]})]},o.name)})]})}var M$=p(()=>{"use strict";ae();yt()});import"react";import{Box as xw}from"ink";import{jsx as bu,jsxs as Sw}from"react/jsx-runtime";function Mh(t){let{t:e}=ve();return Sw(xw,{flexDirection:"column",children:[bu(xw,{children:bu(f,{name:"fgDim",children:e("picker.lang.help")})}),t.langs.map((o,n)=>{let r=n===t.selected,s=o.code===t.currentLang;return Sw(xw,{children:[bu(f,{name:r?"accent":"fgDim",children:r?"\u203A ":" "}),bu(f,{name:s?"accent":"fgDim",children:s?"\u25CF ":" "}),bu(f,{name:r?"accent":"fg",children:o.label}),Sw(f,{name:"fgDim",children:[" \xB7 ",o.summary]})]},o.code)})]})}var L$=p(()=>{"use strict";ae();yt()});import"react";import{Box as vu}from"ink";import{jsx as xs,jsxs as ku}from"react/jsx-runtime";function ww(t){let{t:e}=ve(),o=Math.max(1,t.maxRows??10),n=t.columns,r=n!==void 0&&n>0?a=>{let l=4+Te(`${a.label} \xB7 ${a.summary}`)+(a.isDefault?2+Te(e("picker.provider.default")):0);return Math.max(1,Math.ceil(l/n))}:void 0,{start:s,slice:i}=tr(t.providers,t.selected,o,r);return ku(vu,{flexDirection:"column",children:[xs(vu,{children:xs(f,{name:"fgDim",children:e("picker.provider.help")})}),t.usingFallback===!0?xs(vu,{children:xs(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 ku(vu,{children:[xs(f,{name:c?"accent":"fgDim",children:c?"\u203A ":" "}),xs(f,{name:d?"accent":"fgDim",children:d?"\u25CF ":" "}),xs(f,{name:c?"accent":"fg",children:a.label}),ku(f,{name:"fgDim",children:[" \xB7 ",a.summary]}),a.isDefault?ku(f,{name:"fgDim",children:[" \xB7 ",e("picker.provider.default")]}):null]},a.name)}),t.providers.length>i.length&&xs(vu,{children:ku(f,{name:"fgDim",children:[" ",e("picker.provider.more",{count:t.providers.length-i.length})]})})]})}var P$=p(()=>{"use strict";ae();yt();ao();cl()});import"react";import{Box as I$,Text as TQ}from"ink";import{jsx as Aw,jsxs as N$}from"react/jsx-runtime";function Ew(t){if(t.chips.length===0)return null;let e=t.active??-1;return Aw(I$,{flexWrap:"wrap",children:t.chips.map((o,n)=>{let r=n===e;return N$(I$,{marginRight:1,children:[N$(f,{name:r?"accent":"depth",children:[r?"\u203A ":"","@",o.path,o.truncated?"~":""]}),Aw(TQ,{children:" "}),Aw(f,{name:"fgDim",children:"[\u232B]"})]},o.path)})})}var D$=p(()=>{"use strict";ae()});import"react";import{Box as xu,Text as $$}from"ink";import{jsx as Tn,jsxs as Ss}from"react/jsx-runtime";function Tw(t){let e=ne(),{t:o}=ve(),n=t.columns??80,r=t.plan??"assinatura",s=e.glyph("wave").repeat(17);return Ss(xu,{flexDirection:"column",paddingY:1,children:[Tn(Pr,{columns:n}),Tn(xu,{paddingTop:1,paddingLeft:2,children:Tn(f,{name:"fgDim",children:o("boot.tagline")})}),Ss(xu,{paddingLeft:2,children:[Tn(f,{name:"accent",children:s}),t.version!==void 0&&Ss(f,{name:"fgDim",children:[" v",t.version]})]}),Ss(xu,{paddingLeft:2,children:[Tn(I,{name:"window",role:"fgDim"}),Ss(f,{name:"fgDim",children:[" ",r," \xB7 "]}),Tn(f,{name:"fgDim",children:t.tier}),Tn($$,{children:" "}),Tn(f,{name:"fgDim",children:"\xB7 "}),Tn(I,{name:"broker",role:"depth"}),Ss(f,{name:"depth",children:[" ",o("boot.broker")]})]}),t.status!==void 0&&Ss(xu,{paddingTop:1,paddingLeft:2,children:[Tn(Ei,{frame:t.frame??0}),Tn($$,{children:" "}),Ss(f,{name:"fgDim",children:[t.status,"\u2026"]})]})]})}var F$=p(()=>{"use strict";ae();yt();lu();yi()});import"react";import{Box as B$}from"ink";import{jsx as _w,jsxs as Rw}from"react/jsx-runtime";function Cw(t){let e=t.suggestions??_Q;return Rw(B$,{flexDirection:"column",children:[_w(f,{name:"fg",children:t.name?`bom te ver de novo, ${t.name}.`:"bom te ver por aqui."}),_w(f,{name:"fgDim",children:"eu leio e edito arquivos e rodo comandos aqui \u2014 sempre te mostrando o efeito exato antes."}),Rw(B$,{paddingTop:1,flexDirection:"column",children:[_w(f,{name:"fgDim",children:"experimente:"}),e.map((o,n)=>Rw(f,{name:"fgDim",children:[" \xB7 ",o]},n))]})]})}var _Q,U$=p(()=>{"use strict";ae();_Q=['"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 nEe}from"react/jsx-runtime";var j$=p(()=>{"use strict";ae()});import"react";import{Box as H$,Text as Ow}from"ink";import{jsx as Oi,jsxs as Lh}from"react/jsx-runtime";function W$(t,e){return!Number.isFinite(t)||!Number.isFinite(e)||e<=0?0:Math.max(0,Math.min(1,t/e))}function G$(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 dl(t){let e=ne(),o=t.role??"accent";if(t.value!==void 0&&t.max!==void 0){let a=W$(t.value,t.max),l=Math.round(a*100),c=e.glyph("barFull"),d=e.glyph("barEmpty"),m=t.width??q$,{filled:u,rest:h}=G$(a,c,d,m,e.unicode);return Lh(H$,{children:[Oi(f,{name:o,children:u}),Oi(f,{name:"fgDim",children:h}),Oi(Ow,{children:" "}),Lh(f,{name:o,children:[l,"%"]}),Oi(Ow,{children:" "}),Oi(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?Ba(t.elapsedMs):void 0;return Lh(H$,{children:[Oi(f,{name:o,children:s}),Oi(Ow,{children:" "}),Lh(f,{name:"fgDim",children:[t.label,"\u2026",i!==void 0?` ${i}`:""]})]})}var q$,Mw=p(()=>{"use strict";ae();Sn();q$=12});import"react";import{Box as RQ}from"ink";import{jsx as CQ,jsxs as z$}from"react/jsx-runtime";function Lw(t){let{t:e}=ve(),o=(t.columns??80)<60,n=e(o?"banner.yolo.narrow":"banner.yolo");return z$(RQ,{children:[CQ(I,{name:"ask",role:"danger"}),z$(f,{name:"danger",children:[" ",n]})]})}var Pw=p(()=>{"use strict";ae();yt()});import"react";import{Box as OQ}from"ink";import{jsx as K$,jsxs as Iw}from"react/jsx-runtime";function Ph(t){let{t:e}=ve();if(t.mode==="unsafe")return K$(Lw,{...t.columns!==void 0?{columns:t.columns}:{}});let o=MQ[t.mode],n=(t.columns??80)<60;return Iw(OQ,{children:[K$(I,{name:o.glyph,role:o.role}),Iw(f,{name:o.role,children:[" ",e("mode.label")," ",o.word]}),!n&&Iw(f,{name:"fgDim",children:[" \xB7 ",e(o.caption)]})]})}var MQ,Y$=p(()=>{"use strict";ae();Pw();yt();MQ={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 V$}from"react/jsx-runtime";function Su(t){let{t:e}=ve();if(t.armedExit===!0)return V$(f,{name:"accent",children:e("hints.ctrlcAgain")});let o=e(LQ[t.state]),n=t.elapsed!==void 0&&t.elapsed!==""&&PQ.has(t.state);return V$(f,{name:"fgDim",children:n?`${o} \xB7 ${t.elapsed}`:o})}var LQ,PQ,X$=p(()=>{"use strict";ae();yt();LQ={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"},PQ=new Set(["thinking","streaming","work-subagents"])});import"react";import{Box as Nw}from"ink";import{jsx as Dw,jsxs as $w}from"react/jsx-runtime";function Ih(t){return $w(Nw,{flexDirection:"column",children:[$w(Nw,{children:[Dw(I,{name:"clock",role:"depth"}),$w(f,{name:"depth",children:[" ",t.title]})]}),Dw(Nw,{flexDirection:"column",paddingLeft:2,children:t.lines.map((e,o)=>Dw(f,{name:"fgDim",children:e},o))})]})}var J$=p(()=>{"use strict";ae()});import"react";import{Box as Mi,Text as IQ}from"ink";import{jsx as _n,jsxs as rn}from"react/jsx-runtime";function Fw(t){let e=ne();if(t.status==="running"){let a=Za(t.liveOutput??"",hh).replace(/\n+$/,""),l=t.columns&&t.columns>0?t.columns-NQ:0,{text:c,hidden:d}=Ka(a,t.maxLines,l);return rn(Mi,{flexDirection:"column",paddingLeft:2,children:[_n(Ti,{glyph:"toolInflight",glyphRole:"depth",label:`rodando $ ${t.command}`,...t.frame!==void 0?{frame:t.frame}:{}}),c.length>0&&rn(Mi,{flexDirection:"column",paddingLeft:2,children:[d>0&&rn(f,{name:"fgDim",children:["\u2026 (",d," linhas acima)"]}),c.split(`
|
|
621
621
|
`).map((m,u)=>_n(Mi,{children:_n(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 rn(Mi,{flexDirection:"column",paddingLeft:2,children:[rn(Mi,{children:[n?_n(I,{name:"err",role:"danger"}):_n(I,{name:"tool",role:"depth"}),rn(f,{name:"fg",children:[" ",DQ," "]}),_n(f,{name:"accent",children:"$ "}),_n(f,{name:"fg",children:t.command}),_n(IQ,{children:" "}),n||o?_n(I,{name:"err",role:"danger"}):_n(I,{name:"ok",role:"success"}),rn(f,{name:n||o?"danger":"fgDim",children:[" ",r]})]}),s.trim()!==""&&rn(Mi,{flexDirection:"column",paddingLeft:2,children:[rn(f,{name:"fgDim",children:[e.box.topLeft," sa\xEDda ",e.box.horizontal.repeat(8)]}),s.split(`
|
|
622
|
-
`).map((i,a)=>rn(Mi,{children:[rn(f,{name:"fgDim",children:[e.box.vertical," "]}),_n(f,{name:n||o?"danger":"fg",children:i})]},a)),rn(f,{name:"fgDim",children:[e.box.bottomLeft," ",r," ",e.box.horizontal.repeat(4)]})]})]})}var NQ,DQ,Q$=p(()=>{"use strict";ae();yh();ao();el();NQ=4,DQ="shell"});import"react";import{Box as Bw,Text as Z$}from"ink";import{jsx as or,jsxs as ul}from"react/jsx-runtime";function $Q(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 FQ(t){let e=t.child,o=$Q(e),n=e.status==="running"?or(I,{name:"clock",role:"depth"}):e.status==="done"?or(I,{name:"ok",role:"success"}):e.status==="cancelled"?or(I,{name:"err",role:"fgDim"}):or(I,{name:"err",role:"danger"}),r=e.status==="done"?"success":e.status==="fail"?"danger":"fgDim";return ul(Bw,{paddingLeft:2,children:[ul(f,{name:"accent",children:["[",e.label,"]"]}),or(Z$,{children:" "}),n,or(Z$,{children:" "}),or(f,{name:r,children:o}),e.summary!==void 0&&e.status!=="running"&&ul(f,{name:"fgDim",children:[" \xB7 ",e.summary]})]})}function Uw(t){let e=t.childrenStatus,o=e.length,n=e.filter(s=>s.status==="running").length,r=n>0?` (${n} rodando)`:"";return ul(Bw,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[ul(Bw,{children:[or(I,{name:"subagents",role:"accent"}),ul(f,{name:"fg",children:[" ",o," sub-agente",o===1?"":"s",":"]}),r!==""&&or(f,{name:"fgDim",children:r})]}),e.map((s,i)=>or(FQ,{child:s},`${s.label}:${i}`))]})}var eF=p(()=>{"use strict";ae()});import"react";import{Box as ml,Text as jw}from"ink";import{jsx as _o,jsxs as ws}from"react/jsx-runtime";function BQ(t){switch(t){case"pending":return"testando";case"ok":return"ok";case"warn":return"aviso";default:return"falha"}}function UQ(t){let e=ne(),o=t.check,n=BQ(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=_o(f,{name:"accent",children:a}),s="fgDim"}else o.status==="ok"?(r=_o(I,{name:"ok",role:"success"}),s="success"):o.status==="warn"?(r=_o(I,{name:"ask",role:"accent"}),s="accent"):(r=_o(I,{name:"err",role:"danger"}),s="danger");return ws(ml,{flexDirection:"column",children:[ws(ml,{children:[_o(jw,{children:" "}),r,_o(jw,{children:" "}),ws(f,{name:"fg",children:[o.label,":"]}),_o(jw,{children:" "}),o.detail!==void 0&&o.detail!==""?_o(f,{name:s,children:o.detail}):ws(f,{name:s,children:[n,"\u2026"]})]}),o.status!=="pending"&&o.status!=="ok"&&o.fix!==void 0&&_o(ml,{paddingLeft:4,children:ws(f,{name:"fgDim",children:["\u2192 ",o.fix]})})]})}function Hw(t){let e=t.checks,o=e.filter(s=>s.status==="pending").length,n=o>0?` (${o} testando)`:"",r=t.frame??0;return ws(ml,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[ws(ml,{children:[_o(I,{name:"clock",role:"accent"}),_o(f,{name:"fg",children:" doctor \u2014 diagn\xF3stico"}),n!==""&&_o(f,{name:"fgDim",children:n})]}),e.map(s=>_o(UQ,{check:s,frame:r},s.id)),t.summary!==void 0&&_o(ml,{paddingTop:1,children:ws(f,{name:"fgDim",children:["resumo: ",t.summary]})})]})}var tF=p(()=>{"use strict";ae()});import"react";import{Box as sn,Text as Nh}from"ink";import{jsx as je,jsxs as fo}from"react/jsx-runtime";function oF(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function Ww(t){let e=[`${Ft(t.tokens)} tokens`];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(xn(t.durationMs)),e.join(" \xB7 ")}function jQ(t){let e=t.node,o=e.kind==="root"?0:2,n=t.focused?"\u25B8":" ";return fo(sn,{paddingLeft:o,children:[fo(f,{name:t.focused?"accent":"fgDim",children:[n," "]}),fo(f,{name:"accent",children:["[",e.label,"]"]}),je(Nh,{children:" "}),je(f,{name:oF(e.phase),children:qw[e.phase]}),fo(f,{name:"fgDim",children:[" \xB7 ",Ww(e.accounting)]})]})}function HQ(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)+Te(` [${i.label}] ${qw[i.phase]} \xB7 ${Ww(i.accounting)}`);return Math.max(1,Math.ceil(l/o))}:void 0,{start:r,slice:s}=tr(t.overview,t.selected,e,n);return fo(sn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[fo(sn,{children:[je(I,{name:"subagents",role:"accent"}),je(f,{name:"fg",children:" \xE1rvore de fluxos \u2014 ver \xB7 parar \xB7 interagir"})]}),s.map((i,a)=>je(jQ,{node:i,focused:r+a===t.selected},i.id)),t.overview.length>s.length&&je(sn,{children:fo(f,{name:"fgDim",children:[" \u2026 ",t.overview.length-s.length," n\xF3s a mais (\u2191\u2193 rola)"]})}),je(sn,{paddingTop:1,children:je(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 qQ(t){let e=t.activity,o=[];return e.durationMs!==void 0&&o.push(xn(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(`${Ft(e.tokens)} tok`),fo(sn,{flexDirection:"column",paddingLeft:2,children:[fo(sn,{children:[e.running?je(I,{name:"clock",role:"depth"}):e.ok?je(I,{name:"ok",role:"success"}):je(I,{name:"err",role:"danger"}),je(Nh,{children:" "}),je(f,{name:"fg",children:e.tool}),e.target!==""&&fo(f,{name:"fgDim",children:[" ",e.target]}),je(Nh,{children:" "}),je(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&&fo(f,{name:"fgDim",children:[" \xB7 ",o.join(" \xB7 ")]})]}),e.running&&e.tail!==void 0&&e.tail!==""&&je(sn,{paddingLeft:4,children:je(f,{name:"fgDim",children:e.tail})})]})}function WQ(t){let e=t.node;return fo(sn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[fo(sn,{children:[je(I,{name:"subagents",role:"accent"}),je(f,{name:"fg",children:" "}),fo(f,{name:"accent",children:["[",e.label,"]"]}),je(Nh,{children:" "}),je(f,{name:oF(e.phase),children:qw[e.phase]}),fo(f,{name:"fgDim",children:[" \xB7 ",Ww(e.accounting)]})]}),e.recent.length===0?je(sn,{paddingLeft:2,children:je(f,{name:"fgDim",children:"sem atividade recente."})}):e.recent.map((o,n)=>je(qQ,{activity:o},`${o.tool}:${n}`)),je(sn,{paddingTop:1,children:je(f,{name:"fgDim",children:"p: parar este \xB7 i: interagir \xB7 esc/enter: volta \xE0 \xE1rvore"})})]})}function Gw(t){return t.drillIn?je(WQ,{node:t.drillIn}):je(HQ,{...t})}var qw,nF=p(()=>{"use strict";ae();Sn();ao();cl();qw={thinking:"pensando",tool:"rodando tool",asking:"aguardando confirma\xE7\xE3o",done:"conclu\xEDdo",cancelled:"parado",failed:"falhou"}});import"react";import{Box as an,Text as wu}from"ink";import{jsx as lt,jsxs as jt}from"react/jsx-runtime";function zQ(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function KQ(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 zw(t,e){return e<=1?t:wi(t,e)}function YQ(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(xn(t.durationMs)),t.tokens!==void 0&&e.push(`${Ft(t.tokens)} tok`),e.join(" \xB7 ")}function VQ(t){let e=[Ft(t.tokens)];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(xn(t.durationMs)),e.join(" \xB7 ")}function XQ(t){return t==="running"?"fgDim":t==="err"?"danger":"success"}function JQ(t){return t==="running"?"rodando":t==="err"?"erro":"ok"}function rF(t){let e=t.event,o=KQ(e),n=Math.max(4,t.cols-4-Te(e.label)-1),r=YQ(e),s=e.summary!==void 0&&e.summary!==""?e.summary:JQ(e.status);return jt(an,{flexDirection:"column",paddingLeft:2,children:[lt(an,{children:jt(wu,{wrap:"wrap",children:[lt(I,{name:o.glyph,role:o.role}),lt(wu,{children:" "}),lt(f,{name:"fg",children:e.label}),e.detail!==""&&jt(f,{name:"fgDim",children:[" ",zw(e.detail,n)]}),lt(wu,{children:" \xB7 "}),lt(f,{name:XQ(e.status),children:s}),r!==""&&jt(f,{name:"fgDim",children:[" \xB7 ",r]})]})}),e.status==="running"&&e.tail!==void 0&&e.tail!==""&<(an,{paddingLeft:4,children:lt(f,{name:"fgDim",children:zw(e.tail,Math.max(4,t.cols-4))})})]})}function QQ(t){let e=t.section,o=e.kind==="root"?0:1;return jt(an,{flexDirection:"column",paddingLeft:o,children:[jt(an,{children:[jt(f,{name:"fgDim",children:[e.collapsed?"\u25B6":"\u25BC"," "]}),jt(f,{name:"accent",children:["[",e.label,"]"]}),lt(wu,{children:" "}),lt(f,{name:zQ(e.phase),children:GQ[e.phase]}),jt(f,{name:"fgDim",children:[" \xB7 ",VQ(e)]}),e.collapsed&<(f,{name:"fgDim",children:" (colapsado)"})]}),!e.collapsed&&e.events.map((n,r)=>lt(rF,{event:n,cols:t.cols},`${e.id}:${r}`))]})}function ZQ(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 fl(t){let e=t.columns??40,o=ZQ(t.sections);if(o.length===0){let u=(t.bootInfo??[]).filter(h=>h.lines.length>0);return jt(an,{flexDirection:"column",children:[jt(an,{children:[lt(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),lt(f,{name:"fgDim",children:" \xB7 sem atividade ainda"})]}),u.map(h=>jt(an,{flexDirection:"column",children:[jt(an,{children:[lt(I,{name:"clock",role:"fgDim"}),lt(wu,{children:" "}),lt(f,{name:"accent",children:h.title})]}),h.lines.map((g,y)=>lt(an,{paddingLeft:2,children:lt(f,{name:"fgDim",children:zw(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 jt(an,{flexDirection:"column",children:[jt(an,{children:[lt(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),d>0&&jt(f,{name:"fgDim",children:[" \xB7 \u2191",d," acima"]}),m===0?lt(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"}):jt(f,{name:"fgDim",children:[" \xB7 \u2193",m," abaixo"]})]}),c.map((u,h)=>u.t==="header"?lt(QQ,{section:{...u.section,events:[]},cols:e},`h:${u.section.id}:${h}`):lt(rF,{event:u.event,cols:e},`e:${u.section.id}:${h}`))]})}var GQ,sF=p(()=>{"use strict";ae();Sn();ao();th();GQ={thinking:"pensando",tool:"rodando",asking:"confirmando",done:"ok",cancelled:"parado",failed:"falhou"}});import"react";import{Box as Rn,Text as nr}from"ink";import{jsx as wt,jsxs as ft}from"react/jsx-runtime";function Yw(t){let{score:e,running:o,startedAt:n}=t,s=(t.now??Date.now)()-n,i=Ba(s);if(e.unknownFormat)return ft(Rn,{flexDirection:"column",paddingLeft:2,children:[ft(Rn,{children:[wt(I,{name:"toolInflight",role:"depth"}),wt(nr,{children:" "}),ft(f,{name:"fgDim",children:["rodando testes\u2026 ",i]})]}),wt(Rn,{paddingLeft:2,children:wt(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 ft(Rn,{flexDirection:"column",paddingLeft:2,children:[wt(Rn,{children:a?wt(dl,{label:`${l}/${e.total} testes`,value:l,max:e.total,role:e.failed>0?"danger":"accent",frame:t.frame??0}):wt(dl,{label:"testes em andamento",elapsedMs:s,frame:t.frame??0})}),ft(Rn,{paddingLeft:1,children:[ft(f,{name:"success",children:[wt(I,{name:"ok",role:"success"}),ft(nr,{children:[" ",e.passed," passaram"]})]}),wt(nr,{children:" "}),ft(f,{name:c,children:[wt(I,{name:e.failed>0?"err":"ok",role:c}),ft(nr,{children:[" ",e.failed," falharam"]})]}),e.total>0&&wt(f,{name:"fgDim",children:ft(nr,{children:[" (total: ",e.total,")"]})}),wt(f,{name:"fgDim",children:ft(nr,{children:[" ",i]})})]}),e.durationMs!==void 0&&wt(Rn,{paddingLeft:1,children:ft(f,{name:"fgDim",children:["dura\xE7\xE3o: ",(e.durationMs/1e3).toFixed(2),"s"]})}),e.failures.length>0&&ft(Rn,{flexDirection:"column",paddingLeft:1,paddingTop:0,children:[ft(f,{name:"danger",children:["falhas (",Math.min(e.failures.length,e.failed),"):"]}),e.failures.slice(0,Kw).map((d,m)=>ft(Rn,{paddingLeft:2,children:[ft(f,{name:"danger",children:[wt(I,{name:"err",role:"danger"}),ft(nr,{children:[" ",d.name]})]}),d.message!==""&&wt(f,{name:"fgDim",children:ft(nr,{children:[": ",d.message.split(`
|
|
623
|
-
`)[0]?.slice(0,120)??""]})})]},m)),e.failures.length>Kw&&wt(Rn,{paddingLeft:2,children:ft(f,{name:"fgDim",children:["\u2026 e mais ",e.failures.length-Kw," falhas"]})})]}),!o&&wt(Rn,{paddingLeft:1,children:e.failed===0?ft(f,{name:"success",children:[wt(I,{name:"ok",role:"success"}),wt(nr,{children:" todos passaram"})]}):ft(f,{name:"danger",children:[wt(I,{name:"err",role:"danger"}),ft(nr,{children:[" ",e.failed," falharam"]})]})})]})}var Kw,iF=p(()=>{"use strict";ae();Mw();Sn();Kw=10});import"react";import{Box as e9,Text as t9}from"ink";import{jsx as Dh,jsxs as o9}from"react/jsx-runtime";function Vw(t){let e=t.accounting,o=[`${Ft(e.tokens)} tokens`];return e.toolCalls>0&&o.push(`${e.toolCalls} tools`),o.push(xn(e.durationMs)),o9(e9,{paddingLeft:2,children:[e.live?Dh(I,{name:"clock",role:"depth"}):Dh(I,{name:"ok",role:"success"}),Dh(t9,{children:" "}),Dh(f,{name:"fgDim",children:o.join(" \xB7 ")})]})}var aF=p(()=>{"use strict";ae();Sn()});import lF from"react";import{Box as n9,Text as cF}from"ink";import{Fragment as Jw,jsx as As,jsxs as Cn}from"react/jsx-runtime";function Xw(t){return t==="crit"?"danger":t==="warn"?"accent":"fgDim"}function Qw(t){let e=Ul(t.quota,t.now),o=_y(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 Cn(n9,{paddingLeft:2,children:[n!==void 0&&Cn(Jw,{children:[As(f,{name:"fgDim",children:"cr\xE9dito: "}),As(f,{name:Xw(e?.maxLevel??"ok"),children:n})]}),e!==void 0&&e.segments.map((s,i)=>Cn(lF.Fragment,{children:[(i>0||n!==void 0)&&As(f,{name:"fgDim",children:" \xB7 "}),Cn(f,{name:"fgDim",children:[s.label,": "]}),Cn(f,{name:Xw(s.level),children:[s.pct,"%"]})]},`q-${s.label}`)),e?.resetText!==void 0&&Cn(Jw,{children:[As(cF,{children:" "}),Cn(f,{name:"fgDim",children:["\xB7 ",e.resetText]})]}),e!==void 0&&r&&As(f,{name:"fgDim",children:" \xB7 "}),r&&o.segments.map((s,i)=>Cn(lF.Fragment,{children:[i>0&&As(f,{name:"fgDim",children:" \xB7 "}),Cn(f,{name:"fgDim",children:[s.label,": "]}),As(f,{name:Xw(s.level),children:s.value})]},`s-${s.label}`)),r&&o.resetText!==void 0&&Cn(Jw,{children:[As(cF,{children:" "}),Cn(f,{name:"fgDim",children:["\xB7 ",o.resetText]})]})]})}var dF=p(()=>{"use strict";N();ae()});import"react";import{jsx as s9}from"react/jsx-runtime";function Li(t){let o=ne().box.horizontal,n=Math.max(1,t.columns??80),r=t.subtle?Math.min(r9,n):n,s=t.subtle?"fgDim":t.role??"fgDim",i=o.repeat(r);return s9(f,{name:s,children:i})}var r9,uF=p(()=>{"use strict";ae();r9=12});var $h=p(()=>{"use strict";qN();yi();GN();tD();sD();e$();r$();i$();a$();l$();c$();d$();u$();b$();v$();x$();S$();_$();C$();O$();M$();L$();P$();D$();F$();U$();yh();j$();Mw();lu();Pw();Y$();X$();J$();Q$();eF();tF();nF();sF();iF();aF();dF();uF()});import{useEffect as i9,useState as a9}from"react";function Au(t={}){let e=t.enabled??!0,o=t.intervalMs??l9,[n,r]=a9(0);return i9(()=>{if(!e)return;let s=setInterval(()=>r(i=>i+1),o);return()=>clearInterval(s)},[e,o]),e?n:0}var l9,Zw=p(()=>{"use strict";l9=120});import{useCallback as rr,useMemo as c9,useRef as d9,useState as pl}from"react";function mF(t){let[e,o]=pl(!1),[n,r]=pl(""),[s,i]=pl(0),[a,l]=pl([]),[c,d]=pl([]),[m,u]=pl(null),h=d9(!1),g=c9(()=>Hx(n,a),[n,a]),y=rr(async()=>{if(!h.current){h.current=!0;try{let $=await t.fileIndex.list();l($.filter(te=>Yk(te)))}catch{l([])}}},[t.fileIndex]),b=rr(()=>{o(!0),r(""),i(0),y()},[y]),w=rr(()=>{o(!1),r(""),i(0)},[]),T=rr($=>{r($),i(0)},[]),A=rr($=>{i(te=>{let oe=Math.max(0,g.length-1);return Math.min(oe,Math.max(0,te+$))})},[g.length]),M=rr(async($,te)=>{let oe=await t.attachReader.attach($,te!==void 0?{confirmSensitive:te}:{});return oe.kind==="rejected"?(u(`@${oe.path||$} \u2014 ${oe.reason}`),null):(u(null),d(J=>J.some(D=>D.path===oe.path)?J:[...J,{path:oe.path,item:oe.item,truncated:oe.truncated}]),oe.path)},[t.attachReader]),B=rr(async()=>{let $=g[s];return w(),$?M($.path):null},[g,s,w,M]),H=rr(()=>{d($=>$.length===0?$:$.slice(0,-1))},[]),G=rr(()=>d([]),[]),Y=rr(()=>u(null),[]);return{open:e,query:n,selected:s,hits:g,attachments:c,notice:m,openPicker:b,closePicker:w,setQuery:T,move:A,confirm:B,removeLast:H,clear:G,dismissNotice:Y,attachPath:M}}var fF=p(()=>{"use strict";Fd()});import{useCallback as po,useMemo as Es,useRef as u9,useState as Ro}from"react";function pF(t,e){return t.id.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e)}function hF(t){let[e,o]=Ro(!1),[n,r]=Ro(0),[s,i]=Ro([]),[a,l]=Ro(!1),[c,d]=Ro(null),[m,u]=Ro(!1),[h,g]=Ro(""),[y,b]=Ro(0),[w,T]=Ro(!1),[A,M]=Ro(null),[B,H]=Ro(0),[G,Y]=Ro(!1),[$,te]=Ro(""),oe=u9(!1),J=Es(()=>tc(),[]),[D,z]=Ro([]),xe=po(V=>{let U=V.findIndex(k=>k.key===t.currentTier);return U>=0?U:0},[t.currentTier]),K=po(async()=>{if(oe.current)return;oe.current=!0,l(!0);let V=async()=>{try{let k=await t.catalog.list();k.length===0?(i(kn),d(!0)):(i(k),d(!1)),r(xe(k.length===0?kn:k))}catch{i(kn),d(!0),r(xe(kn))}},U=async()=>{if(!t.customModels){z([]);return}try{z(await t.customModels.list())}catch{z([])}};try{await Promise.all([V(),U()])}finally{l(!1)}},[t.catalog,t.customModels,xe]),ue=po(()=>{o(!0),u(!1),g(""),b(0),T(!1),M(null),H(0),Y(!1),te(""),K()},[K]),Z=po(()=>{o(!1),u(!1),g(""),b(0),T(!1),M(null),H(0),Y(!1),te("")},[]),ie=s.length,P=e&&n===ie,ge=po(V=>{m||r(U=>{let k=Math.max(0,s.length);return Math.min(k,Math.max(0,U+V))})},[s.length,m]),ee=Es(()=>{let V=h.trim().toLowerCase();return D.filter(U=>!(w&&U.supportsTools!==!0||V!==""&&!pF(U,V)))},[D,h,w]),le=ee.length===0?-1:Math.min(Math.max(0,y),ee.length-1),Ce=Es(()=>{if(ee.length<=Eu||le<0)return 0;let V=Math.floor(Eu/2),U=ee.length-Eu;return Math.min(Math.max(0,le-V),U)},[ee.length,le]),Oo=Es(()=>ee.slice(Ce,Ce+Eu).map((V,U)=>({model:V,highlighted:Ce+U===le})),[ee,Ce,le]),Le=Es(()=>{if(!m||le<0)return null;let V=ee[le];return V&&V.supportsTools===!1?V.id:null},[m,le,ee]),ct=Es(()=>{let V=h.trim().toLowerCase();return V===""||D.length===0?[]:D.filter(U=>pF(U,V)).slice(0,8).map(m9)},[h,D]),pt=Es(()=>{let V=h.trim();if(V===""||D.length===0)return!1;let U=V.toLowerCase();return!D.some(k=>k.id.toLowerCase()===U)},[h,D]),ht=po(V=>{m&&b(U=>{let k=ee.length;return k===0?0:Math.min(k-1,Math.max(0,U+V))})},[m,ee.length]),gt=po(()=>{m&&(T(V=>!V),b(0))},[m]),dt=po(V=>{M(V),H(0),Y(!1),te(""),u(!1)},[]),Zt=po(()=>{if(A){if(G){let Mo=Ny($);if(Mo===null)return null;let $e=A;return Z(),{model:$e,effort:Mo}}if(J[Qi(B)]?.kind==="custom")return Y(!0),te(""),null;let k=Iy(Qi(B));if(k===null)return null;let tt=A;return Z(),{model:tt,effort:k}}if(m){let U=le>=0?ee[le]:void 0;if(U)return dt(U.supportsTools===void 0?{kind:"custom",model:U.id}:{kind:"custom",model:U.id,supportsTools:U.supportsTools}),null;let k=h.trim();return k===""||dt({kind:"custom",model:k}),null}if(n===ie)return u(!0),g(""),b(0),T(!1),null;let V=s[n];return V&&dt({kind:"tier",key:V.key}),null},[A,G,$,J,B,s,n,ie,m,h,ee,le,Z,dt]),eo=po(V=>{!A||G||H(U=>Qi(U+V))},[A,G]),L=po(V=>{if(!G)return;let U=V.replace(/[\r\n\t]/g,"");U!==""&&te(k=>k+U)},[G]),X=po(()=>{G&&te(V=>V.slice(0,-1))},[G]),ke=po(()=>G?(Y(!1),te(""),!0):A?(M(null),H(0),!0):!1,[G,A]),Se=Es(()=>{if(!G)return null;let V=Tm($);return V.ok?null:V.reason},[G,$]),Pe=po(V=>{if(!m)return;let U=V.replace(/[\r\n\t]/g,"");U!==""&&(b(0),g(k=>k+U))},[m]),De=po(()=>{m&&(b(0),g(V=>V.slice(0,-1)))},[m]);return{open:e,selected:n,tiers:s,loading:a,usingFallback:c,customSelected:P,customInputOpen:m,customInput:h,customSuggestions:ct,customWarnOutOfCatalog:pt,customBrowserAvailable:D.length>0,customFilteredCount:ee.length,customTotalCount:D.length,customRows:Oo,customBrowseIndex:le,customHasMoreAbove:Ce>0,customHasMoreBelow:Ce+Eu<ee.length,customToolsOnly:w,customNoToolsWarning:Le,openPicker:ue,closePicker:Z,move:ge,confirm:Zt,appendCustom:Pe,backspaceCustom:De,browseMove:ht,toggleToolsOnly:gt,effortStepOpen:A!==null,effortOptions:J,effortSelected:Qi(B),currentEffort:t.currentEffort,effortCustomOpen:G,effortCustomInput:$,effortCustomWarn:Se,effortMove:eo,appendEffortCustom:L,backspaceEffortCustom:X,backFromEffort:ke}}function m9(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 Eu,gF=p(()=>{"use strict";N();Cr();Eu=10});import{useCallback as Fh,useState as eA}from"react";function yF(t){let e=[];e.push({kind:"mode",mode:t.mode,actionable:!0});for(let o of sm)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 Yg)e.push({kind:"locked",category:o,actionable:!1});return e}function bF(t){let[e,o]=eA(!1),[n,r]=eA(0),[s,i]=eA(0),a=yF(t),l=Fh(()=>{o(!0),r(0),i(u=>u+1)},[]),c=Fh(()=>{o(!1)},[]),d=Fh(u=>{r(h=>{let g=Math.max(0,a.length-1);return Math.min(g,Math.max(0,h+u))})},[a.length]),m=Fh(()=>{let u=a[n];if(!(!u||!u.actionable)){switch(u.kind){case"mode":t.setMode(tS(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,yF(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 vF=p(()=>{"use strict";N();oS()});import{useCallback as Bh,useState as kF}from"react";function xF(t){let e=Fo.findIndex(o=>o.name===t);return e>=0?e:0}function SF(t){let[e,o]=kF(!1),[n,r]=kF(()=>xF(t.currentTheme)),s=Bh(()=>{r(xF(t.currentTheme)),o(!0)},[t.currentTheme]),i=Bh(()=>{o(!1)},[]),a=Bh(c=>{r(d=>{let m=Math.max(0,Fo.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Bh(()=>{let c=Fo[n];return o(!1),c?c.name:null},[n]);return{open:e,selected:n,themes:Fo,openPicker:s,closePicker:i,move:a,confirm:l}}var wF=p(()=>{"use strict";os()});import{useCallback as Uh,useState as AF}from"react";function EF(t){let e=Dt.findIndex(o=>o.code===t);return e>=0?e:0}function TF(t){let[e,o]=AF(!1),[n,r]=AF(()=>EF(t.currentLang)),s=Uh(()=>{r(EF(t.currentLang)),o(!0)},[t.currentLang]),i=Uh(()=>{o(!1)},[]),a=Uh(c=>{r(d=>{let m=Math.max(0,Dt.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Uh(()=>{let c=Dt[n];return o(!1),c?c.code:null},[n]);return{open:e,selected:n,langs:Dt,openPicker:s,closePicker:i,move:a,confirm:l}}var _F=p(()=>{"use strict";yt()});function jh(t,e=ln){let o=t.trim().toLowerCase();if(o!=="")return e.find(n=>n.name.toLowerCase()===o)}function RF(t,e=ln){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:f9(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 f9(t){return t.charAt(0).toUpperCase()+t.slice(1)}var ln,Hh=p(()=>{"use strict";ln=[{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 Tu,useRef as p9,useState as _u}from"react";function Ru(t,e){if(e===void 0)return 0;let o=t.findIndex(n=>n.name.toLowerCase()===e.toLowerCase());return o>=0?o:0}function CF(t){let[e,o]=_u(!1),[n,r]=_u(ln),[s,i]=_u(()=>Ru(ln,t.currentProvider)),[a,l]=_u(!1),[c,d]=_u(null),m=p9(!1),u=Tu(async()=>{if(!m.current){if(m.current=!0,!t.providersClient){r(ln),d(!0),i(Ru(ln,t.currentProvider));return}l(!0);try{let w=await t.providersClient.list(),T=RF(w),A=w.length===0;r(T),d(A),i(Ru(T,t.currentProvider))}catch{r(ln),d(!0),i(Ru(ln,t.currentProvider))}finally{l(!1)}}},[t.providersClient,t.currentProvider]),h=Tu(()=>{i(Ru(n,t.currentProvider)),o(!0),u()},[t.currentProvider,n,u]),g=Tu(()=>{o(!1)},[]),y=Tu(w=>{i(T=>{let A=Math.max(0,n.length-1);return Math.min(A,Math.max(0,T+w))})},[n.length]),b=Tu(()=>{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 OF=p(()=>{"use strict";Hh()});import{useCallback as qh,useState as tA}from"react";function MF(t){let[e,o]=tA(!1),[n,r]=tA(0),[s,i]=tA([]),a=qh(()=>{i(pw(t.store,t.limit??fw)),r(0),o(!0)},[t.store,t.limit]),l=qh(()=>{o(!1)},[]),c=qh(m=>{r(u=>{let h=Math.max(0,s.length-1);return Math.min(h,Math.max(0,u+m))})},[s.length]),d=qh(()=>{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 LF=p(()=>{"use strict";Th()});import{useCallback as Cu,useState as Wh}from"react";function PF(t){let[e,o]=Wh("closed"),[n,r]=Wh(0),[s,i]=Wh([]),[a,l]=Wh(0),c=Cu(()=>{let g=[];try{g=R$(t.source.list(),t.limit??30)}catch{g=[]}i(g),r(0),l(0),o("list")},[t.source,t.limit]),d=Cu(()=>{o("closed")},[]),m=Cu(g=>{r(y=>{let b=e==="action"?Rh.length:s.length,w=Math.max(0,b-1);return Math.min(w,Math.max(0,y+g))})},[e,s.length]),u=Cu(()=>{if(e==="list")return s.length===0||(l(n),r(0),o("action")),null;if(e==="action"){let g=s[a],y=Rh[n];return o("closed"),!g||!y?null:{checkpointId:g.id,action:y}}return null},[e,s,n,a]),h=Cu(()=>{if(e==="action"){r(a),o("list");return}o("closed")},[e,a]);return{phase:e,open:e!=="closed",selected:n,checkpoints:s,actions:Rh,target:e==="action"?s[a]:void 0,openPicker:c,closePicker:d,move:m,confirm:u,back:h}}var IF=p(()=>{"use strict";gw()});import{useCallback as Ou,useMemo as g9,useState as oA}from"react";function NF(t={}){let[e,o]=oA(!1),[n,r]=oA(""),[s,i]=oA(0),a=t.userCommands??[],l=t.natives,c=g9(()=>h$(n,a,l),[n,a,l]),d=Ou(()=>{r(""),i(0),o(!0)},[]),m=Ou(()=>{o(!1)},[]),u=Ou(y=>{r(y),i(0)},[]),h=Ou(y=>{i(b=>{let w=Math.max(0,c.length-1);return Math.min(w,Math.max(0,b+y))})},[c.length]),g=Ou(()=>{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 DF=p(()=>{"use strict";il()});function $F(t){let e=t.trim();if(e==="")return{kind:"stop"};if(y9.test(e)){let o=e.replace(b9,"").trim();return o===""?{kind:"stop"}:{kind:"redirect",inject:o}}return{kind:"redirect",inject:e}}var y9,b9,FF=p(()=>{"use strict";y9=/^\/ask(?=\s|$)/i,b9=/^\/ask\s*/i});function BF(t,e=!0){return t==="thinking"||t==="boot"||t==="compacting"?!0:t==="streaming"||t==="retrying"?e:!1}function UF(t){return t==="thinking"||t==="streaming"||t==="retrying"||t==="compacting"}var jF=p(()=>{"use strict"});import{appendFileSync as v9}from"node:fs";import{homedir as k9}from"node:os";import{join as x9}from"node:path";function S9(t=process.env){let e=t.ALUY_DEBUG_RENDER;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function Gh(t){if(S9())try{nA===void 0&&(nA=x9(k9(),".aluy","render-debug.log")),v9(nA,`${new Date().toISOString()} ${t}
|
|
622
|
+
`).map((i,a)=>rn(Mi,{children:[rn(f,{name:"fgDim",children:[e.box.vertical," "]}),_n(f,{name:n||o?"danger":"fg",children:i})]},a)),rn(f,{name:"fgDim",children:[e.box.bottomLeft," ",r," ",e.box.horizontal.repeat(4)]})]})]})}var NQ,DQ,Q$=p(()=>{"use strict";ae();yh();ao();el();NQ=4,DQ="shell"});import"react";import{Box as Bw,Text as Z$}from"ink";import{jsx as or,jsxs as ul}from"react/jsx-runtime";function $Q(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 FQ(t){let e=t.child,o=$Q(e),n=e.status==="running"?or(I,{name:"clock",role:"depth"}):e.status==="done"?or(I,{name:"ok",role:"success"}):e.status==="cancelled"?or(I,{name:"err",role:"fgDim"}):or(I,{name:"err",role:"danger"}),r=e.status==="done"?"success":e.status==="fail"?"danger":"fgDim";return ul(Bw,{paddingLeft:2,children:[ul(f,{name:"accent",children:["[",e.label,"]"]}),or(Z$,{children:" "}),n,or(Z$,{children:" "}),or(f,{name:r,children:o}),e.summary!==void 0&&e.status!=="running"&&ul(f,{name:"fgDim",children:[" \xB7 ",e.summary]})]})}function Uw(t){let e=t.childrenStatus,o=e.length,n=e.filter(s=>s.status==="running").length,r=n>0?` (${n} rodando)`:"";return ul(Bw,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[ul(Bw,{children:[or(I,{name:"subagents",role:"accent"}),ul(f,{name:"fg",children:[" ",o," sub-agente",o===1?"":"s",":"]}),r!==""&&or(f,{name:"fgDim",children:r})]}),e.map((s,i)=>or(FQ,{child:s},`${s.label}:${i}`))]})}var eF=p(()=>{"use strict";ae()});import"react";import{Box as ml,Text as jw}from"ink";import{jsx as _o,jsxs as ws}from"react/jsx-runtime";function BQ(t){switch(t){case"pending":return"testando";case"ok":return"ok";case"warn":return"aviso";default:return"falha"}}function UQ(t){let e=ne(),o=t.check,n=BQ(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=_o(f,{name:"accent",children:a}),s="fgDim"}else o.status==="ok"?(r=_o(I,{name:"ok",role:"success"}),s="success"):o.status==="warn"?(r=_o(I,{name:"ask",role:"accent"}),s="accent"):(r=_o(I,{name:"err",role:"danger"}),s="danger");return ws(ml,{flexDirection:"column",children:[ws(ml,{children:[_o(jw,{children:" "}),r,_o(jw,{children:" "}),ws(f,{name:"fg",children:[o.label,":"]}),_o(jw,{children:" "}),o.detail!==void 0&&o.detail!==""?_o(f,{name:s,children:o.detail}):ws(f,{name:s,children:[n,"\u2026"]})]}),o.status!=="pending"&&o.status!=="ok"&&o.fix!==void 0&&_o(ml,{paddingLeft:4,children:ws(f,{name:"fgDim",children:["\u2192 ",o.fix]})})]})}function Hw(t){let e=t.checks,o=e.filter(s=>s.status==="pending").length,n=o>0?` (${o} testando)`:"",r=t.frame??0;return ws(ml,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[ws(ml,{children:[_o(I,{name:"clock",role:"accent"}),_o(f,{name:"fg",children:" doctor \u2014 diagn\xF3stico"}),n!==""&&_o(f,{name:"fgDim",children:n})]}),e.map(s=>_o(UQ,{check:s,frame:r},s.id)),t.summary!==void 0&&_o(ml,{paddingTop:1,children:ws(f,{name:"fgDim",children:["resumo: ",t.summary]})})]})}var tF=p(()=>{"use strict";ae()});import"react";import{Box as sn,Text as Nh}from"ink";import{jsx as je,jsxs as fo}from"react/jsx-runtime";function oF(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function Ww(t){let e=[`${Ft(t.tokens)} tokens`];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(xn(t.durationMs)),e.join(" \xB7 ")}function jQ(t){let e=t.node,o=e.kind==="root"?0:2,n=t.focused?"\u25B8":" ";return fo(sn,{paddingLeft:o,children:[fo(f,{name:t.focused?"accent":"fgDim",children:[n," "]}),fo(f,{name:"accent",children:["[",e.label,"]"]}),je(Nh,{children:" "}),je(f,{name:oF(e.phase),children:qw[e.phase]}),fo(f,{name:"fgDim",children:[" \xB7 ",Ww(e.accounting)]})]})}function HQ(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)+Te(` [${i.label}] ${qw[i.phase]} \xB7 ${Ww(i.accounting)}`);return Math.max(1,Math.ceil(l/o))}:void 0,{start:r,slice:s}=tr(t.overview,t.selected,e,n);return fo(sn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[fo(sn,{children:[je(I,{name:"subagents",role:"accent"}),je(f,{name:"fg",children:" \xE1rvore de fluxos \u2014 ver \xB7 parar \xB7 interagir"})]}),s.map((i,a)=>je(jQ,{node:i,focused:r+a===t.selected},i.id)),t.overview.length>s.length&&je(sn,{children:fo(f,{name:"fgDim",children:[" \u2026 ",t.overview.length-s.length," n\xF3s a mais (\u2191\u2193 rola)"]})}),je(sn,{paddingTop:1,children:je(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 qQ(t){let e=t.activity,o=[];return e.durationMs!==void 0&&o.push(xn(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(`${Ft(e.tokens)} tok`),fo(sn,{flexDirection:"column",paddingLeft:2,children:[fo(sn,{children:[e.running?je(I,{name:"clock",role:"depth"}):e.ok?je(I,{name:"ok",role:"success"}):je(I,{name:"err",role:"danger"}),je(Nh,{children:" "}),je(f,{name:"fg",children:e.tool}),e.target!==""&&fo(f,{name:"fgDim",children:[" ",e.target]}),je(Nh,{children:" "}),je(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&&fo(f,{name:"fgDim",children:[" \xB7 ",o.join(" \xB7 ")]})]}),e.running&&e.tail!==void 0&&e.tail!==""&&je(sn,{paddingLeft:4,children:je(f,{name:"fgDim",children:e.tail})})]})}function WQ(t){let e=t.node;return fo(sn,{flexDirection:"column",paddingLeft:2,paddingBottom:1,children:[fo(sn,{children:[je(I,{name:"subagents",role:"accent"}),je(f,{name:"fg",children:" "}),fo(f,{name:"accent",children:["[",e.label,"]"]}),je(Nh,{children:" "}),je(f,{name:oF(e.phase),children:qw[e.phase]}),fo(f,{name:"fgDim",children:[" \xB7 ",Ww(e.accounting)]})]}),e.recent.length===0?je(sn,{paddingLeft:2,children:je(f,{name:"fgDim",children:"sem atividade recente."})}):e.recent.map((o,n)=>je(qQ,{activity:o},`${o.tool}:${n}`)),je(sn,{paddingTop:1,children:je(f,{name:"fgDim",children:"p: parar este \xB7 i: interagir \xB7 esc/enter: volta \xE0 \xE1rvore"})})]})}function Gw(t){return t.drillIn?je(WQ,{node:t.drillIn}):je(HQ,{...t})}var qw,nF=p(()=>{"use strict";ae();Sn();ao();cl();qw={thinking:"pensando",tool:"rodando tool",asking:"aguardando confirma\xE7\xE3o",done:"conclu\xEDdo",cancelled:"parado",failed:"falhou"}});import"react";import{Box as an,Text as wu}from"ink";import{jsx as lt,jsxs as jt}from"react/jsx-runtime";function zQ(t){switch(t){case"done":return"success";case"cancelled":return"fgDim";case"failed":return"danger";default:return"accent"}}function KQ(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 zw(t,e){return e<=1?t:wi(t,e)}function YQ(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(xn(t.durationMs)),t.tokens!==void 0&&e.push(`${Ft(t.tokens)} tok`),e.join(" \xB7 ")}function VQ(t){let e=[Ft(t.tokens)];return t.toolCalls>0&&e.push(`${t.toolCalls} tools`),e.push(xn(t.durationMs)),e.join(" \xB7 ")}function XQ(t){return t==="running"?"fgDim":t==="err"?"danger":"success"}function JQ(t){return t==="running"?"rodando":t==="err"?"erro":"ok"}function rF(t){let e=t.event,o=KQ(e),n=Math.max(4,t.cols-4-Te(e.label)-1),r=YQ(e),s=e.summary!==void 0&&e.summary!==""?e.summary:JQ(e.status);return jt(an,{flexDirection:"column",paddingLeft:2,children:[lt(an,{children:jt(wu,{wrap:"wrap",children:[lt(I,{name:o.glyph,role:o.role}),lt(wu,{children:" "}),lt(f,{name:"fg",children:e.label}),e.detail!==""&&jt(f,{name:"fgDim",children:[" ",zw(e.detail,n)]}),lt(wu,{children:" \xB7 "}),lt(f,{name:XQ(e.status),children:s}),r!==""&&jt(f,{name:"fgDim",children:[" \xB7 ",r]})]})}),e.status==="running"&&e.tail!==void 0&&e.tail!==""&<(an,{paddingLeft:4,children:lt(f,{name:"fgDim",children:zw(e.tail,Math.max(4,t.cols-4))})})]})}function QQ(t){let e=t.section,o=e.kind==="root"?0:1;return jt(an,{flexDirection:"column",paddingLeft:o,children:[jt(an,{children:[jt(f,{name:"fgDim",children:[e.collapsed?"\u25B6":"\u25BC"," "]}),jt(f,{name:"accent",children:["[",e.label,"]"]}),lt(wu,{children:" "}),lt(f,{name:zQ(e.phase),children:GQ[e.phase]}),jt(f,{name:"fgDim",children:[" \xB7 ",VQ(e)]}),e.collapsed&<(f,{name:"fgDim",children:" (colapsado)"})]}),!e.collapsed&&e.events.map((n,r)=>lt(rF,{event:n,cols:t.cols},`${e.id}:${r}`))]})}function ZQ(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 fl(t){let e=t.columns??40,o=ZQ(t.sections);if(o.length===0){let u=(t.bootInfo??[]).filter(h=>h.lines.length>0);return jt(an,{flexDirection:"column",children:[jt(an,{children:[lt(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),lt(f,{name:"fgDim",children:" \xB7 sem atividade ainda"})]}),u.map(h=>jt(an,{flexDirection:"column",children:[jt(an,{children:[lt(I,{name:"clock",role:"fgDim"}),lt(wu,{children:" "}),lt(f,{name:"accent",children:h.title})]}),h.lines.map((g,y)=>lt(an,{paddingLeft:2,children:lt(f,{name:"fgDim",children:zw(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 jt(an,{flexDirection:"column",children:[jt(an,{children:[lt(f,{name:t.focused?"accent":"fgDim",children:"LOG"}),d>0&&jt(f,{name:"fgDim",children:[" \xB7 \u2191",d," acima"]}),m===0?lt(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"}):jt(f,{name:"fgDim",children:[" \xB7 \u2193",m," abaixo"]})]}),c.map((u,h)=>u.t==="header"?lt(QQ,{section:{...u.section,events:[]},cols:e},`h:${u.section.id}:${h}`):lt(rF,{event:u.event,cols:e},`e:${u.section.id}:${h}`))]})}var GQ,sF=p(()=>{"use strict";ae();Sn();ao();th();GQ={thinking:"pensando",tool:"rodando",asking:"confirmando",done:"ok",cancelled:"parado",failed:"falhou"}});import"react";import{Box as Rn,Text as nr}from"ink";import{jsx as wt,jsxs as pt}from"react/jsx-runtime";function Yw(t){let{score:e,running:o,startedAt:n}=t,s=(t.now??Date.now)()-n,i=Ba(s);if(e.unknownFormat)return pt(Rn,{flexDirection:"column",paddingLeft:2,children:[pt(Rn,{children:[wt(I,{name:"toolInflight",role:"depth"}),wt(nr,{children:" "}),pt(f,{name:"fgDim",children:["rodando testes\u2026 ",i]})]}),wt(Rn,{paddingLeft:2,children:wt(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 pt(Rn,{flexDirection:"column",paddingLeft:2,children:[wt(Rn,{children:a?wt(dl,{label:`${l}/${e.total} testes`,value:l,max:e.total,role:e.failed>0?"danger":"accent",frame:t.frame??0}):wt(dl,{label:"testes em andamento",elapsedMs:s,frame:t.frame??0})}),pt(Rn,{paddingLeft:1,children:[pt(f,{name:"success",children:[wt(I,{name:"ok",role:"success"}),pt(nr,{children:[" ",e.passed," passaram"]})]}),wt(nr,{children:" "}),pt(f,{name:c,children:[wt(I,{name:e.failed>0?"err":"ok",role:c}),pt(nr,{children:[" ",e.failed," falharam"]})]}),e.total>0&&wt(f,{name:"fgDim",children:pt(nr,{children:[" (total: ",e.total,")"]})}),wt(f,{name:"fgDim",children:pt(nr,{children:[" ",i]})})]}),e.durationMs!==void 0&&wt(Rn,{paddingLeft:1,children:pt(f,{name:"fgDim",children:["dura\xE7\xE3o: ",(e.durationMs/1e3).toFixed(2),"s"]})}),e.failures.length>0&&pt(Rn,{flexDirection:"column",paddingLeft:1,paddingTop:0,children:[pt(f,{name:"danger",children:["falhas (",Math.min(e.failures.length,e.failed),"):"]}),e.failures.slice(0,Kw).map((d,m)=>pt(Rn,{paddingLeft:2,children:[pt(f,{name:"danger",children:[wt(I,{name:"err",role:"danger"}),pt(nr,{children:[" ",d.name]})]}),d.message!==""&&wt(f,{name:"fgDim",children:pt(nr,{children:[": ",d.message.split(`
|
|
623
|
+
`)[0]?.slice(0,120)??""]})})]},m)),e.failures.length>Kw&&wt(Rn,{paddingLeft:2,children:pt(f,{name:"fgDim",children:["\u2026 e mais ",e.failures.length-Kw," falhas"]})})]}),!o&&wt(Rn,{paddingLeft:1,children:e.failed===0?pt(f,{name:"success",children:[wt(I,{name:"ok",role:"success"}),wt(nr,{children:" todos passaram"})]}):pt(f,{name:"danger",children:[wt(I,{name:"err",role:"danger"}),pt(nr,{children:[" ",e.failed," falharam"]})]})})]})}var Kw,iF=p(()=>{"use strict";ae();Mw();Sn();Kw=10});import"react";import{Box as e9,Text as t9}from"ink";import{jsx as Dh,jsxs as o9}from"react/jsx-runtime";function Vw(t){let e=t.accounting,o=[`${Ft(e.tokens)} tokens`];return e.toolCalls>0&&o.push(`${e.toolCalls} tools`),o.push(xn(e.durationMs)),o9(e9,{paddingLeft:2,children:[e.live?Dh(I,{name:"clock",role:"depth"}):Dh(I,{name:"ok",role:"success"}),Dh(t9,{children:" "}),Dh(f,{name:"fgDim",children:o.join(" \xB7 ")})]})}var aF=p(()=>{"use strict";ae();Sn()});import lF from"react";import{Box as n9,Text as cF}from"ink";import{Fragment as Jw,jsx as As,jsxs as Cn}from"react/jsx-runtime";function Xw(t){return t==="crit"?"danger":t==="warn"?"accent":"fgDim"}function Qw(t){let e=Ul(t.quota,t.now),o=_y(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 Cn(n9,{paddingLeft:2,children:[n!==void 0&&Cn(Jw,{children:[As(f,{name:"fgDim",children:"cr\xE9dito: "}),As(f,{name:Xw(e?.maxLevel??"ok"),children:n})]}),e!==void 0&&e.segments.map((s,i)=>Cn(lF.Fragment,{children:[(i>0||n!==void 0)&&As(f,{name:"fgDim",children:" \xB7 "}),Cn(f,{name:"fgDim",children:[s.label,": "]}),Cn(f,{name:Xw(s.level),children:[s.pct,"%"]})]},`q-${s.label}`)),e?.resetText!==void 0&&Cn(Jw,{children:[As(cF,{children:" "}),Cn(f,{name:"fgDim",children:["\xB7 ",e.resetText]})]}),e!==void 0&&r&&As(f,{name:"fgDim",children:" \xB7 "}),r&&o.segments.map((s,i)=>Cn(lF.Fragment,{children:[i>0&&As(f,{name:"fgDim",children:" \xB7 "}),Cn(f,{name:"fgDim",children:[s.label,": "]}),As(f,{name:Xw(s.level),children:s.value})]},`s-${s.label}`)),r&&o.resetText!==void 0&&Cn(Jw,{children:[As(cF,{children:" "}),Cn(f,{name:"fgDim",children:["\xB7 ",o.resetText]})]})]})}var dF=p(()=>{"use strict";N();ae()});import"react";import{jsx as s9}from"react/jsx-runtime";function Li(t){let o=ne().box.horizontal,n=Math.max(1,t.columns??80),r=t.subtle?Math.min(r9,n):n,s=t.subtle?"fgDim":t.role??"fgDim",i=o.repeat(r);return s9(f,{name:s,children:i})}var r9,uF=p(()=>{"use strict";ae();r9=12});var $h=p(()=>{"use strict";qN();yi();GN();tD();sD();e$();r$();i$();a$();l$();c$();d$();u$();b$();v$();x$();S$();_$();C$();O$();M$();L$();P$();D$();F$();U$();yh();j$();Mw();lu();Pw();Y$();X$();J$();Q$();eF();tF();nF();sF();iF();aF();dF();uF()});import{useEffect as i9,useState as a9}from"react";function Au(t={}){let e=t.enabled??!0,o=t.intervalMs??l9,[n,r]=a9(0);return i9(()=>{if(!e)return;let s=setInterval(()=>r(i=>i+1),o);return()=>clearInterval(s)},[e,o]),e?n:0}var l9,Zw=p(()=>{"use strict";l9=120});import{useCallback as rr,useMemo as c9,useRef as d9,useState as pl}from"react";function mF(t){let[e,o]=pl(!1),[n,r]=pl(""),[s,i]=pl(0),[a,l]=pl([]),[c,d]=pl([]),[m,u]=pl(null),h=d9(!1),g=c9(()=>Hx(n,a),[n,a]),y=rr(async()=>{if(!h.current){h.current=!0;try{let $=await t.fileIndex.list();l($.filter(te=>Yk(te)))}catch{l([])}}},[t.fileIndex]),b=rr(()=>{o(!0),r(""),i(0),y()},[y]),w=rr(()=>{o(!1),r(""),i(0)},[]),T=rr($=>{r($),i(0)},[]),A=rr($=>{i(te=>{let oe=Math.max(0,g.length-1);return Math.min(oe,Math.max(0,te+$))})},[g.length]),M=rr(async($,te)=>{let oe=await t.attachReader.attach($,te!==void 0?{confirmSensitive:te}:{});return oe.kind==="rejected"?(u(`@${oe.path||$} \u2014 ${oe.reason}`),null):(u(null),d(J=>J.some(D=>D.path===oe.path)?J:[...J,{path:oe.path,item:oe.item,truncated:oe.truncated}]),oe.path)},[t.attachReader]),B=rr(async()=>{let $=g[s];return w(),$?M($.path):null},[g,s,w,M]),H=rr(()=>{d($=>$.length===0?$:$.slice(0,-1))},[]),G=rr(()=>d([]),[]),Y=rr(()=>u(null),[]);return{open:e,query:n,selected:s,hits:g,attachments:c,notice:m,openPicker:b,closePicker:w,setQuery:T,move:A,confirm:B,removeLast:H,clear:G,dismissNotice:Y,attachPath:M}}var fF=p(()=>{"use strict";Fd()});import{useCallback as po,useMemo as Es,useRef as u9,useState as Ro}from"react";function pF(t,e){return t.id.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e)}function hF(t){let[e,o]=Ro(!1),[n,r]=Ro(0),[s,i]=Ro([]),[a,l]=Ro(!1),[c,d]=Ro(null),[m,u]=Ro(!1),[h,g]=Ro(""),[y,b]=Ro(0),[w,T]=Ro(!1),[A,M]=Ro(null),[B,H]=Ro(0),[G,Y]=Ro(!1),[$,te]=Ro(""),oe=u9(!1),J=Es(()=>tc(),[]),[D,z]=Ro([]),xe=po(V=>{let U=V.findIndex(k=>k.key===t.currentTier);return U>=0?U:0},[t.currentTier]),K=po(async()=>{if(oe.current)return;oe.current=!0,l(!0);let V=async()=>{try{let k=await t.catalog.list();k.length===0?(i(kn),d(!0)):(i(k),d(!1)),r(xe(k.length===0?kn:k))}catch{i(kn),d(!0),r(xe(kn))}},U=async()=>{if(!t.customModels){z([]);return}try{z(await t.customModels.list())}catch{z([])}};try{await Promise.all([V(),U()])}finally{l(!1)}},[t.catalog,t.customModels,xe]),ue=po(()=>{o(!0),u(!1),g(""),b(0),T(!1),M(null),H(0),Y(!1),te(""),K()},[K]),Z=po(()=>{o(!1),u(!1),g(""),b(0),T(!1),M(null),H(0),Y(!1),te("")},[]),ie=s.length,P=e&&n===ie,ge=po(V=>{m||r(U=>{let k=Math.max(0,s.length);return Math.min(k,Math.max(0,U+V))})},[s.length,m]),ee=Es(()=>{let V=h.trim().toLowerCase();return D.filter(U=>!(w&&U.supportsTools!==!0||V!==""&&!pF(U,V)))},[D,h,w]),le=ee.length===0?-1:Math.min(Math.max(0,y),ee.length-1),Ce=Es(()=>{if(ee.length<=Eu||le<0)return 0;let V=Math.floor(Eu/2),U=ee.length-Eu;return Math.min(Math.max(0,le-V),U)},[ee.length,le]),Oo=Es(()=>ee.slice(Ce,Ce+Eu).map((V,U)=>({model:V,highlighted:Ce+U===le})),[ee,Ce,le]),Le=Es(()=>{if(!m||le<0)return null;let V=ee[le];return V&&V.supportsTools===!1?V.id:null},[m,le,ee]),ct=Es(()=>{let V=h.trim().toLowerCase();return V===""||D.length===0?[]:D.filter(U=>pF(U,V)).slice(0,8).map(m9)},[h,D]),dt=Es(()=>{let V=h.trim();if(V===""||D.length===0)return!1;let U=V.toLowerCase();return!D.some(k=>k.id.toLowerCase()===U)},[h,D]),ht=po(V=>{m&&b(U=>{let k=ee.length;return k===0?0:Math.min(k-1,Math.max(0,U+V))})},[m,ee.length]),gt=po(()=>{m&&(T(V=>!V),b(0))},[m]),ut=po(V=>{M(V),H(0),Y(!1),te(""),u(!1)},[]),Zt=po(()=>{if(A){if(G){let Mo=Ny($);if(Mo===null)return null;let $e=A;return Z(),{model:$e,effort:Mo}}if(J[Qi(B)]?.kind==="custom")return Y(!0),te(""),null;let k=Iy(Qi(B));if(k===null)return null;let tt=A;return Z(),{model:tt,effort:k}}if(m){let U=le>=0?ee[le]:void 0;if(U)return ut(U.supportsTools===void 0?{kind:"custom",model:U.id}:{kind:"custom",model:U.id,supportsTools:U.supportsTools}),null;let k=h.trim();return k===""||ut({kind:"custom",model:k}),null}if(n===ie)return u(!0),g(""),b(0),T(!1),null;let V=s[n];return V&&ut({kind:"tier",key:V.key}),null},[A,G,$,J,B,s,n,ie,m,h,ee,le,Z,ut]),eo=po(V=>{!A||G||H(U=>Qi(U+V))},[A,G]),L=po(V=>{if(!G)return;let U=V.replace(/[\r\n\t]/g,"");U!==""&&te(k=>k+U)},[G]),X=po(()=>{G&&te(V=>V.slice(0,-1))},[G]),ke=po(()=>G?(Y(!1),te(""),!0):A?(M(null),H(0),!0):!1,[G,A]),Se=Es(()=>{if(!G)return null;let V=Tm($);return V.ok?null:V.reason},[G,$]),Pe=po(V=>{if(!m)return;let U=V.replace(/[\r\n\t]/g,"");U!==""&&(b(0),g(k=>k+U))},[m]),De=po(()=>{m&&(b(0),g(V=>V.slice(0,-1)))},[m]);return{open:e,selected:n,tiers:s,loading:a,usingFallback:c,customSelected:P,customInputOpen:m,customInput:h,customSuggestions:ct,customWarnOutOfCatalog:dt,customBrowserAvailable:D.length>0,customFilteredCount:ee.length,customTotalCount:D.length,customRows:Oo,customBrowseIndex:le,customHasMoreAbove:Ce>0,customHasMoreBelow:Ce+Eu<ee.length,customToolsOnly:w,customNoToolsWarning:Le,openPicker:ue,closePicker:Z,move:ge,confirm:Zt,appendCustom:Pe,backspaceCustom:De,browseMove:ht,toggleToolsOnly:gt,effortStepOpen:A!==null,effortOptions:J,effortSelected:Qi(B),currentEffort:t.currentEffort,effortCustomOpen:G,effortCustomInput:$,effortCustomWarn:Se,effortMove:eo,appendEffortCustom:L,backspaceEffortCustom:X,backFromEffort:ke}}function m9(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 Eu,gF=p(()=>{"use strict";N();Cr();Eu=10});import{useCallback as Fh,useState as eA}from"react";function yF(t){let e=[];e.push({kind:"mode",mode:t.mode,actionable:!0});for(let o of sm)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 Yg)e.push({kind:"locked",category:o,actionable:!1});return e}function bF(t){let[e,o]=eA(!1),[n,r]=eA(0),[s,i]=eA(0),a=yF(t),l=Fh(()=>{o(!0),r(0),i(u=>u+1)},[]),c=Fh(()=>{o(!1)},[]),d=Fh(u=>{r(h=>{let g=Math.max(0,a.length-1);return Math.min(g,Math.max(0,h+u))})},[a.length]),m=Fh(()=>{let u=a[n];if(!(!u||!u.actionable)){switch(u.kind){case"mode":t.setMode(tS(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,yF(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 vF=p(()=>{"use strict";N();oS()});import{useCallback as Bh,useState as kF}from"react";function xF(t){let e=Fo.findIndex(o=>o.name===t);return e>=0?e:0}function SF(t){let[e,o]=kF(!1),[n,r]=kF(()=>xF(t.currentTheme)),s=Bh(()=>{r(xF(t.currentTheme)),o(!0)},[t.currentTheme]),i=Bh(()=>{o(!1)},[]),a=Bh(c=>{r(d=>{let m=Math.max(0,Fo.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Bh(()=>{let c=Fo[n];return o(!1),c?c.name:null},[n]);return{open:e,selected:n,themes:Fo,openPicker:s,closePicker:i,move:a,confirm:l}}var wF=p(()=>{"use strict";os()});import{useCallback as Uh,useState as AF}from"react";function EF(t){let e=Dt.findIndex(o=>o.code===t);return e>=0?e:0}function TF(t){let[e,o]=AF(!1),[n,r]=AF(()=>EF(t.currentLang)),s=Uh(()=>{r(EF(t.currentLang)),o(!0)},[t.currentLang]),i=Uh(()=>{o(!1)},[]),a=Uh(c=>{r(d=>{let m=Math.max(0,Dt.length-1);return Math.min(m,Math.max(0,d+c))})},[]),l=Uh(()=>{let c=Dt[n];return o(!1),c?c.code:null},[n]);return{open:e,selected:n,langs:Dt,openPicker:s,closePicker:i,move:a,confirm:l}}var _F=p(()=>{"use strict";yt()});function jh(t,e=ln){let o=t.trim().toLowerCase();if(o!=="")return e.find(n=>n.name.toLowerCase()===o)}function RF(t,e=ln){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:f9(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 f9(t){return t.charAt(0).toUpperCase()+t.slice(1)}var ln,Hh=p(()=>{"use strict";ln=[{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 Tu,useRef as p9,useState as _u}from"react";function Ru(t,e){if(e===void 0)return 0;let o=t.findIndex(n=>n.name.toLowerCase()===e.toLowerCase());return o>=0?o:0}function CF(t){let[e,o]=_u(!1),[n,r]=_u(ln),[s,i]=_u(()=>Ru(ln,t.currentProvider)),[a,l]=_u(!1),[c,d]=_u(null),m=p9(!1),u=Tu(async()=>{if(!m.current){if(m.current=!0,!t.providersClient){r(ln),d(!0),i(Ru(ln,t.currentProvider));return}l(!0);try{let w=await t.providersClient.list(),T=RF(w),A=w.length===0;r(T),d(A),i(Ru(T,t.currentProvider))}catch{r(ln),d(!0),i(Ru(ln,t.currentProvider))}finally{l(!1)}}},[t.providersClient,t.currentProvider]),h=Tu(()=>{i(Ru(n,t.currentProvider)),o(!0),u()},[t.currentProvider,n,u]),g=Tu(()=>{o(!1)},[]),y=Tu(w=>{i(T=>{let A=Math.max(0,n.length-1);return Math.min(A,Math.max(0,T+w))})},[n.length]),b=Tu(()=>{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 OF=p(()=>{"use strict";Hh()});import{useCallback as qh,useState as tA}from"react";function MF(t){let[e,o]=tA(!1),[n,r]=tA(0),[s,i]=tA([]),a=qh(()=>{i(pw(t.store,t.limit??fw)),r(0),o(!0)},[t.store,t.limit]),l=qh(()=>{o(!1)},[]),c=qh(m=>{r(u=>{let h=Math.max(0,s.length-1);return Math.min(h,Math.max(0,u+m))})},[s.length]),d=qh(()=>{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 LF=p(()=>{"use strict";Th()});import{useCallback as Cu,useState as Wh}from"react";function PF(t){let[e,o]=Wh("closed"),[n,r]=Wh(0),[s,i]=Wh([]),[a,l]=Wh(0),c=Cu(()=>{let g=[];try{g=R$(t.source.list(),t.limit??30)}catch{g=[]}i(g),r(0),l(0),o("list")},[t.source,t.limit]),d=Cu(()=>{o("closed")},[]),m=Cu(g=>{r(y=>{let b=e==="action"?Rh.length:s.length,w=Math.max(0,b-1);return Math.min(w,Math.max(0,y+g))})},[e,s.length]),u=Cu(()=>{if(e==="list")return s.length===0||(l(n),r(0),o("action")),null;if(e==="action"){let g=s[a],y=Rh[n];return o("closed"),!g||!y?null:{checkpointId:g.id,action:y}}return null},[e,s,n,a]),h=Cu(()=>{if(e==="action"){r(a),o("list");return}o("closed")},[e,a]);return{phase:e,open:e!=="closed",selected:n,checkpoints:s,actions:Rh,target:e==="action"?s[a]:void 0,openPicker:c,closePicker:d,move:m,confirm:u,back:h}}var IF=p(()=>{"use strict";gw()});import{useCallback as Ou,useMemo as g9,useState as oA}from"react";function NF(t={}){let[e,o]=oA(!1),[n,r]=oA(""),[s,i]=oA(0),a=t.userCommands??[],l=t.natives,c=g9(()=>h$(n,a,l),[n,a,l]),d=Ou(()=>{r(""),i(0),o(!0)},[]),m=Ou(()=>{o(!1)},[]),u=Ou(y=>{r(y),i(0)},[]),h=Ou(y=>{i(b=>{let w=Math.max(0,c.length-1);return Math.min(w,Math.max(0,b+y))})},[c.length]),g=Ou(()=>{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 DF=p(()=>{"use strict";il()});function $F(t){let e=t.trim();if(e==="")return{kind:"stop"};if(y9.test(e)){let o=e.replace(b9,"").trim();return o===""?{kind:"stop"}:{kind:"redirect",inject:o}}return{kind:"redirect",inject:e}}var y9,b9,FF=p(()=>{"use strict";y9=/^\/ask(?=\s|$)/i,b9=/^\/ask\s*/i});function BF(t,e=!0){return t==="thinking"||t==="boot"||t==="compacting"?!0:t==="streaming"||t==="retrying"?e:!1}function UF(t){return t==="thinking"||t==="streaming"||t==="retrying"||t==="compacting"}var jF=p(()=>{"use strict"});import{appendFileSync as v9}from"node:fs";import{homedir as k9}from"node:os";import{join as x9}from"node:path";function S9(t=process.env){let e=t.ALUY_DEBUG_RENDER;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function Gh(t){if(S9())try{nA===void 0&&(nA=x9(k9(),".aluy","render-debug.log")),v9(nA,`${new Date().toISOString()} ${t}
|
|
624
624
|
`)}catch{}}var nA,HF=p(()=>{"use strict"});function qF(t){return t.subagentsRunning&&t.isPlainGoal&&t.nonEmpty&&!t.hasPendingAttachment}var WF=p(()=>{"use strict"});function GF(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<A9)return{layout:"single",chatCols:o,logCols:0,disabledByWidth:!0};if(o>=w9){let n=Math.max(1,Math.floor(o*T9)),r=o-n-_9;return r>=E9?{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 O9(t){return t==="side"?R9:t==="tabs"?C9:0}function zF(t){let e=gh({live:t.live,phase:t.phase,hasBlocks:t.hasBlocks,...t.columns!==void 0?{columns:t.columns}:{}}),o=O9(t.layout),n=Math.min(Pi,Math.max(0,t.logColumnLines??0)),r=t.rows-du-uh(t.rows)-o-fh-mh(t.mode)-(t.queuedLines??0)-1,s=r-e,i=r-Math.max(e,n),a=Math.min(s,i);return Math.max(ph,a)}var w9,A9,E9,T9,_9,R9,C9,Pi,KF=p(()=>{"use strict";el();w9=100,A9=60,E9=34,T9=.62,_9=1,R9=1,C9=1,Pi=12});function M9(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 rA(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(M9);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 YF(t){let e=0;for(let o of t)e+=1+(o.collapsed?0:o.events.length);return e}var VF=p(()=>{"use strict"});function XF(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 sA(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 iA=p(()=>{"use strict"});function JF(t){let e=!1,o=[],n=[];for(let r of t)r.kind==="you"&&(e=!0),!e&&r.kind==="note"&&L9.has(r.title)?o.push(r):n.push(r);return{startupNotes:o,conversation:n}}var L9,QF=p(()=>{"use strict";L9=new Set(["config","agentes"])});import"react";import{Box as Qt,Text as ZF}from"ink";import{Fragment as tB,jsx as Re,jsxs as ho}from"react/jsx-runtime";function P9(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 aA(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 ho(Qt,{children:[Re(f,{name:"fgDim",children:"\u2500\u2500 "}),t.focused===!0&&ho(tB,{children:[Re(I,{name:"you",role:"accent"}),Re(f,{name:"fgDim",children:" "})]}),Re(f,{name:"accent",children:t.label}),ho(f,{name:"fgDim",children:[" ","\u2500".repeat(s)]})]})}return Re(f,{name:"fgDim",children:"\u2500".repeat(e)})}function I9(t){let{t:e}=ve(),o=t.blocks,n=Math.max(1,t.rows-1),r=XF(o.length,n,t.scroll),s=o.slice(r.start,r.end).map(i=>P9(i,n));return t.overlay!==void 0&&t.overlay!==null?ho(Qt,{flexDirection:"column",height:t.rows,children:[ho(Qt,{children:[Re(f,{name:"accent",children:e("cockpit.conversa")}),Re(f,{name:"fgDim",children:" \xB7 /menu"})]}),Re(Qt,{flexDirection:"column",height:n,overflow:"hidden",children:t.overlay})]}):o.length===0?ho(Qt,{flexDirection:"column",height:t.rows,children:[ho(Qt,{children:[t.focused===!0&&ho(tB,{children:[Re(I,{name:"you",role:"accent"}),Re(ZF,{children:" "})]}),Re(f,{name:t.focused?"accent":"fgDim",children:e("cockpit.conversa")}),Re(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"})]}),ho(Qt,{height:n,width:t.columns,flexDirection:"column",alignItems:"center",justifyContent:"center",children:[Re(f,{name:"accent",children:e("cockpit.welcomeTitle")}),Re(f,{name:"fgDim",children:e("cockpit.welcomeHint")})]})]}):ho(Qt,{flexDirection:"column",height:t.rows,children:[ho(Qt,{children:[Re(f,{name:t.focused?"accent":"fgDim",children:e("cockpit.conversa")}),r.hiddenAbove>0&&ho(f,{name:"fgDim",children:[" \xB7 \u2191",r.hiddenAbove]}),r.hiddenBelow===0?Re(f,{name:"fgDim",children:" \xB7 \u25BC ao vivo"}):ho(f,{name:"fgDim",children:[" \xB7 \u2193",r.hiddenBelow]})]}),Re(Qt,{flexDirection:"column",height:n,overflow:"hidden",justifyContent:"flex-end",children:s.map((i,a)=>Re(zh,{block:i,isCurrent:r.start+a===o.length-1,frame:t.frame,columns:t.columns,maxLines:n},r.start+a))})]})}function eB(t){let{t:e}=ve(),{layout:o}=t,n=t.state.meta.tokens,r=t.state.meta.windowPct,{startupNotes:s,conversation:i}=JF(t.state.blocks),a=s.map(l=>({title:l.title,lines:l.lines}));return ho(Qt,{flexDirection:"column",width:t.columns,height:o.rows,children:[Re(Qt,{height:o.headerRows,children:Re(Zd,{tier:t.tierDisplay,columns:t.columns,rows:1,...t.version!==void 0?{version:t.version}:{}})}),Re(aA,{columns:t.columns}),Re(I9,{blocks:i,rows:o.regions.conversaRows,columns:t.columns,focused:t.focus==="conversa",scroll:t.conversaScroll,frame:t.frame,overlay:t.overlay}),Re(aA,{columns:t.columns,label:e("cockpit.log"),focused:t.focus==="log"}),Re(Qt,{height:o.regions.logRows,children:Re(fl,{sections:t.logSections,visibleRows:o.regions.logRows,scrollOffset:t.logScroll,focused:t.focus==="log",columns:t.columns,bootInfo:a})}),Re(aA,{columns:t.columns}),Re(Qt,{height:o.statusRows,children:Re(tu,{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}:{}})}),Re(Qt,{height:o.composerRows,children:Re(su,{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}:{}})}),Re(Qt,{height:o.hintsRows,children:t.hintState===null||t.hintState==="idle"?ho(f,{name:"fgDim",children:[e("hints.cockpit"),Re(ZF,{children:" \xB7 "}),Ft(n)," tok"]}):Re(Su,{state:t.hintState})})]})}var oB=p(()=>{"use strict";ae();yt();$h();$h();lA();Sn();iA();QF()});function N9(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 Ts(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=N9(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 cA=p(()=>{"use strict"});function rB(t){if(t==="")return 0;let e=0;for(let n=0;n<t.length;n+=1)t[n]===`
|
|
625
625
|
`&&(e+=1);let o=t.endsWith(`
|
|
626
626
|
`)?1:0;return e-o+1}function sB(t,e={}){let o=e.minLines??$9,n=e.minChars??F9;return rB(t)>=o||t.length>n}function B9(t,e){return`[texto colado #${t}, +${e} ${e===1?"linha":"linhas"}]`}function iB(){let t=1,e=new Map;return{add(o,n){let r=t;return t+=1,e.set(r,o),{id:r,label:B9(r,n),content:o}},get(o){return e.get(o)},remove(o){e.delete(o)},reset(){e.clear(),t=1},snapshot(){return e}}}function aB(t,e,o){let n=rB(e),r=o.add(e,n);return xi(t,r.label)}function lB(t,e){let o=[];nB.lastIndex=0;let n;for(;(n=nB.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 cB(t,e,o){let n=Mt(t.text,t.cursor),r=lB(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 dB(t,e){let o=lB(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 $9,F9,nB,uB=p(()=>{"use strict";eh();$9=6,F9=800;nB=/\[texto colado #(\d+), \+\d+ linhas?\]/g});var mB=p(()=>{"use strict";N()});function uA(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 Mu(t,e){let o=t.trim();if(o==="")return{kind:"theme",theme:void 0,note:{title:"theme",lines:["temas dispon\xEDveis (use `/theme <nome>`):",...Fo.map(r=>`${r.name===e?"\u25CF ":" "}${r.name} \u2014 ${r.summary}`)]}};let n=Er(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: ${Fo.map(r=>r.name).join(", ")}.`]}}}function mA(t,e){let o=t.trim();if(o==="")return{kind:"lang",lang:void 0,note:{title:"lang",lines:[hs(e,"lang.listTitle"),...Dt.map(r=>`${r.code===e?"\u25CF ":" "}${r.code} \u2014 ${r.label}`)]}};let n=ns(o);return n?n.code===e?{kind:"lang",lang:void 0,note:{title:"lang",lines:[hs(e,"lang.current",{label:n.label})]}}:{kind:"lang",lang:n.code,note:{title:"lang",lines:[hs(n.code,"lang.changed",{label:n.label})]}}:{kind:"lang",lang:void 0,note:{title:"lang",lines:[hs(e,"lang.unknown",{input:o}),`${hs(e,"lang.listTitle")}: ${Dt.map(r=>r.code).join(", ")}.`]}}}function Lu(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>`):",...ln.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=jh(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: ${ln.map(r=>r.name).join(", ")}.`]}}}function U9(t){return t<1e3?String(t):t<1e6?`${(t/1e3).toFixed(1).replace(/\.0$/,"")}k`:`${(t/1e6).toFixed(1).replace(/\.0$/,"")}M`}function fB(t,e){switch(t){case"help":return{kind:"note",note:{title:"comandos",lines:jo.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 Lu("",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: ${U9(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:j9(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 Mu("",Fo[0].name);case"lang":return mA("",Dt[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 uA("",{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 dA(t,e){return!e||e===""?t:t===e?"~":t.startsWith(e+"/")?`~${t.slice(e.length)}`:t}function pB(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 ":"+ "}${dA(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:[`${dA(s,o)} j\xE1 est\xE1 autorizado \u2014 nada a fazer.`]}:{title:"add-dir",lines:[`\u2713 ${dA(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 hB(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 ${Gc(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=ei(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 gB(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 yB(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 bB(){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 vB(t){return{title:"mcp",lines:[`buscando "${t}" no registro oficial\u2026`]}}function j9(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(...vr(["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 kB(t,e){let{text:o}=await mS(t,e);return{title:"mcp",lines:o.split(`
|
|
@@ -656,8 +656,8 @@ Notas:
|
|
|
656
656
|
`),!0}function UB(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()!==""?`
|
|
657
657
|
${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(`
|
|
658
658
|
`)}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(`
|
|
659
|
-
`)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var G9,bA=p(()=>{"use strict";N();Fd();Cr();fA();pA();gA();yA();G9="-".repeat(12)});import{useEffect as Co,useState as Ve,useReducer as z9,useCallback as Ht,useMemo as jB,useRef as cn}from"react";import{Box as ce,Static as K9,Text as Y9,useApp as V9,useInput as X9,useStdin as J9,useStdout as Q9}from"ink";import{Fragment as WB,jsx as C,jsxs as go}from"react/jsx-runtime";function GB(t){let{controller:e}=t,{exit:o}=V9(),{stdout:n}=Q9(),r=ne(),{lang:s,t:i}=ve(),[,a]=z9(x=>x+1,0);Co(()=>{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]=Ve(e.current),[g,y]=Ve({text:"",cursor:0}),b=g.text,w=g.cursor,[T,A]=Ve(!1),[M,B]=Ve(0),[H,G]=Ve(()=>new Set),[Y,$]=Ve(!1),[te,oe]=Ve(""),J=u.phase==="questioning"?u.pendingQuestion?.spec:void 0,D=cn(void 0);Co(()=>{J!==D.current&&(D.current=J,B(0),G(new Set),oe(""),$(J?.kind==="text"))},[J]);let[z,xe]=Ve(0),[K,ue]=Ve(!1),[Z,ie]=Ve(0),[P,ge]=Ve([]),[ee,le]=Ve(-1),[Ce,Oo]=Ve([]),Le=cn([]),ct=cn(0);Le.current=Ce,Ce.length===0&&(ct.current=0);let
|
|
660
|
-
`).length,$r=Wt?e.flowOverview():[],mn=Wt?rA($r,x=>e.drillInFlow(x),{collapsed:k,errorsOnly:Rs}).sections:[],q=$r.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,he=Wt?{lines:YF(mn),hasActivity:mn.length>0,activeAgents:q,focused:Cs==="log"}:void 0,ot=Ts(c,l,Ni,he),bt=Wt&&ot.kind==="cockpit",At=GF(l,ke),_t=At.layout,Fr=_t==="side"||_t==="tabs"&&V==="log",ir=Fr&&Pe,pe=mF({fileIndex:t.fileIndex??Z9,attachReader:t.attachReader??e7}),F=hF({catalog:t.catalog??t7,...t.customModels?{customModels:t.customModels}:{},currentTier:u.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),bo=bF(t.permissionControl??r7),gl=t.currentTheme??oi(r.brightness),Rt=SF({currentTheme:gl}),Di=t.currentLang??s,ze=TF({currentLang:Di}),$i=(u.meta.provider??"")!==""?u.meta.provider:t.currentProvider,Pt=CF({...$i!==void 0?{currentProvider:$i}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Fu=jB(()=>p$(jo,i),[i]),vt=MF({store:t.sessionStore??o7}),yl=t.rewindSource??n7,Ie=PF({source:yl}),Bu=jB(()=>Ie.target?yl.barriersAfter(Ie.target.id):[],[Ie.target,yl]),Ke=NF({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Fu}),bl=t.syncActive??!0,ng=BF(u.phase,bl)||a7(u.blocks),ar=Au({enabled:r.animate&&ng}),Uu=UF(u.phase);Au({enabled:Uu,intervalMs:1e3}),Co(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),Co(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(Ts(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{Dr(!1);let v=Ts(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let E=cn(t.initialFullscreen===!0&&ot.kind==="cockpit"),W=cn(t.initialFullscreen===!0);Co(()=>{let x=W.current!==Wt;if(W.current=Wt,!Wt){E.current=!1;return}let v=ot.kind==="cockpit";if(x){E.current=v;return}let S=E.current;if(S&&!v){t.cockpitScreen?.leave();let _=ot.kind==="refuse"&&ot.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[_])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();E.current=v},[c,l,Wt]);let{stdin:ye}=J9();Co(()=>{if(!ye)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),ht();return}let _=XN(S);_==="home"?y(se=>({...se,cursor:0})):_==="end"&&y(se=>({...se,cursor:se.text.length}))};return ye.on("data",x),()=>{ye.removeListener("data",x)}},[ye,e,ht,y]),Co(()=>{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]),Co(()=>{u.phase!=="stuck"&&T&&A(!1)},[u.phase,T]);let R=t.userCommands??[],O=b.startsWith("/")?b.slice(1):"",j=g$(O,R,Fu),Q=Ht((x,v)=>{y({text:x,cursor:Mt(x,v??x.length)})},[]),me=Ht(x=>{ue(dw(x,t.userCommands??[])),ie(0)},[t.userCommands]),Xe=Ht(()=>{Gh("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),xe(x=>x+1)},[n]),oo=t.registerClearScreen;Co(()=>{oo?.(Xe)},[oo,Xe]),Co(()=>{Gh(`slashOpen=${K} (rows=${c} cols=${l})`)},[K,c,l]);let vo=cn({rows:c,columns:l});Co(()=>{if(Wt){vo.current={rows:c,columns:l};return}let x=vo.current;if(x.rows===c&&x.columns===l)return;Gh(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),vo.current={rows:c,columns:l};let v=setTimeout(()=>Xe(),90);return()=>clearTimeout(v)},[c,l,Wt,Xe]);let Go=Ht(()=>{Se(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(De(!1),U("chat")),v})},[t]),lr=Ht(()=>{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}Dr(x=>{let v=!x,S=Ts(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let _=Ts(c,l),se=_.kind==="refuse"&&_.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[se])}else t.cockpitScreen?.leave(),Xe(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Os("conversa"),qo(0),$e(0)},[t,e,i,c,l,Xe]),It=Ht((x,v)=>{if(x.id==="split"){Go();return}if(x.id==="fullscreen"){lr();return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){F.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){bo.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){vt.openPicker();return}Xe(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Ie.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Rt.openPicker();return}let _=Er(S);if(_){t.onSelectTheme(_.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){ze.openPicker();return}let _=ns(S);if(_){t.onSelectLang(_.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){Pt.openPicker();return}let _=jh(S,Pt.providers);if(_){t.onSelectProvider(_.name);return}}t.onCommand?.(x,v)},[t,F,bo,Rt,ze,Pt,vt,Ie,Xe,Go]),Fi=Ht(x=>{if(x.action.kind==="command"){It(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[It,e]),Br=Ht(x=>{let v=sl(x,R);if(v.kind==="goal"){if(v.text!==""){if(hi(v.text).length>0&&t.attachReader){let _=pe.attachments.map(se=>se.item);Pu(v.text,t.attachReader).then(({goal:se,items:nt})=>{if(se===""&&nt.length===0){pe.clear();return}let Oe=[..._,...nt],ko=se!==""?se:v.text;ge(ug=>[...ug,ko]),e.submit(ko,Oe),pe.clear()});return}let S=pe.attachments.map(_=>_.item);ge(_=>[..._,v.text]),e.submit(v.text,S),pe.clear()}return}if(v.kind==="command"){It(v.command,v.args);return}if(v.kind==="bang"){ge(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,R,pe,It,t.attachReader]),Ee=Ht(x=>{let v=sl(x,R);return v.kind!=="goal"||v.text===""||pe.attachments.length>0||hi(v.text).length>0?!1:e.injectInput("root",v.text)},[e,R,pe]),Me=Ht(x=>{let v=sl(x,R);return v.kind!=="command"||!iw(v.command,v.args)?!1:(It(v.command,v.args),!0)},[R,It]),cr=Ht(x=>{if(Le.current.length>0){pt(x);return}let v=sl(x,R),S=v.kind==="goal"?v.text:"";if(qF({subagentsRunning:qB(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:pe.attachments.length>0||S!==""&&hi(S).length>0})){e.askParallel(S);return}!Ee(x)&&!Me(x)&&pt(x)},[pt,Ee,Me,e,R,pe]),Ur=cn();Ur.current||(Ur.current=xN());let fn=cn();fn.current||(fn.current=iB());let dr=Ht(x=>{let v=dB(x,fn.current);return fn.current.reset(),v},[]),vl=Ht(x=>{let v=cB(x,fn.current,"backward");return v.handled?(v.removedId!==void 0&&fn.current.remove(v.removedId),v.state):RS(x)},[]),rg=cn({open:!1}),Po=Ht(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),pe.dismissNotice();let v=sB(x);y(S=>{let _=v?aB(S,x,fn.current):xi(S,x);return me(_.text),zo(_.text),_}),le(-1)},[e,pe,me]);Co(()=>{if(!ye)return;let x=Ur.current,v=S=>{let _=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!_.includes("\x1B[20"))return;let se=x.feed(_);for(let nt of se)nt.kind==="paste"&&Po(nt.text)};return ye.on("data",v),()=>{ye.removeListener("data",v)}},[ye,Po]);let On=pe.open||F.open||bo.open||Rt.open||ze.open||Pt.open||vt.open||Ie.open||Ke.open,Bi=PP({...u,anyPickerOpen:On});Co(()=>{if(!Bi||Ce.length===0)return;let x=Ce[0]??"",v=sl(x,R);if(v.kind==="command"&&v.command.id==="clear"){ht(),Br(x);return}Oo(S=>S.slice(1)),Br(x)},[Bi,Ce,Br,R,ht]),X9((x,v)=>{if(!kN(rg.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?Br(b+x.slice(0,S)):y(_=>{let se=_.text+x;return ue(dw(se,t.userCommands??[])),{text:se,cursor:se.length}});return}e.dismissBoot();return}if(bt&&!K&&!pe.open&&!Ke.open&&u.phase!=="asking"){if(v.tab&&!v.shift){Os(_=>_==="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=ot.kind==="cockpit"?ot:void 0;if(S){let _=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(_!==void 0){if(Cs==="conversa"){let se=Math.max(1,S.regions.conversaRows-1);qo(nt=>sA(_,nt,u.blocks.length,se))}else{let se=Math.max(1,S.regions.logRows-1);$e(nt=>sA(_,nt,mn.length+1,se))}return}}}if(!gt){if(v.ctrl&&x==="l"){ke&&_t==="tabs"?(U(S=>S==="chat"?"log":"chat"),De(S=>!S)):Go();return}if(v.tab&&!v.shift&&Fr){_t==="tabs"?(U(S=>S==="chat"?"log":"chat"),De(S=>!S)):De(S=>!S);return}if(ir){if(v.escape){De(!1);return}if(v.upArrow){$e(S=>S+1);return}if(v.downArrow){$e(S=>Math.max(0,S-1));return}if(v.pageUp){$e(S=>S+Pi);return}if(v.pageDown){$e(S=>Math.max(0,S-Pi));return}if(v.return){tt(S=>{let _=new Set(S);return _.has("root")?_.delete("root"):_.add("root"),_});return}if(x==="e"&&!v.ctrl&&!v.meta){Ii(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(gt){if(L){if(v.escape||v.return){X(null);return}if(x==="p"){e.cancelFlow(L);return}if(x==="i"){b.trim()!==""&&(e.injectInput(L,b),Q(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){dt(!1);return}if(v.upArrow){eo(_=>Math.max(0,_-1));return}if(v.downArrow){eo(_=>Math.min(Math.max(0,S.length-1),_+1));return}if(v.return){let _=S[Math.min(Zt,S.length-1)];_&&X(_.id);return}if(x==="p"){let _=S[Math.min(Zt,S.length-1)];_&&e.cancelFlow(_.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let _=S[Math.min(Zt,S.length-1)];_&&b.trim()!==""&&(e.injectInput(_.id,b),Q(""));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??[],se=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(Y&&S.kind!=="text"){$(!1),oe("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(Y){if(v.return){let Oe=te.trim();return Oe===""?void 0:e.resolveQuestion({kind:"text",text:Oe})}if(v.backspace||v.delete){oe(Oe=>Oe.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){oe(Oe=>Oe+x);return}return}let nt=_.length-1;if(v.upArrow){B(Oe=>Oe===Jn?nt:Oe<=0?se?Jn:nt:Oe-1);return}if(v.downArrow){B(Oe=>Oe===Jn?0:Oe>=nt?se?Jn:0:Oe+1);return}if(S.kind==="multi"&&x===" "&&M!==Jn&&M>=0){G(Oe=>{let ko=new Set(Oe);return ko.has(M)?ko.delete(M):ko.add(M),ko});return}if(v.return){if(M===Jn){$(!0);return}if(S.kind==="multi"){let ko=[...H].sort((xl,LU)=>xl-LU),ug=ko.map(xl=>_[xl]?.label??"").filter(xl=>xl!=="");return e.resolveQuestion({kind:"choices",indices:ko,labels:ug})}let Oe=_[M];return Oe?e.resolveQuestion({kind:"choice",index:M,label:Oe.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){A(!1);return}if(v.return&&!v.shift){let S=g.text;y({text:"",cursor:0}),A(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){A(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(i7(u.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),ht();return}if(u.phase==="thinking"||u.phase==="streaming"||u.phase==="retrying"){if(v.ctrl&&x==="t"){X(null),eo(0),dt(!0);return}if(K){if(v.upArrow){ie(_=>Math.max(0,_-1));return}if(v.downArrow){ie(_=>Math.min(j.length-1,_+1));return}if(v.escape){ue(!1),ie(0);return}if(v.tab){let _=j[Z];if(_){let se=xh(_);Q(se),me(se)}return}if(v.return&&!v.shift){let _=j[Z];if(_&&_.kind==="subcommand"&&cw(_)){ue(!1),ie(0);let se=f$(_);pt(se),ge(nt=>[...nt,se]),Q(""),le(-1);return}if(_&&_.kind==="subcommand"){let se=xh(_);Q(se),me(se);return}if(ue(!1),ie(0),_){if(iw(_.command,"")){It(_.command,""),Q(""),le(-1);return}let se=`/${_.command.name}`;pt(se),ge(nt=>[...nt,se]),Q(""),le(-1)}return}}if(v.escape||v.ctrl&&x==="c"){let _=Le.current.length>0,se=Date.now(),nt=_&&se-ct.current<500;if(ct.current=se,_&&!nt&&v.escape){let Oe=dr(b).trim();Oe!==""&&(pt(Oe),ge(ko=>[...ko,Oe]),Q(""),le(-1));return}if(b.trim()!==""){let Oe=$F(dr(b));if(Oe.kind==="redirect"){e.injectInput("root",Oe.inject),Q(""),ge(ko=>[...ko,Oe.inject]),le(-1);return}}e.interrupt(),ht();return}if(v.return&&v.ctrl||!v.return&&x===`
|
|
659
|
+
`)}case"inject":return`[encaixado]${t.text.trim()?` ${t.text.trim()}`:""}`}}var G9,bA=p(()=>{"use strict";N();Fd();Cr();fA();pA();gA();yA();G9="-".repeat(12)});import{useEffect as Co,useState as Ve,useReducer as z9,useCallback as Ht,useMemo as jB,useRef as cn}from"react";import{Box as ce,Static as K9,Text as Y9,useApp as V9,useInput as X9,useStdin as J9,useStdout as Q9}from"ink";import{Fragment as WB,jsx as C,jsxs as go}from"react/jsx-runtime";function GB(t){let{controller:e}=t,{exit:o}=V9(),{stdout:n}=Q9(),r=ne(),{lang:s,t:i}=ve(),[,a]=z9(x=>x+1,0);Co(()=>{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]=Ve(e.current),[g,y]=Ve({text:"",cursor:0}),b=g.text,w=g.cursor,[T,A]=Ve(!1),[M,B]=Ve(0),[H,G]=Ve(()=>new Set),[Y,$]=Ve(!1),[te,oe]=Ve(""),J=u.phase==="questioning"?u.pendingQuestion?.spec:void 0,D=cn(void 0);Co(()=>{J!==D.current&&(D.current=J,B(0),G(new Set),oe(""),$(J?.kind==="text"))},[J]);let[z,xe]=Ve(0),[K,ue]=Ve(!1),[Z,ie]=Ve(0),[P,ge]=Ve([]),[ee,le]=Ve(-1),[Ce,Oo]=Ve([]),Le=cn([]),ct=cn(0);Le.current=Ce,Ce.length===0&&(ct.current=0);let dt=Ht(x=>{Le.current=[...Le.current,x],Oo(v=>[...v,x])},[]),ht=Ht(()=>{Le.current=[],Oo([]),ct.current=0},[]),[gt,ut]=Ve(!1),[Zt,eo]=Ve(0),[L,X]=Ve(null),[ke,Se]=Ve(t.initialSplitView===!0),[Pe,De]=Ve(!1),[V,U]=Ve("chat"),[k,tt]=Ve(()=>new Set),[Mo,$e]=Ve(0),[Rs,Ii]=Ve(!1),[Wt,Dr]=Ve(t.initialFullscreen===!0),[Cs,Os]=Ve("conversa"),[$u,qo]=Ve(0),[dn,un]=Ve(!1),Lo=cn(void 0),yo=cn(!1),to=cn(void 0),Wo=Ht(()=>{Lo.current!==void 0&&(clearTimeout(Lo.current),Lo.current=void 0),un(!1)},[]);Co(()=>()=>{Lo.current!==void 0&&clearTimeout(Lo.current),to.current!==void 0&&clearTimeout(to.current)},[]);let Ni=b.length===0?1:b.split(`
|
|
660
|
+
`).length,$r=Wt?e.flowOverview():[],mn=Wt?rA($r,x=>e.drillInFlow(x),{collapsed:k,errorsOnly:Rs}).sections:[],q=$r.filter(x=>x.kind==="subagent"&&(x.phase==="thinking"||x.phase==="tool"||x.phase==="asking")).length,he=Wt?{lines:YF(mn),hasActivity:mn.length>0,activeAgents:q,focused:Cs==="log"}:void 0,ot=Ts(c,l,Ni,he),bt=Wt&&ot.kind==="cockpit",At=GF(l,ke),_t=At.layout,Fr=_t==="side"||_t==="tabs"&&V==="log",ir=Fr&&Pe,pe=mF({fileIndex:t.fileIndex??Z9,attachReader:t.attachReader??e7}),F=hF({catalog:t.catalog??t7,...t.customModels?{customModels:t.customModels}:{},currentTier:u.meta.tier,...t.currentEffort!==void 0?{currentEffort:t.currentEffort}:{}}),bo=bF(t.permissionControl??r7),gl=t.currentTheme??oi(r.brightness),Rt=SF({currentTheme:gl}),Di=t.currentLang??s,ze=TF({currentLang:Di}),$i=(u.meta.provider??"")!==""?u.meta.provider:t.currentProvider,Pt=CF({...$i!==void 0?{currentProvider:$i}:{},...t.providersClient?{providersClient:t.providersClient}:{}}),Fu=jB(()=>p$(jo,i),[i]),vt=MF({store:t.sessionStore??o7}),yl=t.rewindSource??n7,Ie=PF({source:yl}),Bu=jB(()=>Ie.target?yl.barriersAfter(Ie.target.id):[],[Ie.target,yl]),Ke=NF({...t.userCommands!==void 0?{userCommands:t.userCommands}:{},natives:Fu}),bl=t.syncActive??!0,ng=BF(u.phase,bl)||a7(u.blocks),ar=Au({enabled:r.animate&&ng}),Uu=UF(u.phase);Au({enabled:Uu,intervalMs:1e3}),Co(()=>{let x=e.subscribe(h);return()=>{x(),e.dispose()}},[e]),Co(()=>{if(t.initialFullscreen!==!0||t.cockpitEnteredAtBoot===!0)return;if(Ts(c,l).kind==="cockpit")t.cockpitScreen?.enter();else{Dr(!1);let v=Ts(c,l),S=v.kind==="refuse"&&v.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[S])}},[]);let E=cn(t.initialFullscreen===!0&&ot.kind==="cockpit"),W=cn(t.initialFullscreen===!0);Co(()=>{let x=W.current!==Wt;if(W.current=Wt,!Wt){E.current=!1;return}let v=ot.kind==="cockpit";if(x){E.current=v;return}let S=E.current;if(S&&!v){t.cockpitScreen?.leave();let _=ot.kind==="refuse"&&ot.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[_])}else!S&&v?(t.cockpitScreen?.enter(),a()):S&&v&&t.cockpitScreen?.resetDiffer?.();E.current=v},[c,l,Wt]);let{stdin:ye}=J9();Co(()=>{if(!ye)return;let x=v=>{let S=typeof v=="string"?v:v.toString("utf8");if(S.includes("\x1B[19~")||S.includes("\x1BOW")){e.cancelAllFlows(),ht();return}let _=XN(S);_==="home"?y(se=>({...se,cursor:0})):_==="end"&&y(se=>({...se,cursor:se.text.length}))};return ye.on("data",x),()=>{ye.removeListener("data",x)}},[ye,e,ht,y]),Co(()=>{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]),Co(()=>{u.phase!=="stuck"&&T&&A(!1)},[u.phase,T]);let R=t.userCommands??[],O=b.startsWith("/")?b.slice(1):"",j=g$(O,R,Fu),Q=Ht((x,v)=>{y({text:x,cursor:Mt(x,v??x.length)})},[]),me=Ht(x=>{ue(dw(x,t.userCommands??[])),ie(0)},[t.userCommands]),Xe=Ht(()=>{Gh("clearScreen() \u2192 \\x1b[2J\\x1b[3J + staticKey++ (REEMITE hist\xF3rico)"),n?.write("\x1B[H\x1B[2J\x1B[3J"),xe(x=>x+1)},[n]),oo=t.registerClearScreen;Co(()=>{oo?.(Xe)},[oo,Xe]),Co(()=>{Gh(`slashOpen=${K} (rows=${c} cols=${l})`)},[K,c,l]);let vo=cn({rows:c,columns:l});Co(()=>{if(Wt){vo.current={rows:c,columns:l};return}let x=vo.current;if(x.rows===c&&x.columns===l)return;Gh(`resize ${x.rows}x${x.columns} \u2192 ${c}x${l} (clearScreen em 90ms)`),vo.current={rows:c,columns:l};let v=setTimeout(()=>Xe(),90);return()=>clearTimeout(v)},[c,l,Wt,Xe]);let Go=Ht(()=>{Se(x=>{let v=!x;return t.onSplitViewChange?.(v),v||(De(!1),U("chat")),v})},[t]),lr=Ht(()=>{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}Dr(x=>{let v=!x,S=Ts(c,l).kind==="cockpit";if(v&&S)t.cockpitScreen?.enter(),e.replaceNote("cockpit",[i("cockpit.entered")]);else if(v&&!S){let _=Ts(c,l),se=_.kind==="refuse"&&_.reason==="narrow"?i("cockpit.refuseNarrow"):i("cockpit.refuseShort");e.replaceNote("cockpit",[se])}else t.cockpitScreen?.leave(),Xe(),e.replaceNote("cockpit",[i("cockpit.left")]);return t.onFullscreenChange?.(v),v}),Os("conversa"),qo(0),$e(0)},[t,e,i,c,l,Xe]),It=Ht((x,v)=>{if(x.id==="split"){Go();return}if(x.id==="fullscreen"){lr();return}if(x.id==="model"&&v.trim()===""&&t.catalog!==void 0&&t.onSelectTier!==void 0){F.openPicker();return}if(x.id==="permissions"&&t.permissionControl!==void 0){bo.openPanel();return}if(x.id==="history"&&t.sessionStore!==void 0&&t.onResumeSession!==void 0){let S=v.trim();if(S===""){vt.openPicker();return}Xe(),t.onResumeSession(S);return}if(x.id==="rewind"&&t.rewindSource!==void 0&&t.onRewind!==void 0){Ie.openPicker();return}if(x.id==="theme"&&t.onSelectTheme!==void 0){let S=v.trim();if(S===""){Rt.openPicker();return}let _=Er(S);if(_){t.onSelectTheme(_.name);return}}if(x.id==="lang"&&t.onSelectLang!==void 0){let S=v.trim();if(S===""){ze.openPicker();return}let _=ns(S);if(_){t.onSelectLang(_.code);return}}if(x.id==="provider"&&t.onSelectProvider!==void 0){let S=v.trim();if(S===""){Pt.openPicker();return}let _=jh(S,Pt.providers);if(_){t.onSelectProvider(_.name);return}}t.onCommand?.(x,v)},[t,F,bo,Rt,ze,Pt,vt,Ie,Xe,Go]),Fi=Ht(x=>{if(x.action.kind==="command"){It(x.action.command,"");return}x.action.actionId==="cycle-mode"&&e.cycleMode()},[It,e]),Br=Ht(x=>{let v=sl(x,R);if(v.kind==="goal"){if(v.text!==""){if(hi(v.text).length>0&&t.attachReader){let _=pe.attachments.map(se=>se.item);Pu(v.text,t.attachReader).then(({goal:se,items:nt})=>{if(se===""&&nt.length===0){pe.clear();return}let Oe=[..._,...nt],ko=se!==""?se:v.text;ge(ug=>[...ug,ko]),e.submit(ko,Oe),pe.clear()});return}let S=pe.attachments.map(_=>_.item);ge(_=>[..._,v.text]),e.submit(v.text,S),pe.clear()}return}if(v.kind==="command"){It(v.command,v.args);return}if(v.kind==="bang"){ge(S=>[...S,`!${v.command}`]),e.runBang(v.command);return}},[e,R,pe,It,t.attachReader]),Ee=Ht(x=>{let v=sl(x,R);return v.kind!=="goal"||v.text===""||pe.attachments.length>0||hi(v.text).length>0?!1:e.injectInput("root",v.text)},[e,R,pe]),Me=Ht(x=>{let v=sl(x,R);return v.kind!=="command"||!iw(v.command,v.args)?!1:(It(v.command,v.args),!0)},[R,It]),cr=Ht(x=>{if(Le.current.length>0){dt(x);return}let v=sl(x,R),S=v.kind==="goal"?v.text:"";if(qF({subagentsRunning:qB(e.current.blocks),isPlainGoal:v.kind==="goal",nonEmpty:S!=="",hasPendingAttachment:pe.attachments.length>0||S!==""&&hi(S).length>0})){dt(x);return}!Ee(x)&&!Me(x)&&dt(x)},[dt,Ee,Me,e,R,pe]),Ur=cn();Ur.current||(Ur.current=xN());let fn=cn();fn.current||(fn.current=iB());let dr=Ht(x=>{let v=dB(x,fn.current);return fn.current.reset(),v},[]),vl=Ht(x=>{let v=cB(x,fn.current,"backward");return v.handled?(v.removedId!==void 0&&fn.current.remove(v.removedId),v.state):RS(x)},[]),rg=cn({open:!1}),Po=Ht(x=>{if(x==="")return;e.current.phase==="boot"&&e.dismissBoot(),pe.dismissNotice();let v=sB(x);y(S=>{let _=v?aB(S,x,fn.current):xi(S,x);return me(_.text),zo(_.text),_}),le(-1)},[e,pe,me]);Co(()=>{if(!ye)return;let x=Ur.current,v=S=>{let _=typeof S=="string"?S:S.toString("utf8");if(!x.isInPaste()&&!_.includes("\x1B[20"))return;let se=x.feed(_);for(let nt of se)nt.kind==="paste"&&Po(nt.text)};return ye.on("data",v),()=>{ye.removeListener("data",v)}},[ye,Po]);let On=pe.open||F.open||bo.open||Rt.open||ze.open||Pt.open||vt.open||Ie.open||Ke.open,Bi=PP({...u,anyPickerOpen:On});Co(()=>{if(!Bi||Ce.length===0)return;let x=Ce[0]??"",v=sl(x,R);if(v.kind==="command"&&v.command.id==="clear"){ht(),Br(x);return}Oo(S=>S.slice(1)),Br(x)},[Bi,Ce,Br,R,ht]),X9((x,v)=>{if(!kN(rg.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?Br(b+x.slice(0,S)):y(_=>{let se=_.text+x;return ue(dw(se,t.userCommands??[])),{text:se,cursor:se.length}});return}e.dismissBoot();return}if(bt&&!K&&!pe.open&&!Ke.open&&u.phase!=="asking"){if(v.tab&&!v.shift){Os(_=>_==="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=ot.kind==="cockpit"?ot:void 0;if(S){let _=v.pageUp?"pageUp":v.pageDown?"pageDown":v.upArrow?"up":v.downArrow?"down":void 0;if(_!==void 0){if(Cs==="conversa"){let se=Math.max(1,S.regions.conversaRows-1);qo(nt=>sA(_,nt,u.blocks.length,se))}else{let se=Math.max(1,S.regions.logRows-1);$e(nt=>sA(_,nt,mn.length+1,se))}return}}}if(!gt){if(v.ctrl&&x==="l"){ke&&_t==="tabs"?(U(S=>S==="chat"?"log":"chat"),De(S=>!S)):Go();return}if(v.tab&&!v.shift&&Fr){_t==="tabs"?(U(S=>S==="chat"?"log":"chat"),De(S=>!S)):De(S=>!S);return}if(ir){if(v.escape){De(!1);return}if(v.upArrow){$e(S=>S+1);return}if(v.downArrow){$e(S=>Math.max(0,S-1));return}if(v.pageUp){$e(S=>S+Pi);return}if(v.pageDown){$e(S=>Math.max(0,S-Pi));return}if(v.return){tt(S=>{let _=new Set(S);return _.has("root")?_.delete("root"):_.add("root"),_});return}if(x==="e"&&!v.ctrl&&!v.meta){Ii(S=>!S);return}if(!(v.ctrl&&x==="c")&&!(v.ctrl&&x==="t"))return}}if(gt){if(L){if(v.escape||v.return){X(null);return}if(x==="p"){e.cancelFlow(L);return}if(x==="i"){b.trim()!==""&&(e.injectInput(L,b),Q(""));return}return}let S=e.flowOverview();if(v.escape||v.ctrl&&x==="t"){ut(!1);return}if(v.upArrow){eo(_=>Math.max(0,_-1));return}if(v.downArrow){eo(_=>Math.min(Math.max(0,S.length-1),_+1));return}if(v.return){let _=S[Math.min(Zt,S.length-1)];_&&X(_.id);return}if(x==="p"){let _=S[Math.min(Zt,S.length-1)];_&&e.cancelFlow(_.id);return}if(x==="P"){e.cancelAllFlows();return}if(x==="i"){let _=S[Math.min(Zt,S.length-1)];_&&b.trim()!==""&&(e.injectInput(_.id,b),Q(""));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??[],se=S.kind!=="text"&&S.allowOther!==!1;if(v.escape){if(Y&&S.kind!=="text"){$(!1),oe("");return}return e.resolveQuestion({kind:"unavailable",reason:"cancelado (esc)"})}if(Y){if(v.return){let Oe=te.trim();return Oe===""?void 0:e.resolveQuestion({kind:"text",text:Oe})}if(v.backspace||v.delete){oe(Oe=>Oe.slice(0,-1));return}if(x&&!v.ctrl&&!v.meta){oe(Oe=>Oe+x);return}return}let nt=_.length-1;if(v.upArrow){B(Oe=>Oe===Jn?nt:Oe<=0?se?Jn:nt:Oe-1);return}if(v.downArrow){B(Oe=>Oe===Jn?0:Oe>=nt?se?Jn:0:Oe+1);return}if(S.kind==="multi"&&x===" "&&M!==Jn&&M>=0){G(Oe=>{let ko=new Set(Oe);return ko.has(M)?ko.delete(M):ko.add(M),ko});return}if(v.return){if(M===Jn){$(!0);return}if(S.kind==="multi"){let ko=[...H].sort((xl,LU)=>xl-LU),ug=ko.map(xl=>_[xl]?.label??"").filter(xl=>xl!=="");return e.resolveQuestion({kind:"choices",indices:ko,labels:ug})}let Oe=_[M];return Oe?e.resolveQuestion({kind:"choice",index:M,label:Oe.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){A(!1);return}if(v.return&&!v.shift){let S=g.text;y({text:"",cursor:0}),A(!1),e.redirectAfterStuck(S);return}}else{if(x==="r"){A(!0);return}if(x==="c"){e.continueAfterStuck();return}if(x==="n"||v.escape){e.endAfterStuck();return}return}if(i7(u.blocks)&&(v.escape||v.ctrl&&x==="c")){e.interrupt(),ht();return}if(u.phase==="thinking"||u.phase==="streaming"||u.phase==="retrying"){if(v.ctrl&&x==="t"){X(null),eo(0),ut(!0);return}if(K){if(v.upArrow){ie(_=>Math.max(0,_-1));return}if(v.downArrow){ie(_=>Math.min(j.length-1,_+1));return}if(v.escape){ue(!1),ie(0);return}if(v.tab){let _=j[Z];if(_){let se=xh(_);Q(se),me(se)}return}if(v.return&&!v.shift){let _=j[Z];if(_&&_.kind==="subcommand"&&cw(_)){ue(!1),ie(0);let se=f$(_);dt(se),ge(nt=>[...nt,se]),Q(""),le(-1);return}if(_&&_.kind==="subcommand"){let se=xh(_);Q(se),me(se);return}if(ue(!1),ie(0),_){if(iw(_.command,"")){It(_.command,""),Q(""),le(-1);return}let se=`/${_.command.name}`;dt(se),ge(nt=>[...nt,se]),Q(""),le(-1)}return}}if(v.escape||v.ctrl&&x==="c"){let _=Le.current.length>0,se=Date.now(),nt=_&&se-ct.current<500;if(ct.current=se,_&&!nt&&v.escape){let Oe=dr(b).trim();Oe!==""&&(dt(Oe),ge(ko=>[...ko,Oe]),Q(""),le(-1));return}if(b.trim()!==""){let Oe=$F(dr(b));if(Oe.kind==="redirect"){e.injectInput("root",Oe.inject),Q(""),ge(ko=>[...ko,Oe.inject]),le(-1);return}}e.interrupt(),ht();return}if(v.return&&v.ctrl||!v.return&&x===`
|
|
661
661
|
`&&!v.ctrl&&!v.meta){let _=dr(b).trim();_!==""&&(e.injectInput("root",_),Q(""),ge(se=>[...se,_]),le(-1));return}if(v.return&&v.shift){y(_=>xi(_,`
|
|
662
662
|
`));return}if(v.return){let _=dr(b).trim();_!==""&&(cr(_),ge(se=>[...se,_]),Q(""),le(-1));return}if(v.backspace||v.delete){if(b===""&&Ce.length>0){Oo(_=>_.slice(0,-1));return}y(_=>{let se=vl(_);return me(se.text),se});return}if(v.leftArrow){y(_=>({..._,cursor:v.meta?nu(_):CS(_)}));return}if(v.rightArrow){y(_=>({..._,cursor:v.meta?Zp(_):OS(_)}));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 se=ou(_,x),nt=dr(se.state.text).trim();return nt!==""&&(se.newline===`
|
|
663
663
|
`?e.injectInput("root",nt):cr(nt),ge(Oe=>[...Oe,nt])),le(-1),{text:"",cursor:0}}),ue(!1),ie(0);return}y(_=>{let se=ou(_,x).state;return me(se.text),se});return}return}if(u.phase==="error"){if(v.escape){e.dismissError(),Xe();return}if((x==="r"||x==="R")&&!v.ctrl&&!v.meta){e.retryLastGoal(),Xe();return}if(!(v.ctrl&&x==="c"))return}if(Ke.open){if(v.escape){Ke.closePalette();return}if(v.upArrow){Ke.move(-1);return}if(v.downArrow){Ke.move(1);return}if(v.return){let S=Ke.confirm();S&&Fi(S);return}if(v.backspace||v.delete){Ke.setQuery(Ke.query.slice(0,-1));return}if(v.ctrl&&(x==="p"||x==="x"||x==="c")){Ke.closePalette();return}x&&!v.ctrl&&!v.meta&&Ke.setQuery(Ke.query+x);return}if(F.open){if(F.effortStepOpen){if(F.effortCustomOpen){if(v.escape){F.backFromEffort();return}if(v.return){let S=F.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.backspace||v.delete){F.backspaceEffortCustom();return}x&&!v.ctrl&&!v.meta&&F.appendEffortCustom(x);return}if(v.upArrow){F.effortMove(-1);return}if(v.downArrow){F.effortMove(1);return}if(v.return||v.tab){let S=F.confirm();S&&t.onSelectConjugated?.(S.model,S.effort);return}if(v.escape){F.backFromEffort();return}return}if(F.customInputOpen){if(v.escape){F.closePicker();return}if(v.upArrow){F.browseMove(-1);return}if(v.downArrow){F.browseMove(1);return}if(v.return){F.confirm();return}if(v.backspace||v.delete){F.backspaceCustom();return}if(v.ctrl&&x==="t"){F.toggleToolsOnly();return}x&&!v.ctrl&&!v.meta&&F.appendCustom(x);return}if(v.upArrow){F.move(-1);return}if(v.downArrow){F.move(1);return}if(v.return||v.tab){F.confirm();return}if(v.escape){F.closePicker();return}return}if(bo.open){if(v.upArrow){bo.move(-1);return}if(v.downArrow){bo.move(1);return}if(v.return){bo.act();return}if(v.escape){bo.closePanel();return}return}if(Rt.open){if(v.upArrow){Rt.move(-1);return}if(v.downArrow){Rt.move(1);return}if(v.return||v.tab){let S=Rt.confirm();S&&t.onSelectTheme?.(S);return}if(v.escape){Rt.closePicker();return}return}if(ze.open){if(v.upArrow){ze.move(-1);return}if(v.downArrow){ze.move(1);return}if(v.return||v.tab){let S=ze.confirm();S&&t.onSelectLang?.(S);return}if(v.escape){ze.closePicker();return}return}if(Pt.open){if(v.upArrow){Pt.move(-1);return}if(v.downArrow){Pt.move(1);return}if(v.return||v.tab){let S=Pt.confirm();S&&t.onSelectProvider?.(S);return}if(v.escape){Pt.closePicker();return}return}if(vt.open){if(v.upArrow){vt.move(-1);return}if(v.downArrow){vt.move(1);return}if(v.return||v.tab){let S=vt.confirm();S&&(Xe(),t.onResumeSession?.(S));return}if(v.escape){vt.closePicker();return}return}if(Ie.open){if(v.upArrow){Ie.move(-1);return}if(v.downArrow){Ie.move(1);return}if(v.return){let S=Ie.confirm();S&&t.onRewind?.(S);return}if(v.escape){Ie.back();return}return}if(K){if(v.upArrow){ie(S=>Math.max(0,S-1));return}if(v.downArrow){ie(S=>Math.min(j.length-1,S+1));return}if(v.return||v.tab){let S=j[Z];if(S){let _=S.kind==="command"&&S.command.subcommands!==void 0&&S.command.subcommands.length>0;if(S.kind==="subcommand"&&cw(S)&&v.return){Q(""),ue(!1),ie(0),It(S.parent,S.sub.name);return}if(S.kind==="subcommand"||_&&v.tab){let se=xh(S);Q(se),me(se);return}Q(""),ue(!1),ie(0),It(S.command,"")}return}if(v.escape){ue(!1),ie(0);return}}if(pe.open){if(v.upArrow){pe.move(-1);return}if(v.downArrow){pe.move(1);return}if(v.return||v.tab){pe.confirm(),Q(Gx(b));return}if(v.escape){pe.closePicker();return}}if(v.ctrl&&x==="c"){let S=JN(b,dn);if(S==="clear"){Q(""),Wo();return}if(S==="exit"){Wo(),o();return}un(!0),Lo.current!==void 0&&clearTimeout(Lo.current),Lo.current=setTimeout(()=>un(!1),2500);return}if(dn&&Wo(),v.escape){if(t.rewindSource!==void 0&&t.onRewind!==void 0&&b===""){if(yo.current){yo.current=!1,to.current!==void 0&&clearTimeout(to.current),Ie.openPicker();return}yo.current=!0,to.current!==void 0&&clearTimeout(to.current),to.current=setTimeout(()=>{yo.current=!1},600);return}yo.current=!1}else yo.current&&(yo.current=!1,to.current!==void 0&&clearTimeout(to.current));if(v.ctrl&&(x==="p"||x==="x")&&!K&&!pe.open){Ke.openPalette();return}if(v.tab&&!K){e.cycleMode();return}if(!K&&v.upArrow&&P.length>0){let S=ee<0?P.length-1:Math.max(0,ee-1);le(S),Q(P[S]??"");return}if(!K&&v.downArrow&&ee>=0){let S=ee+1;S>=P.length?(le(-1),Q("")):(le(S),Q(P[S]??""));return}if(v.leftArrow){y(S=>({...S,cursor:v.meta?nu(S):CS(S)}));return}if(v.rightArrow){y(S=>({...S,cursor:v.meta?Zp(S):OS(S)}));return}if(v.meta&&(x==="b"||x==="f")){y(S=>({...S,cursor:x==="b"?nu(S):Zp(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"?KN(S):x==="k"?YN(S):VN(S);return me(_.text),_}),le(-1);return}if(v.return&&v.shift){y(S=>xi(S,`
|
|
@@ -677,11 +677,11 @@ ${o[s]}`).join(`
|
|
|
677
677
|
`)}function dZ(){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(`
|
|
678
678
|
`)}function uZ(t={}){let e=t.name??"este projeto",o=[];o.push(`# ${e}`),o.push(""),o.push("Instru\xE7\xF5es de projeto para o agente Aluy (lidas no in\xEDcio de cada sess\xE3o).","Edite \xE0 vontade \u2014 voc\xEA \xE9 o dono deste contexto."),o.push(""),o.push("## O que \xE9"),o.push(""),o.push(t.description??"<!-- Descreva o objetivo do projeto em 1\u20132 linhas. -->"),o.push(""),o.push("## Stack"),o.push(""),o.push(t.stack??"<!-- Linguagem/framework principais. -->"),o.push(""),o.push("## Comandos"),o.push("");let n=t.scripts??{},r=Object.keys(n);if(r.length>0){o.push("```bash");for(let s of r)o.push(`npm run ${s} # ${n[s]}`);o.push("```")}else o.push("<!-- Como instalar, buildar, testar e rodar (build/test/lint/start). -->");if(o.push(""),o.push("## Estrutura"),o.push(""),t.topDirs&&t.topDirs.length>0)for(let s of t.topDirs)o.push(`- \`${s}/\``);else o.push("<!-- Os diret\xF3rios principais e o que vive em cada um. -->");return o.push(""),o.push("## Conven\xE7\xF5es"),o.push(""),o.push("<!-- Padr\xF5es de c\xF3digo, idioma de docs/commits, regras de seguran\xE7a, o que N\xC3O fazer. -->"),o.push(""),o.join(`
|
|
679
679
|
`)}function nU(t){return["Voc\xEA \xE9 um especialista em scaffolding de projetos Aluy. Sua tarefa \xE9 gerar a","configura\xE7\xE3o `.aluy/` SOB MEDIDA para o projeto descrito abaixo.","","## O que voc\xEA deve criar","","Analise a descri\xE7\xE3o do projeto e crie os seguintes arquivos em `.aluy/`:","","1. **ALUY.md** (na raiz do projeto) \u2014 instru\xE7\xF5es de projeto para o agente Aluy."," Deve conter: nome do projeto, stack, comandos principais (build/test/lint),"," estrutura de diret\xF3rios e conven\xE7\xF5es. Use o formato:"," ```"," # nome-do-projeto"," Instru\xE7\xF5es de projeto para o agente Aluy\u2026"," ## O que \xE9"," \u2026"," ## Stack"," \u2026"," ## Comandos"," \u2026"," ## Estrutura"," \u2026"," ## Conven\xE7\xF5es"," \u2026"," ```","","2. **Agentes** em `.aluy/agents/` \u2014 perfis de sub-agentes NOMEADOS (`.md`)."," Formato EXATO (frontmatter YAML + corpo = system prompt):"," ```"," ---"," name: nome-do-agente # obrigat\xF3rio, min\xFAsculas, [a-z0-9_-]"," description: O que ele faz (1 frase)"," tools: read_file, grep # opcional \u2014 restringe o toolset (\u2286 pai)"," model: sonnet # opcional \u2014 prefer\xEAncia de tier"," ---"," Voc\xEA \xE9 um [persona]. [Instru\xE7\xF5es claras e objetivas.]"," ```"," - `tools:` AUSENTE = herda o toolset do pai."," - `tools:` PRESENTE = RESTRINGE \xE0 lista declarada."," - Crie agentes RELEVANTES ao stack descrito (ex.: revisor, tester, dev,"," arquiteto\u2026). SEMPRE crie pelo menos 1 agente.","","3. **Workflows** em `.aluy/workflows/` \u2014 fluxos de atividades (`.md`)."," Formato EXATO:"," ```"," ---"," name: nome-do-workflow # obrigat\xF3rio"," description: O que o fluxo entrega (1 frase)"," ---"," 1. passo-um [agente] \u2014 Objetivo claro do primeiro passo."," 2. passo-dois \u2014 Objetivo claro do segundo passo (sem agente = usa o default)."," ```"," - `[agente]` \xE9 OPCIONAL \u2014 se presente, invoca o agente `.md` com esse nome."," - O separador entre id e objetivo \xE9 `\u2014` (em-dash) ou `-`."," - Crie workflows do SDLC relevantes ao stack (ex.: implementar-estoria,"," code-review, deploy, bug-fix\u2026). Crie pelo menos 1 workflow.","","4. **Comandos** em `.aluy/commands/` \u2014 atalhos de prompt (`.md`)."," Formato EXATO:"," ```"," ---"," summary: O que o comando faz (1 frase)"," ---"," Template do prompt. Use $ARGUMENTS para os args do usu\xE1rio."," Ex.: Revise o arquivo $ARGUMENTS e sugira melhorias."," ```"," - O nome do comando vem do NOME DO ARQUIVO (sem `.md`)."," - `$ARGUMENTS` \xE9 substitu\xEDdo pelo que o usu\xE1rio digitar ap\xF3s `/<nome>`."," - Crie comandos \xDATEIS ao stack (ex.: revisar, testar, deploy, explicar\u2026)."," Crie pelo menos 1 comando.","","## IMPORTANTE","","- Escreva CADA arquivo com a ferramenta `write_file` (que passa pela catraca).","- Use caminhos RELATIVOS a partir da raiz do workspace:"," `ALUY.md`, `.aluy/agents/<nome>.md`, `.aluy/workflows/<nome>.md`,"," `.aluy/commands/<nome>.md`.","- N\xC3O crie diret\xF3rios explicitamente \u2014 o `write_file` j\xE1 os cria.","- Se um arquivo j\xE1 existir, use `overwrite: false` (padr\xE3o) \u2014 N\xC3O sobrescreva"," config do dono.","- Seja CRIATIVO e RELEVANTE: os agentes/workflows/comandos devem refletir o"," stack e o dom\xEDnio do projeto descrito.","- Ap\xF3s criar todos os arquivos, fa\xE7a um RESUMO do que foi criado e por qu\xEA.","","## Descri\xE7\xE3o do projeto","",t.trim(),""].join(`
|
|
680
|
-
`)}async function mZ(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 fZ(t){return[{path:di,content:uZ(t)},{path:eU,content:lZ()},{path:tU,content:cZ()},{path:oU,content:dZ()}]}async function pZ(t,e,o,n,r,s=!1,i){if(e&&!s)return"skipped";let a={name:"write_file",input:{path:t.path,content:t.content,...s?{overwrite:!0}:{}}},l=ur(n,a);if(l.decision==="deny")return"denied";if(l.decision==="ask"){if(!l.effect)return"error";if((await r.resolve({call:a,effect:l.effect,category:l.category??"default",reason:l.reason,alwaysAsk:(l.category??"").startsWith("always-ask:")},i)).kind==="deny")return"denied"}return(await Ym.run(a.input,o)).ok?"created":"error"}function og(t){return t===di?`${di} (config do projeto)`:t===eU?".aluy/agents/exemplo.md (agente de exemplo)":t===tU?".aluy/workflows/exemplo.md (workflow de exemplo)":t===oU?".aluy/commands/exemplo.md (comando de exemplo)":t}async function rU(t){let{ports:e,permission:o,askResolver:n}=t,r=await mZ(e,t.rootName),s=fZ(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 ${di} 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 ${di}, 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 pZ(y,b,e,o,n,w,t.signal)){case"created":l.push(y.path);break;case"skipped":c.push(y.path);break;case"denied":d.push(y.path);break;case"error":m.push(y.path);break}}let u=l.length>0,h=[];if(u){h.push("scaffold criado com sucesso:");for(let g of l){let y=i[s.findIndex(b=>b.path===g)]?"regenerado":"criado";h.push(` ${y}: ${og(g)}`)}}if(c.length>0){u&&h.push(""),h.push("pulados (j\xE1 existiam \u2014 idempotente, n\xE3o sobrescrevo):");for(let g of c)h.push(` \u21B7 ${og(g)}`)}if(d.length>0){(u||c.length>0)&&h.push(""),h.push("recusados pela catraca de seguran\xE7a:");for(let g of d)h.push(` \u2717 ${og(g)}`)}if(m.length>0){(u||c.length>0||d.length>0)&&h.push(""),h.push("falharam ao escrever:");for(let g of m)h.push(` \u26A0 ${og(g)}`)}return!u&&c.length===s.length&&h.push("tudo j\xE1 existe \u2014 nada a criar (idempotente)."),u&&(h.push(""),h.push("revise e edite os arquivos \u2014 eles s\xE3o seus."),h.push("os exemplos em .aluy/ s\xE3o carregados automaticamente no pr\xF3ximo boot."),r.stack&&h.push(`stack detectada: ${r.stack}`),r.topDirs&&r.topDirs.length>0&&h.push(`estrutura: ${r.topDirs.map(g=>`${g}/`).join(", ")}`)),{created:u,note:{title:"init",lines:h},createdPaths:l,skippedPaths:c}}var PA,eU,tU,oU,sU=p(()=>{"use strict";N();Ax();PA=".aluy",eU=`${PA}/agents/exemplo.md`,tU=`${PA}/workflows/exemplo.md`,oU=`${PA}/commands/exemplo.md`});var uU={};
|
|
680
|
+
`)}async function mZ(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 fZ(t){return[{path:di,content:uZ(t)},{path:eU,content:lZ()},{path:tU,content:cZ()},{path:oU,content:dZ()}]}async function pZ(t,e,o,n,r,s=!1,i){if(e&&!s)return"skipped";let a={name:"write_file",input:{path:t.path,content:t.content,...s?{overwrite:!0}:{}}},l=ur(n,a);if(l.decision==="deny")return"denied";if(l.decision==="ask"){if(!l.effect)return"error";if((await r.resolve({call:a,effect:l.effect,category:l.category??"default",reason:l.reason,alwaysAsk:(l.category??"").startsWith("always-ask:")},i)).kind==="deny")return"denied"}return(await Ym.run(a.input,o)).ok?"created":"error"}function og(t){return t===di?`${di} (config do projeto)`:t===eU?".aluy/agents/exemplo.md (agente de exemplo)":t===tU?".aluy/workflows/exemplo.md (workflow de exemplo)":t===oU?".aluy/commands/exemplo.md (comando de exemplo)":t}async function rU(t){let{ports:e,permission:o,askResolver:n}=t,r=await mZ(e,t.rootName),s=fZ(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 ${di} 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 ${di}, 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 pZ(y,b,e,o,n,w,t.signal)){case"created":l.push(y.path);break;case"skipped":c.push(y.path);break;case"denied":d.push(y.path);break;case"error":m.push(y.path);break}}let u=l.length>0,h=[];if(u){h.push("scaffold criado com sucesso:");for(let g of l){let y=i[s.findIndex(b=>b.path===g)]?"regenerado":"criado";h.push(` ${y}: ${og(g)}`)}}if(c.length>0){u&&h.push(""),h.push("pulados (j\xE1 existiam \u2014 idempotente, n\xE3o sobrescrevo):");for(let g of c)h.push(` \u21B7 ${og(g)}`)}if(d.length>0){(u||c.length>0)&&h.push(""),h.push("recusados pela catraca de seguran\xE7a:");for(let g of d)h.push(` \u2717 ${og(g)}`)}if(m.length>0){(u||c.length>0||d.length>0)&&h.push(""),h.push("falharam ao escrever:");for(let g of m)h.push(` \u26A0 ${og(g)}`)}return!u&&c.length===s.length&&h.push("tudo j\xE1 existe \u2014 nada a criar (idempotente)."),u&&(h.push(""),h.push("revise e edite os arquivos \u2014 eles s\xE3o seus."),h.push("os exemplos em .aluy/ s\xE3o carregados automaticamente no pr\xF3ximo boot."),r.stack&&h.push(`stack detectada: ${r.stack}`),r.topDirs&&r.topDirs.length>0&&h.push(`estrutura: ${r.topDirs.map(g=>`${g}/`).join(", ")}`)),{created:u,note:{title:"init",lines:h},createdPaths:l,skippedPaths:c}}var PA,eU,tU,oU,sU=p(()=>{"use strict";N();Ax();PA=".aluy",eU=`${PA}/agents/exemplo.md`,tU=`${PA}/workflows/exemplo.md`,oU=`${PA}/commands/exemplo.md`});var uU={};mt(uU,{NATIVE_COMMANDS:()=>jo,NO_CYCLE_CEILING_MESSAGE:()=>IA,defaultBootPrompt:()=>cU,describeConfigSources:()=>dU,emitBootClear:()=>hl,isLoggedOut:()=>lU,preflightCycleCeiling:()=>aU,resolveCycleBootCeilings:()=>iU,runSession:()=>yZ});import{render as hZ}from"ink";import{basename as gZ}from"node:path";import{jsx as SZ}from"react/jsx-runtime";function iU(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 aU(t,e){try{let n={...aa(t).request,...e?.maxIterations!==void 0?{maxIterations:e.maxIterations}:{},...e?.maxDurationMs!==void 0?{maxDurationMs:e.maxDurationMs}:{}};return da(n),{kind:"ok"}}catch(o){if(o instanceof Bn)return{kind:"no-ceiling"};if(o instanceof zt)return{kind:"parse-error",message:o.message};throw o}}async function yZ(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=A1(r,process),i=n&&t.promptYesNo===void 0,a;if(i){let E=t.stdout??process.stdout;hl(E,!0);let W=Vo({env:e,...t.dense?{density:"compact"}:{},...t.safeGlyphs?{safeGlyphs:!0}:{}});a=X1({theme:W,stdout:E});let ye=V1(e);ye>0&&await new Promise(R=>setTimeout(R,ye))}let l=a?.promptYesNo??t.promptYesNo??cU(t.stdout),c=t.mode,d=!1;t.yoloEntryNotice!==void 0&&n&&(await l(t.yoloEntryNotice)||(c="normal",d=!0,i||(t.stdout??process.stderr).write?.(`aluy: YOLO cancelado \u2014 seguindo em modo normal.
|
|
681
681
|
`)));let m=t.projectInstructions!==void 0?{instructions:t.projectInstructions,sources:[]}:await vZ(t),u=m.instructions,h=m.sources,g=t.configStore??new Qe,y=g.load();e.ALUY_MEM_MIN_SCORE===void 0&&y.recallMinScore!==void 0&&(e.ALUY_MEM_MIN_SCORE=String(y.recallMinScore));let b=gk(t.lang,f0(y),e),w=vk(t.split,y),T=process.env.ALUY_FULLSCREEN==="1"?kk(t.fullscreen,y):!1,A=t.sessionStore??new _d;try{A.gc()}catch{}let M=new Yt(t.workspaceRoot!==void 0?{root:t.workspaceRoot}:{}),B=M.root,H=await D1({request:t.resume,fresh:t.fresh===!0,isTty:n,store:A,cwd:B,promptYesNo:l});H.kind==="not-found"&&process.stderr.write(`aluy: sess\xE3o "${H.requestedId}" n\xE3o encontrada \u2014 iniciando uma nova.
|
|
682
682
|
`);let G=H.kind==="resumed"?H.record:null,Y=G?Nu(G,Zo):void 0,$=I1(y,Zo),te=Y&&Y.tier.trim()!==""?Y.tier:void 0,oe=$.tier.trim()!==""?$.tier:void 0,J=Xc(t.tier,{...y,...oe!==void 0?{tier:oe}:{},...te!==void 0?{tier:te}:{}},Zo),D=J!=="custom"?void 0:t.model!==void 0&&t.model.trim()!==""?t.model.trim():t.tier!==void 0&&t.tier.trim()!==""?void 0:Y?.model??$.model,z=J!=="custom"||D===void 0||t.model!==void 0&&t.model.trim()!==""||t.tier!==void 0&&t.tier.trim()!==""?void 0:Y?.provider??$.provider,xe=Y===void 0&&(t.tier===void 0||t.tier.trim()==="")&&$.warning!==void 0?$.warning:void 0,K=new us({workspace:M}),ue=new ld({workspace:M,readFile:E=>K.readFile(E),exists:E=>K.exists(E)}),Z=t.codexMcpConfigStore??new Qo,ie=!1,P=!1,ge=e.ALUY_SANDBOX_MCP?gp({processEnv:e}):void 0,ee=t.mcpTools!==void 0?void 0:await eg({workspaceRoot:B,parentEnv:e,...ge?{sandboxLauncher:ge}:{},loadProjectConfig:async()=>{let E=await ue.load();return ie=E.config.servers.length>0,E},loadCodexConfig:()=>{let E=Z.load();return P=E.config.servers.length>0,E}}),le=t.mcpTools??ee?.tools??[];ee?.configError&&process.stderr.write(`aluy: MCP \u2014 ${ee.configError}
|
|
683
683
|
`);for(let E of ee?.warnings??[])process.stderr.write(`aluy: MCP \u2014 ${E}
|
|
684
|
-
`);let Ce=t.mcpRegistryFetch??uS(),Oo=t.userAgentsLoader??new Mr,Le=t.projectAgentsLoader??new mi({workspace:M}),ct=Oo.load(),
|
|
684
|
+
`);let Ce=t.mcpRegistryFetch??uS(),Oo=t.userAgentsLoader??new Mr,Le=t.projectAgentsLoader??new mi({workspace:M}),ct=Oo.load(),dt=Le.load(),ht=new Ks(ct.profiles,dt.profiles),gt=[...ct.errors,...dt.errors],ut=Bp({flag:t.backend,env:e,config:y}),Zt=(()=>{if(t.budget!==void 0)return t.budget;if(e.ALUY_BUDGET!==void 0&&e.ALUY_BUDGET.trim()!==""){let E=e.ALUY_BUDGET.trim().toLowerCase();if(E==="1"||E==="true"||E==="on")return!0;if(E==="0"||E==="false"||E==="off")return!1}return y.localBudget!==void 0?y.localBudget:ut!=="local"})(),eo,L;if(ut==="local"&&t.brokerClient===void 0){let E=ss(),W=Ha({catalog:E,flags:{...t.localProvider!==void 0?{localProvider:t.localProvider}:{},...t.localModel!==void 0?{localModel:t.localModel}:{},...t.localAuth!==void 0?{localAuth:t.localAuth}:{},...t.localBaseUrl!==void 0?{localBaseUrl:t.localBaseUrl}:{}},env:e,config:y});eo=W.provider,L=await t1({catalog:E,provider:W.provider,model:W.model,auth:W.auth,...W.baseUrl!==void 0?{baseUrl:W.baseUrl}:{},env:e,...W.auth==="oauth"?{oauthAccessToken:q0(W.provider)}:{}})}let{provider:X,backend:ke,localProvider:Se,localModel:Pe,localAuth:De,localBaseUrl:V,...U}=t,k=nI({...U,...L!==void 0?{brokerClient:L}:{},...c!==void 0?{mode:c}:{},agentRegistry:ht,reloadProjectAgents:()=>Le.load().profiles,tier:J,effectiveBackend:ut,...y.services?{services:y.services}:{},...(()=>{let E=p0({env:e,profile:y.profile??"turbo",...y.sidecarToggles?.headroom!==void 0?{headroomToggle:y.sidecarToggles.headroom}:{},...y.services?{services:y.services}:{}});return E!==void 0?{headroomUrl:E}:{}})(),...y.limits?{limits:y.limits}:{},...y.context?{context:y.context}:{},localBudget:Zt,...D!==void 0?{model:D}:{},...ut==="local"&&eo!==void 0&&eo!==""?{provider:eo}:J==="custom"&&t.provider!==void 0&&t.provider.trim()!==""&&t.model!==void 0&&t.model.trim()!==""&&D===t.model.trim()?{provider:t.provider.trim()}:z!==void 0&&z.trim()!==""?{provider:z.trim()}:{},...G!==null?{sessionId:G.id}:{},...u!==void 0?{projectInstructions:u}:{},...(()=>{let E=ev(ht.list());return E!==void 0?{availableAgents:E}:{}})(),...(()=>{let E=y$();return E!==void 0?{sessionCommands:E}:{}})(),...le.length>0?{mcpTools:le}:{},memoryMonitor:{heapLimitMb:na(e),sampleHeapUsed:()=>process.memoryUsage().heapUsed}}),tt={id:G?.id??ta(),cwd:B},Mo=G?ui(G.blocks):[];G&&k.controller.restoreBlocks(G.blocks),G?.label!==void 0&&k.controller.setLabel(G.label,G.labelColor),Y?.warning&&k.controller.pushNote("model",[Y.warning]),xe!==void 0&&k.controller.pushNote("model",[xe]);let $e=()=>{O1(A,{id:tt.id,cwd:tt.cwd,tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{},...k.controller.provider!==void 0?{provider:k.controller.provider}:{},...k.controller.label!==void 0?{label:k.controller.label}:{},...k.controller.labelColor!==void 0?{labelColor:k.controller.labelColor}:{},blocks:k.controller.blocks})},Rs=t.userCommandsLoader??new Rd,Ii=t.projectCommandsLoader??new Cd({workspace:M}),Wt=Rs.load(),Dr=Ii.load(),Cs=Px(Wt,Dr),Os=Cs.map(E=>({name:E.name,summary:E.summary,source:"user",section:"usu\xE1rio"})),$u=new Map(Cs.map(E=>[E.name,E])),qo=k.hookRunner,dn=k.hooksConfig;if(H.kind==="pick"){(t.stdout??process.stdout).write(L1(H.choices).join(`
|
|
685
685
|
`)+`
|
|
686
686
|
`);return}if(!n){let E=t.stdout??process.stdout;k.askResolver.setNonInteractive(!0),k.questionResolver.setNonInteractive(!0),k.controller.setNonInteractive(!0);try{let W=Ct(dn,"session-start");if(W.length>0&&await qo.runAll(W),o){let Ee=(t.goal??"").trim(),Me=t.onExitCode??(()=>{});if(Ee===""){process.stderr.write(`aluy: -p sem prompt \u2014 passe via arg, posicional ou stdin.
|
|
687
687
|
`),Me(2);return}let cr=[];try{cr=[...await k.memory.recall()]}catch{cr=[]}let Ur=[...cr,...Mo],fn=t.headless?.outputFormat??"text",dr=tg(On=>k.controller.subscribe(On),{runner:qo,config:dn}),vl=S1({runner:qo,config:dn}),rg=vl?k.controller.addToolObserver(vl):()=>{},Po;try{if(fn==="stream-json")t.headless?.cycle&&process.stderr.write(`aluy: aviso: --cycle ignora --output-format stream-json (sa\xEDda linear)
|
|
@@ -693,7 +693,7 @@ ${o[s]}`).join(`
|
|
|
693
693
|
`),fn==="json"){let On={result:Po.result,ok:Po.ok,tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{}};E.write(JSON.stringify(On)+`
|
|
694
694
|
`)}else fn==="text"&&Po.result!==""&&E.write(Po.result+`
|
|
695
695
|
`);await k.controller.drainMemoryWrites(),Me(Po.ok?0:1);return}if(IB(t.goal,E,{currentTheme:oi(Vo({env:e}).brightness)})){let Ee=kZ(t.goal),Me=Ee?Er(Ee):void 0;Me&&g.saveTheme(Me.name);return}if(NB(t.goal,E,{currentLang:b})){let Ee=xZ(t.goal),Me=Ee?ns(Ee):void 0;Me&&g.saveLang(Me.code);return}if(await LB(t.goal,E,{catalog:k.catalogClient,tier:{setTier:(Ee,Me)=>{k.controller.setTier(Ee,Me),g.saveTier(Ee,Me)}},currentTier:k.controller.tier})||DB(t.goal,E,{currentProvider:k.controller.provider,setProvider:Ee=>k.controller.setProvider(Ee)})||await PB(t.goal,E,new Iu({journal:k.journal}))||await $B(t.goal,E,{memory:k.memory,isPlan:k.engine.isPlan})||await FB(t.goal,E,{store:k.todoStore,isPlan:k.engine.isPlan})||await BB(t.goal,E,{memory:k.memory,clearSession:()=>k.controller.clear()})||AN(t.goal,E,{setLabel:(Ee,Me)=>k.controller.setLabel(Ee,Me),currentLabel:k.controller.label,currentColor:k.controller.labelColor,persist:()=>$e()})||E$(t.goal,E,{store:A,resume:Ee=>{tt.id=Ee.id,tt.cwd=Ee.cwd;let Me=Nu(Ee,Zo);Me.tier.trim()!==""&&k.controller.setTier(Me.tier,Me.model),Me.tier==="custom"&&Me.model&&k.controller.setProvider(Me.provider),Me.warning&&E.write(`[history] ${Me.warning}
|
|
696
|
-
`),k.controller.resetResumeContext(),k.controller.restoreBlocks(Ee.blocks);let cr=ui(Ee.blocks);cr.length>0&&k.controller.seedHistory(cr),$e()}}))return;{let Ee=!1,Me=k.controller.subscribe(()=>$e());try{Ee=await MB(k.controller,t.goal,E)}finally{Me(),Ee&&$e()}if(Ee)return}let lr=[];try{lr=[...await k.memory.recall()]}catch{lr=[]}let It=[...lr,...Mo],Fi=k.controller.subscribe(()=>$e()),Br=tg(Ee=>k.controller.subscribe(Ee),{runner:qo,config:dn});try{await RB(k.controller,t.goal,E,{attachReader:k.attachReader,...It.length>0?{seedHistory:It}:{}})}finally{Br(),Fi(),$e()}return}finally{ee&&await ee.close()}}if(a?await a.finish():hl(t.stdout??process.stdout,n),n)try{process.stdin.resume(),await new Promise(E=>setImmediate(E)),await new Promise(E=>setImmediate(E)),process.stdin.pause()}catch{}let un=await bZ(e,t.stdout,y),Lo=t.safeGlyphs?{safeGlyphs:!0}:{},yo=t.dense?{density:"compact"}:{},to=Er(un)?Vo({env:e,theme:Er(un).brightness,...yo,...Lo}):Vo({env:e,...yo,...Lo}),Wo=new qp({stdout:t.stdout??process.stdout,env:e});{let E=ts(un);E&&Wo.apply(E.bg)}let Ni=t.stdout??process.stdout,$r=xx(e),mn=new Ed({write:E=>Ni.write(E),isTty:!0,enabled:$r.enabled,desktop:$r.desktop}),q=b1(E=>k.controller.subscribe(E),{port:mn}),he=tg(E=>k.controller.subscribe(E),{runner:qo,config:dn});d&&i&&k.controller.pushNote("yolo",["YOLO cancelado \u2014 seguindo em modo normal."]);{let E=dU({instructionSources:h,globalCommands:Wt.length,projectCommands:Dr.length,mcpServers:ee?.discovery.servers.length??0,projectMcp:ie,codexMcp:P});E.length>0&&k.controller.pushNote("config",E)}{let E=LN(Hn,e);E!==void 0&&k.controller.pushNote("update",[E]),PN(Hn,e)}dt==="broker"&&await lU({login:k.login,env:e})&&k.controller.pushNote("login",["sem credencial \u2014 rode `aluy login` (ou defina ALUY_TOKEN)."]);{let E=[],W=ht.list().length;if(W>0){let ye=ht.list().map(R=>`${R.name} (${R.origin==="global"?"global":"projeto"})`).join(" \xB7 ");E.push(`${W} agente(s) .md: ${ye}`)}for(let ye of ht.crossLayerConflicts)E.push(`\u26A0 "${ye.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 ye of gt)E.push(`\u26A0 ${ye.reason}`);E.length>0&&k.controller.pushNote("agentes",E)}let ot=new Iu({journal:k.journal}),bt=null,At=E=>{k.controller.pushNote(E.note.title,E.note.lines),bt=E.kind==="confirm"?E.proceed:null},_t=null,Fr,ir,pe=async E=>{ee&&await ee.close();let W=await eg({workspaceRoot:B,parentEnv:e,...ge?{sandboxLauncher:ge}:{},loadProjectConfig:async()=>{let O=await ue.load();return ie=O.config.servers.length>0,O},loadCodexConfig:()=>{let O=Z.load();return P=O.config.servers.length>0,O}});k.controller.refreshMcpTools(W.tools),ee=W;let ye=[],R=[];for(let O of W.discovery.servers)E!=="all"&&O.server!==E||(O.ok?ye.push(O.server):R.push(`${O.server} (${O.error??"desconhecido"})`));return{ok:ye,failed:R}},F=(E,W="")=>{if(E.id!=="clear"&&(ir=void 0),E.source==="user"||E.id===void 0){let R=$u.get(E.name);if(!R){k.controller.pushNote(`/${E.name}`,["comando do usu\xE1rio sem corpo \u2014 ignorado."]);return}let O=ov(R.template,W);if(O.trim()===""){k.controller.pushNote(`/${E.name}`,["comando do usu\xE1rio expandiu p/ vazio \u2014 nada a fazer."]);return}k.controller.submit(O);return}if(E.id==="model"&&W.trim()!==""){let R=tp((O,j)=>{k.controller.setTier(O,j),g.saveTier(O,j)},W.trim());k.controller.pushNote(R.title,R.lines);return}if(E.id==="theme"){let R=Mu(W,oi(to.brightness));R.kind==="theme"&&k.controller.pushNote(R.note.title,R.note.lines);return}if(E.id==="provider"){let R=Lu(W,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(E.id==="effort"){if(!W||W.trim()==="")k.controller.pushNote("effort",[`atual: ${k.controller.effort??"(default do modelo)"}`]);else{let R=W.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(E.id==="ask"){k.controller.askParallel(W);return}if(E.id==="rooms"){let[R,...O]=W.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 j=O.join(" ").trim();j===""?k.controller.roomReadPick():k.controller.roomRead(j)}else R==="watch"?k.controller.roomWatch(O.join(" ")):k.controller.pushNote("/rooms",[`subcomando "${R}" \u2014 use list | new | read <c\xF3digo> | watch <c\xF3digo>.`]);return}if(E.id==="subagent"){let R=W.trim();R===""?k.controller.exitFocus():k.controller.enterSubagentFocus(R);return}if(E.id==="back"){k.controller.exitFocus();return}if(E.id==="rename"){let R=vS(W);switch(R.kind){case"set":k.controller.setLabel(R.label.label,R.label.color),kS(`aluy \xB7 ${R.label.label}`),$e(),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),kS(void 0),$e(),k.controller.pushNote("rename",["r\xF3tulo removido \u2014 a sess\xE3o volta sem nome."]);return;case"show":{let O=k.controller.label;k.controller.pushNote("rename",O!==void 0?[`sess\xE3o: \u25CF ${O}${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: ${va.join(", ")}.`]);return}case"error":k.controller.pushNote("rename",[R.message]);return}}if(E.id==="init"){let R=/(?:^|\s)--force\b/.test(W)||W.trim()==="--force",O=W.replace(/--force\b/,"").trim();if(O!==""&&!R){let j=nU(O);k.controller.pushNote("init",[`gerando scaffold sob medida para: ${O}`,"o agente vai analisar a descri\xE7\xE3o e criar os arquivos em .aluy/\u2026"]),k.controller.submit(j);return}rU({ports:k.ports,permission:k.engine,askResolver:k.askResolver,rootName:gZ(k.workspace.root),overwrite:R}).then(j=>k.controller.pushNote(j.note.title,j.note.lines));return}if(E.id==="notify"){let R=uA(W,{enabled:mn.enabled,tty:!0});R.kind==="notify"&&(mn.setEnabled(R.enable),k.controller.pushNote(R.note.title,R.note.lines));return}if(E.id==="undo"){let R=bt??(()=>ot.undo());bt=null,R().then(At);return}if(E.id==="redo"){bt=null,ot.redo().then(At);return}if(E.id==="compact"){k.controller.compact();return}if(E.id==="cycle"){let R=W.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 j=(W.trim().match(/^edit\b\s*(.*)$/i)?.[1]??"").trim().match(/"[^"]*"|\S+/g)??[],Q={},me=[];for(let oo=0;oo<j.length;oo+=1){let vo=j[oo];if(vo==="--max-iter"||vo==="--iter"){let It=Number(j[oo+1]);oo+=1,Number.isInteger(It)&&(Q.maxIterations=It);continue}let Go=vo.match(/^(\d+)x$/i);if(Go){Q.maxIterations=Number(Go[1]);continue}let lr=vo.match(/^(\d+)(s|m|h)$/i);if(lr&&Q.intervalMs===void 0&&me.length===0){let It=Number(lr[1]),Fi=lr[2].toLowerCase();Q.intervalMs=It*(Fi==="s"?1e3:Fi==="m"?6e4:36e5);continue}me.push(vo.replace(/^"|"$/g,""))}let Xe=me.join(" ").trim();Xe&&(Q.task=Xe),k.controller.cycleEdit(Q);return}if(W.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(W);return}if(E.id==="clear"){let R=Jh(W),{armed:O,nextArmed:j}=_B(ir,R);ir=j,Qh(R,{clearSession:()=>k.controller.clear(),memory:k.memory},O).then(Q=>{Q.armed||(ir=void 0),Q.note.lines.length>0&&k.controller.pushNote(Q.note.title,Q.note.lines),Q.cleared&&_t?.()});return}if(E.id==="memory"){let R=Kh(W);Yh(R,k.memory,k.engine.isPlan).then(O=>k.controller.pushNote(O.title,O.lines));return}if(E.id==="todo"){let R=Vh(W);Xh(R,k.todoStore,k.engine.isPlan).then(O=>k.controller.pushNote(O.title,O.lines));return}if(E.id==="cron"){let R=[],O={out:me=>R.push(me),err:me=>R.push(me)},j=W.match(/"[^"]*"|\S+/g)?.map(me=>me.replace(/^"|"$/g,""))??[],Q=j.length===0?["list"]:j;pS(Q,{io:O}).then(()=>k.controller.pushNote("cron",R.length>0?R:["(sem sa\xEDda)"]));return}if(E.id==="add-dir"){let R=pB(W,k.workspace);k.controller.pushNote(R.title,R.lines);return}if(E.id==="agents"){let R=kc({profiles:[...ct.profiles,...pt.profiles],errors:gt});k.controller.pushNote(R.title,R.lines);return}if(E.id==="workflows"){let R=/^\s*run\s+(\S+)/.exec(W);if(R){let Xe=R[1];k.controller.workflowRun(Xe);return}let O=/^\s*use\s+(\S+)/.exec(W);if(O){let Xe=O[1];k.controller.workflowsUse(Xe);return}let j=new ms().load(),Q=new fs({workspace:k.workspace}).load(),me=Tc({workflows:[...j.workflows,...Q.workflows],errors:[...j.errors,...Q.errors]});k.controller.pushNote(me.title,me.lines);return}if(E.id==="skills"){let R=new fi().load(),O=new pi({workspace:k.workspace}).load(),j=wc({skills:[...R.skills,...O.skills],errors:[...R.errors,...O.errors]});k.controller.pushNote(j.title,j.lines);return}if(E.id==="doctor"){if(/(^|\s)fix(\s|$)/.test(W)){let j=l1(kA),Q=c1({logTails:j});k.controller.pushNote("doctor fix",["tentando consertar os complementos do turbo \u2014 vou diagnosticar pelos logs, rodar o","bootstrap e reparar. Acompanhe abaixo."]),k.controller.submit(Q);return}let R=/(^|\s)--(deep|test)(\s|$)/.test(W),O=k.workspace.root;s1({login:k.login,memory:{count:async()=>(await k.memory.list()).length},workspaceRoot:O,unsafe:k.engine.isUnsafe,env:e,probeOverride:{makeMcpTransport:()=>new Rr({cwd:O,parentEnv:e}),...R?{tierTester:()=>mp({tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{},login:k.login,env:e})}:{}}},j=>k.controller.upsertDoctor(j.checks,j.summary)).then(j=>{j.checks.find(me=>me.id==="sidecars")?.status==="fail"&&k.controller.pushNote("doctor",["H\xE1 complemento(s) do turbo fora. Quer que eu tente consertar?","Digite /doctor fix \u2014 eu leio os logs, rodo o bootstrap e reparo sozinho."])});return}if(E.id==="mcp"){let R=yB(W);if(R){let{kind:Q,scope:me}=R,Xe=Q==="reload"?"reload":"reconnect";k.controller.pushNote("mcp",[`/${Xe} ${me==="all"?"todos":me}: recarregando\u2026`]),pe(me).then(({ok:oo,failed:vo})=>{let Go=[];oo.length>0&&Go.push(`\u2713 ${oo.join(", ")}`),vo.length>0&&Go.push(`\u2717 ${vo.join(", ")}`),oo.length===0&&vo.length===0&&Go.push("nenhum server afetado."),k.controller.pushNote(`mcp ${Xe}`,Go)});return}let O=f1(W);if(O){let Q=p1(O);k.controller.pushNote(Q.title,Q.lines);return}let j=gB(W);if(j){if(j.query===""){let me=bB();k.controller.pushNote(me.title,me.lines);return}let Q=vB(j.query);k.controller.pushNote(Q.title,Q.lines),kB(j.query,Ce).then(me=>k.controller.pushNote(me.title,me.lines));return}if(ee){let Q=Zs(ee.sources,ee.discovery),me=hB(Q,ee.configError);k.controller.pushNote(me.title,me.lines);return}}if(E.id==="telegram"){SB(W,{configStore:g,secretStore:new Ra("telegram")}).then(R=>k.controller.pushNote(R.title,R.lines));return}let ye=fB(E.id,{usage:k.controller.usage,unsafe:k.engine.isUnsafe});if(ye.kind==="quit"){Fr.unmount();return}if(ye.kind==="async"){xB(ye.id,k.login).then(R=>k.controller.pushNote(R.title,R.lines));return}wB(ye,k.controller)},bo=E=>{let W=A.load(E);if(!W){k.controller.pushNote("history",[`sess\xE3o n\xE3o encontrada: ${E} \u2014 nada mudou.`]);return}let ye=Nu(W,Zo);A$(W,{restoreBlocks:R=>k.controller.restoreBlocks(R),seedHistory:R=>k.controller.seedHistory(R),resetContinuation:()=>k.controller.resetResumeContext(),switchSession:R=>{tt.id=R.id,tt.cwd=R.cwd,ye.tier.trim()!==""&&k.controller.setTier(ye.tier,ye.model),ye.tier==="custom"&&ye.model&&k.controller.setProvider(ye.provider)},clearScreen:()=>{}}),k.controller.setLabel(W.label,W.labelColor),$e(),ye.warning&&k.controller.pushNote("model",[ye.warning]),k.controller.pushNote("history",[`sess\xE3o retomada: ${E} \u2014 continue de onde parou.`])},gl=E=>{let W=k.checkpoints.get(E.checkpointId);if(!W){k.controller.pushNote("rewind",["ponto n\xE3o encontrado \u2014 nada mudou."]);return}let ye=[`voltando ao ponto #${W.ordinal}: ${W.label}`];if((E.action==="both"||E.action==="code")&&k.checkpoints.restoreCode(W.id).then(R=>{let O=[];R.written.length>0&&O.push(`arquivos restaurados: ${R.written.length}`),R.removed.length>0&&O.push(`arquivos removidos (eram novos): ${R.removed.length}`),R.written.length===0&&R.removed.length===0&&O.push("nenhuma edi\xE7\xE3o de arquivo posterior ao ponto \u2014 c\xF3digo intacto.");for(let j of R.failed)O.push(`\u26A0 falhou: ${j.path} \u2014 ${j.reason}`);if(R.barrierWarnings.length>0){O.push("comando(s) rodaram depois do ponto (efeito de shell N\xC3O desfeito):");for(let j of R.barrierWarnings)O.push(` \xB7 ${j}`)}k.controller.pushNote("rewind \u2014 c\xF3digo",O)}),E.action==="both"||E.action==="conversation"){let R=k.controller.rewindConversation(W.blockCount,ui);ye.push(R>0?`conversa rebobinada \u2014 ${R} bloco(s) posterior(es) descartado(s).`:"conversa j\xE1 estava neste ponto."),_t?.(),$e()}k.controller.pushNote("rewind",ye)},Rt=uN(e),Di=mN(e),ze=Rt||Di?pN(r,{sync:Rt,overwrite:Di}):void 0,$i=ze?.stdout??r,Pt=T&&Ts(r.rows??0,r.columns??0).kind==="cockpit";Pt&&(EA(r),ze?.setCockpit(!0));let Fu=vN(r),vt=()=>Fu.disable();process.once("exit",vt);let yl=t.exportStore??new Td,Ie=async E=>{let W=R1(k.controller.blocks,{sessionId:tt.id,...k.controller.label!==void 0?{label:k.controller.label}:{},tier:k.controller.tier});return yl.write(W,{sessionId:tt.id,...E!==void 0?{fileName:E}:{}})},Bu=()=>{ze?.cleanup(),Wo.reset(),vt()},Ke=T1(process,Bu),bl=k.controller.provider,ng=bl!==void 0&&bl!==""?{currentProvider:bl}:{},ar=k.controller.effort,Uu=ar!==void 0&&ar!==""?{currentEffort:ar}:{};Q1(process.stdin);try{i&&k.controller.dismissBoot(),Fr=hZ(SZ(VB,{initialTheme:un,env:e,...yo,...Lo,onThemeChanged:O=>{let j=Er(O);j&&Wo.apply(j.bg),j&&g.saveTheme(j.name),k.controller.pushNote("theme",[`tema trocado para: ${j?j.label:O} (${O})`])},initialLang:b,onLangChanged:O=>{let j=ni(O);g.saveLang(O);let Q=vi(O).t;k.controller.pushNote("lang",[Q("lang.changed",{label:j?j.label:O})])},controller:k.controller,egress:k.egress,userCommands:Os,animate:to.animate,syncActive:ze!==void 0,version:Hn,onCommand:F,registerClearScreen:O=>{_t=O},fileIndex:k.fileIndex,attachReader:k.attachReader,catalog:k.catalogClient,customModels:k.customModelClient,providersClient:k.providersClient,sessionStore:A,onResumeSession:bo,rewindSource:k.checkpoints,onRewind:gl,initialSplitView:w,onSplitViewChange:O=>{g.saveSplitView(O)},initialFullscreen:T,cockpitEnteredAtBoot:Pt,cockpitScreen:{enter:()=>{EA(r),ze?.setCockpit(!0)},leave:()=>{ze?.setCockpit(!1),r.write("\x1B[?1049l\x1B[?25h\x1B[2J\x1B[3J\x1B[H"),ze?.resetDiffer()},resetDiffer:()=>{ze?.resetDiffer()}},onFullscreenChange:O=>{g.saveFullscreen(O)},onExportTranscript:Ie,onSelectTier:(O,j,Q)=>{k.controller.setTier(O,j),g.saveTier(O,j),O==="custom"&&j?k.controller.pushNote("model",[`modelo Custom: ${j}`,"\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",...Q?.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: ${O}`])},...Uu,onSelectConjugated:(O,j)=>{let Q=O.kind==="tier"?O.key:"custom",me=O.kind==="custom"?O.model:void 0;k.controller.setTier(Q,me),g.saveTier(Q,me),j.kind==="set"&&k.controller.setEffort(j.value);let Xe=j.kind==="set"?`esfor\xE7o: ${j.value}`:`esfor\xE7o: ${k.controller.effort??"(default do modelo)"} (mantido)`,oo=O.kind==="custom"&&O.supportsTools===!1?["\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem"]:[];Q==="custom"&&me?k.controller.pushNote("model",[`modelo Custom: ${me}`,Xe,"\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",...oo]):k.controller.pushNote("model",[`tier trocado para: ${Q}`,Xe])},...ng,onSelectProvider:O=>{k.controller.setProvider(O);let j=k.controller.provider===O;k.controller.pushNote("provider",j?[`provider do modo Custom: ${O}`,"\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: ${O}`,"\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:O=>k.controller.setMode(O),sessionGrants:k.engine.sessionGrants,effectiveSafeDefault:O=>k.engine.effectiveSafeDefault(O),setSafeToolDefault:(O,j)=>k.engine.setSafeToolDefault(O,j)}}),{stdout:$i,exitOnCtrlC:!1});let E=[];try{E=[...await k.memory.recall()]}catch{E=[]}let W=[...E,...Mo];W.length>0&&k.controller.seedHistory(W);let ye=k.controller.subscribe(()=>$e());k.controller.setMemoryShutdown(()=>{$e(),process.exitCode=1;try{Fr.unmount()}catch{}}),k.controller.startMemoryMonitor();let R=Ct(dn,"session-start");R.length>0&&qo.runAll(R),t.goal!==void 0&&t.goal.trim()!==""&&k.controller.submit(t.goal);try{await Fr.waitUntilExit()}finally{ze?.cleanup(),Wo.reset(),s.dispose(),Ke.dispose()}ee&&await ee.close(),q(),he(),ye(),$e(),process.stdout.isTTY&&k.controller.current.blocks.length>0&&process.stdout.write(`
|
|
696
|
+
`),k.controller.resetResumeContext(),k.controller.restoreBlocks(Ee.blocks);let cr=ui(Ee.blocks);cr.length>0&&k.controller.seedHistory(cr),$e()}}))return;{let Ee=!1,Me=k.controller.subscribe(()=>$e());try{Ee=await MB(k.controller,t.goal,E)}finally{Me(),Ee&&$e()}if(Ee)return}let lr=[];try{lr=[...await k.memory.recall()]}catch{lr=[]}let It=[...lr,...Mo],Fi=k.controller.subscribe(()=>$e()),Br=tg(Ee=>k.controller.subscribe(Ee),{runner:qo,config:dn});try{await RB(k.controller,t.goal,E,{attachReader:k.attachReader,...It.length>0?{seedHistory:It}:{}})}finally{Br(),Fi(),$e()}return}finally{ee&&await ee.close()}}if(a?await a.finish():hl(t.stdout??process.stdout,n),n)try{process.stdin.resume(),await new Promise(E=>setImmediate(E)),await new Promise(E=>setImmediate(E)),process.stdin.pause()}catch{}let un=await bZ(e,t.stdout,y),Lo=t.safeGlyphs?{safeGlyphs:!0}:{},yo=t.dense?{density:"compact"}:{},to=Er(un)?Vo({env:e,theme:Er(un).brightness,...yo,...Lo}):Vo({env:e,...yo,...Lo}),Wo=new qp({stdout:t.stdout??process.stdout,env:e});{let E=ts(un);E&&Wo.apply(E.bg)}let Ni=t.stdout??process.stdout,$r=xx(e),mn=new Ed({write:E=>Ni.write(E),isTty:!0,enabled:$r.enabled,desktop:$r.desktop}),q=b1(E=>k.controller.subscribe(E),{port:mn}),he=tg(E=>k.controller.subscribe(E),{runner:qo,config:dn});d&&i&&k.controller.pushNote("yolo",["YOLO cancelado \u2014 seguindo em modo normal."]);{let E=dU({instructionSources:h,globalCommands:Wt.length,projectCommands:Dr.length,mcpServers:ee?.discovery.servers.length??0,projectMcp:ie,codexMcp:P});E.length>0&&k.controller.pushNote("config",E)}{let E=LN(Hn,e);E!==void 0&&k.controller.pushNote("update",[E]),PN(Hn,e)}ut==="broker"&&await lU({login:k.login,env:e})&&k.controller.pushNote("login",["sem credencial \u2014 rode `aluy login` (ou defina ALUY_TOKEN)."]);{let E=[],W=ht.list().length;if(W>0){let ye=ht.list().map(R=>`${R.name} (${R.origin==="global"?"global":"projeto"})`).join(" \xB7 ");E.push(`${W} agente(s) .md: ${ye}`)}for(let ye of ht.crossLayerConflicts)E.push(`\u26A0 "${ye.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 ye of gt)E.push(`\u26A0 ${ye.reason}`);E.length>0&&k.controller.pushNote("agentes",E)}let ot=new Iu({journal:k.journal}),bt=null,At=E=>{k.controller.pushNote(E.note.title,E.note.lines),bt=E.kind==="confirm"?E.proceed:null},_t=null,Fr,ir,pe=async E=>{ee&&await ee.close();let W=await eg({workspaceRoot:B,parentEnv:e,...ge?{sandboxLauncher:ge}:{},loadProjectConfig:async()=>{let O=await ue.load();return ie=O.config.servers.length>0,O},loadCodexConfig:()=>{let O=Z.load();return P=O.config.servers.length>0,O}});k.controller.refreshMcpTools(W.tools),ee=W;let ye=[],R=[];for(let O of W.discovery.servers)E!=="all"&&O.server!==E||(O.ok?ye.push(O.server):R.push(`${O.server} (${O.error??"desconhecido"})`));return{ok:ye,failed:R}},F=(E,W="")=>{if(E.id!=="clear"&&(ir=void 0),E.source==="user"||E.id===void 0){let R=$u.get(E.name);if(!R){k.controller.pushNote(`/${E.name}`,["comando do usu\xE1rio sem corpo \u2014 ignorado."]);return}let O=ov(R.template,W);if(O.trim()===""){k.controller.pushNote(`/${E.name}`,["comando do usu\xE1rio expandiu p/ vazio \u2014 nada a fazer."]);return}k.controller.submit(O);return}if(E.id==="model"&&W.trim()!==""){let R=tp((O,j)=>{k.controller.setTier(O,j),g.saveTier(O,j)},W.trim());k.controller.pushNote(R.title,R.lines);return}if(E.id==="theme"){let R=Mu(W,oi(to.brightness));R.kind==="theme"&&k.controller.pushNote(R.note.title,R.note.lines);return}if(E.id==="provider"){let R=Lu(W,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(E.id==="effort"){if(!W||W.trim()==="")k.controller.pushNote("effort",[`atual: ${k.controller.effort??"(default do modelo)"}`]);else{let R=W.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(E.id==="ask"){k.controller.askParallel(W);return}if(E.id==="rooms"){let[R,...O]=W.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 j=O.join(" ").trim();j===""?k.controller.roomReadPick():k.controller.roomRead(j)}else R==="watch"?k.controller.roomWatch(O.join(" ")):k.controller.pushNote("/rooms",[`subcomando "${R}" \u2014 use list | new | read <c\xF3digo> | watch <c\xF3digo>.`]);return}if(E.id==="subagent"){let R=W.trim();R===""?k.controller.exitFocus():k.controller.enterSubagentFocus(R);return}if(E.id==="back"){k.controller.exitFocus();return}if(E.id==="rename"){let R=vS(W);switch(R.kind){case"set":k.controller.setLabel(R.label.label,R.label.color),kS(`aluy \xB7 ${R.label.label}`),$e(),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),kS(void 0),$e(),k.controller.pushNote("rename",["r\xF3tulo removido \u2014 a sess\xE3o volta sem nome."]);return;case"show":{let O=k.controller.label;k.controller.pushNote("rename",O!==void 0?[`sess\xE3o: \u25CF ${O}${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: ${va.join(", ")}.`]);return}case"error":k.controller.pushNote("rename",[R.message]);return}}if(E.id==="init"){let R=/(?:^|\s)--force\b/.test(W)||W.trim()==="--force",O=W.replace(/--force\b/,"").trim();if(O!==""&&!R){let j=nU(O);k.controller.pushNote("init",[`gerando scaffold sob medida para: ${O}`,"o agente vai analisar a descri\xE7\xE3o e criar os arquivos em .aluy/\u2026"]),k.controller.submit(j);return}rU({ports:k.ports,permission:k.engine,askResolver:k.askResolver,rootName:gZ(k.workspace.root),overwrite:R}).then(j=>k.controller.pushNote(j.note.title,j.note.lines));return}if(E.id==="notify"){let R=uA(W,{enabled:mn.enabled,tty:!0});R.kind==="notify"&&(mn.setEnabled(R.enable),k.controller.pushNote(R.note.title,R.note.lines));return}if(E.id==="undo"){let R=bt??(()=>ot.undo());bt=null,R().then(At);return}if(E.id==="redo"){bt=null,ot.redo().then(At);return}if(E.id==="compact"){k.controller.compact();return}if(E.id==="cycle"){let R=W.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 j=(W.trim().match(/^edit\b\s*(.*)$/i)?.[1]??"").trim().match(/"[^"]*"|\S+/g)??[],Q={},me=[];for(let oo=0;oo<j.length;oo+=1){let vo=j[oo];if(vo==="--max-iter"||vo==="--iter"){let It=Number(j[oo+1]);oo+=1,Number.isInteger(It)&&(Q.maxIterations=It);continue}let Go=vo.match(/^(\d+)x$/i);if(Go){Q.maxIterations=Number(Go[1]);continue}let lr=vo.match(/^(\d+)(s|m|h)$/i);if(lr&&Q.intervalMs===void 0&&me.length===0){let It=Number(lr[1]),Fi=lr[2].toLowerCase();Q.intervalMs=It*(Fi==="s"?1e3:Fi==="m"?6e4:36e5);continue}me.push(vo.replace(/^"|"$/g,""))}let Xe=me.join(" ").trim();Xe&&(Q.task=Xe),k.controller.cycleEdit(Q);return}if(W.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(W);return}if(E.id==="clear"){let R=Jh(W),{armed:O,nextArmed:j}=_B(ir,R);ir=j,Qh(R,{clearSession:()=>k.controller.clear(),memory:k.memory},O).then(Q=>{Q.armed||(ir=void 0),Q.note.lines.length>0&&k.controller.pushNote(Q.note.title,Q.note.lines),Q.cleared&&_t?.()});return}if(E.id==="memory"){let R=Kh(W);Yh(R,k.memory,k.engine.isPlan).then(O=>k.controller.pushNote(O.title,O.lines));return}if(E.id==="todo"){let R=Vh(W);Xh(R,k.todoStore,k.engine.isPlan).then(O=>k.controller.pushNote(O.title,O.lines));return}if(E.id==="cron"){let R=[],O={out:me=>R.push(me),err:me=>R.push(me)},j=W.match(/"[^"]*"|\S+/g)?.map(me=>me.replace(/^"|"$/g,""))??[],Q=j.length===0?["list"]:j;pS(Q,{io:O}).then(()=>k.controller.pushNote("cron",R.length>0?R:["(sem sa\xEDda)"]));return}if(E.id==="add-dir"){let R=pB(W,k.workspace);k.controller.pushNote(R.title,R.lines);return}if(E.id==="agents"){let R=kc({profiles:[...ct.profiles,...dt.profiles],errors:gt});k.controller.pushNote(R.title,R.lines);return}if(E.id==="workflows"){let R=/^\s*run\s+(\S+)/.exec(W);if(R){let Xe=R[1];k.controller.workflowRun(Xe);return}let O=/^\s*use\s+(\S+)/.exec(W);if(O){let Xe=O[1];k.controller.workflowsUse(Xe);return}let j=new ms().load(),Q=new fs({workspace:k.workspace}).load(),me=Tc({workflows:[...j.workflows,...Q.workflows],errors:[...j.errors,...Q.errors]});k.controller.pushNote(me.title,me.lines);return}if(E.id==="skills"){let R=new fi().load(),O=new pi({workspace:k.workspace}).load(),j=wc({skills:[...R.skills,...O.skills],errors:[...R.errors,...O.errors]});k.controller.pushNote(j.title,j.lines);return}if(E.id==="doctor"){if(/(^|\s)fix(\s|$)/.test(W)){let j=l1(kA),Q=c1({logTails:j});k.controller.pushNote("doctor fix",["tentando consertar os complementos do turbo \u2014 vou diagnosticar pelos logs, rodar o","bootstrap e reparar. Acompanhe abaixo."]),k.controller.submit(Q);return}let R=/(^|\s)--(deep|test)(\s|$)/.test(W),O=k.workspace.root;s1({login:k.login,memory:{count:async()=>(await k.memory.list()).length},workspaceRoot:O,unsafe:k.engine.isUnsafe,env:e,probeOverride:{makeMcpTransport:()=>new Rr({cwd:O,parentEnv:e}),...R?{tierTester:()=>mp({tier:k.controller.tier,...k.controller.model!==void 0?{model:k.controller.model}:{},login:k.login,env:e})}:{}}},j=>k.controller.upsertDoctor(j.checks,j.summary)).then(j=>{j.checks.find(me=>me.id==="sidecars")?.status==="fail"&&k.controller.pushNote("doctor",["H\xE1 complemento(s) do turbo fora. Quer que eu tente consertar?","Digite /doctor fix \u2014 eu leio os logs, rodo o bootstrap e reparo sozinho."])});return}if(E.id==="mcp"){let R=yB(W);if(R){let{kind:Q,scope:me}=R,Xe=Q==="reload"?"reload":"reconnect";k.controller.pushNote("mcp",[`/${Xe} ${me==="all"?"todos":me}: recarregando\u2026`]),pe(me).then(({ok:oo,failed:vo})=>{let Go=[];oo.length>0&&Go.push(`\u2713 ${oo.join(", ")}`),vo.length>0&&Go.push(`\u2717 ${vo.join(", ")}`),oo.length===0&&vo.length===0&&Go.push("nenhum server afetado."),k.controller.pushNote(`mcp ${Xe}`,Go)});return}let O=f1(W);if(O){let Q=p1(O);k.controller.pushNote(Q.title,Q.lines);return}let j=gB(W);if(j){if(j.query===""){let me=bB();k.controller.pushNote(me.title,me.lines);return}let Q=vB(j.query);k.controller.pushNote(Q.title,Q.lines),kB(j.query,Ce).then(me=>k.controller.pushNote(me.title,me.lines));return}if(ee){let Q=Zs(ee.sources,ee.discovery),me=hB(Q,ee.configError);k.controller.pushNote(me.title,me.lines);return}}if(E.id==="telegram"){SB(W,{configStore:g,secretStore:new Ra("telegram")}).then(R=>k.controller.pushNote(R.title,R.lines));return}let ye=fB(E.id,{usage:k.controller.usage,unsafe:k.engine.isUnsafe});if(ye.kind==="quit"){Fr.unmount();return}if(ye.kind==="async"){xB(ye.id,k.login).then(R=>k.controller.pushNote(R.title,R.lines));return}wB(ye,k.controller)},bo=E=>{let W=A.load(E);if(!W){k.controller.pushNote("history",[`sess\xE3o n\xE3o encontrada: ${E} \u2014 nada mudou.`]);return}let ye=Nu(W,Zo);A$(W,{restoreBlocks:R=>k.controller.restoreBlocks(R),seedHistory:R=>k.controller.seedHistory(R),resetContinuation:()=>k.controller.resetResumeContext(),switchSession:R=>{tt.id=R.id,tt.cwd=R.cwd,ye.tier.trim()!==""&&k.controller.setTier(ye.tier,ye.model),ye.tier==="custom"&&ye.model&&k.controller.setProvider(ye.provider)},clearScreen:()=>{}}),k.controller.setLabel(W.label,W.labelColor),$e(),ye.warning&&k.controller.pushNote("model",[ye.warning]),k.controller.pushNote("history",[`sess\xE3o retomada: ${E} \u2014 continue de onde parou.`])},gl=E=>{let W=k.checkpoints.get(E.checkpointId);if(!W){k.controller.pushNote("rewind",["ponto n\xE3o encontrado \u2014 nada mudou."]);return}let ye=[`voltando ao ponto #${W.ordinal}: ${W.label}`];if((E.action==="both"||E.action==="code")&&k.checkpoints.restoreCode(W.id).then(R=>{let O=[];R.written.length>0&&O.push(`arquivos restaurados: ${R.written.length}`),R.removed.length>0&&O.push(`arquivos removidos (eram novos): ${R.removed.length}`),R.written.length===0&&R.removed.length===0&&O.push("nenhuma edi\xE7\xE3o de arquivo posterior ao ponto \u2014 c\xF3digo intacto.");for(let j of R.failed)O.push(`\u26A0 falhou: ${j.path} \u2014 ${j.reason}`);if(R.barrierWarnings.length>0){O.push("comando(s) rodaram depois do ponto (efeito de shell N\xC3O desfeito):");for(let j of R.barrierWarnings)O.push(` \xB7 ${j}`)}k.controller.pushNote("rewind \u2014 c\xF3digo",O)}),E.action==="both"||E.action==="conversation"){let R=k.controller.rewindConversation(W.blockCount,ui);ye.push(R>0?`conversa rebobinada \u2014 ${R} bloco(s) posterior(es) descartado(s).`:"conversa j\xE1 estava neste ponto."),_t?.(),$e()}k.controller.pushNote("rewind",ye)},Rt=uN(e),Di=mN(e),ze=Rt||Di?pN(r,{sync:Rt,overwrite:Di}):void 0,$i=ze?.stdout??r,Pt=T&&Ts(r.rows??0,r.columns??0).kind==="cockpit";Pt&&(EA(r),ze?.setCockpit(!0));let Fu=vN(r),vt=()=>Fu.disable();process.once("exit",vt);let yl=t.exportStore??new Td,Ie=async E=>{let W=R1(k.controller.blocks,{sessionId:tt.id,...k.controller.label!==void 0?{label:k.controller.label}:{},tier:k.controller.tier});return yl.write(W,{sessionId:tt.id,...E!==void 0?{fileName:E}:{}})},Bu=()=>{ze?.cleanup(),Wo.reset(),vt()},Ke=T1(process,Bu),bl=k.controller.provider,ng=bl!==void 0&&bl!==""?{currentProvider:bl}:{},ar=k.controller.effort,Uu=ar!==void 0&&ar!==""?{currentEffort:ar}:{};Q1(process.stdin);try{i&&k.controller.dismissBoot(),Fr=hZ(SZ(VB,{initialTheme:un,env:e,...yo,...Lo,onThemeChanged:O=>{let j=Er(O);j&&Wo.apply(j.bg),j&&g.saveTheme(j.name),k.controller.pushNote("theme",[`tema trocado para: ${j?j.label:O} (${O})`])},initialLang:b,onLangChanged:O=>{let j=ni(O);g.saveLang(O);let Q=vi(O).t;k.controller.pushNote("lang",[Q("lang.changed",{label:j?j.label:O})])},controller:k.controller,egress:k.egress,userCommands:Os,animate:to.animate,syncActive:ze!==void 0,version:Hn,onCommand:F,registerClearScreen:O=>{_t=O},fileIndex:k.fileIndex,attachReader:k.attachReader,catalog:k.catalogClient,customModels:k.customModelClient,providersClient:k.providersClient,sessionStore:A,onResumeSession:bo,rewindSource:k.checkpoints,onRewind:gl,initialSplitView:w,onSplitViewChange:O=>{g.saveSplitView(O)},initialFullscreen:T,cockpitEnteredAtBoot:Pt,cockpitScreen:{enter:()=>{EA(r),ze?.setCockpit(!0)},leave:()=>{ze?.setCockpit(!1),r.write("\x1B[?1049l\x1B[?25h\x1B[2J\x1B[3J\x1B[H"),ze?.resetDiffer()},resetDiffer:()=>{ze?.resetDiffer()}},onFullscreenChange:O=>{g.saveFullscreen(O)},onExportTranscript:Ie,onSelectTier:(O,j,Q)=>{k.controller.setTier(O,j),g.saveTier(O,j),O==="custom"&&j?k.controller.pushNote("model",[`modelo Custom: ${j}`,"\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",...Q?.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: ${O}`])},...Uu,onSelectConjugated:(O,j)=>{let Q=O.kind==="tier"?O.key:"custom",me=O.kind==="custom"?O.model:void 0;k.controller.setTier(Q,me),g.saveTier(Q,me),j.kind==="set"&&k.controller.setEffort(j.value);let Xe=j.kind==="set"?`esfor\xE7o: ${j.value}`:`esfor\xE7o: ${k.controller.effort??"(default do modelo)"} (mantido)`,oo=O.kind==="custom"&&O.supportsTools===!1?["\u26A0 este modelo n\xE3o suporta ferramentas \u2014 o agente cai no parser de texto / pode n\xE3o usar MCP/tools bem"]:[];Q==="custom"&&me?k.controller.pushNote("model",[`modelo Custom: ${me}`,Xe,"\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",...oo]):k.controller.pushNote("model",[`tier trocado para: ${Q}`,Xe])},...ng,onSelectProvider:O=>{k.controller.setProvider(O);let j=k.controller.provider===O;k.controller.pushNote("provider",j?[`provider do modo Custom: ${O}`,"\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: ${O}`,"\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:O=>k.controller.setMode(O),sessionGrants:k.engine.sessionGrants,effectiveSafeDefault:O=>k.engine.effectiveSafeDefault(O),setSafeToolDefault:(O,j)=>k.engine.setSafeToolDefault(O,j)}}),{stdout:$i,exitOnCtrlC:!1});let E=[];try{E=[...await k.memory.recall()]}catch{E=[]}let W=[...E,...Mo];W.length>0&&k.controller.seedHistory(W);let ye=k.controller.subscribe(()=>$e());k.controller.setMemoryShutdown(()=>{$e(),process.exitCode=1;try{Fr.unmount()}catch{}}),k.controller.startMemoryMonitor();let R=Ct(dn,"session-start");R.length>0&&qo.runAll(R),t.goal!==void 0&&t.goal.trim()!==""&&k.controller.submit(t.goal);try{await Fr.waitUntilExit()}finally{ze?.cleanup(),Wo.reset(),s.dispose(),Ke.dispose()}ee&&await ee.close(),q(),he(),ye(),$e(),process.stdout.isTTY&&k.controller.current.blocks.length>0&&process.stdout.write(`
|
|
697
697
|
Sess\xE3o salva \u2014 id: ${tt.id}
|
|
698
698
|
Para retomar esta conversa: aluy --resume ${tt.id}
|
|
699
699
|
(ou \`aluy --continue\` para a sess\xE3o mais recente deste diret\xF3rio)
|