auroq-os 2.4.15 → 2.4.17
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/CHANGELOG.md +29 -0
- package/bin/auroq-os.js +43 -9
- package/lib/diagnostico.js +5 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.4.17] — 2026-09-04
|
|
4
|
+
|
|
5
|
+
### Doctor no Windows: tela limpa
|
|
6
|
+
- O `doctor` (e o `init`/`register-mcp`) abriam o `npx` com `shell: true` no Windows, e o Node 24
|
|
7
|
+
imprimia um `DeprecationWarning` no meio do diagnostico do aluno. Agora chama o `cmd.exe`
|
|
8
|
+
direto — sem aviso.
|
|
9
|
+
- Aluno com Node proprio (sem o motor de bolso) recebia um X — "O motor esta valendo nesta
|
|
10
|
+
janela" — e a ordem de rodar o instalador de novo, com tudo funcionando. No Windows o caminho
|
|
11
|
+
e da conta, nao da janela: motor encontrado = OK.
|
|
12
|
+
|
|
13
|
+
## [2.4.16] — 2026-09-04
|
|
14
|
+
|
|
15
|
+
### Codex no Windows: conteudo ao vivo abria, mas "Sem conexao com o servidor da Arcane" (EMB-028)
|
|
16
|
+
Aluna no Windows, depois do 2.4.15, entrou no Codex sem timeout — e ao chamar o Ops leu "Sem
|
|
17
|
+
conexao com o servidor da Arcane" com internet normal. Causa: o Codex abre o MCP com um ambiente
|
|
18
|
+
minimo (so PATH, PATHEXT, USERNAME, USERDOMAIN, USERPROFILE, TEMP, TMP) e deixa de fora
|
|
19
|
+
`SystemRoot`, `APPDATA`, `COMSPEC`... Sem `SystemRoot` o Node no Windows pode nao resolver DNS
|
|
20
|
+
(openai/codex#4180, #3311). Hipotese: o runner do CI nao reproduziu a falha. Por isso o pacote
|
|
21
|
+
tambem passa a MOSTRAR o motivo tecnico — e o que fecha o diagnostico.
|
|
22
|
+
|
|
23
|
+
- **Registro do Codex** passa os valores reais da maquina (`SystemRoot`, `windir`, `COMSPEC`,
|
|
24
|
+
`APPDATA`, `LOCALAPPDATA`, `ProgramData`, `ProgramFiles`, `HOMEDRIVE`, `HOMEPATH`,
|
|
25
|
+
`USERPROFILE`, `TEMP`, `TMP`) no bloco `[mcp_servers.arcane]`; so no Windows.
|
|
26
|
+
- **`arcane-mcp@0.4.1`** (pin novo): a falha de rede diz o motivo tecnico (ex.: `EAI_FAIL`) e
|
|
27
|
+
ganhou `npx -y arcane-mcp@0.4.1 verify`, que prova a conexao a partir do mesmo programa que o
|
|
28
|
+
Codex abre.
|
|
29
|
+
- Quem ja instalou: "atualiza o sistema" pelo Ops, ou `npx auroq-os@latest register-mcp` na pasta,
|
|
30
|
+
e FECHAR e abrir o Codex.
|
|
31
|
+
|
|
3
32
|
## [2.4.15] — 2026-09-03
|
|
4
33
|
|
|
5
34
|
### Aluno antigo migrado cai pro disco quando o servidor recusa (EMB-019, conserto)
|
package/bin/auroq-os.js
CHANGED
|
@@ -409,29 +409,62 @@ async function runDoctor(targetDir) {
|
|
|
409
409
|
// (rede domestica + antivirus) a aluna viu timeout em todas as que fez. Por isso:
|
|
410
410
|
// (1) o registro do Codex pede mais tempo, (2) instalacao/atualizacao ja baixam o
|
|
411
411
|
// pacote, (3) o doctor mede o arranque de verdade em vez de so olhar o registro.
|
|
412
|
-
const ARCANE_MCP_PIN = 'arcane-mcp@0.4.
|
|
412
|
+
const ARCANE_MCP_PIN = 'arcane-mcp@0.4.1';
|
|
413
413
|
const CODEX_MCP_STARTUP_SEC = 120;
|
|
414
414
|
const MCP_ARRANQUE_LIMITE_MS = 9000; // abaixo do que o Codex tolera (10s)
|
|
415
415
|
|
|
416
|
-
|
|
416
|
+
// No Windows o Codex abre o MCP com um ambiente minimo (PATH, USERNAME, USERPROFILE,
|
|
417
|
+
// TEMP...) e deixa de fora SystemRoot, APPDATA, COMSPEC etc. Sem SystemRoot o Node nao
|
|
418
|
+
// resolve DNS (EAI_FAIL) e o aluno le "Sem conexao com o servidor da Arcane" mesmo com
|
|
419
|
+
// internet — openai/codex#4180 e #3311. Passamos os valores reais da maquina no registro.
|
|
420
|
+
const CODEX_ENV_WINDOWS = [
|
|
421
|
+
'SystemRoot', 'windir', 'COMSPEC', 'SystemDrive', 'APPDATA', 'LOCALAPPDATA',
|
|
422
|
+
'ProgramData', 'ProgramFiles', 'HOMEDRIVE', 'HOMEPATH', 'USERPROFILE', 'TEMP', 'TMP',
|
|
423
|
+
];
|
|
424
|
+
|
|
425
|
+
function envCodexArcane({ plataforma = process.platform, env = process.env } = {}) {
|
|
426
|
+
if (plataforma !== 'win32') return null;
|
|
427
|
+
const pares = [];
|
|
428
|
+
for (const nome of CODEX_ENV_WINDOWS) {
|
|
429
|
+
const chave = Object.keys(env).find(k => k.toLowerCase() === nome.toLowerCase());
|
|
430
|
+
const valor = chave ? env[chave] : '';
|
|
431
|
+
if (!valor || valor.includes("'") || /[\r\n]/.test(valor)) continue;
|
|
432
|
+
pares.push(`${nome} = '${valor}'`); // string literal do TOML: barra invertida sem escape
|
|
433
|
+
}
|
|
434
|
+
return pares.length ? `env = { ${pares.join(', ')} }` : null;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
function blocoCodexArcane(pin, opcoes) {
|
|
438
|
+
const env = envCodexArcane(opcoes);
|
|
417
439
|
return [
|
|
418
440
|
'[mcp_servers.arcane]',
|
|
419
441
|
'command = "npx"',
|
|
420
442
|
`args = ["-y", "${pin}"]`,
|
|
421
443
|
'# Primeira abertura baixa o pacote (ate 1-2 min no Windows); o padrao do Codex sao 10s.',
|
|
422
444
|
`startup_timeout_sec = ${CODEX_MCP_STARTUP_SEC}`,
|
|
445
|
+
...(env ? ['# Codex no Windows abre o MCP sem as variaveis basicas do sistema; sem elas nao ha DNS.', env] : []),
|
|
423
446
|
'',
|
|
424
447
|
].join('\n');
|
|
425
448
|
}
|
|
426
449
|
|
|
427
450
|
// Baixa o pacote do conteudo ao vivo com o MESMO nome que o registro usa (o cache do
|
|
428
|
-
// npx e por nome+versao: `arcane-mcp` e `arcane-mcp@0.4.
|
|
451
|
+
// npx e por nome+versao: `arcane-mcp` e `arcane-mcp@0.4.1` sao caches diferentes).
|
|
452
|
+
// `npx` no Windows e um .cmd: sem shell o Node recusa (EINVAL) e com `shell: true` o Node 24
|
|
453
|
+
// imprime um DeprecationWarning na tela do aluno (DEP0190). Chamar o cmd.exe direto, sem shell.
|
|
454
|
+
function comandoNpx(args) {
|
|
455
|
+
if (process.platform !== 'win32') return { cmd: 'npx', args, opts: {} };
|
|
456
|
+
return {
|
|
457
|
+
cmd: process.env.ComSpec || 'cmd.exe',
|
|
458
|
+
args: ['/d', '/s', '/c', `npx ${args.join(' ')}`],
|
|
459
|
+
opts: { windowsVerbatimArguments: true },
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
|
|
429
463
|
function aquecerArcaneMcp() {
|
|
430
464
|
if (process.env.NODE_ENV === 'test' && process.env.AUROQ_SKIP_AUTH === '1') return true;
|
|
431
465
|
try {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
});
|
|
466
|
+
const c = comandoNpx(['-y', ARCANE_MCP_PIN, 'whoami']);
|
|
467
|
+
execFileSync(c.cmd, c.args, { stdio: 'pipe', timeout: 240000, ...c.opts });
|
|
435
468
|
return true;
|
|
436
469
|
} catch {
|
|
437
470
|
return false;
|
|
@@ -456,9 +489,8 @@ function medirArranqueArcaneMcp(pin, limiteMs = 180000) {
|
|
|
456
489
|
};
|
|
457
490
|
const timer = setTimeout(() => fecha(null), limiteMs);
|
|
458
491
|
try {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
});
|
|
492
|
+
const c = comandoNpx(['-y', pin]);
|
|
493
|
+
processo = spawn(c.cmd, c.args, { stdio: ['pipe', 'pipe', 'pipe'], ...c.opts });
|
|
462
494
|
} catch {
|
|
463
495
|
clearTimeout(timer);
|
|
464
496
|
resolve(null);
|
|
@@ -1386,3 +1418,5 @@ if (command === 'init' || command === 'install') {
|
|
|
1386
1418
|
log(`${DIM}Uso: npx auroq-os init${RESET}`);
|
|
1387
1419
|
log('');
|
|
1388
1420
|
}
|
|
1421
|
+
|
|
1422
|
+
if (process.env.AUROQ_EXPORTA_INTERNOS === '1') module.exports = { blocoCodexArcane, envCodexArcane };
|
package/lib/diagnostico.js
CHANGED
|
@@ -38,11 +38,13 @@ function appEnxergaMotor({ homeDir, pathAtual = '', caminhoMotor = '', plataform
|
|
|
38
38
|
const partes = String(pathAtual).split(plataforma === 'win32' ? ';' : ':').filter(Boolean);
|
|
39
39
|
|
|
40
40
|
if (plataforma === 'win32') {
|
|
41
|
-
|
|
41
|
+
// No Windows o caminho e da conta do usuario, nao da janela: o que vale aqui vale
|
|
42
|
+
// pro icone. Aluno com Node proprio (sem o motor de bolso) nao e defeito — acusar
|
|
43
|
+
// isso mandava gente com tudo funcionando "rodar o instalador de novo" (04/09).
|
|
42
44
|
return {
|
|
43
|
-
visivel: partes.length > 0,
|
|
45
|
+
visivel: partes.length > 0 || Boolean(caminhoMotor),
|
|
44
46
|
perfisSemBloco: [],
|
|
45
|
-
motivo:
|
|
47
|
+
motivo: (partes.length > 0 || caminhoMotor) ? '' : 'Nenhum motor no caminho desta conta.',
|
|
46
48
|
};
|
|
47
49
|
}
|
|
48
50
|
|