auroq-os 2.8.6 → 2.8.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 +4 -0
- package/bin/auroq-os.js +14 -4
- package/installer/install.ps1 +2 -2
- package/installer/install.sh +2 -2
- package/lib/runtime-integrity.json +4 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
- Conteúdo ao vivo (catálogo `auroq-core` 2.3.40, 26/10): **as contas do nível 1 (GitHub, Vercel e Supabase) passam a ser conectadas pelo Companion na primeira conversa.** Decisão do Euriler: conectar na instalação do app não funciona bem para o aluno iniciante. Skill nova `conexoes-essenciais`: o Companion explica cada conta em uma linha, abre as páginas (GitHub primeiro, com a conta criada junto se o aluno não tiver; a Vercel e o Supabase entram com o GitHub), confere e segue; o aluno só cria a conta, entra e autoriza, sem senha nem código na conversa, sempre no plano grátis. Usa o comando `auroq conexoes` do app quando existir; antes disso, a tela Configurações → Conexões. O `*primeiro-uso` ficou: conferência e instalação do que faltar (o aluno nunca baixa nem instala programa), material, perguntas, Mapa, conexões (P6), organizar (P7) e fecho (P8).
|
|
19
19
|
- Conteúdo ao vivo (catálogo `auroq-core` 2.3.39, 26/10): **o cofre de senhas saiu da primeira conversa.** Decisão do Euriler: é técnico demais para o aluno iniciante e é conexão do nível 2 (com domínio próprio e Google, que o app chama de "conecte quando precisar"). No `*primeiro-uso` o Companion confere só o sistema e as contas do nível 1 (GitHub, Vercel e Supabase, que o app conecta na tela "Conectar suas contas") e vai para a entrevista; o cofre entra quando a primeira tarefa precisar de uma senha, chave ou token (skill `conectar-cofre`).
|
|
20
20
|
- **Regra de projetos do aluno sem o nome do Euriler.** `project-tracker.md` mandava "avisar o Euriler" quando faltava o acompanhamento de um projeto e dizia que só "o Euriler/Jarvis" mudam objetivo e fases (cópia da regra pessoal dele). Agora o Companion cria o acompanhamento pelo modelo e avisa o aluno em uma linha; quem decide objetivo e fases é o aluno (o Companion propõe). Chega pelo npm.
|
|
21
|
+
## 2.8.7 — 2026-11-04
|
|
22
|
+
|
|
23
|
+
- **Companion em toda pasta (03/11, pedido do Euriler).** O app Auroq OS passa a pôr no `~/.codex/config.toml` do aluno uma cópia do registro do `arcane` da pasta do negócio, entre as marcas `# >>> Auroq OS: Companion em toda pasta`, para o Companion e a equipe valerem em qualquer pasta. O `doctor` completo (`limparArcaneDoGlobal`) mantém esse bloco e diz "mantido"; um `arcane` do aluno ao lado dele continua saindo (com backup), porque tabela repetida deixa o Codex sem abrir. Na pasta do negócio o Codex junta os dois registros por chave e o da pasta vence (provado no Codex 0.166). Sem esta versão, o `doctor` completo apaga o bloco e o app o põe de volta em até 2 minutos.
|
|
24
|
+
|
|
21
25
|
## 2.8.6 — 2026-11-04
|
|
22
26
|
|
|
23
27
|
Correção do re-teste real do Marcos (03/11, Windows 11, auroq-os 2.8.5). O resto da rota A (aprovação, cofre `Claude`, chave do agente, teste e migração) passou liso e não foi mexido. Nenhuma máquina de aluno foi tocada; o que dá para provar sem Windows foi provado com PowerShell, winget e instalador simulados (veja a story `AUROQ-1password-automatico`, seção "Re-teste do Marcos 03/11").
|
package/bin/auroq-os.js
CHANGED
|
@@ -763,6 +763,7 @@ async function runDoctor(targetDir, { leve = false } = {}) {
|
|
|
763
763
|
if (g.existia) {
|
|
764
764
|
log(` ${DIM}Config global do Codex: ${g.servidores.length} servidor(es)${g.servidores.length ? ` (${g.servidores.join(', ')})` : ''}${RESET}`);
|
|
765
765
|
if (g.removido) success(`Registro duplicado do arcane no global: removido (backup em ${path.basename(g.backup)})`);
|
|
766
|
+
if (g.mantidoDoApp) success('Registro do arcane do app Auroq OS no global (Companion em toda pasta): mantido');
|
|
766
767
|
}
|
|
767
768
|
|
|
768
769
|
const bloco = lerBlocoArcane(tomlTexto);
|
|
@@ -1160,16 +1161,25 @@ function abrirComoCodex(pin, envBloco, limiteMs = 120000) {
|
|
|
1160
1161
|
|
|
1161
1162
|
// Registro do arcane no config GLOBAL do Codex (~/.codex/config.toml) briga com o da
|
|
1162
1163
|
// pasta. Sai de la, com backup; o da pasta e o que vale.
|
|
1164
|
+
// Excecao (03/11/2026, Companion em toda pasta): o app Auroq OS poe no global uma COPIA do
|
|
1165
|
+
// registro da pasta do negocio, entre as marcas abaixo, para o Companion valer em qualquer pasta.
|
|
1166
|
+
// Na pasta do negocio o Codex junta os dois por chave e o da pasta vence (provado no Codex 0.166),
|
|
1167
|
+
// entao esse bloco fica; quem poe e tira e o app.
|
|
1168
|
+
const MARCA_DO_APP_NO_CODEX = /^# >>> Auroq OS: Companion em toda pasta\b[^\n]*\n[\s\S]*?^# <<< Auroq OS: Companion em toda pasta <<<[^\n]*(?:\n|$(?![\s\S]))/m;
|
|
1163
1169
|
async function limparArcaneDoGlobal(caminho) {
|
|
1164
1170
|
if (!(await fs.pathExists(caminho))) return { existia: false, servidores: [], removido: false };
|
|
1165
1171
|
const toml = await fs.readFile(caminho, 'utf8');
|
|
1166
1172
|
const servidores = [...new Set([...toml.matchAll(/^\[mcp_servers\.([^\].]+)/gm)].map(m => m[1]))];
|
|
1167
|
-
|
|
1173
|
+
const doApp = toml.match(MARCA_DO_APP_NO_CODEX)?.[0] || '';
|
|
1174
|
+
const semOApp = doApp ? toml.replace(doApp, '') : toml;
|
|
1175
|
+
const mantido = doApp ? { mantidoDoApp: true } : {};
|
|
1176
|
+
if (!/^\[mcp_servers\.arcane(\.|\])/m.test(semOApp)) return { existia: true, servidores, removido: false, ...mantido };
|
|
1168
1177
|
const backup = `${caminho}.bak-${new Date().toISOString().slice(0, 19).replace(/[:T]/g, '-')}`;
|
|
1169
1178
|
await fs.writeFile(backup, toml);
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1179
|
+
// Um arcane do aluno junto do bloco do app seria tabela repetida: sai o do aluno, fica o do app.
|
|
1180
|
+
const novo = semOApp.replace(/\n*\[mcp_servers\.arcane(\.[^\]]+)?\][\s\S]*?(?=\n\[|$(?![\s\S]))/g, '');
|
|
1181
|
+
await fs.writeFile(caminho, `${novo.trimEnd()}\n${doApp ? `\n${doApp}` : ''}`);
|
|
1182
|
+
return { existia: true, servidores, removido: true, backup, ...mantido };
|
|
1173
1183
|
}
|
|
1174
1184
|
|
|
1175
1185
|
function versaoDoCodex() {
|
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.8.
|
|
592
|
+
& (Get-AuroqNpx) -y auroq-os@2.8.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.8.
|
|
680
|
+
& (Get-AuroqNpx) -y auroq-os@2.8.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.8.
|
|
222
|
+
npx -y auroq-os@2.8.7 "$@"
|
|
223
223
|
else
|
|
224
|
-
npx -y auroq-os@2.8.
|
|
224
|
+
npx -y auroq-os@2.8.7 "$@" < /dev/tty
|
|
225
225
|
fi
|
|
226
226
|
}
|
|
227
227
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schema": 1,
|
|
3
3
|
"algorithm": "sha256",
|
|
4
4
|
"scope": "packaged-runtime-and-cascas",
|
|
5
|
-
"version": "2.8.
|
|
5
|
+
"version": "2.8.7",
|
|
6
6
|
"files": [
|
|
7
7
|
{
|
|
8
8
|
"path": ".auroq-core/constitution.md",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"path": ".auroq-core/core-config.yaml",
|
|
13
|
-
"sha256": "
|
|
13
|
+
"sha256": "8d5ea5b7b5a209d72389052767fe51cb2e44d31ce53e4572210cb17198b62537"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"path": ".auroq-core/core/synapse/context/context-builder.js",
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
216
|
"path": "bin/auroq-os.js",
|
|
217
|
-
"sha256": "
|
|
217
|
+
"sha256": "5d5686b2e0cdc7bd514066b049a426727228699b1346e3aaea0bd374575bef74"
|
|
218
218
|
},
|
|
219
219
|
{
|
|
220
220
|
"path": "lib/ahi/client.mjs",
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
},
|
|
299
299
|
{
|
|
300
300
|
"path": "package.json",
|
|
301
|
-
"sha256": "
|
|
301
|
+
"sha256": "363c8ce6405a77e56889d5111dca87c8fb78d3f1800565287bdc8cefd6fabc98"
|
|
302
302
|
},
|
|
303
303
|
{
|
|
304
304
|
"path": "scripts/build-pack.mjs",
|