@hiperplano/aluy-cli 1.0.0-rc.181 → 1.0.0-rc.182

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/README.md CHANGED
@@ -5,110 +5,113 @@
5
5
  </picture>
6
6
  </p>
7
7
 
8
- <h1 align="center">Aluy CLI</h1>
8
+ <p align="center">
9
+ <b>Um agente de terminal que roda na sua máquina, com a sua chave.</b><br>
10
+ Sem intermediário, sem metering, sem mandar o seu código para o servidor de ninguém.
11
+ </p>
9
12
 
10
13
  <p align="center">
11
- Um agente de terminal que roda na <b>sua máquina</b>, com o <b>seu próprio provider de LLM</b>.
14
+ <a href="https://www.npmjs.com/package/@hiperplano/aluy-cli"><img alt="npm" src="https://img.shields.io/npm/v/@hiperplano/aluy-cli?color=%23cc3534&label=npm"></a>
15
+ <a href="LICENSE"><img alt="Licença MIT" src="https://img.shields.io/badge/licen%C3%A7a-MIT-blue"></a>
16
+ <a href="https://github.com/hiperplano/aluy-cli/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/hiperplano/aluy-cli/actions/workflows/ci.yml/badge.svg?branch=main"></a>
17
+ <img alt="Node >= 20" src="https://img.shields.io/node/v/@hiperplano/aluy-cli">
18
+ <img alt="Linux · macOS · Windows" src="https://img.shields.io/badge/-Linux%20%C2%B7%20macOS%20%C2%B7%20Windows-informational">
12
19
  </p>
13
20
 
14
21
  ---
15
22
 
16
- O **Aluy CLI** é um agente de terminal: ele lê e edita arquivos, executa
17
- comandos, busca no seu código e conduz seu próprio **loop de ferramentas** — tudo
18
- numa TUI rica, com uma **engine de permissão** onde todo efeito passa por uma
19
- catraca antes de acontecer.
20
-
21
- Você usa o **seu próprio modelo** (BYO): qualquer provider compatível com a API da
22
- OpenAI, com a sua própria credencial — direto, sem intermediário e sem metering.
23
- _(Por enquanto o aluy roda só local, com a sua chave.)_
24
-
25
- ## Instalação
26
-
27
23
  ```bash
28
24
  npm install -g @hiperplano/aluy-cli
29
- aluy onboard # configura idioma, provider, modelo e (opcional) os complementos
25
+ aluy onboard # instalador guiado: idioma, provider, modelo
30
26
  aluy # abre a sessão
31
27
  ```
32
28
 
