auroq-os 2.4.1 → 2.4.2
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/bin/auroq-os.js +21 -0
- package/installer/install.ps1 +47 -6
- package/installer/install.sh +23 -4
- package/package.json +1 -1
package/bin/auroq-os.js
CHANGED
|
@@ -59,6 +59,20 @@ function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }
|
|
|
59
59
|
// Pergunta sim/nao no terminal. Funciona em TTY e com stdin encadeado (pipe).
|
|
60
60
|
// Se o stdin estiver fechado (automatos/CI), question() nunca resolve — por isso
|
|
61
61
|
// a corrida com o evento 'close': EOF vira resposta vazia, ou seja, "nao".
|
|
62
|
+
/**
|
|
63
|
+
* Grava no core-config da instalacao a versao que esta sendo instalada agora e
|
|
64
|
+
* o dia de hoje. Sem isso os dois campos ficam congelados no que o arquivo
|
|
65
|
+
* modelo trazia dentro do pacote.
|
|
66
|
+
*/
|
|
67
|
+
async function carimbarVersao(configPath) {
|
|
68
|
+
if (!(await fs.pathExists(configPath))) return;
|
|
69
|
+
let texto = await fs.readFile(configPath, 'utf8');
|
|
70
|
+
const hoje = new Date().toISOString().slice(0, 10);
|
|
71
|
+
texto = texto.replace(/^(\s*version:).*$/m, `$1 ${PKG_VERSION}`);
|
|
72
|
+
texto = texto.replace(/^(\s*installedAt:).*$/m, `$1 '${hoje}'`);
|
|
73
|
+
await fs.writeFile(configPath, texto);
|
|
74
|
+
}
|
|
75
|
+
|
|
62
76
|
async function askYesNo(question) {
|
|
63
77
|
const readline = require('node:readline/promises');
|
|
64
78
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -736,6 +750,13 @@ async function init({ pasta = null } = {}) {
|
|
|
736
750
|
}
|
|
737
751
|
success(`${copied} arquivos instalados`);
|
|
738
752
|
|
|
753
|
+
// O core-config.yaml e copiado cru do pacote. Como ninguem lembra de edita-lo
|
|
754
|
+
// a cada release, toda instalacao nova jurava ser a versao de quando o arquivo
|
|
755
|
+
// foi escrito — 2.2.4 numa maquina rodando 2.4.1, no piloto de 27/08. Quem
|
|
756
|
+
// abre um chamado com esse numero manda o suporte investigar a versao errada.
|
|
757
|
+
// Carimbar aqui e a unica forma de nunca mais divergir.
|
|
758
|
+
await carimbarVersao(path.join(targetDir, '.auroq-core', 'core-config.yaml'));
|
|
759
|
+
|
|
739
760
|
const seedRoot = path.join(sourceDir, 'seeds');
|
|
740
761
|
if (await fs.pathExists(seedRoot)) {
|
|
741
762
|
await fs.copy(seedRoot, targetDir, { overwrite: false });
|
package/installer/install.ps1
CHANGED
|
@@ -142,6 +142,44 @@ function Set-AuroqPath {
|
|
|
142
142
|
$env:Path = "$Bin;$env:Path"
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
+
# --- Como chamar o npx sem esbarrar na politica do Windows ----------------------
|
|
146
|
+
|
|
147
|
+
# O PowerShell resolve `.ps1` antes de `.cmd`. Chamado pelado, `npx` vira
|
|
148
|
+
# `npx.ps1` (um arquivo em disco) e a politica padrao do Windows recusa abrir
|
|
149
|
+
# arquivo de script. Num piloto real a instalacao morreu exatamente ai, com
|
|
150
|
+
# "npx.ps1 cannot be loaded because running scripts is disabled on this system".
|
|
151
|
+
#
|
|
152
|
+
# Mexer na politica resolveria e esta proibido (ADR-3: zero privilegio, e mudar
|
|
153
|
+
# regra de seguranca da maquina do aluno pra instalar um sistema e abuso).
|
|
154
|
+
# O `.cmd` faz o mesmo trabalho e nao passa pelo interpretador de script.
|
|
155
|
+
function Get-AuroqNpx {
|
|
156
|
+
$doMotor = Join-Path (Get-AuroqNodeDir) 'npx.cmd'
|
|
157
|
+
if (Test-Path $doMotor) { return $doMotor }
|
|
158
|
+
|
|
159
|
+
# Quem ja tinha Node nem baixa o motor de bolso: a pasta acima nao existe.
|
|
160
|
+
$noCaminho = Get-Command 'npx.cmd' -ErrorAction SilentlyContinue
|
|
161
|
+
if ($noCaminho) { return $noCaminho.Source }
|
|
162
|
+
|
|
163
|
+
return 'npx.cmd'
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
# --- A ferramenta do aluno, visivel de qualquer janela --------------------------
|
|
167
|
+
|
|
168
|
+
# O Claude Code se instala em %USERPROFILE%\.local\bin e nao publica essa pasta
|
|
169
|
+
# no ambiente do usuario. Resultado do piloto: o aluno terminava a parada 1,
|
|
170
|
+
# digitava `claude`, nao acontecia nada, e concluia que a instalacao falhou.
|
|
171
|
+
function Set-AuroqCaminhoDaFerramenta {
|
|
172
|
+
$bin = Join-Path $env:USERPROFILE '.local\bin'
|
|
173
|
+
if (-not (Test-Path (Join-Path $bin 'claude.exe'))) { return }
|
|
174
|
+
|
|
175
|
+
$atual = [Environment]::GetEnvironmentVariable('Path', 'User')
|
|
176
|
+
if ($atual -and ($atual -split ';' | Where-Object { $_ -eq $bin })) { return }
|
|
177
|
+
|
|
178
|
+
Set-AuroqPath $bin
|
|
179
|
+
Write-AuroqOk 'Deixei o Claude Code visivel em qualquer janela'
|
|
180
|
+
Write-AuroqLog 'ferramenta' 'claude-publicado'
|
|
181
|
+
}
|
|
182
|
+
|
|
145
183
|
# --- Passo 1: diagnostico (sec. 5.1) ----------------------------------------------
|
|
146
184
|
|
|
147
185
|
function Test-AuroqMaquina {
|
|
@@ -388,7 +426,7 @@ function Invoke-AuroqLogin {
|
|
|
388
426
|
# sucesso. Usado como pergunta de sim/nao, ele dizia "voce ja estava logado"
|
|
389
427
|
# pra quem nunca logou, pulava o portao e deixava a conta sem acesso chegar ate
|
|
390
428
|
# a criacao da pasta.
|
|
391
|
-
&
|
|
429
|
+
& (Get-AuroqNpx) -y auroq-os@latest check-access
|
|
392
430
|
if ($LASTEXITCODE -ne 0) {
|
|
393
431
|
Write-AuroqLog 'login' 'recusado'
|
|
394
432
|
Write-Host ''
|
|
@@ -465,7 +503,7 @@ function Invoke-AuroqInit {
|
|
|
465
503
|
if ($env:AUROQ_INSTALL_DRY_RUN) { Write-AuroqOk 'Sistema - seria montado aqui'; return }
|
|
466
504
|
|
|
467
505
|
Set-Location $script:AuroqPastaAlvo
|
|
468
|
-
&
|
|
506
|
+
& (Get-AuroqNpx) -y auroq-os@latest init
|
|
469
507
|
if ($LASTEXITCODE -ne 0) {
|
|
470
508
|
Write-AuroqLog 'init' 'falhou'
|
|
471
509
|
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.'
|
|
@@ -484,11 +522,13 @@ function Write-AuroqFecho {
|
|
|
484
522
|
Write-Host ''
|
|
485
523
|
Write-AuroqDiz 'Falta um detalhe importante:'
|
|
486
524
|
Write-Host ''
|
|
487
|
-
Write-AuroqDiz ' 1. FECHE
|
|
525
|
+
Write-AuroqDiz ' 1. FECHE esta janela por completo e abra o PowerShell de novo'
|
|
488
526
|
Write-AuroqDiz ' - sem isso ele nao enxerga o que acabou de ser instalado'
|
|
489
|
-
Write-AuroqDiz
|
|
490
|
-
Write-AuroqDiz
|
|
491
|
-
Write-AuroqDiz '
|
|
527
|
+
Write-AuroqDiz ' 2. Entre na pasta do seu negocio. Copie e cole esta linha:'
|
|
528
|
+
Write-AuroqDiz " cd `"$script:AuroqPastaAlvo`""
|
|
529
|
+
Write-AuroqDiz ' 3. Abra a ferramenta escrevendo: claude (no Codex: codex)'
|
|
530
|
+
Write-AuroqDiz ' 4. Chame o Ops: /AuroqOS:agents:ops (no Codex: $ops)'
|
|
531
|
+
Write-AuroqDiz ' 5. Digite: *bootstrap'
|
|
492
532
|
Write-Host ''
|
|
493
533
|
Write-AuroqDiz 'O Ops instala o resto e te guia daqui pra frente.'
|
|
494
534
|
Write-Host ''
|
|
@@ -500,6 +540,7 @@ function Write-AuroqFecho {
|
|
|
500
540
|
function Invoke-AuroqInstalacao {
|
|
501
541
|
Write-AuroqTitulo 'Auroq OS - instalacao'
|
|
502
542
|
Test-AuroqMaquina
|
|
543
|
+
Set-AuroqCaminhoDaFerramenta
|
|
503
544
|
Install-AuroqGit
|
|
504
545
|
Install-AuroqNode
|
|
505
546
|
Invoke-AuroqLogin
|
package/installer/install.sh
CHANGED
|
@@ -216,6 +216,22 @@ auroq_publicar_node_no_path() {
|
|
|
216
216
|
esac
|
|
217
217
|
}
|
|
218
218
|
|
|
219
|
+
# A ferramenta do aluno (Claude Code) se instala em ~/.local/bin e nem sempre
|
|
220
|
+
# publica essa pasta. Achado num piloto real no Windows: o aluno terminava a
|
|
221
|
+
# parada 1, escrevia `claude`, nao acontecia nada, e concluia que tinha falhado.
|
|
222
|
+
# O mesmo vale aqui — e o conserto e o mesmo caminho que ja publica o motor.
|
|
223
|
+
auroq_publicar_ferramenta_no_path() {
|
|
224
|
+
local bin="${HOME}/.local/bin"
|
|
225
|
+
[ -x "${bin}/claude" ] || return 0
|
|
226
|
+
case ":${PATH}:" in *":${bin}:"* ) return 0 ;; esac
|
|
227
|
+
|
|
228
|
+
auroq_publicar_node_no_path "$bin"
|
|
229
|
+
PATH="${bin}:${PATH}"
|
|
230
|
+
export PATH
|
|
231
|
+
ok_feito "Deixei o Claude Code visivel em qualquer janela"
|
|
232
|
+
auroq_registrar_log "ferramenta" "claude-publicado"
|
|
233
|
+
}
|
|
234
|
+
|
|
219
235
|
# ─── Passo 1: diagnostico (§5.1) ──────────────────────────────────────────────
|
|
220
236
|
|
|
221
237
|
auroq_diagnostico() {
|
|
@@ -520,11 +536,13 @@ auroq_fecho() {
|
|
|
520
536
|
printf '\n'
|
|
521
537
|
diz "Falta um detalhe importante:"
|
|
522
538
|
printf '\n'
|
|
523
|
-
diz " 1. FECHE
|
|
539
|
+
diz " 1. FECHE esta janela por completo e abra o Terminal de novo"
|
|
524
540
|
diz " ${FRACO}— sem isso ele nao enxerga o que acabou de ser instalado${FIM}"
|
|
525
|
-
diz " 2.
|
|
526
|
-
diz "
|
|
527
|
-
diz "
|
|
541
|
+
diz " 2. Entre na pasta do seu negocio. Copie e cole esta linha:"
|
|
542
|
+
diz " ${CIANO}cd \"${PASTA_ALVO}\"${FIM}"
|
|
543
|
+
diz " 3. Abra a ferramenta escrevendo: ${CIANO}claude${FIM} ${FRACO}(no Codex: codex)${FIM}"
|
|
544
|
+
diz " 4. Chame o Ops: ${CIANO}/AuroqOS:agents:ops${FIM} ${FRACO}(no Codex: \$ops)${FIM}"
|
|
545
|
+
diz " 5. Digite: ${CIANO}*bootstrap${FIM}"
|
|
528
546
|
printf '\n'
|
|
529
547
|
diz "O Ops instala o resto e te guia daqui pra frente."
|
|
530
548
|
printf '\n'
|
|
@@ -536,6 +554,7 @@ auroq_fecho() {
|
|
|
536
554
|
auroq_main() {
|
|
537
555
|
titulo "Auroq OS — instalacao"
|
|
538
556
|
auroq_diagnostico
|
|
557
|
+
auroq_publicar_ferramenta_no_path
|
|
539
558
|
auroq_garantir_git
|
|
540
559
|
auroq_garantir_node
|
|
541
560
|
auroq_login_mentoria
|