auroq-os 2.5.6 → 2.5.7
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 +8 -0
- package/README.md +4 -4
- package/bin/auroq-os.js +49 -19
- package/installer/README.md +1 -1
- package/installer/install.ps1 +2 -2
- package/installer/install.sh +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 2.5.7 — 2026-09-14
|
|
2
|
+
|
|
3
|
+
### Doctor do Codex sem falso negativo
|
|
4
|
+
|
|
5
|
+
- O smoke do Codex usa `codex exec --json --ephemeral`, chama a ferramenta canonica e so aceita o evento estruturado `mcp_tool_call` de `arcane/catalogo_listar` concluido.
|
|
6
|
+
- Registro do servidor e aprovacao da unica ferramenta de leitura sao limitados ao processo efemero; nenhuma configuracao do aluno e alterada e nenhum comando tecnico e pedido.
|
|
7
|
+
- Se o Codex inventar a grafia antiga e a sondagem direta estiver verde, o doctor informa em linguagem leiga que a conexao esta saudavel.
|
|
8
|
+
|
|
1
9
|
## 2.5.6 — 2026-09-14
|
|
2
10
|
|
|
3
11
|
### Hotfix: restaura o MCP publicado
|
package/README.md
CHANGED
|
@@ -168,12 +168,12 @@ agents/ → Seu exercito (companion, workers, minds, squads)
|
|
|
168
168
|
|
|
169
169
|
## Observabilidade do motor (candidato 2.5.2)
|
|
170
170
|
|
|
171
|
-
Apos publicacao, `npx -y auroq-os@2.5.
|
|
172
|
-
manutencao/diagnostico. `npx -y auroq-os@2.5.
|
|
171
|
+
Apos publicacao, `npx -y auroq-os@2.5.7 doctor` mostra a fila local segura e os comandos pinados de
|
|
172
|
+
manutencao/diagnostico. `npx -y auroq-os@2.5.7 manutencao` preserva o caminho existente
|
|
173
173
|
de consentimento legado, studentFiles, customizacoes e dados do negocio. Nao ha
|
|
174
174
|
migracao forcada. O registro MCP aponta para `arcane-mcp@0.5.0`, publicado e validado.
|
|
175
|
-
O hotfix 2.5.
|
|
176
|
-
Os instaladores oficiais devem fixar 2.5.
|
|
175
|
+
O hotfix 2.5.7 restaura a conexao enquanto o candidato 0.6.0 passa por validacao separada.
|
|
176
|
+
Os instaladores oficiais devem fixar 2.5.7 depois da publicacao e da verificacao do tarball.
|
|
177
177
|
|
|
178
178
|
O CLI inicia captura antes das dependencias pesadas e registra resultado ao sair.
|
|
179
179
|
Eventos com identidade ja existente podem seguir pela rota autenticada na proxima
|
package/bin/auroq-os.js
CHANGED
|
@@ -28,7 +28,7 @@ async function observedMain() {
|
|
|
28
28
|
telemetry.runtimeReady=()=>{importing=false;};
|
|
29
29
|
runRuntime(telemetry);
|
|
30
30
|
} catch {
|
|
31
|
-
console.error('[auroq-os] '+(importing?'BOOTSTRAP_IMPORT':'RUNTIME_FAILURE')+'. Rode: npx -y auroq-os@2.5.
|
|
31
|
+
console.error('[auroq-os] '+(importing?'BOOTSTRAP_IMPORT':'RUNTIME_FAILURE')+'. Rode: npx -y auroq-os@2.5.7 doctor');
|
|
32
32
|
process.exitCode=1;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -476,11 +476,15 @@ async function runDoctor(targetDir) {
|
|
|
476
476
|
let codexFalhou = false;
|
|
477
477
|
if (vCodex) {
|
|
478
478
|
log(` ${DIM}Pedindo ao proprio Codex pra chamar o conteudo ao vivo (pode levar 1-2 min)...${RESET}`);
|
|
479
|
-
const
|
|
480
|
-
const
|
|
481
|
-
codexFalhou =
|
|
482
|
-
(
|
|
483
|
-
|
|
479
|
+
const smoke = rodarNoCodex(targetDir);
|
|
480
|
+
const diretoSaudavel = Boolean(r.temForja && r.chamada && !r.chamada.erro);
|
|
481
|
+
codexFalhou = !smoke.sucesso && !diretoSaudavel;
|
|
482
|
+
if (!smoke.sucesso && diretoSaudavel) {
|
|
483
|
+
warn('A conexao esta funcionando, mas o teste automatico do Codex nao concluiu. Feche e abra uma sessao nova do Codex.');
|
|
484
|
+
} else {
|
|
485
|
+
(codexFalhou ? error : success)(codexFalhou ? 'Codex de verdade: NAO conseguiu usar o conteudo ao vivo' : 'Codex de verdade: usou o conteudo ao vivo');
|
|
486
|
+
}
|
|
487
|
+
for (const l of smoke.linhas) log(` ${DIM} ${l}${RESET}`);
|
|
484
488
|
}
|
|
485
489
|
if (r.subiu === null || !r.temForja || !r.chamada || r.chamada.erro || codexFalhou) {
|
|
486
490
|
problemas.push('Mande o print desta tela INTEIRA pro suporte (11 93621-4486) — ela ja traz tudo que precisamos.');
|
|
@@ -799,23 +803,50 @@ async function rastroDoCodex(limite = 8) {
|
|
|
799
803
|
}
|
|
800
804
|
|
|
801
805
|
|
|
802
|
-
// O
|
|
803
|
-
//
|
|
806
|
+
// O smoke usa JSONL estruturado: texto humano ou a palavra "versao" nunca provam que a
|
|
807
|
+
// ferramenta foi chamada. As opcoes -c valem so para este processo ephemeral; nao editam a
|
|
808
|
+
// configuracao do aluno. A unica aprovacao automatica e a leitura catalogo_listar deste servidor.
|
|
809
|
+
function argumentosCodexSmoke() {
|
|
810
|
+
const prompt = 'Chame agora a ferramenta MCP catalogo_listar do servidor arcane. Se o runtime usar JavaScript, execute exatamente tools.mcp__arcane__catalogo_listar({}); nunca use tools.mcp_arcane_catalogo_listar. Responda somente com a primeira linha do resultado.';
|
|
811
|
+
return ['exec', '--json', '--ephemeral', '--skip-git-repo-check', '-C', '.',
|
|
812
|
+
'-c', 'mcp_servers.arcane.command="npx"',
|
|
813
|
+
'-c', `mcp_servers.arcane.args=["-y",${JSON.stringify(ARCANE_MCP_PIN)}]`,
|
|
814
|
+
'-c', `mcp_servers.arcane.startup_timeout_sec=${CODEX_MCP_STARTUP_SEC}`,
|
|
815
|
+
'-c', 'mcp_servers.arcane.enabled_tools=["catalogo_listar"]',
|
|
816
|
+
'-c', 'mcp_servers.arcane.tools.catalogo_listar.approval_mode="approve"',
|
|
817
|
+
'-c', `mcp_servers.arcane.env_vars=${JSON.stringify([...CODEX_ENV_MINIMO, ...CODEX_ENV_WINDOWS])}`,
|
|
818
|
+
prompt];
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
function avaliarEventosCodex(saida) {
|
|
822
|
+
let concluiu = false;
|
|
823
|
+
let falhou = false;
|
|
824
|
+
for (const linha of String(saida || '').split('\n')) {
|
|
825
|
+
if (!linha.trim()) continue;
|
|
826
|
+
let evento;
|
|
827
|
+
try { evento = JSON.parse(linha); } catch { continue; }
|
|
828
|
+
const item = evento?.item;
|
|
829
|
+
if (evento?.type !== 'item.completed' || item?.type !== 'mcp_tool_call' || item.server !== 'arcane' || item.tool !== 'catalogo_listar') continue;
|
|
830
|
+
if (item.status === 'completed' && item.error === null) concluiu = true;
|
|
831
|
+
else falhou = true;
|
|
832
|
+
}
|
|
833
|
+
return { sucesso: Boolean(concluiu && !falhou), erro: falhou ? 'SMOKE_TOOL_FAILED' : null };
|
|
834
|
+
}
|
|
835
|
+
|
|
804
836
|
function rodarNoCodex(pasta) {
|
|
805
|
-
const
|
|
806
|
-
const args = ['exec', '--skip-git-repo-check', '-C', pasta, prompt];
|
|
837
|
+
const args = argumentosCodexSmoke();
|
|
807
838
|
const c = process.platform === 'win32'
|
|
808
|
-
? { cmd: process.env.ComSpec || 'cmd.exe', args: ['/d', '/s', '/c', `codex
|
|
839
|
+
? { cmd: process.env.ComSpec || 'cmd.exe', args: ['/d', '/s', '/c', `codex ${args.map(a => `"${String(a).replace(/"/g, '""')}"`).join(' ')}`], opts: { windowsVerbatimArguments: true } }
|
|
809
840
|
: { cmd: 'codex', args, opts: {} };
|
|
810
841
|
let saida = '';
|
|
811
842
|
try {
|
|
812
|
-
|
|
843
|
+
const env = process.platform === 'win32' ? { ...process.env, ...CODEX_ENV_FIXO_WINDOWS } : process.env;
|
|
844
|
+
saida = execFileSync(c.cmd, c.args, { cwd: pasta, env, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 300000, ...c.opts });
|
|
813
845
|
} catch (e) {
|
|
814
846
|
saida = `${e.stdout || ''}\n${e.stderr || ''}\n[codex saiu com ${e.status ?? e.code ?? 'erro'}]`;
|
|
815
847
|
}
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
.slice(-8).map(l => l.slice(0, 220));
|
|
848
|
+
const avaliacao = avaliarEventosCodex(saida);
|
|
849
|
+
return { ...avaliacao, linhas: [avaliacao.sucesso ? 'Teste automatico concluido.' : 'O teste automatico nao concluiu.'] };
|
|
819
850
|
}
|
|
820
851
|
|
|
821
852
|
async function writeArcaneMcpConfig(targetDir) {
|
|
@@ -1734,8 +1765,7 @@ ${DIM} Auroq OS v${PKG_VERSION} — Sistema Operacional de IA para Experts${RES
|
|
|
1734
1765
|
|
|
1735
1766
|
telemetry.runtimeReady();
|
|
1736
1767
|
if (['doctor','diagnostico'].includes(process.argv[2])) {
|
|
1737
|
-
|
|
1738
|
-
console.log('Manutencao: npx -y auroq-os@2.5.6 manutencao; MCP: npx -y arcane-mcp@0.5.0 doctor');
|
|
1768
|
+
console.log('Diagnostico local carregado.');
|
|
1739
1769
|
}
|
|
1740
1770
|
// ─── CLI ─────────────────────────────────────────────────
|
|
1741
1771
|
const command = process.argv[2];
|
|
@@ -1744,7 +1774,7 @@ if (['init', 'install', 'update'].includes(command)) {
|
|
|
1744
1774
|
error('Comando aposentado. Nada foi instalado ou alterado.');
|
|
1745
1775
|
error('Primeira instalacao: https://arcane.arka.education/auroq');
|
|
1746
1776
|
error('No negocio existente, peca ao Ops: manutencao do motor. Conteudo chega pelo MCP.');
|
|
1747
|
-
error('Diagnostico: npx -y auroq-os@2.5.
|
|
1777
|
+
error('Diagnostico: npx -y auroq-os@2.5.7 doctor. Manutencao: npx -y auroq-os@2.5.7 manutencao.');
|
|
1748
1778
|
process.exitCode = 1;
|
|
1749
1779
|
} else if (command === 'instalar' || command === 'manutencao') {
|
|
1750
1780
|
// `--pasta <nome>`: o instalador manda o CLI criar e entrar na pasta do negocio,
|
|
@@ -1871,6 +1901,6 @@ if (['init', 'install', 'update'].includes(command)) {
|
|
|
1871
1901
|
log('');
|
|
1872
1902
|
}
|
|
1873
1903
|
|
|
1874
|
-
if (process.env.AUROQ_EXPORTA_INTERNOS === '1') module.exports = { blocoCodexArcane, envCodexArcane, lerBlocoArcane, lerEnvDoBloco, limparArcaneDoGlobal, envComoCodex };
|
|
1904
|
+
if (process.env.AUROQ_EXPORTA_INTERNOS === '1') module.exports = { blocoCodexArcane, envCodexArcane, lerBlocoArcane, lerEnvDoBloco, limparArcaneDoGlobal, envComoCodex, argumentosCodexSmoke, avaliarEventosCodex };
|
|
1875
1905
|
|
|
1876
1906
|
}
|
package/installer/README.md
CHANGED
|
@@ -114,7 +114,7 @@ Limites: 200 slots por formato, sem captura antes
|
|
|
114
114
|
do download do proprio script, sem garantia de reconexao/adocao. Fonte oficial segue
|
|
115
115
|
neste diretorio; `plataforma-arcane/npm run sync:installer` sincroniza as duas copias.
|
|
116
116
|
|
|
117
|
-
Pins oficiais usam `auroq-os@2.5.
|
|
117
|
+
Pins oficiais usam `auroq-os@2.5.7`, hotfix que registra a versao publicada
|
|
118
118
|
`arcane-mcp@0.5.0`.
|
|
119
119
|
Candidato cliente 0.6.0 segue separado ate concluir os gates. O runtime Windows
|
|
120
120
|
faz fail-closed ate dispor de ACL/no-follow seguros; spool PowerShell permanece local.
|
package/installer/install.ps1
CHANGED
|
@@ -589,7 +589,7 @@ function Invoke-AuroqLogin {
|
|
|
589
589
|
# sucesso. Usado como pergunta de sim/nao, ele dizia "voce ja estava logado"
|
|
590
590
|
# pra quem nunca logou, pulava o portao e deixava a conta sem acesso chegar ate
|
|
591
591
|
# a criacao da pasta.
|
|
592
|
-
& (Get-AuroqNpx) -y auroq-os@2.5.
|
|
592
|
+
& (Get-AuroqNpx) -y auroq-os@2.5.7 check-access
|
|
593
593
|
if ($LASTEXITCODE -ne 0) {
|
|
594
594
|
Write-AuroqLog 'login' 'recusado'
|
|
595
595
|
Write-Host ''
|
|
@@ -677,7 +677,7 @@ function Invoke-AuroqInit {
|
|
|
677
677
|
if ($env:AUROQ_INSTALL_DRY_RUN) { Write-AuroqOk 'Sistema - seria montado aqui'; return }
|
|
678
678
|
|
|
679
679
|
Set-Location $script:AuroqPastaAlvo
|
|
680
|
-
& (Get-AuroqNpx) -y auroq-os@2.5.
|
|
680
|
+
& (Get-AuroqNpx) -y auroq-os@2.5.7 instalar
|
|
681
681
|
if ($LASTEXITCODE -ne 0) {
|
|
682
682
|
Write-AuroqLog 'init' 'falhou'
|
|
683
683
|
Write-AuroqErro 'A montagem do sistema parou no meio.' 'Rode o mesmo comando de novo. Se repetir, mande pro suporte o arquivo install.log da pasta .auroq.'
|
package/installer/install.sh
CHANGED
|
@@ -219,9 +219,9 @@ auroq_tem_terminal() {
|
|
|
219
219
|
# recebem pedaco do script no lugar da resposta dele.
|
|
220
220
|
auroq_npx_aluno() {
|
|
221
221
|
if [ -t 0 ]; then
|
|
222
|
-
npx -y auroq-os@2.5.
|
|
222
|
+
npx -y auroq-os@2.5.7 "$@"
|
|
223
223
|
else
|
|
224
|
-
npx -y auroq-os@2.5.
|
|
224
|
+
npx -y auroq-os@2.5.7 "$@" < /dev/tty
|
|
225
225
|
fi
|
|
226
226
|
}
|
|
227
227
|
|