33
- O `aluy onboard` é o instalador guiado: escolhe o idioma, conecta o seu provider
34
- (faz um teste de conectividade real antes de prosseguir), e oferece os complementos
35
- opcionais. Funciona em **Linux, macOS e Windows** — o terminal recomendado é o
36
- [WezTerm](https://wezterm.org), mas qualquer terminal moderno serve.
37
-
38
- ## Uso
29
+ O **Aluy CLI** lê e edita arquivos, executa comandos, busca no seu código e conduz
30
+ o próprio loop de ferramentas numa TUI rica. Você aponta o objetivo; ele trabalha.
39
31
 
40
32
  ```bash
41
- aluy # sessão interativa (TUI)
42
- aluy "refatore o módulo X" # dá um objetivo direto e acompanha o agente trabalhar
43
- aluy -p "liste os TODOs" # modo headless (one-shot), ideal p/ scripts/CI
44
- aluy --resume <id|nome> # retoma uma conversa anterior (id ao sair, ou o nome do /rename)
45
- aluy --continue # retoma a sessão mais recente deste diretório
33
+ aluy "migre os testes de jest para vitest" # um objetivo, e acompanhe
34
+ aluy -p "liste os TODOs" --output-format json # headless, para script e CI
35
+ aluy --plan "como eu quebraria esse módulo?" # só lê e analisa, zero efeito
36
+ aluy --continue # retoma de onde parou
46
37
  ```
47
38
 
48
- Dentro da sessão, **slash-commands** controlam tudo sem sair do fluxo:
39
+ ## Por que este, e não outro
49
40
 
50
- | Comando | O que faz |
51
- | --------------------------------------------- | -------------------------------------------------- |
52
- | `/model` · `/provider` · `/effort` | troca modelo / provider / esforço de raciocínio |
53
- | `/init` | cria o `ALUY.md` + a estrutura `.aluy/` do projeto |
54
- | `/mcp` · `/agents` · `/skills` · `/workflows` | gerencia MCP, sub-agentes, skills e workflows |
55
- | `/rooms` | salas de conversa entre agentes (multi-agente) |
56
- | `/rename` · `/theme` · `/lang` | nome+cor da sessão, tema, idioma |
57
- | `/memory` · `/compact` · `/history` | memória, compactação de contexto, histórico |
41
+ **A chave é sua, e o caminho é direto.** Nove providers no catálogo — Anthropic,
42
+ OpenAI, OpenRouter, Google, DeepSeek, Groq, Mistral, xAI e Ollama — ou qualquer
43
+ endpoint compatível com a API da OpenAI. Não há servidor nosso no meio: o seu
44
+ código e o seu prompt vão do seu terminal para o provider que **você** escolheu.
45
+ A credencial nunca fica em claro — vai para o keychain do SO ou, onde ele não
46
+ existe, para um cofre cifrado que não funciona em outra máquina.
58
47
 
59
- ## Como funciona
48
+ **Uma catraca, e só uma.** Todo tool-call passa por um ponto único de
49
+ interceptação antes de virar efeito, com negação por padrão. Não é uma convenção:
50
+ é uma fronteira travada no lint e coberta por teste, e a engine que a hospeda não
51
+ pode nem importar a TUI. Quando você quiser velocidade em vez de perguntas, o
52
+ `--yolo` existe; quando quiser o contrário, o `--plan` deixa tudo read-only.
60
53
 
61
- - **Agente + permissão** — o loop de ferramentas (ler/editar/rodar/buscar) passa por
62
- um ponto único de interceptação: nada com efeito acontece sem a catraca liberar
63
- (ou você aprovar). O modo `--yolo` dispensa as confirmações por sua conta e risco.
64
- - **BYO provider** — `--backend local` fala direto com o provider (API key ou OAuth).
65
- A credencial fica **só no keychain do SO** (macOS Keychain · Windows Credential
66
- Manager · Linux Secret Service) — nunca em arquivo, `.env` ou log.
67
- - **MCP** — conecta servers MCP (`~/.aluy/mcp.json` global e `.mcp.json` do projeto),
68
- compatível com o ecossistema; o onboard ainda oferece pré-instalar alguns (Playwright,
69
- Filesystem, Memory, …).
70
- - **Complementos opcionais** (modo turbo) — memória persistente, modelos locais via
71
- Ollama e gestão de contexto, instaláveis no onboard ou depois com `aluy bootstrap`.
72
- Guia completo (instalação, problemas comuns, instalação manual): [docs/turbo.md](docs/turbo.md).
54
+ **O trabalho continua sem você.** Um serviço é um diretório com um `service.md`:
55
+ horário, orçamento, autonomia e canal. Ele acorda sozinho, abre um turno, respeita
56
+ o teto de tokens — e, quando precisa de uma decisão que não é dele, **pergunta pelo
57
+ Telegram e espera**, em vez de chutar. Você responde do celular e ele retoma.
73
58
 
74
- ## Configuração
59
+ **Fala com o resto do ecossistema.** Servers MCP (globais e por projeto), sub-agentes
60
+ em `.md`, skills, workflows, hooks e plugins. E ele lê o `AGENTS.md` e o `CLAUDE.md`
61
+ do seu repositório junto com o `ALUY.md` — eles compõem, não competem, então adotar
62
+ o aluy não obriga a reescrever o que você já tem.
75
63
 
76
- Tudo vive em `~/.aluy/`:
64
+ ## Documentação
77
65
 
78
- | Arquivo | Conteúdo |
79
- | ---------------- | -------------------------------------------------------------- |
80
- | `config.json` | preferências (idioma, tema, provider/modelo, perfil, limites…) |
81
- | `providers.json` | seus providers BYO (OpenAI-compatíveis) |
82
- | `mcp.json` | servers MCP globais |
66
+ | | |
67
+ | --- | --- |
68
+ | [Comandos](docs/comandos.md) | subcomandos, flags e os 46 slash-commands |
69
+ | [Configuração](docs/configuracao.md) | `~/.aluy/`, precedência, hooks, arquivos de projeto |
70
+ | [Serviços](docs/comandos.md#serviços) | o `service.md` e o runner contínuo |
71
+ | [MCP](docs/mcp.md) | conectar servers, e o que isso implica |
72
+ | [Modo turbo](docs/turbo.md) | memória persistente, Ollama, gestão de contexto |
73
+ | [Compatibilidade](docs/config-compat.md) | conviver com a config de outros agentes |
83
74
 
84
- Variáveis `ALUY_*` e flags de CLI sobrescrevem (precedência **flag > env > config > default**).
85
- No **projeto**, o `ALUY.md` dá as instruções ao agente e `.aluy/` guarda agents, workflows,
86
- commands e skills.
75
+ `aluy --help` traz tudo isso no terminal, e `aluy doctor` diz o que está quebrado
76
+ e como consertar.
87
77
 
88
- ## Monorepo
78
+ ## Segurança
89
79
 
90
- | Pacote | Papel |
91
- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
92
- | **`@hiperplano/aluy-cli-core`** | Engine **portável** do agente (loop · tools · permissão). Sem Ink, sem I/O de terminal. Hospeda o ponto único de interceptação de tool-calls. |
93
- | **`@hiperplano/aluy-cli`** | TUI (**Ink**) + binário **`aluy`** + wiring. Consome `@hiperplano/aluy-cli-core`. |
80
+ O aluy roda **na sua máquina, com os seus privilégios**. Três coisas que vale saber
81
+ antes de usar:
94
82
 
95
- Lema: **core modular, entrega monolítica**. A fronteira `core × TUI` é explícita e
96
- testada (o core não importa Ink).
83
+ - Um **server MCP** de terceiro roda com os seus privilégios e **sem sandbox** — ele
84
+ pode ler o seu filesystem. Plugue só os que você confia.
85
+ - O **`--yolo`** aprova tudo automaticamente. É útil e é perigoso; a escolha é sua.
86
+ - Credencial **nunca** vai para arquivo em claro, log ou `.env`, e o `gitleaks` roda
87
+ na CI para garantir que nenhuma vaze para o repositório.
97
88
 
98
- ### Desenvolvimento
89
+ Encontrou uma vulnerabilidade? Abra uma
90
+ [issue](https://github.com/hiperplano/aluy-cli/issues) marcando como sensível, ou
91
+ fale com os mantenedores antes de divulgar.
92
+
93
+ ## Contribuir
94
+
95
+ PRs são bem-vindos. O [CONTRIBUTING.md](CONTRIBUTING.md) tem o essencial:
99
96
 
100
97
  ```bash
101
- npm install
102
- npm run build # tsc -b (cli-core → cli)
103
- npm run lint
98
+ git clone https://github.com/hiperplano/aluy-cli && cd aluy-cli
99
+ npm install && npm run build
104
100
  npm test
105
- node packages/cli/dist/bin/aluy.js --help
106
101
  ```
107
102
 
108
- ## Contribuir
103
+ Duas regras que não relaxamos: **a CI é honesta** (nada de `|| true` ou
104
+ `continue-on-error` — gate vermelho bloqueia o merge) e **a fronteira do core é
105
+ real** (`@hiperplano/aluy-cli-core` não importa Ink nem faz I/O de terminal,
106
+ travado no eslint e em teste).
107
+
108
+ O histórico de cada versão está no [CHANGELOG.md](CHANGELOG.md).
109
+
110
+ ## Estado
109
111
 
110
- Ver [`CONTRIBUTING.md`](CONTRIBUTING.md).
112
+ `1.0.0-rc` — em uso diário, com release frequente. A superfície de comandos está
113
+ estável; o que ainda muda vem anotado no CHANGELOG a cada rc.
111
114
 
112
115
  ## Licença
113
116
 
114
- MIT — ver [`LICENSE`](LICENSE).
117
+ [MIT](LICENSE) © Hiperplano
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- var k9=Object.create;var fS=Object.defineProperty;var x9=Object.getOwnPropertyDescriptor;var S9=Object.getOwnPropertyNames;var w9=Object.getPrototypeOf,A9=Object.prototype.hasOwnProperty;var g=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(n){throw o=[n],n}};var E9=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},At=(e,t)=>{for(var o in t)fS(e,o,{get:t[o],enumerable:!0})},C9=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of S9(t))!A9.call(e,r)&&r!==o&&fS(e,r,{get:()=>t[r],enumerable:!(n=x9(t,r))||n.enumerable});return e};var T9=(e,t,o)=>(o=e!=null?k9(w9(e)):{},C9(t||!e||!e.__esModule?fS(o,"default",{value:e,enumerable:!0}):o,e));import{homedir as D9}from"node:os";import{join as R9}from"node:path";function Qa(e=D9()){return R9(e,".aluy")}var cm=g(()=>{"use strict"});var dm,aM=g(()=>{"use strict";dm="1.0.0-rc.181"});function _r(e,t){return e.decide(t)}var Za=g(()=>{"use strict"});var bi,Zi,es=g(()=>{"use strict";bi="remember",Zi="recall"});var pS,_9,jc,gS=g(()=>{"use strict";pS=class{id;horizon;label;parentId;children;dependencies;pinned;closed;createdAt;lastAccessedAt;accessCount;context;constructor(t,o,n,r,i){this.id=t,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=i,this.lastAccessedAt=i,this.accessCount=0,this.context=[]}touch(t){this.lastAccessedAt=t,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}}},_9=200,jc=class{nodes=new Map;maxBoxes;now;constructor(t){this.maxBoxes=t?.maxBoxes??_9,this.now=t?.clock??Date.now}static boxId(t,o){return`${t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)}-${o.toString(36)}`}openBox(t,o,n,r){let i=this.nodes.get(t);if(i)return i.touch(this.now()),{box:i.snapshot(),created:!1};if(this.nodes.size>=this.maxBoxes&&(this.evictOne(),this.nodes.size>=this.maxBoxes))return null;let s=this.now(),a=new pS(t,o,n,r??null,s);if(r){let l=this.nodes.get(r);l&&l.children.add(t)}return this.nodes.set(t,a),{box:a.snapshot(),created:!0}}closeBox(t){let o=this.nodes.get(t);return o?(o.closed=!0,o.touch(this.now()),o.snapshot()):null}isClosed(t){let o=this.nodes.get(t);return o?o.closed:!1}reopenBox(t){let o=this.nodes.get(t);return o?(o.closed=!1,o.touch(this.now()),o.snapshot()):null}setHorizon(t,o){let n=this.nodes.get(t);return n?(n.horizon=o,n.touch(this.now()),n.snapshot()):null}setParent(t,o){let n=this.nodes.get(t);return n?n.parentId===o?n.snapshot():o!==null&&this.wouldCreateCycle(t,o)?null:(n.parentId&&this.nodes.get(n.parentId)?.children.delete(t),n.parentId=o,o&&this.nodes.get(o)?.children.add(t),n.touch(this.now()),n.snapshot()):null}wouldCreateCycle(t,o){let n=new Set,r=o;for(;r!==null;){if(r===t||n.has(r))return!0;n.add(r),r=this.nodes.get(r)?.parentId??null}return!1}getBox(t){let o=this.nodes.get(t);return o?(o.touch(this.now()),o.snapshot()):null}listBoxes(t="lastAccessedAt"){let o=[...this.nodes.values()].map(n=>n.snapshot());switch(t){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(t,o){let n=this.nodes.get(t);return n?(n.context.push({ts:this.now(),text:o}),n.touch(this.now()),n.snapshot()):null}getContext(t){let o=this.nodes.get(t);return o?(o.touch(this.now()),[...o.context]):[]}getContextChain(t){let o=[],n=new Set,r=t;for(;r&&!n.has(r);){n.add(r);let i=this.nodes.get(r);if(!i)break;i.touch(this.now()),o.push({boxId:i.id,entries:[...i.context]}),r=i.parentId}return o}addDependency(t,o){let n=this.nodes.get(t);return!n||!this.nodes.has(o)||n.id===o?!1:(n.dependencies.add(o),n.touch(this.now()),!0)}getDependencies(t){let o=this.nodes.get(t);return o?[...o.dependencies]:[]}pinBox(t){let o=this.nodes.get(t);return o?(o.pinned=!0,o.touch(this.now()),o.snapshot()):null}unpinBox(t){let o=this.nodes.get(t);return o?(o.pinned=!1,o.touch(this.now()),o.snapshot()):null}evictOne(){let t=[];for(let n of this.nodes.values())n.horizon==="longo"||n.pinned||t.push(n);if(t.length===0)return null;t.sort((n,r)=>{let i=n.horizon==="curto"?0:1,s=r.horizon==="curto"?0:1;if(i!==s)return i-s;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=t[0];return this.removeNode(o)}forceEvict(t){let o=this.nodes.get(t);return!o||o.horizon==="longo"||o.pinned?null:this.removeNode(o)}removeBox(t){let o=this.nodes.get(t);return o?this.removeNode(o):null}removeNode(t){if(t.parentId){let o=this.nodes.get(t.parentId);o&&o.children.delete(t.id)}return this.nodes.delete(t.id),t.snapshot()}}});function vi(e,t){for(let o of t){let n=e[o];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return String(n)}}function jn(e,t){let o=vi(e,t);return o!==void 0&&o.length>0?o:void 0}function hS(e,t,o=!1){let n=e[t];if(typeof n=="boolean")return n;if(typeof n=="string"){let r=n.trim().toLowerCase();if(r==="true")return!0;if(r==="false")return!1}return o}function O9(e){if(Array.isArray(e))return e;if(typeof e=="string"){let t=e.trim();if(t.startsWith("["))try{let o=JSON.parse(t);if(Array.isArray(o))return o}catch{}return}if(e!==null&&typeof e=="object"){let t=e,o=Object.keys(t);if(o.length>0&&o.every(n=>/^\d+$/.test(n)))return o.sort((n,r)=>Number(n)-Number(r)).map(n=>t[n])}}function qc(e,t){for(let o of t){let n=O9(e[o]);if(n!==void 0)return n}}function Et(e){let t=Object.keys(e);return t.length===0?"nenhum argumento":t.slice(0,4).map(n=>{let r=e[n],i=r===null?"null":Array.isArray(r)?"array":typeof r,s=typeof r=="string"?` ${JSON.stringify(r.slice(0,40))}`:"";return`${n}=${i}${s}`}).join(", ")}function el(e){for(let t of M9){let o=e[t];if(typeof o=="object"&&o!==null&&!Array.isArray(o))return o;if(typeof o!="string")continue;let n=o.trim();if(!(n===""||!n.startsWith("{")))try{let r=JSON.parse(n);if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}catch{}}return e}var M9,ts=g(()=>{"use strict";M9=["input","arguments","args","params","parameters","body","payload"]});function Ih(e){let t=[];for(let o of e){t.push({step:o,depth:0});for(let n of o.substeps??[])t.push({step:n,depth:1})}return t}function uM(e,t){let o,n="pending",r;if(typeof e=="string")o=e;else if(e!==null&&typeof e=="object"){let s=e,a=s.title??s.step??s.text??s.name??s.content;if(typeof a=="string"&&(o=a),typeof s.status=="string"&&P9.has(s.status)&&(n=s.status),t){let l=s.substeps??s.subtasks??s.subpassos??s.children;if(Array.isArray(l)&&l.length>0){let c=[];for(let d of l){let m=uM(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return I9;let i=o.trim().slice(0,L9);return r?{title:i,status:n,substeps:r}:{title:i,status:n}}function mM(e){let t=qc(e,lM);if(t!==void 0)return t;for(let o of lM){let n=e[o];if(n===null||typeof n!="object"||Array.isArray(n))continue;let r=mM(n);if(r!==void 0)return r}}function N9(e){let t=mM(e);if(t===void 0)return{error:`update_plan: passe "steps" como uma LISTA de passos (string ou {title,status}). Recebi: ${Et(e)}.`};if(t.length===0)return{error:"update_plan: a lista de passos est\xE1 vazia."};let o=[];for(let s of t){let a=uM(s,!0);if(typeof a=="string")return{error:a};o.push(a)}let n=new Set,r=s=>{if(!n.has(s))return n.add(s),s;for(let a=2;;a++){let l=`${s} #${a}`;if(!n.has(l))return n.add(l),l}};for(let s=0;s<o.length;s++){let a=o[s],l=r(a.title),c=a.substeps?.map(d=>({...d,title:r(d.title)}));o[s]=c!==void 0?{...a,title:l,substeps:c}:{...a,title:l}}let i=Ih(o).length;return i>cM?{error:`update_plan: no m\xE1ximo ${cM} passos (recebidos ${i}).`}:{steps:o}}function F9(e){let t=Ih(e),o=t.filter(r=>r.step.status==="completed").length,n=t.map(r=>`${" ".repeat(r.depth)}${fM[r.step.status]} ${r.step.title}`).join(`
2
+ var k9=Object.create;var fS=Object.defineProperty;var x9=Object.getOwnPropertyDescriptor;var S9=Object.getOwnPropertyNames;var w9=Object.getPrototypeOf,A9=Object.prototype.hasOwnProperty;var g=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(n){throw o=[n],n}};var E9=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},At=(e,t)=>{for(var o in t)fS(e,o,{get:t[o],enumerable:!0})},C9=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of S9(t))!A9.call(e,r)&&r!==o&&fS(e,r,{get:()=>t[r],enumerable:!(n=x9(t,r))||n.enumerable});return e};var T9=(e,t,o)=>(o=e!=null?k9(w9(e)):{},C9(t||!e||!e.__esModule?fS(o,"default",{value:e,enumerable:!0}):o,e));import{homedir as D9}from"node:os";import{join as R9}from"node:path";function Qa(e=D9()){return R9(e,".aluy")}var cm=g(()=>{"use strict"});var dm,aM=g(()=>{"use strict";dm="1.0.0-rc.182"});function _r(e,t){return e.decide(t)}var Za=g(()=>{"use strict"});var bi,Zi,es=g(()=>{"use strict";bi="remember",Zi="recall"});var pS,_9,jc,gS=g(()=>{"use strict";pS=class{id;horizon;label;parentId;children;dependencies;pinned;closed;createdAt;lastAccessedAt;accessCount;context;constructor(t,o,n,r,i){this.id=t,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=i,this.lastAccessedAt=i,this.accessCount=0,this.context=[]}touch(t){this.lastAccessedAt=t,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}}},_9=200,jc=class{nodes=new Map;maxBoxes;now;constructor(t){this.maxBoxes=t?.maxBoxes??_9,this.now=t?.clock??Date.now}static boxId(t,o){return`${t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)}-${o.toString(36)}`}openBox(t,o,n,r){let i=this.nodes.get(t);if(i)return i.touch(this.now()),{box:i.snapshot(),created:!1};if(this.nodes.size>=this.maxBoxes&&(this.evictOne(),this.nodes.size>=this.maxBoxes))return null;let s=this.now(),a=new pS(t,o,n,r??null,s);if(r){let l=this.nodes.get(r);l&&l.children.add(t)}return this.nodes.set(t,a),{box:a.snapshot(),created:!0}}closeBox(t){let o=this.nodes.get(t);return o?(o.closed=!0,o.touch(this.now()),o.snapshot()):null}isClosed(t){let o=this.nodes.get(t);return o?o.closed:!1}reopenBox(t){let o=this.nodes.get(t);return o?(o.closed=!1,o.touch(this.now()),o.snapshot()):null}setHorizon(t,o){let n=this.nodes.get(t);return n?(n.horizon=o,n.touch(this.now()),n.snapshot()):null}setParent(t,o){let n=this.nodes.get(t);return n?n.parentId===o?n.snapshot():o!==null&&this.wouldCreateCycle(t,o)?null:(n.parentId&&this.nodes.get(n.parentId)?.children.delete(t),n.parentId=o,o&&this.nodes.get(o)?.children.add(t),n.touch(this.now()),n.snapshot()):null}wouldCreateCycle(t,o){let n=new Set,r=o;for(;r!==null;){if(r===t||n.has(r))return!0;n.add(r),r=this.nodes.get(r)?.parentId??null}return!1}getBox(t){let o=this.nodes.get(t);return o?(o.touch(this.now()),o.snapshot()):null}listBoxes(t="lastAccessedAt"){let o=[...this.nodes.values()].map(n=>n.snapshot());switch(t){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(t,o){let n=this.nodes.get(t);return n?(n.context.push({ts:this.now(),text:o}),n.touch(this.now()),n.snapshot()):null}getContext(t){let o=this.nodes.get(t);return o?(o.touch(this.now()),[...o.context]):[]}getContextChain(t){let o=[],n=new Set,r=t;for(;r&&!n.has(r);){n.add(r);let i=this.nodes.get(r);if(!i)break;i.touch(this.now()),o.push({boxId:i.id,entries:[...i.context]}),r=i.parentId}return o}addDependency(t,o){let n=this.nodes.get(t);return!n||!this.nodes.has(o)||n.id===o?!1:(n.dependencies.add(o),n.touch(this.now()),!0)}getDependencies(t){let o=this.nodes.get(t);return o?[...o.dependencies]:[]}pinBox(t){let o=this.nodes.get(t);return o?(o.pinned=!0,o.touch(this.now()),o.snapshot()):null}unpinBox(t){let o=this.nodes.get(t);return o?(o.pinned=!1,o.touch(this.now()),o.snapshot()):null}evictOne(){let t=[];for(let n of this.nodes.values())n.horizon==="longo"||n.pinned||t.push(n);if(t.length===0)return null;t.sort((n,r)=>{let i=n.horizon==="curto"?0:1,s=r.horizon==="curto"?0:1;if(i!==s)return i-s;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=t[0];return this.removeNode(o)}forceEvict(t){let o=this.nodes.get(t);return!o||o.horizon==="longo"||o.pinned?null:this.removeNode(o)}removeBox(t){let o=this.nodes.get(t);return o?this.removeNode(o):null}removeNode(t){if(t.parentId){let o=this.nodes.get(t.parentId);o&&o.children.delete(t.id)}return this.nodes.delete(t.id),t.snapshot()}}});function vi(e,t){for(let o of t){let n=e[o];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return String(n)}}function jn(e,t){let o=vi(e,t);return o!==void 0&&o.length>0?o:void 0}function hS(e,t,o=!1){let n=e[t];if(typeof n=="boolean")return n;if(typeof n=="string"){let r=n.trim().toLowerCase();if(r==="true")return!0;if(r==="false")return!1}return o}function O9(e){if(Array.isArray(e))return e;if(typeof e=="string"){let t=e.trim();if(t.startsWith("["))try{let o=JSON.parse(t);if(Array.isArray(o))return o}catch{}return}if(e!==null&&typeof e=="object"){let t=e,o=Object.keys(t);if(o.length>0&&o.every(n=>/^\d+$/.test(n)))return o.sort((n,r)=>Number(n)-Number(r)).map(n=>t[n])}}function qc(e,t){for(let o of t){let n=O9(e[o]);if(n!==void 0)return n}}function Et(e){let t=Object.keys(e);return t.length===0?"nenhum argumento":t.slice(0,4).map(n=>{let r=e[n],i=r===null?"null":Array.isArray(r)?"array":typeof r,s=typeof r=="string"?` ${JSON.stringify(r.slice(0,40))}`:"";return`${n}=${i}${s}`}).join(", ")}function el(e){for(let t of M9){let o=e[t];if(typeof o=="object"&&o!==null&&!Array.isArray(o))return o;if(typeof o!="string")continue;let n=o.trim();if(!(n===""||!n.startsWith("{")))try{let r=JSON.parse(n);if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}catch{}}return e}var M9,ts=g(()=>{"use strict";M9=["input","arguments","args","params","parameters","body","payload"]});function Ih(e){let t=[];for(let o of e){t.push({step:o,depth:0});for(let n of o.substeps??[])t.push({step:n,depth:1})}return t}function uM(e,t){let o,n="pending",r;if(typeof e=="string")o=e;else if(e!==null&&typeof e=="object"){let s=e,a=s.title??s.step??s.text??s.name??s.content;if(typeof a=="string"&&(o=a),typeof s.status=="string"&&P9.has(s.status)&&(n=s.status),t){let l=s.substeps??s.subtasks??s.subpassos??s.children;if(Array.isArray(l)&&l.length>0){let c=[];for(let d of l){let m=uM(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return I9;let i=o.trim().slice(0,L9);return r?{title:i,status:n,substeps:r}:{title:i,status:n}}function mM(e){let t=qc(e,lM);if(t!==void 0)return t;for(let o of lM){let n=e[o];if(n===null||typeof n!="object"||Array.isArray(n))continue;let r=mM(n);if(r!==void 0)return r}}function N9(e){let t=mM(e);if(t===void 0)return{error:`update_plan: passe "steps" como uma LISTA de passos (string ou {title,status}). Recebi: ${Et(e)}.`};if(t.length===0)return{error:"update_plan: a lista de passos est\xE1 vazia."};let o=[];for(let s of t){let a=uM(s,!0);if(typeof a=="string")return{error:a};o.push(a)}let n=new Set,r=s=>{if(!n.has(s))return n.add(s),s;for(let a=2;;a++){let l=`${s} #${a}`;if(!n.has(l))return n.add(l),l}};for(let s=0;s<o.length;s++){let a=o[s],l=r(a.title),c=a.substeps?.map(d=>({...d,title:r(d.title)}));o[s]=c!==void 0?{...a,title:l,substeps:c}:{...a,title:l}}let i=Ih(o).length;return i>cM?{error:`update_plan: no m\xE1ximo ${cM} passos (recebidos ${i}).`}:{steps:o}}function F9(e){let t=Ih(e),o=t.filter(r=>r.step.status==="completed").length,n=t.map(r=>`${" ".repeat(r.depth)}${fM[r.step.status]} ${r.step.title}`).join(`
3
3
  `);return`plano (${o}/${t.length}):
4
4
  ${n}`}function B9(e,t){return t<0?"m\xE9dio":e===t?"curto":e>t?"longo":"m\xE9dio"}function U9(e,t){let o=new Map;for(let s of t.listBoxes())o.set(s.label,s.id);let n=e.findIndex(s=>s.status==="in_progress"||(s.substeps??[]).some(a=>a.status==="in_progress")),r=(s,a,l)=>{let c=s.status==="in_progress"?"curto":l,d=o.get(s.title),m=d??jc.boxId(s.title,0);return d?(s.status!=="completed"&&t.isClosed(d)&&t.reopenBox(d),t.setHorizon(d,c),t.setParent(d,a)):t.openBox(m,c,s.title,a),s.status==="completed"&&!t.isClosed(m)&&t.closeBox(m),o.set(s.title,m),m};e.forEach((s,a)=>{let l=B9(a,n),c=r(s,null,l);for(let d of s.substeps??[])r(d,c,l)});let i=new Set;for(let s of e){i.add(s.title);for(let a of s.substeps??[])i.add(a.title)}for(let s of t.listBoxes())i.has(s.label)||t.removeBox(s.id)}function j9(e,t){if(!t)return F9(e);let o=new Map;for(let c of t.listBoxes())o.set(c.label,c);let n=new Map;for(let c of t.listBoxes())n.set(c.id,c);let r=new Map,i=(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 p=i(u.parentId,new Set(d).add(c))+1;return r.set(c,p),p},s=Ih(e),l=[`plano (${s.filter(c=>c.step.status==="completed").length}/${s.length}):`];for(let{step:c,depth:d}of s){let m=o.get(c.title),u=m?$9[m.horizon]:"",p=m?i(m.id):d,h=" ".repeat(p),b=fM[c.status];l.push(`${h}${u} ${b} ${c.title}`)}return l.join(`
5
5
  `)}var um,lM,P9,cM,L9,I9,fM,$9,dM,q9,pM,Nh=g(()=>{"use strict";gS();ts();um="update_plan",lM=["steps","plan","todos","items"];P9=new Set(["pending","in_progress","completed"]),cM=30,L9=120,I9="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";fM={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};$9={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};dM=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),q9=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:dM,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:dM},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),pM={name:um,effect:"read",group:"plano",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:q9,async run(e,t){let o=N9(e);return"error"in o?{ok:!1,observation:o.error}:(t.graph&&U9(o.steps,t.graph),t.plan&&t.plan.set(Ih(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:j9(o.steps,t.graph)})}}});function hM(e){let t=e.question??e.prompt??e.text??e.message;if(typeof t!="string"||t.trim()==="")return{error:`perguntar: passe "question" (a pergunta em texto). Para escolha, passe tamb\xE9m "options". Recebi: ${Et(e)}.`};let o=t.trim().slice(0,gM),n=e.header??e.title,r=typeof n=="string"&&n.trim()!==""?n.trim().slice(0,H9):void 0,i=e.options!==void 0||e.choices!==void 0,s=qc(e,["options","choices"]);if(i&&s===void 0)return{error:`perguntar: "options" n\xE3o foi reconhecido como uma LISTA de op\xE7\xF5es. Recebi: ${Et(e)}.`};let a=s!==void 0?V9(s):void 0;if(typeof a=="string")return{error:a};let l,c=e.kind??e.type;if(typeof c=="string"&&z9.has(c))l=c;else{if(typeof c=="string"&&c.trim()!=="")return{error:`perguntar: "kind" inv\xE1lido "${c}". Use "single", "multi" ou "text".`};l=a!==void 0&&a.length>0?"single":"text"}if((l==="single"||l==="multi")&&(a===void 0||a.length===0))return{error:`perguntar: kind "${l}" requer "options" (uma lista de ao menos 1 op\xE7\xE3o).`};let d=e.allowOther,m=!(d===!1||typeof d=="string"&&d.trim().toLowerCase()==="false");return{spec:{kind:l,question:o,...r!==void 0?{header:r}:{},...l!=="text"&&a!==void 0?{options:a}:{},...l!=="text"?{allowOther:m}:{}}}}function V9(e){if(e.length===0)return'perguntar: a lista de "options" est\xE1 vazia.';if(e.length>$h)return`perguntar: no m\xE1ximo ${$h} op\xE7\xF5es (recebidas ${e.length}).`;let t=[];for(let o of e){let n,r;if(typeof o=="string")n=o;else if(o!==null&&typeof o=="object"){let i=o,s=i.label??i.text??i.value??i.name??i.title;typeof s=="string"&&(n=s),typeof i.description=="string"&&i.description.trim()!==""&&(r=i.description.trim().slice(0,G9))}if(n===void 0||n.trim()==="")return'perguntar: cada op\xE7\xE3o precisa de um "label" (texto) n\xE3o-vazio.';t.push({label:n.trim().slice(0,W9),...r!==void 0?{description:r}:{}})}return t}function K9(e){switch(e.kind){case"choice":return e.label;case"choices":return e.labels.length===0?"(nenhuma)":e.labels.join(", ");case"text":{let t=e.text.split(`
@@ -178,7 +178,7 @@ ${e.trim()}`}}function bb(e,t,o=Od){let{older:n,recent:r}=$f(e,o);if(n.length===
178
178
  `);let a=fn(process.execPath,[r,"-p",o,"--yolo","--no-self-check","--anonymous"],{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(e==="mem0")try{let p=Ne(mr(),ls),h=Ne(p,Br);bt(p)&&nv(iv(),h)}catch{}e==="ollama"&&(await ree(),iee()),process.stderr.write(`
179
179
  verificando "${e}"\u2026 (alguns segundos; a pr\xF3xima etapa vem em seguida)
180
180
  `);let l=await R0(e,process.platform,!0);for(let p=0;p<tee&&!l;p++)await nee(oee),l=await R0(e,process.platform,!0);let c=a.error===void 0&&a.status===0,d=c?n&&l?"already-present":l?"installed":"failed":l?"failed-but-present":"failed",u=d==="installed"?`complemento "${e}" instalado e verificado.`:d==="already-present"?`complemento "${e}" J\xC1 ESTAVA presente antes desta execu\xE7\xE3o \u2014 verificado, nada novo foi instalado.`:d==="failed-but-present"?`\u26A0 o instalador via agente N\xC3O rodou at\xE9 o fim (${pB(a)}) \u2014 o complemento "${e}" N\xC3O foi provisionado por ele. `+(n?"O que responde aqui \xE9 a instala\xE7\xE3o que J\xC1 existia nesta m\xE1quina.":"O health-check passa por conta dos passos determin\xEDsticos que rodam fora do agente \u2014 o provisionamento completo N\xC3O aconteceu.")+" Resolva a falha acima e re-rode `aluy bootstrap`.":`o complemento "${e}" ainda n\xE3o respondeu como esperado`+(c?"":` \u2014 o instalador via agente falhou (${pB(a)})`)+". O Aluy CLI funciona sem ele; Voc\xEA pode tentar de novo depois com `aluy bootstrap`.";return{target:e,hashOk:l,installed:l,outcome:d,message:u}}function pB(e){return e.error!==void 0?e.signal!==null&&e.signal!==void 0?`interrompido por ${e.signal}`:`n\xE3o executou: ${e.error.message}`:e.signal!==null&&e.signal!==void 0?`interrompido por ${e.signal}`:`saiu com c\xF3digo ${e.status??"?"}; veja o erro impresso acima`}function nee(e){return new Promise(t=>setTimeout(t,e))}async function ree(){for(let e of[Nr,sv()])try{await(await fetch(`http://${dr}:${Di}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:e,stream:!1})})).text()}catch{}}function iee(){if(process.platform!=="win32")try{let e=fn("sh",["-lc","command -v ollama"],{encoding:"utf8",timeout:1e4});if(e.status===0&&(e.stdout??"").trim()!=="")return;let t=rv(),n=["/usr/local/bin/ollama","/usr/bin/ollama","/opt/homebrew/bin/ollama",Ne(t,".ollama","bin","ollama"),Ne(mr(),na,"bin","ollama")].find(s=>bt(s));if(n===void 0)return;let r=Ne(t,".local","bin");O0(r,{recursive:!0});let i=Ne(r,"ollama");try{if(dB(i)===dB(n))return;FZ(i)}catch{}try{NZ(n,i)}catch{}}catch{}}function see(){try{return fn("python3",["-m","venv","--help"],{timeout:1e4}).status===0}catch{return!1}}function aee(){try{return fn("python3",["-m","pip","--version"],{timeout:1e4}).status===0}catch{return!1}}function lee(e){let t=[],o=[];if(e.has("ollama")&&(hB()||(t.push("zstd (extrair o Ollama)"),o.push("zstd")),yB()||(t.push("tar (extrair o Ollama)"),o.push("tar"))),e.has("mem0")||e.has("headroom")){let r=P0();r.ok?(see()||(t.push("m\xF3dulo venv do Python (mem0/headroom criam um virtualenv)"),o.push("python3-venv")),aee()||(t.push("pip do Python (mem0/headroom instalam pacotes)"),o.push("python3-pip"))):(t.push(`python3 >= ${jf} para mem0/headroom (encontrado: ${r.version||"nenhum"})`),o.push("python3","python3-venv","python3-pip"))}if(t.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):",...t.map(r=>` \u2022 ${r}`),`Instale e rode \`aluy bootstrap\` de novo: sudo apt install -y ${n.join(" ")}`,""]}async function vB(e,t,o){let n=e??"turbo",r=Fr(t??{}),i=o?.useAgent!==!1,s=new _0({...o?.platform?{platform:o.platform}:{},...i?{agentInstaller:eee}:{}});if(!i)for(let a of lee(r))process.stderr.write(a+`
181
- `);return s.provisionAll(n,r)}var gB,zd,jZ,Br,mB,_0,fB,QZ,tee,oee,L0=g(()=>{"use strict";F();gB=".aluy",zd=448,jZ=384;Br="aluy-mem0-server.py";mB="application/vnd.ollama.image.model";_0=class{platform;agentInstaller;constructor(t={}){this.platform=t.platform??process.platform,this.agentInstaller=t.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(t){switch(t){case"ollama":{let o=Ne(mr(),na,"bin","ollama");return bt(o)}case"mem0":{let o=Ne(mr(),ls,"bin","python3");return bt(o)&&cp(o)}case"headroom":{let o=Ne(mr(),ra,"bin","headroom");return bt(o)}default:return!1}}async provision(t,o){let n=BZ().uid;if(BC(n))return{target:t,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(t,o);if(!this.hasPinnedArtifact())return{target:t,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(t){case"ollama":return zZ();case"mem0":return XZ();case"headroom":return JZ();default:return{target:t,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(t)}`}}}async provisionAll(t,o){if(!Hf(t))return{profile:t,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 i=n.some(a=>a.installed),s=n.length>0&&n.every(a=>!a.installed);return{profile:t,targets:n,anySuccess:i,allFailed:s}}},fB="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",QZ="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. ";tee=24,oee=5e3});var Co,Nl=g(()=>{"use strict";Co="1.0.0-rc.181"});var AB={};At(AB,{HELP_TEXT:()=>xB,parseArgs:()=>F0,suggestFlag:()=>N0,versionText:()=>SB});function Ht(e,t,o={}){let n=`--${t}=`;for(let r=0;r<e.length;r++){let i=e[r];if(i===`--${t}`){let s=e[r+1];return s===void 0||(o.allowDashValue?s.startsWith("--"):s.startsWith("-"))?void 0:s}if(i!==void 0&&i.startsWith(n))return i.slice(n.length)}}function cee(e,t){let o=`-${t}=`;for(let n=0;n<e.length;n++){let r=e[n];if(r===`-${t}`){let i=e[n+1];return i!==void 0&&!i.startsWith("-")?i:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function dee(e,t){let o=[],n=new Set,r=`--${t}=`;for(let i=0;i<e.length;i++){let s=e[i];if(s!==void 0){if(s===`--${t}`){let a=e[i+1];a!==void 0&&!a.startsWith("-")&&(o.push(a),n.add(i+1));continue}s.startsWith(r)&&o.push(s.slice(r.length))}}return{values:o,valueIndices:n}}function SB(){return`aluy ${Co} (@hiperplano/aluy-cli-core ${dm})`}function fee(e,t){let o=e.length,n=t.length,r=Array.from({length:n+1},(i,s)=>s);for(let i=1;i<=o;i++){let s=[i];for(let a=1;a<=n;a++){let l=e[i-1]===t[a-1]?0:1;s[a]=Math.min(r[a]+1,s[a-1]+1,r[a-1]+l)}r=s}return r[n]}function N0(e){let t,o=3;for(let n of wB){let r=fee(e,n);r<o&&(o=r,t=n)}return t}function pee(e,t){let o=[];for(let n=0;n<e.length;n++){let r=e[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||t.has(n))continue;let i=r.slice(2).split("=",1)[0];i===""||wB.has(i)||o.push(`--${i}`)}return o}function F0(e){let t=e[0];if(t==="login"&&!e.includes("-h")&&!e.includes("--help")){let J=e.slice(1),Me=Ht(J,"token"),io=Ht(J,"org"),Vt=J.includes("--device"),Ho=Ht(J,"provider"),ui=J.includes("--oauth");return{kind:"login",forceDeviceFlow:Vt,...Me!==void 0?{token:Me}:{},...io!==void 0?{org:io}:{},...Ho!==void 0?{provider:Ho}:{},...ui?{oauth:!0}:{}}}if(t==="logout"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"logout"};if(t==="whoami"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"whoami"};if(t==="doctor"&&!e.includes("-h")&&!e.includes("--help")){let J=e.includes("--deep")||e.includes("--test"),Me=e.includes("--json");return{kind:"doctor",deep:J,json:Me}}if(t==="config"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"config",json:e.includes("--json")};if(t==="agents"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"agents"};if(t==="bootstrap"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"bootstrap",agent:!e.includes("--no-agent")};if(t==="uninstall"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"uninstall",agent:e.includes("--agent")};if(t==="onboard"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"onboard"};if(t==="skills"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"skills"};if(t==="workflows"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"workflows"};if((t==="models"||t==="providers")&&!e.includes("-h")&&!e.includes("--help")){let J=e.includes("--json"),Me=e.findIndex(Vt=>Vt==="--backend"||Vt.startsWith("--backend=")),io="both";if(Me!==-1){let Ho=(e[Me].includes("=")?e[Me].slice(10):e[Me+1]??"").trim().toLowerCase();Ho==="local"?io="local":Ho==="broker"&&(io="broker")}return{kind:"models",scope:io,json:J,which:t==="providers"?"providers":"models"}}if(t==="telegram"&&!e.includes("-h")&&!e.includes("--help")){let J=e[1];if(J===void 0||!["login","logout","allow","deny","status"].includes(J))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let io=e.slice(2);if(J==="login"){let Vt=Ht(io,"token");return{kind:"telegram",sub:"login",...Vt!==void 0?{token:Vt}:{}}}if(J==="allow"||J==="deny"){let Vt=io.find(ui=>!ui.startsWith("-")),Ho=Vt!==void 0&&/^-?\d+$/.test(Vt)?Number(Vt):void 0;return Ho===void 0?{kind:"usage-error",message:`uso: aluy telegram ${J} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:J,chatId:Ho}}return{kind:"telegram",sub:J}}if(t==="mcp"&&e[1]==="search"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"mcp-search",query:e.slice(2).filter(Me=>!Me.startsWith("-")).join(" ").trim()};if(t==="mcp")return{kind:"mcp",argv:e.slice(1)};if(t==="cron")return{kind:"cron",argv:e.slice(1)};if(t==="service")return{kind:"service",argv:e.slice(1)};if(e.includes("-v")||e.includes("--version"))return{kind:"version",text:SB()};if(e.includes("-h")||e.includes("--help"))return{kind:"help",text:xB};let o=e.includes("--plan"),n=e.includes("--unsafe"),r=e.includes("--yolo")||n,i=o?"plan":r?"unsafe":"normal",s=e.includes("--dense"),a=e.includes("--ascii"),l=e.includes("--telegram"),c=e.includes("--split")||e.includes("--view")?!0:void 0,d=e.includes("--fullscreen")||e.includes("--cockpit")?!0:void 0,m=e.includes("--no-budget")?!1:e.includes("--budget")?!0:void 0,u=Ht(e,"tier"),p=Ht(e,"lang"),h=Ht(e,"max-tokens"),b=Ht(e,"max-iterations"),y=Ht(e,"max-output-tokens"),v=!(e.includes("--no-subagents")||e.includes("--no-subagent")),S=e.includes("--no-self-check")?"0":e.includes("--self-check")?"1":void 0,w=e.includes("--no-autocompact")?"off":Ht(e,"autocompact-at"),T=e.includes("--quiet")?!0:void 0,O=e.includes("--cycle")?!0:void 0,L=Ht(e,"cycles"),I=Ht(e,"cycle-for"),{values:$,valueIndices:N}=dee(e,"image"),B=Ht(e,"backend"),U=Ht(e,"local-provider"),ee=Ht(e,"local-model"),P=Ht(e,"local-auth"),G=Ht(e,"local-base-url"),Ee=Ht(e,"model"),he=Ht(e,"provider");if((e.includes("--provider")||e.some(J=>J.startsWith("--provider=")))&&(Ee===void 0||Ee.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((Ee===void 0||Ee.trim()==="")&&u!==void 0&&u.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 Q=Ht(e,"effort"),ve=e.includes("--effort")||e.some(J=>J.startsWith("--effort=")),ce;if(Q!==void 0){if(Q.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(Q.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ce=Q}else if(ve)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Te=e.includes("-p")||e.includes("--print")||e.includes("--exec")||e.some(J=>J.startsWith("-p=")||J.startsWith("--print=")||J.startsWith("--exec=")),ye=Te?Ht(e,"print",{allowDashValue:!0})??Ht(e,"exec",{allowDashValue:!0})??cee(e,"p")??void 0:void 0,se=Te?Ht(e,"output-format"):void 0;if(se!==void 0&&!["text","json","stream-json"].includes(se.trim()))return{kind:"usage-error",message:`aluy: --output-format inv\xE1lido "${se}" (use text | json | stream-json)`,exitCode:2};let Fe=e.includes("--new"),yt=e.includes("--continue"),ue=e.indexOf("--resume"),Oe=e.find(J=>J.startsWith("--resume=")),Ve=ue>=0||Oe!==void 0,Ot=e.includes("--anonymous");if(Ot&&(yt||Ve))return{kind:"usage-error",message:"aluy: --anonymous n\xE3o combina com --continue/--resume (retomar precisa de uma sess\xE3o salva; an\xF4nimo n\xE3o grava nenhuma). Escolha um dos dois.",exitCode:2};let Ue;if(Oe!==void 0)Ue=Oe.slice(9);else if(ue>=0){let J=e[ue+1];J!==void 0&&!J.startsWith("-")&&(Ue=J)}let qe=u!==void 0?e.indexOf("--tier")+1:-1,Y=p!==void 0&&!e.some(J=>J.startsWith("--lang="))?e.indexOf("--lang")+1:-1,$t=Ue!==void 0&&Oe===void 0?ue+1:-1,Yt=h!==void 0&&!e.some(J=>J.startsWith("--max-tokens="))?e.indexOf("--max-tokens")+1:-1,Bt=b!==void 0&&!e.some(J=>J.startsWith("--max-iterations="))?e.indexOf("--max-iterations")+1:-1,de=L!==void 0&&!e.some(J=>J.startsWith("--cycles="))?e.indexOf("--cycles")+1:-1,Se=I!==void 0&&!e.some(J=>J.startsWith("--cycle-for="))?e.indexOf("--cycle-for")+1:-1,Oo=y!==void 0&&!e.some(J=>J.startsWith("--max-output-tokens="))?e.indexOf("--max-output-tokens")+1:-1,ir=w!==void 0&&!e.includes("--no-autocompact")&&!e.some(J=>J.startsWith("--autocompact-at="))?e.indexOf("--autocompact-at")+1:-1,H=B!==void 0&&!e.some(J=>J.startsWith("--backend="))?e.indexOf("--backend")+1:-1,K=(J,Me)=>Me!==void 0&&!e.some(io=>io.startsWith(`--${J}=`))?e.indexOf(`--${J}`)+1:-1,je=K("local-provider",U),ot=K("local-model",ee),z=K("local-auth",P),Z=K("local-base-url",G),Ut=Ee!==void 0&&!e.some(J=>J.startsWith("--model="))?e.indexOf("--model")+1:-1,Fs=he!==void 0&&!e.some(J=>J.startsWith("--provider="))?e.indexOf("--provider")+1:-1,no=ce!==void 0&&!e.some(J=>J.startsWith("--effort="))?e.indexOf("--effort")+1:-1,di=se!==void 0&&!e.some(J=>J.startsWith("--output-format="))?e.indexOf("--output-format")+1:-1,Bn=ye!==void 0&&!e.some(J=>J.startsWith("-p=")||J.startsWith("--print=")||J.startsWith("--exec="))?Math.max(e.indexOf("-p"),e.indexOf("--print"),e.indexOf("--exec"))+1:-1,Un=e.find((J,Me)=>!J.startsWith("-")&&Me!==qe&&Me!==Y&&Me!==H&&Me!==je&&Me!==ot&&Me!==z&&Me!==Z&&Me!==Ut&&Me!==Fs&&Me!==no&&Me!==di&&Me!==Bn&&Me!==$t&&Me!==Yt&&Me!==Bt&&Me!==Oo&&Me!==ir&&Me!==de&&Me!==Se&&!N.has(Me)),rn=(ye??Un??"").trim();if(rn!==""&&!/\s/.test(rn)&&mee.has(rn.toLowerCase()))return{kind:"usage-error",message:`aluy: "${rn}" \xE9 um comando de SESS\xC3O, n\xE3o um objetivo. Use /${rn} DENTRO do aluy (rode \`aluy\` sem argumentos), ou veja \`aluy --help\`. Se voc\xEA quis MESMO um objetivo com essa palavra, d\xEA mais contexto (ex.: \`aluy "${rn} o arquivo X"\`).`,exitCode:2};let sn=yt?{kind:"continue"}:Ve?{kind:"resume",...Ue!==void 0?{id:Ue}:{}}:void 0,Mo=new Set([qe,Y,H,je,ot,z,Z,Ut,Fs,no,di,Bn,$t,Yt,Bt,Oo,ir,de,Se].filter(J=>J>=0));for(let J of N)Mo.add(J);for(let J of uee){let Me=e.indexOf(J);Me>=0&&!e[Me].includes("=")&&Mo.add(Me+1)}let ro=pee(e,Mo);return{kind:"launch",mode:i,unsafe:i==="unsafe",unsafeAliasUsed:n,...ro.length>0?{unknownFlags:ro}:{},dense:s,fresh:Fe,anonymous:Ot,subAgents:v,safeGlyphs:a,telegram:l,print:Te,...c!==void 0?{split:c}:{},...d!==void 0?{fullscreen:d}:{},...m!==void 0?{budget:m}:{},...Un!==void 0?{goal:Un}:{},...u!==void 0?{tier:u}:{},...B!==void 0?{backend:B}:{},...U!==void 0?{localProvider:U}:{},...ee!==void 0?{localModel:ee}:{},...P!==void 0?{localAuth:P}:{},...G!==void 0?{localBaseUrl:G}:{},...Ee!==void 0?{model:Ee}:{},...he!==void 0?{provider:he}:{},...ce!==void 0?{effort:ce}:{},...ye!==void 0?{printArg:ye}:{},...se!==void 0?{outputFormat:se}:{},...p!==void 0?{lang:p}:{},...sn!==void 0?{resume:sn}:{},...h!==void 0?{maxTokens:h}:{},...b!==void 0?{maxIterations:b}:{},...y!==void 0?{maxOutputTokens:y}:{},...S!==void 0?{selfCheck:S}:{},...w!==void 0?{autoCompactAt:w}:{},...T!==void 0?{quiet:T}:{},...O!==void 0?{cycle:O}:{},...L!==void 0?{cycles:L}:{},...I!==void 0?{cycleFor:I}:{},...$.length>0?{images:$}:{}}}var xB,wB,uee,mee,av=g(()=>{"use strict";F();Nl();xB=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
181
+ `);return s.provisionAll(n,r)}var gB,zd,jZ,Br,mB,_0,fB,QZ,tee,oee,L0=g(()=>{"use strict";F();gB=".aluy",zd=448,jZ=384;Br="aluy-mem0-server.py";mB="application/vnd.ollama.image.model";_0=class{platform;agentInstaller;constructor(t={}){this.platform=t.platform??process.platform,this.agentInstaller=t.agentInstaller}hasPinnedArtifact(){return this.platform==="linux"}async isProvisioned(t){switch(t){case"ollama":{let o=Ne(mr(),na,"bin","ollama");return bt(o)}case"mem0":{let o=Ne(mr(),ls,"bin","python3");return bt(o)&&cp(o)}case"headroom":{let o=Ne(mr(),ra,"bin","headroom");return bt(o)}default:return!1}}async provision(t,o){let n=BZ().uid;if(BC(n))return{target:t,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(t,o);if(!this.hasPinnedArtifact())return{target:t,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(t){case"ollama":return zZ();case"mem0":return XZ();case"headroom":return JZ();default:return{target:t,hashOk:!1,installed:!1,message:`Alvo desconhecido: ${String(t)}`}}}async provisionAll(t,o){if(!Hf(t))return{profile:t,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 i=n.some(a=>a.installed),s=n.length>0&&n.every(a=>!a.installed);return{profile:t,targets:n,anySuccess:i,allFailed:s}}},fB="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",QZ="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. ";tee=24,oee=5e3});var Co,Nl=g(()=>{"use strict";Co="1.0.0-rc.182"});var AB={};At(AB,{HELP_TEXT:()=>xB,parseArgs:()=>F0,suggestFlag:()=>N0,versionText:()=>SB});function Ht(e,t,o={}){let n=`--${t}=`;for(let r=0;r<e.length;r++){let i=e[r];if(i===`--${t}`){let s=e[r+1];return s===void 0||(o.allowDashValue?s.startsWith("--"):s.startsWith("-"))?void 0:s}if(i!==void 0&&i.startsWith(n))return i.slice(n.length)}}function cee(e,t){let o=`-${t}=`;for(let n=0;n<e.length;n++){let r=e[n];if(r===`-${t}`){let i=e[n+1];return i!==void 0&&!i.startsWith("-")?i:void 0}if(r!==void 0&&r.startsWith(o))return r.slice(o.length)}}function dee(e,t){let o=[],n=new Set,r=`--${t}=`;for(let i=0;i<e.length;i++){let s=e[i];if(s!==void 0){if(s===`--${t}`){let a=e[i+1];a!==void 0&&!a.startsWith("-")&&(o.push(a),n.add(i+1));continue}s.startsWith(r)&&o.push(s.slice(r.length))}}return{values:o,valueIndices:n}}function SB(){return`aluy ${Co} (@hiperplano/aluy-cli-core ${dm})`}function fee(e,t){let o=e.length,n=t.length,r=Array.from({length:n+1},(i,s)=>s);for(let i=1;i<=o;i++){let s=[i];for(let a=1;a<=n;a++){let l=e[i-1]===t[a-1]?0:1;s[a]=Math.min(r[a]+1,s[a-1]+1,r[a-1]+l)}r=s}return r[n]}function N0(e){let t,o=3;for(let n of wB){let r=fee(e,n);r<o&&(o=r,t=n)}return t}function pee(e,t){let o=[];for(let n=0;n<e.length;n++){let r=e[n];if(r==="--")break;if(!r.startsWith("--")||r.length===2||t.has(n))continue;let i=r.slice(2).split("=",1)[0];i===""||wB.has(i)||o.push(`--${i}`)}return o}function F0(e){let t=e[0];if(t==="login"&&!e.includes("-h")&&!e.includes("--help")){let J=e.slice(1),Me=Ht(J,"token"),io=Ht(J,"org"),Vt=J.includes("--device"),Ho=Ht(J,"provider"),ui=J.includes("--oauth");return{kind:"login",forceDeviceFlow:Vt,...Me!==void 0?{token:Me}:{},...io!==void 0?{org:io}:{},...Ho!==void 0?{provider:Ho}:{},...ui?{oauth:!0}:{}}}if(t==="logout"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"logout"};if(t==="whoami"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"whoami"};if(t==="doctor"&&!e.includes("-h")&&!e.includes("--help")){let J=e.includes("--deep")||e.includes("--test"),Me=e.includes("--json");return{kind:"doctor",deep:J,json:Me}}if(t==="config"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"config",json:e.includes("--json")};if(t==="agents"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"agents"};if(t==="bootstrap"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"bootstrap",agent:!e.includes("--no-agent")};if(t==="uninstall"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"uninstall",agent:e.includes("--agent")};if(t==="onboard"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"onboard"};if(t==="skills"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"skills"};if(t==="workflows"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"workflows"};if((t==="models"||t==="providers")&&!e.includes("-h")&&!e.includes("--help")){let J=e.includes("--json"),Me=e.findIndex(Vt=>Vt==="--backend"||Vt.startsWith("--backend=")),io="both";if(Me!==-1){let Ho=(e[Me].includes("=")?e[Me].slice(10):e[Me+1]??"").trim().toLowerCase();Ho==="local"?io="local":Ho==="broker"&&(io="broker")}return{kind:"models",scope:io,json:J,which:t==="providers"?"providers":"models"}}if(t==="telegram"&&!e.includes("-h")&&!e.includes("--help")){let J=e[1];if(J===void 0||!["login","logout","allow","deny","status"].includes(J))return{kind:"usage-error",message:"uso: aluy telegram <login|logout|allow|deny|status>",exitCode:2};let io=e.slice(2);if(J==="login"){let Vt=Ht(io,"token");return{kind:"telegram",sub:"login",...Vt!==void 0?{token:Vt}:{}}}if(J==="allow"||J==="deny"){let Vt=io.find(ui=>!ui.startsWith("-")),Ho=Vt!==void 0&&/^-?\d+$/.test(Vt)?Number(Vt):void 0;return Ho===void 0?{kind:"usage-error",message:`uso: aluy telegram ${J} <chat-id> (um inteiro)`,exitCode:2}:{kind:"telegram",sub:J,chatId:Ho}}return{kind:"telegram",sub:J}}if(t==="mcp"&&e[1]==="search"&&!e.includes("-h")&&!e.includes("--help"))return{kind:"mcp-search",query:e.slice(2).filter(Me=>!Me.startsWith("-")).join(" ").trim()};if(t==="mcp")return{kind:"mcp",argv:e.slice(1)};if(t==="cron")return{kind:"cron",argv:e.slice(1)};if(t==="service")return{kind:"service",argv:e.slice(1)};if(e.includes("-v")||e.includes("--version"))return{kind:"version",text:SB()};if(e.includes("-h")||e.includes("--help"))return{kind:"help",text:xB};let o=e.includes("--plan"),n=e.includes("--unsafe"),r=e.includes("--yolo")||n,i=o?"plan":r?"unsafe":"normal",s=e.includes("--dense"),a=e.includes("--ascii"),l=e.includes("--telegram"),c=e.includes("--split")||e.includes("--view")?!0:void 0,d=e.includes("--fullscreen")||e.includes("--cockpit")?!0:void 0,m=e.includes("--no-budget")?!1:e.includes("--budget")?!0:void 0,u=Ht(e,"tier"),p=Ht(e,"lang"),h=Ht(e,"max-tokens"),b=Ht(e,"max-iterations"),y=Ht(e,"max-output-tokens"),v=!(e.includes("--no-subagents")||e.includes("--no-subagent")),S=e.includes("--no-self-check")?"0":e.includes("--self-check")?"1":void 0,w=e.includes("--no-autocompact")?"off":Ht(e,"autocompact-at"),T=e.includes("--quiet")?!0:void 0,O=e.includes("--cycle")?!0:void 0,L=Ht(e,"cycles"),I=Ht(e,"cycle-for"),{values:$,valueIndices:N}=dee(e,"image"),B=Ht(e,"backend"),U=Ht(e,"local-provider"),ee=Ht(e,"local-model"),P=Ht(e,"local-auth"),G=Ht(e,"local-base-url"),Ee=Ht(e,"model"),he=Ht(e,"provider");if((e.includes("--provider")||e.some(J=>J.startsWith("--provider=")))&&(Ee===void 0||Ee.trim()===""))return{kind:"usage-error",message:"aluy: --provider exige --model (ex.: --provider <provider> --model <slug>)",exitCode:2};if((Ee===void 0||Ee.trim()==="")&&u!==void 0&&u.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 Q=Ht(e,"effort"),ve=e.includes("--effort")||e.some(J=>J.startsWith("--effort=")),ce;if(Q!==void 0){if(Q.trim()==="")return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};if(Q.length>32)return{kind:"usage-error",message:"aluy: --effort aceita no m\xE1ximo 32 caracteres",exitCode:2};ce=Q}else if(ve)return{kind:"usage-error",message:"aluy: --effort requer um valor (ex.: --effort low)",exitCode:2};let Te=e.includes("-p")||e.includes("--print")||e.includes("--exec")||e.some(J=>J.startsWith("-p=")||J.startsWith("--print=")||J.startsWith("--exec=")),ye=Te?Ht(e,"print",{allowDashValue:!0})??Ht(e,"exec",{allowDashValue:!0})??cee(e,"p")??void 0:void 0,se=Te?Ht(e,"output-format"):void 0;if(se!==void 0&&!["text","json","stream-json"].includes(se.trim()))return{kind:"usage-error",message:`aluy: --output-format inv\xE1lido "${se}" (use text | json | stream-json)`,exitCode:2};let Fe=e.includes("--new"),yt=e.includes("--continue"),ue=e.indexOf("--resume"),Oe=e.find(J=>J.startsWith("--resume=")),Ve=ue>=0||Oe!==void 0,Ot=e.includes("--anonymous");if(Ot&&(yt||Ve))return{kind:"usage-error",message:"aluy: --anonymous n\xE3o combina com --continue/--resume (retomar precisa de uma sess\xE3o salva; an\xF4nimo n\xE3o grava nenhuma). Escolha um dos dois.",exitCode:2};let Ue;if(Oe!==void 0)Ue=Oe.slice(9);else if(ue>=0){let J=e[ue+1];J!==void 0&&!J.startsWith("-")&&(Ue=J)}let qe=u!==void 0?e.indexOf("--tier")+1:-1,Y=p!==void 0&&!e.some(J=>J.startsWith("--lang="))?e.indexOf("--lang")+1:-1,$t=Ue!==void 0&&Oe===void 0?ue+1:-1,Yt=h!==void 0&&!e.some(J=>J.startsWith("--max-tokens="))?e.indexOf("--max-tokens")+1:-1,Bt=b!==void 0&&!e.some(J=>J.startsWith("--max-iterations="))?e.indexOf("--max-iterations")+1:-1,de=L!==void 0&&!e.some(J=>J.startsWith("--cycles="))?e.indexOf("--cycles")+1:-1,Se=I!==void 0&&!e.some(J=>J.startsWith("--cycle-for="))?e.indexOf("--cycle-for")+1:-1,Oo=y!==void 0&&!e.some(J=>J.startsWith("--max-output-tokens="))?e.indexOf("--max-output-tokens")+1:-1,ir=w!==void 0&&!e.includes("--no-autocompact")&&!e.some(J=>J.startsWith("--autocompact-at="))?e.indexOf("--autocompact-at")+1:-1,H=B!==void 0&&!e.some(J=>J.startsWith("--backend="))?e.indexOf("--backend")+1:-1,K=(J,Me)=>Me!==void 0&&!e.some(io=>io.startsWith(`--${J}=`))?e.indexOf(`--${J}`)+1:-1,je=K("local-provider",U),ot=K("local-model",ee),z=K("local-auth",P),Z=K("local-base-url",G),Ut=Ee!==void 0&&!e.some(J=>J.startsWith("--model="))?e.indexOf("--model")+1:-1,Fs=he!==void 0&&!e.some(J=>J.startsWith("--provider="))?e.indexOf("--provider")+1:-1,no=ce!==void 0&&!e.some(J=>J.startsWith("--effort="))?e.indexOf("--effort")+1:-1,di=se!==void 0&&!e.some(J=>J.startsWith("--output-format="))?e.indexOf("--output-format")+1:-1,Bn=ye!==void 0&&!e.some(J=>J.startsWith("-p=")||J.startsWith("--print=")||J.startsWith("--exec="))?Math.max(e.indexOf("-p"),e.indexOf("--print"),e.indexOf("--exec"))+1:-1,Un=e.find((J,Me)=>!J.startsWith("-")&&Me!==qe&&Me!==Y&&Me!==H&&Me!==je&&Me!==ot&&Me!==z&&Me!==Z&&Me!==Ut&&Me!==Fs&&Me!==no&&Me!==di&&Me!==Bn&&Me!==$t&&Me!==Yt&&Me!==Bt&&Me!==Oo&&Me!==ir&&Me!==de&&Me!==Se&&!N.has(Me)),rn=(ye??Un??"").trim();if(rn!==""&&!/\s/.test(rn)&&mee.has(rn.toLowerCase()))return{kind:"usage-error",message:`aluy: "${rn}" \xE9 um comando de SESS\xC3O, n\xE3o um objetivo. Use /${rn} DENTRO do aluy (rode \`aluy\` sem argumentos), ou veja \`aluy --help\`. Se voc\xEA quis MESMO um objetivo com essa palavra, d\xEA mais contexto (ex.: \`aluy "${rn} o arquivo X"\`).`,exitCode:2};let sn=yt?{kind:"continue"}:Ve?{kind:"resume",...Ue!==void 0?{id:Ue}:{}}:void 0,Mo=new Set([qe,Y,H,je,ot,z,Z,Ut,Fs,no,di,Bn,$t,Yt,Bt,Oo,ir,de,Se].filter(J=>J>=0));for(let J of N)Mo.add(J);for(let J of uee){let Me=e.indexOf(J);Me>=0&&!e[Me].includes("=")&&Mo.add(Me+1)}let ro=pee(e,Mo);return{kind:"launch",mode:i,unsafe:i==="unsafe",unsafeAliasUsed:n,...ro.length>0?{unknownFlags:ro}:{},dense:s,fresh:Fe,anonymous:Ot,subAgents:v,safeGlyphs:a,telegram:l,print:Te,...c!==void 0?{split:c}:{},...d!==void 0?{fullscreen:d}:{},...m!==void 0?{budget:m}:{},...Un!==void 0?{goal:Un}:{},...u!==void 0?{tier:u}:{},...B!==void 0?{backend:B}:{},...U!==void 0?{localProvider:U}:{},...ee!==void 0?{localModel:ee}:{},...P!==void 0?{localAuth:P}:{},...G!==void 0?{localBaseUrl:G}:{},...Ee!==void 0?{model:Ee}:{},...he!==void 0?{provider:he}:{},...ce!==void 0?{effort:ce}:{},...ye!==void 0?{printArg:ye}:{},...se!==void 0?{outputFormat:se}:{},...p!==void 0?{lang:p}:{},...sn!==void 0?{resume:sn}:{},...h!==void 0?{maxTokens:h}:{},...b!==void 0?{maxIterations:b}:{},...y!==void 0?{maxOutputTokens:y}:{},...S!==void 0?{selfCheck:S}:{},...w!==void 0?{autoCompactAt:w}:{},...T!==void 0?{quiet:T}:{},...O!==void 0?{cycle:O}:{},...L!==void 0?{cycles:L}:{},...I!==void 0?{cycleFor:I}:{},...$.length>0?{images:$}:{}}}var xB,wB,uee,mee,av=g(()=>{"use strict";F();Nl();xB=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
182
182
 
183
183
  Uso:
184
184
  aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
@@ -1,4 +1,4 @@
1
- var A8=Object.create;var $b=Object.defineProperty;var C8=Object.getOwnPropertyDescriptor;var D8=Object.getOwnPropertyNames;var R8=Object.getPrototypeOf,T8=Object.prototype.hasOwnProperty;var C=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var _8=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}},Bb=(t,e)=>{for(var o in e)$b(t,o,{get:e[o],enumerable:!0})},M8=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of D8(e))!T8.call(t,r)&&r!==o&&$b(t,r,{get:()=>e[r],enumerable:!(n=C8(e,r))||n.enumerable});return t};var O8=(t,e,o)=>(o=t!=null?A8(R8(t)):{},M8(e||!t||!t.__esModule?$b(o,"default",{value:t,enumerable:!0}):o,t));var id,rD=C(()=>{"use strict";id="1.0.0-rc.181"});function Hn(t,e){return t.decide(e)}var Pi=C(()=>{"use strict"});var Sr,rs,ss=C(()=>{"use strict";Sr="remember",rs="recall"});var Ub,P8,al,jb=C(()=>{"use strict";Ub=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}}},P8=200,al=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??P8,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 Ub(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 wr(t,e){for(let o of e){let n=t[o];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return String(n)}}function un(t,e){let o=wr(t,e);return o!==void 0&&o.length>0?o:void 0}function qb(t,e,o=!1){let n=t[e];if(typeof n=="boolean")return n;if(typeof n=="string"){let r=n.trim().toLowerCase();if(r==="true")return!0;if(r==="false")return!1}return o}function L8(t){if(Array.isArray(t))return t;if(typeof t=="string"){let e=t.trim();if(e.startsWith("["))try{let o=JSON.parse(e);if(Array.isArray(o))return o}catch{}return}if(t!==null&&typeof t=="object"){let e=t,o=Object.keys(e);if(o.length>0&&o.every(n=>/^\d+$/.test(n)))return o.sort((n,r)=>Number(n)-Number(r)).map(n=>e[n])}}function ll(t,e){for(let o of e){let n=L8(t[o]);if(n!==void 0)return n}}function mt(t){let e=Object.keys(t);return e.length===0?"nenhum argumento":e.slice(0,4).map(n=>{let r=t[n],s=r===null?"null":Array.isArray(r)?"array":typeof r,i=typeof r=="string"?` ${JSON.stringify(r.slice(0,40))}`:"";return`${n}=${s}${i}`}).join(", ")}function Li(t){for(let e of I8){let o=t[e];if(typeof o=="object"&&o!==null&&!Array.isArray(o))return o;if(typeof o!="string")continue;let n=o.trim();if(!(n===""||!n.startsWith("{")))try{let r=JSON.parse(n);if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}catch{}}return t}var I8,is=C(()=>{"use strict";I8=["input","arguments","args","params","parameters","body","payload"]});function dp(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 lD(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"&&N8.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=lD(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return $8;let s=o.trim().slice(0,F8);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function cD(t){let e=ll(t,sD);if(e!==void 0)return e;for(let o of sD){let n=t[o];if(n===null||typeof n!="object"||Array.isArray(n))continue;let r=cD(n);if(r!==void 0)return r}}function B8(t){let e=cD(t);if(e===void 0)return{error:`update_plan: passe "steps" como uma LISTA de passos (string ou {title,status}). Recebi: ${mt(t)}.`};if(e.length===0)return{error:"update_plan: a lista de passos est\xE1 vazia."};let o=[];for(let i of e){let a=lD(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=dp(o).length;return s>iD?{error:`update_plan: no m\xE1ximo ${iD} passos (recebidos ${s}).`}:{steps:o}}function U8(t){let e=dp(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${dD[r.step.status]} ${r.step.title}`).join(`
1
+ var A8=Object.create;var $b=Object.defineProperty;var C8=Object.getOwnPropertyDescriptor;var D8=Object.getOwnPropertyNames;var R8=Object.getPrototypeOf,T8=Object.prototype.hasOwnProperty;var C=(t,e,o)=>()=>{if(o)throw o[0];try{return t&&(e=t(t=0)),e}catch(n){throw o=[n],n}};var _8=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}},Bb=(t,e)=>{for(var o in e)$b(t,o,{get:e[o],enumerable:!0})},M8=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of D8(e))!T8.call(t,r)&&r!==o&&$b(t,r,{get:()=>e[r],enumerable:!(n=C8(e,r))||n.enumerable});return t};var O8=(t,e,o)=>(o=t!=null?A8(R8(t)):{},M8(e||!t||!t.__esModule?$b(o,"default",{value:t,enumerable:!0}):o,t));var id,rD=C(()=>{"use strict";id="1.0.0-rc.182"});function Hn(t,e){return t.decide(e)}var Pi=C(()=>{"use strict"});var Sr,rs,ss=C(()=>{"use strict";Sr="remember",rs="recall"});var Ub,P8,al,jb=C(()=>{"use strict";Ub=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}}},P8=200,al=class{nodes=new Map;maxBoxes;now;constructor(e){this.maxBoxes=e?.maxBoxes??P8,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 Ub(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 wr(t,e){for(let o of e){let n=t[o];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return String(n)}}function un(t,e){let o=wr(t,e);return o!==void 0&&o.length>0?o:void 0}function qb(t,e,o=!1){let n=t[e];if(typeof n=="boolean")return n;if(typeof n=="string"){let r=n.trim().toLowerCase();if(r==="true")return!0;if(r==="false")return!1}return o}function L8(t){if(Array.isArray(t))return t;if(typeof t=="string"){let e=t.trim();if(e.startsWith("["))try{let o=JSON.parse(e);if(Array.isArray(o))return o}catch{}return}if(t!==null&&typeof t=="object"){let e=t,o=Object.keys(e);if(o.length>0&&o.every(n=>/^\d+$/.test(n)))return o.sort((n,r)=>Number(n)-Number(r)).map(n=>e[n])}}function ll(t,e){for(let o of e){let n=L8(t[o]);if(n!==void 0)return n}}function mt(t){let e=Object.keys(t);return e.length===0?"nenhum argumento":e.slice(0,4).map(n=>{let r=t[n],s=r===null?"null":Array.isArray(r)?"array":typeof r,i=typeof r=="string"?` ${JSON.stringify(r.slice(0,40))}`:"";return`${n}=${s}${i}`}).join(", ")}function Li(t){for(let e of I8){let o=t[e];if(typeof o=="object"&&o!==null&&!Array.isArray(o))return o;if(typeof o!="string")continue;let n=o.trim();if(!(n===""||!n.startsWith("{")))try{let r=JSON.parse(n);if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}catch{}}return t}var I8,is=C(()=>{"use strict";I8=["input","arguments","args","params","parameters","body","payload"]});function dp(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 lD(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"&&N8.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=lD(d,!1);if(typeof m=="string")return m;c.push(m)}r=c}}}if(o===void 0||o.trim()==="")return $8;let s=o.trim().slice(0,F8);return r?{title:s,status:n,substeps:r}:{title:s,status:n}}function cD(t){let e=ll(t,sD);if(e!==void 0)return e;for(let o of sD){let n=t[o];if(n===null||typeof n!="object"||Array.isArray(n))continue;let r=cD(n);if(r!==void 0)return r}}function B8(t){let e=cD(t);if(e===void 0)return{error:`update_plan: passe "steps" como uma LISTA de passos (string ou {title,status}). Recebi: ${mt(t)}.`};if(e.length===0)return{error:"update_plan: a lista de passos est\xE1 vazia."};let o=[];for(let i of e){let a=lD(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=dp(o).length;return s>iD?{error:`update_plan: no m\xE1ximo ${iD} passos (recebidos ${s}).`}:{steps:o}}function U8(t){let e=dp(t),o=e.filter(r=>r.step.status==="completed").length,n=e.map(r=>`${" ".repeat(r.depth)}${dD[r.step.status]} ${r.step.title}`).join(`
2
2
  `);return`plano (${o}/${e.length}):
3
3
  ${n}`}function q8(t,e){return e<0?"m\xE9dio":t===e?"curto":t>e?"longo":"m\xE9dio"}function H8(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??al.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=q8(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 W8(t,e){if(!e)return U8(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 p=s(u.parentId,new Set(d).add(c))+1;return r.set(c,p),p},i=dp(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?j8[m.horizon]:"",p=m?s(m.id):d,g=" ".repeat(p),y=dD[c.status];l.push(`${g}${u} ${y} ${c.title}`)}return l.join(`
4
4
  `)}var ad,sD,N8,iD,F8,$8,dD,j8,aD,G8,uD,up=C(()=>{"use strict";jb();is();ad="update_plan",sD=["steps","plan","todos","items"];N8=new Set(["pending","in_progress","completed"]),iD=30,F8=120,$8="update_plan: cada passo precisa de um t\xEDtulo (texto) n\xE3o-vazio.";dD={pending:"\u2610",in_progress:"\u25B6",completed:"\u2611"};j8={longo:"[\u{1F4D0}]",m\u00E9dio:"[\u{1F4CB}]",curto:"[\u{1F4CC}]"};aD=Object.freeze({type:"string",enum:["pending","in_progress","completed"],description:"pending (a fazer) \xB7 in_progress (em curso) \xB7 completed (feito)."}),G8=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:aD,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:aD},required:["title"],additionalProperties:!1}}},required:["title"],additionalProperties:!1}}},required:["steps"],additionalProperties:!1}),uD={name:ad,effect:"read",group:"plano",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:G8,async run(t,e){let o=B8(t);return"error"in o?{ok:!1,observation:o.error}:(e.graph&&H8(o.steps,e.graph),e.plan&&e.plan.set(dp(o.steps).map(r=>({title:r.step.title,status:r.step.status}))),{ok:!0,observation:W8(o.steps,e.graph)})}}});function fD(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". Recebi: ${mt(t)}.`};let o=e.trim().slice(0,mD),n=t.header??t.title,r=typeof n=="string"&&n.trim()!==""?n.trim().slice(0,z8):void 0,s=t.options!==void 0||t.choices!==void 0,i=ll(t,["options","choices"]);if(s&&i===void 0)return{error:`perguntar: "options" n\xE3o foi reconhecido como uma LISTA de op\xE7\xF5es. Recebi: ${mt(t)}.`};let a=i!==void 0?X8(i):void 0;if(typeof a=="string")return{error:a};let l,c=t.kind??t.type;if(typeof c=="string"&&Y8.has(c))l=c;else{if(typeof c=="string"&&c.trim()!=="")return{error:`perguntar: "kind" inv\xE1lido "${c}". Use "single", "multi" ou "text".`};l=a!==void 0&&a.length>0?"single":"text"}if((l==="single"||l==="multi")&&(a===void 0||a.length===0))return{error:`perguntar: kind "${l}" requer "options" (uma lista de ao menos 1 op\xE7\xE3o).`};let d=t.allowOther,m=!(d===!1||typeof d=="string"&&d.trim().toLowerCase()==="false");return{spec:{kind:l,question:o,...r!==void 0?{header:r}:{},...l!=="text"&&a!==void 0?{options:a}:{},...l!=="text"?{allowOther:m}:{}}}}function X8(t){if(t.length===0)return'perguntar: a lista de "options" est\xE1 vazia.';if(t.length>fp)return`perguntar: no m\xE1ximo ${fp} 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,K8))}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,V8),...r!==void 0?{description:r}:{}})}return e}function J8(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(`
@@ -146,7 +146,7 @@ ${t.trim()}`}}function Hg(t,e,o=Ql){let{older:n,recent:r}=Tu(t,o);if(n.length===
146
146
  `;case"t":return" ";case"r":return"\r";case'"':return'"';case"\\":return"\\";default:throw new De(`config.toml:${e}: escape n\xE3o suportado "\\${i}".`)}})}function pz(t,e,o){let n=e.trim();if(!n.startsWith("[")||!n.endsWith("]"))throw new De(`config.toml:${o}: ${t} deve ser um array de strings em uma linha.`);let r=n.slice(1,-1).trim();if(r.length===0)return[];let s=[];for(let i of oL(r,",")){let a=i.trim();if(a.length===0)continue;let l=mw(a,o);if(l===void 0)throw new De(`config.toml:${o}: ${t} \u2014 todo item deve ser string.`);s.push(l)}return s}function gz(t,e,o){let n=e.trim();if(!n.startsWith("{")||!n.endsWith("}"))throw new De(`config.toml:${o}: ${t} deve ser uma tabela inline { K = "v" }.`);let r=n.slice(1,-1).trim(),s={};if(r.length===0)return s;for(let i of oL(r,",")){let a=i.trim();if(a.length===0)continue;let l=tL(a);if(l===-1)throw new De(`config.toml:${o}: ${t} \u2014 esperava K = "v".`);let c=uw(a.slice(0,l).trim(),o);if(c.length!==1)throw new De(`config.toml:${o}: ${t} \u2014 chave inv\xE1lida.`);let d=mw(a.slice(l+1).trim(),o);if(d===void 0)throw new De(`config.toml:${o}: ${t}["${c[0]}"] deve ser string.`);s[c[0]]=d}return s}function oL(t,e){let o=[],n=0,r=!1,s="",i=0;for(let a=0;a<t.length;a++){let l=t[a];r?l===s&&t[a-1]!=="\\"&&(r=!1):l==='"'||l==="'"?(r=!0,s=l):l==="["||l==="{"?n++:l==="]"||l==="}"?n--:l===e&&n===0&&(o.push(t.slice(i,a)),i=a+1)}return o.push(t.slice(i)),o}var cz,nL=C(()=>{"use strict";th();cz="mcp_servers"});function bz(t){if(t.length<20||/\s/.test(t)||/^[~./]/.test(t)||!/^[A-Za-z0-9_\-+/=.]+$/.test(t))return!1;let e=/[A-Z]/.test(t),o=/[a-z]/.test(t),n=/[0-9]/.test(t);return(e?1:0)+(o?1:0)+(n?1:0)>=2||t.length>=32}function vz(t){let e=t.toLowerCase();return hz.some(o=>e.includes(o))}function fw(t,e){if(yz.test(e.trim()))return{looksLikeSecret:!1,signals:[]};let o=[];return e.length>0&&vz(t)&&o.push("secret-key-name"),bz(e)&&o.push("high-entropy"),{looksLikeSecret:o.length>0,signals:o}}var hz,yz,rL=C(()=>{"use strict";hz=["token","secret","password","passwd","apikey","api_key","access_key","accesskey","private_key","privatekey","credential","auth"],yz=/^\$\{?[A-Za-z_][A-Za-z0-9_]*\}?$|^%[A-Za-z_][A-Za-z0-9_]*%$/});function kz(t,e){return`mcp__${t}__${e}`}function xz(t){return t==="aluy-global"||t==="project"}function Lu(t,e){let o=[],n=new Map;for(let{origin:s,config:i}of t)for(let a of i.servers)n.has(a.name)||o.push(a.name),n.set(a.name,{origin:s,server:a});let r=e?Sz(e):void 0;return o.map(s=>{let{origin:i,server:a}=n.get(s),l=r?.get(s),c=a.disabled===!0?{kind:"disabled"}:l?l.ok?{kind:"ok",toolCount:l.tools.length}:{kind:"error",error:l.error??"falha na conex\xE3o"}:{kind:"unknown"},d=c.kind==="ok"&&l?l.tools:[];return{name:s,origin:i,command:a.command,args:a.args,envKeys:Object.keys(a.env),managed:xz(i),state:c,tools:d}})}function Sz(t){let e=new Map;for(let o of t.servers){let n=o.tools.map(r=>({qualifiedName:kz(o.server,r.descriptor.name),...r.descriptor.description!==void 0?{description:r.descriptor.description}:{}}));e.set(o.server,{ok:o.ok,...o.error!==void 0?{error:o.error}:{},tools:n})}return e}function Iu(t){if(t.command.trim()!=="--")return;let e=t.args.length>0?t.args.join(" "):"<command> [args...]";return`server "${t.name}" com command inv\xE1lido "--" (separador gravado por engano \u2014 nunca vai conectar). Re-adicione: aluy mcp add ${t.name} --force -- ${e}`}function pw(t){switch(t){case"aluy-global":return"~/.aluy/mcp.json";case"project":return".mcp.json (projeto)";case"codex":return"~/.codex (Codex)"}}var sL=C(()=>{"use strict"});var iL=C(()=>{"use strict"});function wz(t){return t instanceof Error?t.message:String(t)}async function Nu(t,e,o){let n=t.servers.filter(l=>l.disabled!==!0),r=await Promise.all(n.map(async l=>{let c=e(l);try{let m=(await c.connect(l)).map(p=>({server:l.name,descriptor:p,transport:c})),u={server:l.name,ok:!0,tools:m};return o?.onServerResult?.(u),{result:u,transport:c}}catch(d){aL(c);let m={server:l.name,ok:!1,tools:[],error:wz(d)};return o?.onServerResult?.(m),{result:m}}})),s=[],i=[],a=[];for(let l of r)s.push(l.result),i.push(...l.result.tools),l.transport&&a.push(l.transport);return{servers:s,tools:i,transports:a}}async function gw(t){await Promise.all(t.map(e=>aL(e)))}async function aL(t){try{await t.close()}catch{}}var lL=C(()=>{"use strict";th()});function uL(t,e){let o=new URL(dL);return t.trim().length>0&&o.searchParams.set("search",t.trim()),o.searchParams.set("limit",String(Az)),e!==void 0&&e.length>0&&o.searchParams.set("cursor",e),o.toString()}async function Fu(t,e,o){let n=t.trim(),r=[],s;for(let i=0;i<Ez;i++){let a=uL(n,s),l;try{l=await e(a,o)}catch(m){return{ok:!1,query:n,reason:oh(Mz(m))}}if(!l.ok)return{ok:!1,query:n,reason:oh(l.reason)};if(l.status<200||l.status>=300)return{ok:!1,query:n,reason:oh(`HTTP ${l.status}`)};let c;try{c=JSON.parse(l.body)}catch{return{ok:!1,query:n,reason:oh("resposta n\xE3o \xE9 JSON v\xE1lido")}}let d=fL(c);for(let m of d.servers)if(mL(m,n)&&r.push(m),r.length>=hw)break;if(r.length>=hw||(s=d.nextCursor,s===void 0||s.length===0))break}return{ok:!0,query:n,results:r}}function oh(t){return`registro MCP indispon\xEDvel (${tc}): ${t}`}function mL(t,e){if(e.length===0)return!0;let o=e.toLowerCase();return[t.name,t.title??"",t.description,t.run.command??"",t.run.args.join(" ")].join(" ").toLowerCase().includes(o)}function fL(t){if(!ms(t))return{servers:[]};let e=Array.isArray(t.servers)?t.servers:[],o=[];for(let s of e){let i=Cz(s);i!==void 0&&o.push(i)}let n=ms(t.metadata)?t.metadata:void 0,r=n!==void 0&&typeof n.nextCursor=="string"?n.nextCursor:void 0;return{servers:o,...r!==void 0?{nextCursor:r}:{}}}function Cz(t){if(!ms(t))return;let e=ms(t.server)?t.server:t,o=typeof e.name=="string"?e.name.trim():"";if(o.length===0)return;let n=typeof e.description=="string"?e.description.trim():"",r=typeof e.title=="string"&&e.title.trim().length>0?e.title.trim():void 0,s=typeof e.version=="string"?e.version.trim():void 0,i=Dz(e);return{name:o,description:n,run:i,...r!==void 0?{title:r}:{},...s!==void 0?{version:s}:{}}}function Dz(t){let e=[],o=Array.isArray(t.remotes)?t.remotes:[];for(let r of o)ms(r)&&typeof r.url=="string"&&e.push(r.url);let n=Array.isArray(t.packages)?t.packages:[];for(let r of n){if(!ms(r))continue;let s=Rz(r);if(s!==void 0)return{...s,remoteUrls:e}}return{args:[],env:[],remoteUrls:e}}function Rz(t){let e=sa(t.registryType)??sa(t.registry_name),o=sa(t.identifier)??sa(t.name);if(o===void 0)return;let n=sa(t.version),r=sa(t.runtimeHint),s=ms(t.transport)?sa(t.transport.type):void 0,i=_z(t.environmentVariables),a=cL(t.runtimeArguments),l=cL(t.packageArguments),c=n!==void 0?`${o}@${n}`:o;return e==="npm"||r==="npx"?{command:"npx",args:Tz(["-y",...a,c,...l]),env:i,...s!==void 0?{transport:s}:{}}:e==="pypi"||r==="uvx"||r==="uv"?{command:"uvx",args:[...a,o,...l],env:i,...s!==void 0?{transport:s}:{}}:e==="oci"||r==="docker"?{command:"docker",args:["run","-i","--rm",...a,c,...l],env:i,...s!==void 0?{transport:s}:{}}:{args:[c],env:i,...s!==void 0?{transport:s}:{}}}function Tz(t){let e=[],o=!1;for(let n of t){if(n==="-y"||n==="--yes"){if(o)continue;o=!0}e.push(n)}return e}function cL(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)ms(o)&&typeof o.value=="string"&&e.push(o.value);return e}function _z(t){if(!Array.isArray(t))return[];let e=[];for(let o of t)ms(o)&&typeof o.name=="string"&&o.name.length>0&&e.push({name:o.name,required:o.isRequired===!0});return e}function sa(t){return typeof t=="string"&&t.trim().length>0?t.trim():void 0}function ms(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Mz(t){return t instanceof Error?t.message:String(t)}var tc,dL,Ez,Az,hw,pL=C(()=>{"use strict";tc="registry.modelcontextprotocol.io",dL=`https://${tc}/v0/servers`,Ez=5,Az=100,hw=25});function hL(t){let{command:e,args:o}=t.run;if(e===void 0)return;let n=yL(t.name);return["aluy","mcp","add",gL(n),"--",e,...o.map(gL)].join(" ")}function yL(t){let o=(t.split("/").pop()??t).replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");return o.length>0?o:"server"}function gL(t){return/^[A-Za-z0-9_./@:+=-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`}function yw(t){if(!t.ok)return`\u26A0 ${t.reason}
147
147
  Tente de novo em instantes; a busca no registro n\xE3o bloqueia o resto do aluy.`;if(t.results.length===0)return`nenhum server encontrado para "${t.query}" no registro oficial MCP.`;let e=[],o=t.results.length;e.push(`${o} server${o===1?"":"s"} para "${t.query}" (registro oficial MCP):`),e.push("");for(let n of t.results)e.push(Oz(n)),e.push("");return e.push('Para instalar, copie a linha "\u2192 aluy mcp add \u2026" do server desejado.'),e.push("A sa\xEDda do registro \xE9 apenas informativa \u2014 nada \xE9 executado pela busca."),e.join(`
148
148
  `)}function Oz(t){let o=[`\u2022 ${t.version!==void 0?`${t.name} (v${t.version})`:t.name}`],n=t.title!==void 0&&t.title!==t.name?t.title:void 0;n!==void 0&&o.push(` ${n}`),t.description.length>0&&o.push(` ${Pz(t.description,200)}`);let r=hL(t);if(r!==void 0){o.push(` \u2192 ${r}`),t.run.transport!==void 0&&t.run.transport!=="stdio"&&o.push(` (transporte "${t.run.transport}" \u2014 v1 do aluy s\xF3 pluga servers stdio LOCAIS)`);let s=t.run.env.filter(i=>i.required).map(i=>i.name);s.length>0&&o.push(` requer env: ${s.join(", ")} (defina por-server no mcp.json)`)}else t.run.remoteUrls.length>0?o.push(` (server REMOTO: ${t.run.remoteUrls.join(", ")} \u2014 fora do v1 de \`aluy mcp add\`)`):o.push(" (sem pacote local conhecido \u2014 nada a instalar pelo aluy)");return o.join(`
149
- `)}function Pz(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var bL=C(()=>{"use strict"});var vL=C(()=>{"use strict";th();nL();rL();sL();iL();lL();Jk();gp();pL();bL()});var kL=C(()=>{"use strict"});function Js(t){let e=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(t.trim());if(!e)return null;let o=e[4]?e[4].split(".").map(n=>/^\d+$/.test(n)?Number(n):n):[];return{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),pre:o}}function bw(t,e){let o=Js(t),n=Js(e);if(!o||!n)return null;for(let s of["major","minor","patch"])if(o[s]!==n[s])return o[s]<n[s]?-1:1;if(o.pre.length===0&&n.pre.length===0)return 0;if(o.pre.length===0)return 1;if(n.pre.length===0)return-1;let r=Math.max(o.pre.length,n.pre.length);for(let s=0;s<r;s++){let i=o.pre[s],a=n.pre[s];if(i===void 0)return-1;if(a===void 0)return 1;if(i===a)continue;let l=typeof i=="number",c=typeof a=="number";return l&&c?i<a?-1:1:l?-1:c?1:i<a?-1:1}return 0}function ia(t,e){return bw(t,e)===1}function $u(t){let e=Js(t);if(!e||e.pre.length===0)return"latest";let o=e.pre[0];return String(o)}function xL(t,e){return!Js(t)||!Js(e)||$u(t)!==$u(e)?!1:ia(e,t)}function Bu(t,e){let o=Js(t)?$u(t):null;if(o===null)return null;let n=null;for(let r of e)!Js(r)||$u(r)!==o||(n===null||bw(r,n)===1)&&(n=r);return n}function nh(t,e){let o=Bu(t,e);return o!==null&&xL(t,o)?o:null}var vw=C(()=>{"use strict"});function rh(t,e,o){if(e.size===0)return{kind:"discard",reason:"allowlist vazia (default fechado)"};if(!e.has(t.conversation))return{kind:"discard",reason:`canal ${t.conversation} n\xE3o-allowlistado`};if(t.senderIsBot===!0)return{kind:"discard",reason:"remetente \xE9 bot (anti-loop)"};let n=t.content.trim();if(n==="")return{kind:"discard",reason:"mensagem sem conte\xFAdo"};if(o.authIsForgeable)return{kind:"data",text:n};if(t.provenance.kind==="third-party-relayed")return{kind:"data",text:n};let r=t.provenance.embeddedThirdParty?.trim();return r?{kind:"instruction",text:n,forwardedData:r}:{kind:"instruction",text:n}}var kw=C(()=>{"use strict"});function xw(t){let e;if(t.forwarded===!0)e={kind:"third-party-relayed"};else{let o=(t.quotedText??"").trim();e=o?{kind:"author-direct",embeddedThirdParty:o}:{kind:"author-direct"}}return{content:t.text,sender:String(t.fromId),conversation:String(t.chatId),provenance:e,...t.messageId!==void 0?{messageId:t.messageId}:{},...t.isBot===!0?{senderIsBot:!0}:{}}}function Sw(t){let e=new Set;for(let o of t)typeof o=="number"&&Number.isFinite(o)&&Number.isInteger(o)&&e.add(o);return e}var Uu,SL=C(()=>{"use strict";kw();Uu={id:"telegram",displayName:"Telegram",authIsForgeable:!1}});function sh(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function oc(t){return typeof t=="object"&&t!==null?t:void 0}function ww(t,e){let o=oc(t);if(!o||o.ok!==!0||!Array.isArray(o.result))return{updates:[],nextOffset:e};let n=[],r=[],s=e-1;for(let i of o.result){let a=oc(i);if(!a)continue;let l=sh(a.update_id);l!==void 0&&l>s&&(s=l);let c=oc(a.message);if(!c){r.push({updateId:l,motivo:"sem-message"});continue}let d=oc(c.chat),m=sh(d?.id);if(m===void 0){r.push({updateId:l,motivo:"sem-chat"});continue}if(d?.type!=="private"){r.push({updateId:l,motivo:"nao-privado",chatId:m,...typeof d?.type=="string"?{chatType:d.type}:{}});continue}let u=oc(c.from),p=sh(u?.id)??m,g=u?.is_bot===!0,y=typeof c.text=="string"?c.text:"",h=c.forward_origin!==void 0||c.forward_from!==void 0||c.forward_from_chat!==void 0||c.forward_sender_name!==void 0||c.forward_date!==void 0,v=(()=>{let S=oc(c.quote)?.text;return typeof S=="string"&&S.trim()!==""?S:void 0})(),x=sh(c.message_id);n.push({chatId:m,fromId:p,text:y,...x!==void 0?{messageId:x}:{},...h?{forwarded:!0}:{},...v!==void 0?{quotedText:v}:{},...g?{isBot:!0}:{}})}return{updates:n,nextOffset:s+1,...r.length>0?{descartados:r}:{}}}var wL=C(()=>{"use strict"});var ju,EL=C(()=>{"use strict";ju=class{maxPerWindow;windowMs;stamps=[];constructor(e,o){this.maxPerWindow=e,this.windowMs=o}tryConsume(e){let o=e-this.windowMs;for(;this.stamps.length>0&&this.stamps[0]<=o;)this.stamps.shift();return this.stamps.length>=this.maxPerWindow?!1:(this.stamps.push(e),!0)}get used(){return this.stamps.length}}});function Ew(t){return`connector-${t}-token`}function qu(t){let e=t.trim(),o=e.indexOf(":");return o<=0?`\u2026(${e.length} chars)`:`${e.slice(0,o)}:\u2026(${e.length-o-1} chars)`}function Aw(t,e){let o=e.trim();return o.length<8?t:t.split(o).join("\xABREDACTED\xBB")}var AL=C(()=>{"use strict"});function Cw(t){return typeof t=="string"&&t.trim()!==""?t.trim():void 0}function Rw(t){let e;try{e=JSON.parse(t)}catch(i){return{error:`aluy-plugin.json n\xE3o \xE9 JSON v\xE1lido: ${i instanceof Error?i.message:""}`}}if(typeof e!="object"||e===null||Array.isArray(e))return{error:"aluy-plugin.json precisa ser um objeto JSON."};let o=e,n=Cw(o.name);if(n===void 0)return{error:'aluy-plugin.json: falta "name" (o identificador do plugin).'};if(!Lz.test(n))return{error:`aluy-plugin.json: "name" inv\xE1lido ("${n.slice(0,40)}"). Use min\xFAsculas, n\xFAmeros e h\xEDfen \u2014 ele vira prefixo na tela e nome de pasta no disco.`};let r=Cw(o.version),s=Cw(o.description);return{manifest:{name:n,...r!==void 0?{version:r.slice(0,40)}:{},...s!==void 0?{description:s.slice(0,200)}:{}}}}function Tw(t,e){return`${t}:${e}`}var Dw,Lz,CL=C(()=>{"use strict";Dw=["agents","commands","skills","workflows","hooks"],Lz=/^[a-z0-9][a-z0-9-]{0,38}[a-z0-9]$/});function _w(t,e=[],o="~/.aluy/plugins"){let n=[];if(t.length===0&&e.length===0)return n.push("nenhum plugin instalado."),n.push(`instale com \`/plugin install <caminho>\` \u2014 eles vivem em ${o}/`),n;for(let r of t){let s=[r.manifest.name];r.manifest.version!==void 0&&s.push(`v${r.manifest.version}`),r.ativo||s.push("\xB7 DESLIGADO"),n.push(s.join(" ")),r.manifest.description!==void 0&&n.push(` ${r.manifest.description}`),n.push(r.extensoes.length>0?` traz: ${[...r.extensoes].sort().join(", ")}`:" \u26A0 n\xE3o traz nenhuma extens\xE3o reconhecida (agents/commands/skills/workflows/hooks)")}for(let r of e)n.push(`\u26A0 ${r.dir}: ${r.motivo}`);return n}var DL=C(()=>{"use strict"});var j=C(()=>{"use strict";rD();LD();zD();ET();zP();wS();eL();vL();nw();kL();Bl();vw();vw();kw();SL();wL();EL();AL();CL();DL()});import{posix as eV}from"node:path";function tV(t){return eV.normalize(t)}function en(t){let e=tV(t);for(let o of oV)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function Vw(t){return en(t).kind==="allow"}var oV,oi=C(()=>{"use strict";oV=[{re:/(?:^|\/|~\/)\.ssh(?:\/|$)/,why:"chaves SSH (~/.ssh)",deny:!0},{re:/(?:^|\/|~\/)\.aws(?:\/|$)/,why:"credenciais AWS (~/.aws)",deny:!0},{re:/(?:^|\/|~\/)\.gnupg(?:\/|$)/,why:"chaves GPG (~/.gnupg)",deny:!0},{re:/(?:~\/|\$\{?HOME\}?\/|\/(?:home|Users)\/[^/]+\/)\.aluy\/rooms(?:\/|$)/,why:"arquivos de sala do Aluy (~/.aluy/rooms)",deny:!0},{re:/~\/\.aluy(?:\/|$)/,why:"estado/credencial do Aluy (~/.aluy)",deny:!0},{re:/(?:^|\/)\.aluy(?:\/(?!agents\/|workflows\/|commands\/)|$)/,why:"estado/credencial do Aluy (.aluy/)",deny:!0},{re:/(?:^|\/|~\/)\.config\/gh\/hosts\.yml$/,why:"token do gh CLI",deny:!0},{re:/(?:^|\/|~\/)\.docker\/config\.json$/,why:"credenciais Docker",deny:!0},{re:/(?:^|\/|~\/)\.kube\/config$/,why:"kubeconfig",deny:!0},{re:/(?:^|\/)id_(?:rsa|ed25519|ecdsa|dsa)\b/,why:"chave privada",deny:!0},{re:/\.pem$|\.p12$|\.pfx$|\.key$/i,why:"material de chave privada",deny:!0},{re:/(?:^|[/\w.-])\.env(?:\.(?!example$|sample$|template$|dist$)[\w.-]+)?$/,why:"arquivo .env (segredos)",deny:!1},{re:/(?:^|\/)[^/]*(?:secret|credential|token|apikey|api_key|password|passwd)[^/]*$/i,why:"arquivo com nome sens\xEDvel (token/secret)",deny:!1}]});var bE={};Bb(bE,{UserWorkflowsLoader:()=>Lr,WORKFLOWS_DIRNAME:()=>yE});import{homedir as QK}from"node:os";import{join as hE}from"node:path";import{readdirSync as ZK,readFileSync as e7,mkdirSync as t7,statSync as o7}from"node:fs";var n7,yE,r7,s7,Lr,_h=C(()=>{"use strict";j();n7=448,yE="workflows",r7=64*1024,s7=256,Lr=class{dir;constructor(e={}){let o=e.baseDir??hE(QK(),".aluy");this.dir=hE(o,yE)}get workflowsDir(){return this.dir}ensureDir(){try{t7(this.dir,{mode:n7,recursive:!0})}catch{}}load(){let e;try{e=ZK(this.dir,{withFileTypes:!0})}catch{return{workflows:[],errors:[]}}let o=e.filter(i=>(i.isFile()||i.isSymbolicLink())&&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>=s7)break;let a=this.readOne(i);if(a!==null){if(pu(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=hE(this.dir,e);try{let n=o7(o);if(!n.isFile()||n.size>r7)return null;let r=e7(o,"utf8");return gu(e,r,"global")}catch{return null}}}});var kE={};Bb(kE,{PROJECT_WORKFLOWS_DIRNAMES:()=>vE,ProjectWorkflowsLoader:()=>Ir});import{join as i7}from"node:path";import{readdirSync as a7,readFileSync as l7,statSync as c7}from"node:fs";var vE,d7,u7,Ir,Mh=C(()=>{"use strict";j();oi();vE=[".claude/workflows",".aluy/workflows"],d7=64*1024,u7=256,Ir=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of vE){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=a7(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>(l.isFile()||l.isSymbolicLink())&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=u7)break;let c=this.readOne(r,s,l);if(c!==null){if(pu(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(en(r).kind!=="allow")return null;let s=i7(o,n);try{this.workspace.resolveInside(r);let i=c7(s);if(!i.isFile()||i.size>d7)return null;let a=l7(s,"utf8");return gu(n,a,"project")}catch{return null}}}});var O1=_8((SDe,M1)=>{M1.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});var No="1.0.0-rc.181";j();var RL=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
149
+ `)}function Pz(t,e){return t.length<=e?t:t.slice(0,e-1).trimEnd()+"\u2026"}var bL=C(()=>{"use strict"});var vL=C(()=>{"use strict";th();nL();rL();sL();iL();lL();Jk();gp();pL();bL()});var kL=C(()=>{"use strict"});function Js(t){let e=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(t.trim());if(!e)return null;let o=e[4]?e[4].split(".").map(n=>/^\d+$/.test(n)?Number(n):n):[];return{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),pre:o}}function bw(t,e){let o=Js(t),n=Js(e);if(!o||!n)return null;for(let s of["major","minor","patch"])if(o[s]!==n[s])return o[s]<n[s]?-1:1;if(o.pre.length===0&&n.pre.length===0)return 0;if(o.pre.length===0)return 1;if(n.pre.length===0)return-1;let r=Math.max(o.pre.length,n.pre.length);for(let s=0;s<r;s++){let i=o.pre[s],a=n.pre[s];if(i===void 0)return-1;if(a===void 0)return 1;if(i===a)continue;let l=typeof i=="number",c=typeof a=="number";return l&&c?i<a?-1:1:l?-1:c?1:i<a?-1:1}return 0}function ia(t,e){return bw(t,e)===1}function $u(t){let e=Js(t);if(!e||e.pre.length===0)return"latest";let o=e.pre[0];return String(o)}function xL(t,e){return!Js(t)||!Js(e)||$u(t)!==$u(e)?!1:ia(e,t)}function Bu(t,e){let o=Js(t)?$u(t):null;if(o===null)return null;let n=null;for(let r of e)!Js(r)||$u(r)!==o||(n===null||bw(r,n)===1)&&(n=r);return n}function nh(t,e){let o=Bu(t,e);return o!==null&&xL(t,o)?o:null}var vw=C(()=>{"use strict"});function rh(t,e,o){if(e.size===0)return{kind:"discard",reason:"allowlist vazia (default fechado)"};if(!e.has(t.conversation))return{kind:"discard",reason:`canal ${t.conversation} n\xE3o-allowlistado`};if(t.senderIsBot===!0)return{kind:"discard",reason:"remetente \xE9 bot (anti-loop)"};let n=t.content.trim();if(n==="")return{kind:"discard",reason:"mensagem sem conte\xFAdo"};if(o.authIsForgeable)return{kind:"data",text:n};if(t.provenance.kind==="third-party-relayed")return{kind:"data",text:n};let r=t.provenance.embeddedThirdParty?.trim();return r?{kind:"instruction",text:n,forwardedData:r}:{kind:"instruction",text:n}}var kw=C(()=>{"use strict"});function xw(t){let e;if(t.forwarded===!0)e={kind:"third-party-relayed"};else{let o=(t.quotedText??"").trim();e=o?{kind:"author-direct",embeddedThirdParty:o}:{kind:"author-direct"}}return{content:t.text,sender:String(t.fromId),conversation:String(t.chatId),provenance:e,...t.messageId!==void 0?{messageId:t.messageId}:{},...t.isBot===!0?{senderIsBot:!0}:{}}}function Sw(t){let e=new Set;for(let o of t)typeof o=="number"&&Number.isFinite(o)&&Number.isInteger(o)&&e.add(o);return e}var Uu,SL=C(()=>{"use strict";kw();Uu={id:"telegram",displayName:"Telegram",authIsForgeable:!1}});function sh(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function oc(t){return typeof t=="object"&&t!==null?t:void 0}function ww(t,e){let o=oc(t);if(!o||o.ok!==!0||!Array.isArray(o.result))return{updates:[],nextOffset:e};let n=[],r=[],s=e-1;for(let i of o.result){let a=oc(i);if(!a)continue;let l=sh(a.update_id);l!==void 0&&l>s&&(s=l);let c=oc(a.message);if(!c){r.push({updateId:l,motivo:"sem-message"});continue}let d=oc(c.chat),m=sh(d?.id);if(m===void 0){r.push({updateId:l,motivo:"sem-chat"});continue}if(d?.type!=="private"){r.push({updateId:l,motivo:"nao-privado",chatId:m,...typeof d?.type=="string"?{chatType:d.type}:{}});continue}let u=oc(c.from),p=sh(u?.id)??m,g=u?.is_bot===!0,y=typeof c.text=="string"?c.text:"",h=c.forward_origin!==void 0||c.forward_from!==void 0||c.forward_from_chat!==void 0||c.forward_sender_name!==void 0||c.forward_date!==void 0,v=(()=>{let S=oc(c.quote)?.text;return typeof S=="string"&&S.trim()!==""?S:void 0})(),x=sh(c.message_id);n.push({chatId:m,fromId:p,text:y,...x!==void 0?{messageId:x}:{},...h?{forwarded:!0}:{},...v!==void 0?{quotedText:v}:{},...g?{isBot:!0}:{}})}return{updates:n,nextOffset:s+1,...r.length>0?{descartados:r}:{}}}var wL=C(()=>{"use strict"});var ju,EL=C(()=>{"use strict";ju=class{maxPerWindow;windowMs;stamps=[];constructor(e,o){this.maxPerWindow=e,this.windowMs=o}tryConsume(e){let o=e-this.windowMs;for(;this.stamps.length>0&&this.stamps[0]<=o;)this.stamps.shift();return this.stamps.length>=this.maxPerWindow?!1:(this.stamps.push(e),!0)}get used(){return this.stamps.length}}});function Ew(t){return`connector-${t}-token`}function qu(t){let e=t.trim(),o=e.indexOf(":");return o<=0?`\u2026(${e.length} chars)`:`${e.slice(0,o)}:\u2026(${e.length-o-1} chars)`}function Aw(t,e){let o=e.trim();return o.length<8?t:t.split(o).join("\xABREDACTED\xBB")}var AL=C(()=>{"use strict"});function Cw(t){return typeof t=="string"&&t.trim()!==""?t.trim():void 0}function Rw(t){let e;try{e=JSON.parse(t)}catch(i){return{error:`aluy-plugin.json n\xE3o \xE9 JSON v\xE1lido: ${i instanceof Error?i.message:""}`}}if(typeof e!="object"||e===null||Array.isArray(e))return{error:"aluy-plugin.json precisa ser um objeto JSON."};let o=e,n=Cw(o.name);if(n===void 0)return{error:'aluy-plugin.json: falta "name" (o identificador do plugin).'};if(!Lz.test(n))return{error:`aluy-plugin.json: "name" inv\xE1lido ("${n.slice(0,40)}"). Use min\xFAsculas, n\xFAmeros e h\xEDfen \u2014 ele vira prefixo na tela e nome de pasta no disco.`};let r=Cw(o.version),s=Cw(o.description);return{manifest:{name:n,...r!==void 0?{version:r.slice(0,40)}:{},...s!==void 0?{description:s.slice(0,200)}:{}}}}function Tw(t,e){return`${t}:${e}`}var Dw,Lz,CL=C(()=>{"use strict";Dw=["agents","commands","skills","workflows","hooks"],Lz=/^[a-z0-9][a-z0-9-]{0,38}[a-z0-9]$/});function _w(t,e=[],o="~/.aluy/plugins"){let n=[];if(t.length===0&&e.length===0)return n.push("nenhum plugin instalado."),n.push(`instale com \`/plugin install <caminho>\` \u2014 eles vivem em ${o}/`),n;for(let r of t){let s=[r.manifest.name];r.manifest.version!==void 0&&s.push(`v${r.manifest.version}`),r.ativo||s.push("\xB7 DESLIGADO"),n.push(s.join(" ")),r.manifest.description!==void 0&&n.push(` ${r.manifest.description}`),n.push(r.extensoes.length>0?` traz: ${[...r.extensoes].sort().join(", ")}`:" \u26A0 n\xE3o traz nenhuma extens\xE3o reconhecida (agents/commands/skills/workflows/hooks)")}for(let r of e)n.push(`\u26A0 ${r.dir}: ${r.motivo}`);return n}var DL=C(()=>{"use strict"});var j=C(()=>{"use strict";rD();LD();zD();ET();zP();wS();eL();vL();nw();kL();Bl();vw();vw();kw();SL();wL();EL();AL();CL();DL()});import{posix as eV}from"node:path";function tV(t){return eV.normalize(t)}function en(t){let e=tV(t);for(let o of oV)if(o.re.test(e))return o.deny?{kind:"deny",why:o.why}:{kind:"ask",why:o.why};return{kind:"allow"}}function Vw(t){return en(t).kind==="allow"}var oV,oi=C(()=>{"use strict";oV=[{re:/(?:^|\/|~\/)\.ssh(?:\/|$)/,why:"chaves SSH (~/.ssh)",deny:!0},{re:/(?:^|\/|~\/)\.aws(?:\/|$)/,why:"credenciais AWS (~/.aws)",deny:!0},{re:/(?:^|\/|~\/)\.gnupg(?:\/|$)/,why:"chaves GPG (~/.gnupg)",deny:!0},{re:/(?:~\/|\$\{?HOME\}?\/|\/(?:home|Users)\/[^/]+\/)\.aluy\/rooms(?:\/|$)/,why:"arquivos de sala do Aluy (~/.aluy/rooms)",deny:!0},{re:/~\/\.aluy(?:\/|$)/,why:"estado/credencial do Aluy (~/.aluy)",deny:!0},{re:/(?:^|\/)\.aluy(?:\/(?!agents\/|workflows\/|commands\/)|$)/,why:"estado/credencial do Aluy (.aluy/)",deny:!0},{re:/(?:^|\/|~\/)\.config\/gh\/hosts\.yml$/,why:"token do gh CLI",deny:!0},{re:/(?:^|\/|~\/)\.docker\/config\.json$/,why:"credenciais Docker",deny:!0},{re:/(?:^|\/|~\/)\.kube\/config$/,why:"kubeconfig",deny:!0},{re:/(?:^|\/)id_(?:rsa|ed25519|ecdsa|dsa)\b/,why:"chave privada",deny:!0},{re:/\.pem$|\.p12$|\.pfx$|\.key$/i,why:"material de chave privada",deny:!0},{re:/(?:^|[/\w.-])\.env(?:\.(?!example$|sample$|template$|dist$)[\w.-]+)?$/,why:"arquivo .env (segredos)",deny:!1},{re:/(?:^|\/)[^/]*(?:secret|credential|token|apikey|api_key|password|passwd)[^/]*$/i,why:"arquivo com nome sens\xEDvel (token/secret)",deny:!1}]});var bE={};Bb(bE,{UserWorkflowsLoader:()=>Lr,WORKFLOWS_DIRNAME:()=>yE});import{homedir as QK}from"node:os";import{join as hE}from"node:path";import{readdirSync as ZK,readFileSync as e7,mkdirSync as t7,statSync as o7}from"node:fs";var n7,yE,r7,s7,Lr,_h=C(()=>{"use strict";j();n7=448,yE="workflows",r7=64*1024,s7=256,Lr=class{dir;constructor(e={}){let o=e.baseDir??hE(QK(),".aluy");this.dir=hE(o,yE)}get workflowsDir(){return this.dir}ensureDir(){try{t7(this.dir,{mode:n7,recursive:!0})}catch{}}load(){let e;try{e=ZK(this.dir,{withFileTypes:!0})}catch{return{workflows:[],errors:[]}}let o=e.filter(i=>(i.isFile()||i.isSymbolicLink())&&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>=s7)break;let a=this.readOne(i);if(a!==null){if(pu(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=hE(this.dir,e);try{let n=o7(o);if(!n.isFile()||n.size>r7)return null;let r=e7(o,"utf8");return gu(e,r,"global")}catch{return null}}}});var kE={};Bb(kE,{PROJECT_WORKFLOWS_DIRNAMES:()=>vE,ProjectWorkflowsLoader:()=>Ir});import{join as i7}from"node:path";import{readdirSync as a7,readFileSync as l7,statSync as c7}from"node:fs";var vE,d7,u7,Ir,Mh=C(()=>{"use strict";j();oi();vE=[".claude/workflows",".aluy/workflows"],d7=64*1024,u7=256,Ir=class{workspace;constructor(e){this.workspace=e.workspace}load(){let e=new Set,o=[],n=[];for(let r of vE){let s;try{s=this.workspace.resolveInside(r)}catch{continue}let i;try{i=a7(s,{withFileTypes:!0})}catch{continue}let a=i.filter(l=>(l.isFile()||l.isSymbolicLink())&&l.name.toLowerCase().endsWith(".md")).map(l=>l.name).sort((l,c)=>l.localeCompare(c));for(let l of a){if(o.length>=u7)break;let c=this.readOne(r,s,l);if(c!==null){if(pu(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(en(r).kind!=="allow")return null;let s=i7(o,n);try{this.workspace.resolveInside(r);let i=c7(s);if(!i.isFile()||i.size>d7)return null;let a=l7(s,"utf8");return gu(n,a,"project")}catch{return null}}}});var O1=_8((SDe,M1)=>{M1.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});var No="1.0.0-rc.182";j();var RL=`aluy \u2014 agente de terminal que roda na sua m\xE1quina, com o seu provider de LLM
150
150
 
151
151
  Uso:
152
152
  aluy ["objetivo"] [--plan | --yolo] [--dense] [--tier <tier>] [--lang <pt-BR|en>]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hiperplano/aluy-cli",
3
- "version": "1.0.0-rc.181",
3
+ "version": "1.0.0-rc.182",
4
4
  "description": "Aluy CLI — TUI (Ink) + binário `aluy` + wiring. Consome @hiperplano/aluy-cli-core (engine portável). Credenciais só no keychain do SO.",
5
5
  "type": "module",
6
6
  "license": "MIT",