auroq-os 2.4.11 → 2.4.13
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/.auroq-core/core-config.yaml +1 -1
- package/.claude/commands/AuroqOS/agents/ops.md +1 -1
- package/.claude/commands/instalacaoBia.md +4 -2
- package/.claude/commands/squad-anuncios-arcane.md +4 -2
- package/.claude/commands/squad-carrossel-arcane.md +4 -2
- package/.claude/commands/squad-edicao-arcane.md +4 -2
- package/.claude/commands/squad-low-ticket-arcane.md +4 -2
- package/.claude/commands/trafegoArcane.md +4 -2
- package/AGENTS.md +3 -1
- package/CHANGELOG.md +36 -0
- package/bin/auroq-os.js +3 -1
- package/installer/install.ps1 +26 -4
- package/lib/auth.js +17 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ Bootstrap e operação do Auroq OS.
|
|
|
4
4
|
|
|
5
5
|
O corpo deste guia (FASES 0–N) vem pelo MCP `arcane` (catálogo `auroq-core`). Chame a tool `forja_bundle` com forge_id `ops` e a fase atual. Nunca procurar o texto longo em disco; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
6
6
|
|
|
7
|
-
**Pack Arcane — vence o MCP se ele estiver velho:** o Pack da mentoria chega ao vivo. NUNCA peça zip, `pack-arcane.zip`, caminho de arquivo nem `npx arcane-pack`. Se o aluno pedir o Pack: pasta do negócio, `/euriler` (Codex: `$euriler`), fale `oi`. Se não responder, é o cadeado da jornada (contrato ativo e assinado), não instalação faltando. Zip só vale pra agente que ELE criou.
|
|
7
|
+
**Pack Arcane — vence o MCP se ele estiver velho:** o Pack da mentoria chega ao vivo. NUNCA peça zip, `pack-arcane.zip`, caminho de arquivo nem `npx arcane-pack`. Se o aluno pedir o Pack: pasta do negócio, `/euriler` (Codex: `$euriler`), fale `oi`. Se não responder, é o cadeado da jornada (contrato ativo e assinado), não instalação faltando. Zip só vale pra agente que ELE criou. Única exceção ao `npx arcane-pack`: a parte executável dos squads híbridos (Edição, Carrossel, Anúncios, Tráfego, Low Ticket, Bia) chega por `npx arcane-pack update` na pasta do negócio — é o que se roda quando um desses squads reclama que `agents/<squad>/` não existe (ex.: `doctor.py` não encontrado); o método continua vindo ao vivo.
|
|
8
8
|
|
|
9
9
|
Ao ativar, mostre o selo de acesso que a tool devolver (as duas primeiras linhas) antes de qualquer outra coisa — é como o aluno vê que a licença dele foi conferida agora.
|
|
10
10
|
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Instalação da agente de WhatsApp Bia, ao vivo.
|
|
4
4
|
|
|
5
|
-
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `instalacao-bia`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
5
|
+
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `instalacao-bia`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar o método em arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
6
6
|
|
|
7
7
|
Ao ativar, mostre o selo de acesso que a tool devolver (as duas primeiras linhas) antes de qualquer outra coisa — é como o aluno vê que a licença dele foi conferida agora.
|
|
8
8
|
|
|
9
9
|
Se a tool recusar porque o Pack ainda não abriu (cadeado da jornada: contrato ativo e assinado), mostre a mensagem exatamente como veio — não é defeito, é o contrato. Se recusar por acesso vencido, cancelado ou suspenso, mostre a mensagem com o contato do suporte da Arcane e pare. Não improvisar, não tentar de novo, não usar memória.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**Parte que roda na máquina:** este squad tem arquivos executáveis (workflows n8n e scripts). Eles não vêm pelo MCP: ficam em `agents/instalacao-bia/` na pasta do negócio e chegam por `npx arcane-pack update`, rodado na pasta do negócio (exige acesso ativo; baixa só a parte executável, o método continua vindo ao vivo). A ativação avisa isso. Se um passo citar essa pasta e ela não existir, rode o comando e continue — nunca improvise script de memória.
|
|
12
|
+
|
|
13
|
+
CRITICAL: Do not read `agents/instalacao-bia/**` looking for instructions — use the MCP `arcane` tools. Use those files only to EXECUTE what a step asks.
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Squad de anúncios da Arcane, ao vivo.
|
|
4
4
|
|
|
5
|
-
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-anuncios-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
5
|
+
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-anuncios-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar o método em arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
6
6
|
|
|
7
7
|
Ao ativar, mostre o selo de acesso que a tool devolver (as duas primeiras linhas) antes de qualquer outra coisa — é como o aluno vê que a licença dele foi conferida agora.
|
|
8
8
|
|
|
9
9
|
Se a tool recusar porque o Pack ainda não abriu (cadeado da jornada: contrato ativo e assinado), mostre a mensagem exatamente como veio — não é defeito, é o contrato. Se recusar por acesso vencido, cancelado ou suspenso, mostre a mensagem com o contato do suporte da Arcane e pare. Não improvisar, não tentar de novo, não usar memória.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**Parte que roda na máquina:** este squad tem arquivos executáveis (scripts). Eles não vêm pelo MCP: ficam em `agents/squad-anuncios-arcane/` na pasta do negócio e chegam por `npx arcane-pack update`, rodado na pasta do negócio (exige acesso ativo; baixa só a parte executável, o método continua vindo ao vivo). A ativação avisa isso. Se um passo citar essa pasta e ela não existir, rode o comando e continue — nunca improvise script de memória.
|
|
12
|
+
|
|
13
|
+
CRITICAL: Do not read `agents/squad-anuncios-arcane/**` looking for instructions — use the MCP `arcane` tools. Use those files only to EXECUTE what a step asks.
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Squad de carrosséis da Arcane, ao vivo.
|
|
4
4
|
|
|
5
|
-
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-carrossel-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
5
|
+
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-carrossel-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar o método em arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
6
6
|
|
|
7
7
|
Ao ativar, mostre o selo de acesso que a tool devolver (as duas primeiras linhas) antes de qualquer outra coisa — é como o aluno vê que a licença dele foi conferida agora.
|
|
8
8
|
|
|
9
9
|
Se a tool recusar porque o Pack ainda não abriu (cadeado da jornada: contrato ativo e assinado), mostre a mensagem exatamente como veio — não é defeito, é o contrato. Se recusar por acesso vencido, cancelado ou suspenso, mostre a mensagem com o contato do suporte da Arcane e pare. Não improvisar, não tentar de novo, não usar memória.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**Parte que roda na máquina:** este squad tem arquivos executáveis (ferramentas de render e template). Eles não vêm pelo MCP: ficam em `agents/squad-carrossel-arcane/` na pasta do negócio e chegam por `npx arcane-pack update`, rodado na pasta do negócio (exige acesso ativo; baixa só a parte executável, o método continua vindo ao vivo). A ativação avisa isso. Se um passo citar essa pasta e ela não existir, rode o comando e continue — nunca improvise script de memória.
|
|
12
|
+
|
|
13
|
+
CRITICAL: Do not read `agents/squad-carrossel-arcane/**` looking for instructions — use the MCP `arcane` tools. Use those files only to EXECUTE what a step asks.
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Squad de edição de vídeo da Arcane, ao vivo.
|
|
4
4
|
|
|
5
|
-
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-edicao-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
5
|
+
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-edicao-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar o método em arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
6
6
|
|
|
7
7
|
Ao ativar, mostre o selo de acesso que a tool devolver (as duas primeiras linhas) antes de qualquer outra coisa — é como o aluno vê que a licença dele foi conferida agora.
|
|
8
8
|
|
|
9
9
|
Se a tool recusar porque o Pack ainda não abriu (cadeado da jornada: contrato ativo e assinado), mostre a mensagem exatamente como veio — não é defeito, é o contrato. Se recusar por acesso vencido, cancelado ou suspenso, mostre a mensagem com o contato do suporte da Arcane e pare. Não improvisar, não tentar de novo, não usar memória.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**Parte que roda na máquina:** este squad tem arquivos executáveis (scripts de vídeo, instalador, fontes, trilha e configs de estilo). Eles não vêm pelo MCP: ficam em `agents/squad-edicao-arcane/` na pasta do negócio e chegam por `npx arcane-pack update`, rodado na pasta do negócio (exige acesso ativo; baixa só a parte executável, o método continua vindo ao vivo). A ativação avisa isso. Se um passo citar essa pasta e ela não existir, rode o comando e continue — nunca improvise script de memória.
|
|
12
|
+
|
|
13
|
+
CRITICAL: Do not read `agents/squad-edicao-arcane/**` looking for instructions — use the MCP `arcane` tools. Use those files only to EXECUTE what a step asks.
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Squad de produto low ticket da Arcane, ao vivo.
|
|
4
4
|
|
|
5
|
-
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-low-ticket-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
5
|
+
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `squad-low-ticket-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar o método em arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
6
6
|
|
|
7
7
|
Ao ativar, mostre o selo de acesso que a tool devolver (as duas primeiras linhas) antes de qualquer outra coisa — é como o aluno vê que a licença dele foi conferida agora.
|
|
8
8
|
|
|
9
9
|
Se a tool recusar porque o Pack ainda não abriu (cadeado da jornada: contrato ativo e assinado), mostre a mensagem exatamente como veio — não é defeito, é o contrato. Se recusar por acesso vencido, cancelado ou suspenso, mostre a mensagem com o contato do suporte da Arcane e pare. Não improvisar, não tentar de novo, não usar memória.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**Parte que roda na máquina:** este squad tem arquivos executáveis (templates de página). Eles não vêm pelo MCP: ficam em `agents/squad-low-ticket-arcane/` na pasta do negócio e chegam por `npx arcane-pack update`, rodado na pasta do negócio (exige acesso ativo; baixa só a parte executável, o método continua vindo ao vivo). A ativação avisa isso. Se um passo citar essa pasta e ela não existir, rode o comando e continue — nunca improvise script de memória.
|
|
12
|
+
|
|
13
|
+
CRITICAL: Do not read `agents/squad-low-ticket-arcane/**` looking for instructions — use the MCP `arcane` tools. Use those files only to EXECUTE what a step asks.
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Tráfego pago via Meta Marketing API (Método Andromeda), ao vivo.
|
|
4
4
|
|
|
5
|
-
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `trafego-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
5
|
+
Todo conteúdo deste agente vem pelo MCP `arcane` (catálogo `arcane-pack`). Chame a tool `squad_ativar` com recurso_id `trafego-arcane`; o índice devolvido mostra os tópicos, e as tools `squad_passo` e `squad_conhecimento` trazem cada parte. Nunca procurar o método em arquivo local deste agente; se a tool falhar, mostrar a mensagem e parar — não improvisar de memória.
|
|
6
6
|
|
|
7
7
|
Ao ativar, mostre o selo de acesso que a tool devolver (as duas primeiras linhas) antes de qualquer outra coisa — é como o aluno vê que a licença dele foi conferida agora.
|
|
8
8
|
|
|
9
9
|
Se a tool recusar porque o Pack ainda não abriu (cadeado da jornada: contrato ativo e assinado), mostre a mensagem exatamente como veio — não é defeito, é o contrato. Se recusar por acesso vencido, cancelado ou suspenso, mostre a mensagem com o contato do suporte da Arcane e pare. Não improvisar, não tentar de novo, não usar memória.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**Parte que roda na máquina:** este squad tem arquivos executáveis (helpers, template de política e formulário de contas). Eles não vêm pelo MCP: ficam em `agents/trafego-arcane/` na pasta do negócio e chegam por `npx arcane-pack update`, rodado na pasta do negócio (exige acesso ativo; baixa só a parte executável, o método continua vindo ao vivo). A ativação avisa isso. Se um passo citar essa pasta e ela não existir, rode o comando e continue — nunca improvise script de memória.
|
|
12
|
+
|
|
13
|
+
CRITICAL: Do not read `agents/trafego-arcane/**` looking for instructions — use the MCP `arcane` tools. Use those files only to EXECUTE what a step asks.
|
package/AGENTS.md
CHANGED
|
@@ -9,9 +9,11 @@ Sistema operacional de IA. Runtimes oficiais desta versão: Claude Code e Codex.
|
|
|
9
9
|
|
|
10
10
|
Todo conteúdo Arcane vem pelo MCP `arcane` (catálogos `auroq-core` e `arcane-pack`). Nunca procurar esse conteúdo em `agents/`. Se a tool falhar, mostre a mensagem e pare.
|
|
11
11
|
|
|
12
|
+
Exceção: seis squads do Pack têm **parte executável** (Edição, Carrossel, Anúncios, Tráfego, Low Ticket, Bia) — scripts, instalador, fontes e configs que os scripts leem ficam em `agents/<squad>/` e chegam por `npx arcane-pack update` na pasta do negócio. Servem pra EXECUTAR o que um passo mandar, nunca pra ler método.
|
|
13
|
+
|
|
12
14
|
## O que fica no disco
|
|
13
15
|
|
|
14
|
-
Motor (CLI, hooks, scripts), pastas, git, casca (estes ponteiros) e o que VOCÊ criar (memória, docs, cockpit).
|
|
16
|
+
Motor (CLI, hooks, scripts), pastas, git, casca (estes ponteiros), a parte executável dos squads híbridos do Pack (chega por `npx arcane-pack update`) e o que VOCÊ criar (memória, docs, cockpit).
|
|
15
17
|
|
|
16
18
|
## O que vem ao vivo
|
|
17
19
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.4.13] — 2026-09-03
|
|
4
|
+
|
|
5
|
+
### Squad Edicao ativava, mas nao tinha script nenhum no computador
|
|
6
|
+
Aluno com Pack liberado ativou o Squad Edicao pelo MCP e, ao diagnosticar, o squad procurou
|
|
7
|
+
`agents/squad-edicao-arcane/scripts/doctor.py` — arquivo que nunca chegou. Seis squads do Pack
|
|
8
|
+
sao hibridos: o metodo vem ao vivo, mas scripts, instalador, fontes e configs lidas por script
|
|
9
|
+
ficam no disco e so chegam por `npx arcane-pack update`. Ninguem mandava rodar isso — o Ops e
|
|
10
|
+
os atalhos ate proibiam citar o comando.
|
|
11
|
+
|
|
12
|
+
- **Os atalhos dos seis squads hibridos** (Edicao, Carrossel, Anuncios, Trafego, Low Ticket,
|
|
13
|
+
Bia) dizem onde fica a parte executavel e qual comando a traz. Se um passo citar a pasta e
|
|
14
|
+
ela nao existir, o agente roda o comando e continua.
|
|
15
|
+
- **O Ops** ganha a excecao unica: `npx arcane-pack update` quando um squad hibrido reclama que
|
|
16
|
+
`agents/<squad>/` nao existe. Pra receber o Pack, a regra segue: nada de zip, nada de comando.
|
|
17
|
+
- **Do lado do servidor** (independe desta versao): a ativacao desses squads ja avisa a pasta e
|
|
18
|
+
o comando, e o pacote do Squad Edicao voltou a trazer as configs de estilo que o script le.
|
|
19
|
+
- Quem ja instalou nao precisa atualizar pra ser atendido — o aviso vem do servidor. Atualizar
|
|
20
|
+
("atualiza o sistema") traz os atalhos novos.
|
|
21
|
+
|
|
22
|
+
## [2.4.12] — 2026-09-03
|
|
23
|
+
|
|
24
|
+
### "Status: ativo" e logo em seguida "Sem acesso ativo" no Windows
|
|
25
|
+
Aluna com contrato em dia rodou o instalador no Windows, viu o acesso confirmado e o
|
|
26
|
+
instalador parou dizendo que nao havia acesso, com um "Assertion failed" no meio. Nao
|
|
27
|
+
era o acesso: e um defeito do proprio Node 24 no Windows (nodejs/node#56645) — o
|
|
28
|
+
programa morre ao encerrar logo depois de falar com a internet, e o codigo de saida
|
|
29
|
+
vira erro. O instalador so olha o codigo de saida.
|
|
30
|
+
|
|
31
|
+
- **O `check-access` encerra de forma segura.** No Windows ele deixa o processo
|
|
32
|
+
terminar sozinho (com folga de 300 ms pro socket fechar) em vez de forcar a saida.
|
|
33
|
+
- **O instalador do Windows baixa o Node 22 (LTS ate abril/2027)** em vez do 24, e
|
|
34
|
+
troca um motor de bolso 24+ que ja estiver instalado. Node que o aluno instalou por
|
|
35
|
+
conta propria nao e tocado. O Mac segue no 24: o defeito e so do Windows.
|
|
36
|
+
- **Pra quem ja travou nisso:** colar o mesmo endereco de novo resolve. Nada precisa
|
|
37
|
+
ser desinstalado.
|
|
38
|
+
|
|
3
39
|
## [2.4.11] — 2026-09-02
|
|
4
40
|
|
|
5
41
|
### Os comandos pararam de prometer "8 dias"
|
package/bin/auroq-os.js
CHANGED
|
@@ -1175,8 +1175,10 @@ if (command === 'init' || command === 'install') {
|
|
|
1175
1175
|
} else if (command === 'check-access') {
|
|
1176
1176
|
// Gate estrito (online) — usado pelo Ops antes de *update e pelo arcane-pack.
|
|
1177
1177
|
// Exit 0 = contrato ativo validado agora; exit 1 = bloqueado / sem conexao.
|
|
1178
|
+
// `auth.sair` em vez de process.exit: no Windows, sair na hora depois do fetch
|
|
1179
|
+
// derruba o Node 24+ com "Assertion failed" e o instalador le como sem acesso.
|
|
1178
1180
|
auth.requireActiveAccess()
|
|
1179
|
-
.then(() =>
|
|
1181
|
+
.then(() => auth.sair(0))
|
|
1180
1182
|
.catch(err => {
|
|
1181
1183
|
error(`Falha ao verificar acesso: ${err.message}`);
|
|
1182
1184
|
process.exit(1);
|
package/installer/install.ps1
CHANGED
|
@@ -43,6 +43,14 @@ $script:AuroqRodaDeArquivo = [bool]$PSCommandPath
|
|
|
43
43
|
|
|
44
44
|
$AuroqSuporte = '11 93621-4486'
|
|
45
45
|
$AuroqNodeMin = 20
|
|
46
|
+
# No Windows o Node 24+ morre ao encerrar logo depois de falar com a rede
|
|
47
|
+
# ("Assertion failed: !(handle->flags & UV_HANDLE_CLOSING)", nodejs/node#56645).
|
|
48
|
+
# O check-access imprimia "Status: ativo" e saia com erro, e o instalador lia
|
|
49
|
+
# "sem acesso ativo". Enquanto o Node nao corrige, o motor de bolso fica na 22
|
|
50
|
+
# (LTS ate abril/2027) e um motor de bolso 24+ ja instalado e trocado. Node que
|
|
51
|
+
# o proprio aluno instalou nao se mexe: o auroq-os tambem se protege ao sair.
|
|
52
|
+
$AuroqNodeEvitarDe = 24
|
|
53
|
+
$AuroqNodeSerie = 'v22.*'
|
|
46
54
|
$AuroqBuildMin = 17763 # Windows 10 1809
|
|
47
55
|
$AuroqDiscoMinMb = 2048
|
|
48
56
|
|
|
@@ -148,6 +156,15 @@ function Test-AuroqNode {
|
|
|
148
156
|
return ($numero -ge $AuroqNodeMin)
|
|
149
157
|
}
|
|
150
158
|
|
|
159
|
+
function Test-AuroqNodeTrocar {
|
|
160
|
+
param([string]$Versao = '')
|
|
161
|
+
if ([string]::IsNullOrWhiteSpace($Versao)) { return $false }
|
|
162
|
+
$maior = ($Versao.TrimStart('v') -split '\.')[0]
|
|
163
|
+
$numero = 0
|
|
164
|
+
if (-not [int]::TryParse($maior, [ref]$numero)) { return $false }
|
|
165
|
+
return ($numero -ge $AuroqNodeEvitarDe)
|
|
166
|
+
}
|
|
167
|
+
|
|
151
168
|
function Get-AuroqNodeZip {
|
|
152
169
|
param([string]$Versao = '', [string]$Arquitetura = 'AMD64')
|
|
153
170
|
$alvo = 'x64'
|
|
@@ -377,12 +394,18 @@ function Install-AuroqNode {
|
|
|
377
394
|
} catch {
|
|
378
395
|
$atual = ''
|
|
379
396
|
}
|
|
380
|
-
|
|
397
|
+
$nodeDir = Get-AuroqNodeDir
|
|
398
|
+
$deBolso = Test-Path (Join-Path $nodeDir 'node.exe')
|
|
399
|
+
$trocar = $deBolso -and (Test-AuroqNodeTrocar $atual)
|
|
400
|
+
if ((Test-AuroqNode $atual) -and -not $trocar) {
|
|
381
401
|
Write-AuroqOk "O motor ja estava instalado ($atual)"
|
|
382
402
|
Write-AuroqLog 'motor' "ja-existia versao=$atual"
|
|
383
403
|
return
|
|
384
404
|
}
|
|
385
|
-
if ($
|
|
405
|
+
if ($trocar) {
|
|
406
|
+
Write-AuroqAviso "O motor $atual tem um defeito conhecido no Windows; vou trocar pela versao estavel anterior."
|
|
407
|
+
Write-AuroqLog 'motor' "troca versao=$atual"
|
|
408
|
+
} elseif ($atual) {
|
|
386
409
|
Write-AuroqAviso "Voce ja tinha um motor antigo ($atual); vou instalar um novo do lado, sem mexer no seu."
|
|
387
410
|
}
|
|
388
411
|
Write-AuroqDiz ' (e um programa que fica numa pasta sua, nao pede senha e nao mexe em nada do seu Windows)'
|
|
@@ -395,7 +418,7 @@ function Install-AuroqNode {
|
|
|
395
418
|
} catch {
|
|
396
419
|
Write-AuroqErro 'Nao consegui baixar o motor do sistema.' 'Confira a internet (ou o antivirus, se houver) e rode o mesmo comando de novo.'
|
|
397
420
|
}
|
|
398
|
-
$escolhido = $indice | Where-Object { $_.version -like
|
|
421
|
+
$escolhido = $indice | Where-Object { $_.version -like $AuroqNodeSerie } | Select-Object -First 1
|
|
399
422
|
if (-not $escolhido) { $escolhido = $indice | Where-Object { $_.lts } | Select-Object -First 1 }
|
|
400
423
|
if (-not $escolhido) {
|
|
401
424
|
Write-AuroqErro 'Nao consegui descobrir qual motor baixar.' 'Rode o mesmo comando de novo em alguns minutos. Se insistir, chame o suporte.'
|
|
@@ -428,7 +451,6 @@ function Install-AuroqNode {
|
|
|
428
451
|
# mark-of-the-web: sem desbloquear, o Windows recusa abrir o que veio da internet
|
|
429
452
|
Unblock-File -Path $destino -ErrorAction SilentlyContinue
|
|
430
453
|
|
|
431
|
-
$nodeDir = Get-AuroqNodeDir
|
|
432
454
|
$pai = Split-Path $nodeDir
|
|
433
455
|
try {
|
|
434
456
|
if (-not (Test-Path $pai)) { New-Item -ItemType Directory -Path $pai -Force | Out-Null }
|
package/lib/auth.js
CHANGED
|
@@ -412,7 +412,24 @@ async function requireActiveAccess() {
|
|
|
412
412
|
return saved;
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
+
// Encerrar logo depois de falar com a rede derruba o Node 24+ no Windows com
|
|
416
|
+
// "Assertion failed: !(handle->flags & UV_HANDLE_CLOSING)" (nodejs/node#56645):
|
|
417
|
+
// o socket do fetch ainda esta fechando quando o process.exit desmonta o processo,
|
|
418
|
+
// e o codigo de saida vira 3 — o instalador lia isso como "sem acesso ativo" logo
|
|
419
|
+
// depois de imprimir "Status: ativo". Aqui o processo termina por conta propria;
|
|
420
|
+
// no Windows, se algo segurar o loop, forca a saida em 300 ms (tempo de sobra pro
|
|
421
|
+
// socket fechar). Fora do Windows nada muda.
|
|
422
|
+
function sair(codigo) {
|
|
423
|
+
process.exitCode = codigo;
|
|
424
|
+
if (process.platform !== 'win32') {
|
|
425
|
+
process.exit(codigo);
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
setTimeout(() => process.exit(codigo), 300).unref();
|
|
429
|
+
}
|
|
430
|
+
|
|
415
431
|
module.exports = {
|
|
432
|
+
sair,
|
|
416
433
|
interactiveLogin,
|
|
417
434
|
getValidSession,
|
|
418
435
|
requireActiveAccess,
|