@neetru/cli 2.28.7 → 2.28.10

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.
Files changed (108) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +25 -1
  3. package/dist/commands/admin/oidc-login.d.ts +18 -0
  4. package/dist/commands/admin/oidc-login.js +68 -3
  5. package/dist/commands/admin/oidc-login.js.map +1 -1
  6. package/dist/commands/admin/sdk-credential.js +11 -6
  7. package/dist/commands/admin/sdk-credential.js.map +1 -1
  8. package/dist/commands/agent-release.d.ts +2 -0
  9. package/dist/commands/agent-release.js +41 -29
  10. package/dist/commands/agent-release.js.map +1 -1
  11. package/dist/commands/agent-write.d.ts +1 -0
  12. package/dist/commands/agent-write.js +4 -0
  13. package/dist/commands/agent-write.js.map +1 -1
  14. package/dist/commands/ai-models.js +9 -4
  15. package/dist/commands/ai-models.js.map +1 -1
  16. package/dist/commands/archive.js +9 -2
  17. package/dist/commands/archive.js.map +1 -1
  18. package/dist/commands/auth.js +17 -2
  19. package/dist/commands/auth.js.map +1 -1
  20. package/dist/commands/autocomplete.d.ts +1 -1
  21. package/dist/commands/autocomplete.js +2 -0
  22. package/dist/commands/autocomplete.js.map +1 -1
  23. package/dist/commands/chat-menu.js +20 -6
  24. package/dist/commands/chat-menu.js.map +1 -1
  25. package/dist/commands/chat.d.ts +14 -0
  26. package/dist/commands/chat.js +32 -4
  27. package/dist/commands/chat.js.map +1 -1
  28. package/dist/commands/config.js +7 -0
  29. package/dist/commands/config.js.map +1 -1
  30. package/dist/commands/db-move.d.ts +204 -0
  31. package/dist/commands/db-move.js +890 -0
  32. package/dist/commands/db-move.js.map +1 -0
  33. package/dist/commands/db.d.ts +14 -3
  34. package/dist/commands/db.js +102 -67
  35. package/dist/commands/db.js.map +1 -1
  36. package/dist/commands/deploy.d.ts +15 -0
  37. package/dist/commands/deploy.js +42 -1
  38. package/dist/commands/deploy.js.map +1 -1
  39. package/dist/commands/dev-up.d.ts +5 -0
  40. package/dist/commands/dev-up.js +29 -4
  41. package/dist/commands/dev-up.js.map +1 -1
  42. package/dist/commands/doctor.js +12 -6
  43. package/dist/commands/doctor.js.map +1 -1
  44. package/dist/commands/domains.js +48 -36
  45. package/dist/commands/domains.js.map +1 -1
  46. package/dist/commands/init.d.ts +0 -8
  47. package/dist/commands/init.js +14 -3
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/logs.js +18 -21
  50. package/dist/commands/logs.js.map +1 -1
  51. package/dist/commands/mobile.d.ts +26 -0
  52. package/dist/commands/mobile.js +344 -0
  53. package/dist/commands/mobile.js.map +1 -0
  54. package/dist/commands/ops.d.ts +20 -0
  55. package/dist/commands/ops.js +70 -17
  56. package/dist/commands/ops.js.map +1 -1
  57. package/dist/commands/products-db.d.ts +1 -0
  58. package/dist/commands/products-db.js +15 -15
  59. package/dist/commands/products-db.js.map +1 -1
  60. package/dist/commands/promote.js +13 -32
  61. package/dist/commands/promote.js.map +1 -1
  62. package/dist/commands/schema.d.ts +4 -0
  63. package/dist/commands/schema.js +25 -16
  64. package/dist/commands/schema.js.map +1 -1
  65. package/dist/commands/servers.d.ts +2 -3
  66. package/dist/commands/servers.js +4 -7
  67. package/dist/commands/servers.js.map +1 -1
  68. package/dist/commands/smoke.d.ts +123 -0
  69. package/dist/commands/smoke.js +529 -0
  70. package/dist/commands/smoke.js.map +1 -0
  71. package/dist/commands/vm-memory.d.ts +53 -0
  72. package/dist/commands/vm-memory.js +307 -0
  73. package/dist/commands/vm-memory.js.map +1 -0
  74. package/dist/commands/vm.d.ts +2 -0
  75. package/dist/commands/vm.js +8 -0
  76. package/dist/commands/vm.js.map +1 -1
  77. package/dist/commands/webhooks.d.ts +2 -0
  78. package/dist/commands/webhooks.js +7 -0
  79. package/dist/commands/webhooks.js.map +1 -1
  80. package/dist/index.js +403 -21
  81. package/dist/index.js.map +1 -1
  82. package/dist/lib/agent-artifact-url.d.ts +19 -0
  83. package/dist/lib/agent-artifact-url.js +48 -0
  84. package/dist/lib/agent-artifact-url.js.map +1 -0
  85. package/dist/lib/api-client.d.ts +11 -3
  86. package/dist/lib/api-client.js +55 -24
  87. package/dist/lib/api-client.js.map +1 -1
  88. package/dist/lib/api-error.js +32 -1
  89. package/dist/lib/api-error.js.map +1 -1
  90. package/dist/lib/auth.d.ts +2 -9
  91. package/dist/lib/auth.js +34 -18
  92. package/dist/lib/auth.js.map +1 -1
  93. package/dist/lib/cli-write.d.ts +31 -0
  94. package/dist/lib/cli-write.js +51 -2
  95. package/dist/lib/cli-write.js.map +1 -1
  96. package/dist/lib/mobile-local/index.d.ts +7 -0
  97. package/dist/lib/mobile-local/index.js +7 -0
  98. package/dist/lib/mobile-local/index.js.map +1 -0
  99. package/dist/lib/mobile-local/mobile-json.d.ts +57 -0
  100. package/dist/lib/mobile-local/mobile-json.js +169 -0
  101. package/dist/lib/mobile-local/mobile-json.js.map +1 -0
  102. package/dist/lib/product-config.d.ts +5 -0
  103. package/dist/lib/product-config.js +37 -0
  104. package/dist/lib/product-config.js.map +1 -0
  105. package/dist/lib/telemetry.d.ts +7 -0
  106. package/dist/lib/telemetry.js +9 -0
  107. package/dist/lib/telemetry.js.map +1 -1
  108. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,84 @@
2
2
 
3
3
  Convenção: [Keep a Changelog](https://keepachangelog.com/) + [SemVer](https://semver.org/).
4
4
 
5
+ ## [Unreleased]
6
+
7
+ ### Adicionado
8
+
9
+ - **`neetru mobile`** — registro/gestão de Apps Mobile (iOS/Android) do produto atual, consumindo o contrato do Core (`neetru-core` PR #482 — dev-facing, self-service, mesmo padrão de `db`/`domains`).
10
+ - **`neetru mobile init --platform <ios|android> --redirect-uri <https://...> [...]`** — registra o app no Core (`POST /api/cli/v1/products/{slug}/mobile-apps`) e só DEPOIS grava o stub local em `.neetru/mobile.json` (mesma ordem register-antes-do-stub de `db init` — evita entrada órfã se o POST falhar). Flags condicionais por plataforma: `--bundle-id`/`--team-id` (ios), `--package-name`/`--sha-fingerprint` (repetível, android), `--name` opcional. `--redirect-uri` **precisa** ser `https://` (Universal Link/App Link, RFC 8252) — custom scheme (`meuapp://`) é rejeitado localmente e pelo Core, decisão de segurança do owner, não limitação temporária. Resposta traz o `oidcClientId` (PKCE público, sem client secret) — a saída lembra de configurar `NEETRU_MOBILE_CLIENT_ID` no app.
11
+ - **`neetru mobile list`** — `GET` dos apps mobile do produto atual, tabela (platform/bundle-package/status/oidcClientId) ou `--json`.
12
+ - **`neetru mobile revoke <appId>`** — `DELETE`, destrutivo top-tier (admin ONLY + step-up MFA, mesmo gate de `servers deactivate`) — mata sessões ativas do app instantaneamente. `confirmDestructive` + `resolveStepUp`, fail-closed em `--json`/sem TTY (exige `--yes` explícito). Remove a entrada de `.neetru/mobile.json` só DEPOIS do sucesso remoto.
13
+ - Novo módulo `@neetru/mobile-local` (`src/lib/mobile-local/`) — contrato do `.neetru/mobile.json`, espelha `@neetru/db-local` (registry versionado, migração defensiva, escrita atômica temp-file+rename).
14
+ - Extraído `loadProductConfig` (lê `neetru.config.json`) para `src/lib/product-config.js` — `db.ts` migrado para reusar (era uma cópia privada duplicada por arquivo; evita mais uma).
15
+
16
+ - **`neetru smoke`** — percorre as páginas do produto **local** (contra `next dev`/`neetru dev up` via `--base-url`, default `http://localhost:3000`) **antes** de `neetru build` + `neetru deploy`, pegando página quebrada, login que não renderiza ou banco fora do ar sem subir nada em produção. Nasceu do pedido do owner: devs não estavam testando o SaaS localmente antes de mandar pra prod.
17
+ - **Checks (cada um vira ✓ pass / ✗ fail / ⚠ warn):** (1) **alcance das rotas** — auto-descobre rotas do App Router (`app/**/page.*`) e do Pages Router legado (`pages/**/*` exceto `_app`/`_document`/`api`); route groups `(...)` removidos; segmentos dinâmicos `[param]`/`[...slug]` **pulados com aviso** (sem valor de amostra trivial); GET em cada rota, passa em 200–399 sem marcador de erro no corpo, falha em `>=400` ou marcador (`Application error`, `Internal Server Error`, `__next_error__`, 404 do Next, título 500). (2) **login carrega** — sem botão/afford de login detectado = aviso, não-200 = falha. (3) **banco/health** — GET no `--health-path` (default `/api/health`): 200 saudável passa, **404 = aviso** (produto não expõe health path — DB não verificável por aqui), outro não-200 = falha. (4) **smoke de prod** (só com `--prod`) — GET em `<prod>/` e `<prod><health-path>`, espera 200 em cada.
18
+ - Flags: `--base-url`, `--prod`, `--health-path`, `--routes <csv>` (sobrescreve a auto-descoberta), `--timeout <ms>` (default 10000), `--json` (uma linha, mesma disciplina de `neetru build --json`). Exit `1` se **qualquer** check falhar; avisos não bloqueiam.
19
+ - **Decisão LEVE, sem Playwright/headless browser** — o CLI é publicado no npm e não pode ganhar uma dependência de ~300MB de browser; usa só HTTP GET (fetch nativo) + inspeção do HTML/JSON retornado. **v2 deferido e documentado:** captura de erro de console (que exigiria um browser real) fica atrás de um flag opt-in que instalaria o headless sob demanda.
20
+ - **`neetru vm memory`** — controle de memória (RAM) por inquilino na VM (incidente OOM 2026-09-07 — PDV caiu por falta de RAM na VM multi-inquilino).
21
+ - **`neetru vm memory status [serverId]`** (alias `list`) — lista os inquilinos da VM compartilhada com **teto desejado** (systemd `MemoryMax`), **uso vivo** reportado pelo heartbeat, **folga** por inquilino e o rodapé de **Σ tetos + reserva SO/DB vs RAM total** (com o teto da soma a 90% da RAM). `GET /api/cli/v1/servers/{id}/memory`. Modo `--json` para consumo programático.
22
+ - **`neetru vm memory set <slug> --memory-max <MB> [--max-old-space <MB>] [--high <MB>]`** — define o teto de memória de um inquilino de forma GERENCIADA (antes era ajuste manual de drop-in systemd pelo Suporte). `POST /api/cli/v1/servers/{id}/memory` → Server Action `setProductMemoryLimit` do Core.
23
+ - **Guardrail (avisa; o Core recusa fail-closed):** antes de enviar, o CLI faz o GET da alocação atual, projeta a nova soma e **AVISA** quando `Σ tetos + reserva` passa de `RAM × 0.90` (`memory_overcommit` — OOM garantido) ou quando o teto novo cai **abaixo do uso vivo × 1.15** (`memory_shrink_below_usage` — pode OOM o próprio alvo, exige `--confirm-shrink`). A autoridade fail-closed é o Core; o CLI só mostra a conta.
24
+ - **Ergonomia:** só `--max-old-space` (sem `--memory-max`) herda o teto atual do slug (mudança só-de-heap); `--memory-max` tem o alias `--max`; `--mfa` tem o alias `--mfa-token`.
25
+ - **Validações fail-fast (espelham o schema do Core):** slug `/^[a-z][a-z0-9-]*$/`, piso duro `MemoryMax ≥ 64MB`, `--high ≤ --memory-max`, `--max-old-space < --memory-max` (o heap V8 tem que caber no cgroup com folga pra RSS — senão OOM-kill em vez de GC).
26
+ - **Superfície sensível de infra → step-up MFA** (`X-Neetru-MFA-Session`/`-Token` via `resolveStepUp`; a rota do Core exige `requireCliStepUpMfa`) + confirmação interativa (bypass `--yes`; em `--json` exige `--mfa`).
27
+ - **Alias `neetru products memory set <slug>`** (design §3.7) — delega ao mesmo core, resolvendo a VM via `--server`/picker.
28
+ - **`neetru db move`** — relocação ATÔMICA de um banco de produto entre VMs (Fase 2 / PR #423 — relocate atômico snee-002 → snee-003). Nasceu do incidente snee-002 sem RAM (PDV em OOM): mover Postgres/Mongo na mão é risco G1/G2 (banco meio-migrado = inalcançável = outage pior que o OOM), então a ferramenta vem primeiro.
29
+ - **`neetru db move --product <slug> --to <serverId>`** — dá o kickoff da máquina de estados no Core (`relocateProductDatabase` → `POST /api/cli/v1/db/[id]/relocate`) e **acompanha o progresso**, reportando **SUCESSO só quando o Core confirma o cutover VERIFICADO** (`state=done`). Resolve o banco por `--product <slug>` (fail-closed em ambiguidade: pede `--db <dbId>`/`--env`) ou aceita `--db <dbId>` explícito.
30
+ - **Progresso ostensivo da máquina de estados** — imprime cada transição (`planning → provisioning_target → replicating → verifying_target → quiescing_source → final_sync → cutover → observing → draining_source → done`) com rótulo PT-BR.
31
+ - **Rollback reportado como fail-closed** — em `rolled_back`/`failed` imprime o `code` do erro E "**o produto NÃO foi movido — seguiu na origem**" (INV-2), sai com **exit code 1**, e **nunca** afirma "concluída".
32
+ - **Confirmação interativa** antes de mover (destrutivo sobre banco de produção), pulável com **`--yes`** (modo script). **Step-up MFA** via `resolveStepUp` (sessão 1h → `--mfa-token` → prompt).
33
+ - Flags: `--strategy snapshot_quiesce|logical_stream` (padrão `snapshot_quiesce`), `--manual-cutover` (pausa em `verifying_target` aguardando `db move confirm`), `--max-quiesce-ms <n>` (padrão 15000, **teto duro 60000** — guardrail INV-1), `--dry-run` (só o preflight, sem MFA/sem provisionar), `--no-watch` (só dispara e imprime o `migrationId`).
34
+ - **`neetru db move status <migrationId>`** — estado da relocação + `verifyReport` (contagem por tabela origem vs destino) + gates.
35
+ - **`neetru db move confirm <migrationId> --mfa <code>`** — libera o cutover manual (`--manual-cutover`).
36
+ - **`neetru db move abort <migrationId> --reason "<t>"`** — dispara o rollback do estado atual (exige `--reason`; confirmação interativa pulável com `--yes`).
37
+ - **`neetru db where --product <slug>` / `--db <dbId>`** — READ-ONLY: mostra em qual VM o banco de um produto **vive hoje** (serverId + endpoint). Complementa `neetru db status <dbId>` (que exige o dbId) aceitando o slug do produto.
38
+ - **Nota:** os endpoints `/api/cli/v1/db/[id]/relocate` e `/api/cli/v1/db/relocate/[migrationId]{,/confirm,/abort}` são o contrato com o Core, construídos pelo componente irmão (Fase 2 / PR #423). Este bump entrega só a superfície CLI; o `db move` real depende do Core estar publicado com esses endpoints.
39
+
40
+ ### Testes
41
+
42
+ - **`mobile-local.test.ts`** (novo) — `@neetru/mobile-local`: migração defensiva do `.neetru/mobile.json` (entradas malformadas descartadas, upgrade sem `version`, default `status: 'active'`), round-trip `readMobileJson`/`writeMobileJson` (atômico, sem lixo `.tmp-*`), `upsertMobileApp`/`removeMobileApp`.
43
+ - **`mobile-commands.test.ts`** (novo) — `neetru mobile`: validação por-plataforma em `init` (ios exige bundle-id+team-id, android exige package-name+sha-fingerprint, redirect-uri precisa `https://`), ordem register-no-Core-antes-do-stub-local, **POST falho NÃO deixa `.neetru/mobile.json` órfão** (nem sobrescreve entradas pré-existentes), `list` happy-path/`--json`/erro de API, `revoke` fail-closed sem `--yes`/`--json`/TTY, header MFA (`X-Neetru-MFA-Token`) anexado no DELETE, remoção local só após sucesso remoto (DELETE falho preserva o registry).
44
+ - **`smoke.test.ts`** (novo, 18 testes): descoberta de rotas a partir de fixture `app/` (route groups removidos, dinâmicos pulados/avisados, `api/` excluída); alcance (pass 200, fail 500, fail em marcador de erro no corpo 200, unit de `classifyReachability`); health (pass ok JSON, warn 404, fail 503, unit de `classifyHealth`); login (warn sem afford, fail não-200); saída `--json` (shape + `ok=false` + exit 1 via ExitSentinel); smoke de prod só roda com `--prod`. `fetchImpl` e diretório de descoberta injetados — sem servidor vivo.
45
+ - `top-level-commands-coverage.regression.test.ts`: `smoke` adicionado a `TOP_LEVEL_COMMANDS` (autocomplete) pra acompanhar o novo comando em `index.ts`.
46
+ - **`vm-memory.test.ts`** (novo, 18 casos): status GET+JSON+tabela; set GET→POST com body correto + header MFA; alias `--max`; herança de teto com só `--max-old-space`; `--high`/`--confirm-shrink`/`--reason` no body; validações fail-fast (slug inválido, sem flags, `max-old-space ≥ memory-max`, `high > memory-max`, abaixo do piso, não-inteiro, slug sem teto); avisos de overcommit / encolhimento / RAM desconhecida (o Core continua sendo a autoridade fail-closed).
47
+ - **`db-move.test.ts`** (novo) — mocka o Core (`apiRequest`) e as deps de escrita. Cobre: (a) **sucesso** (só reporta "concluída" quando o poll chega em `done`; body/headers/MFA corretos no POST); (b) **falha com rollback** (`rolled_back` + `lastError` → "seguiu na origem" + `setSafeExitCode(1)`, sem afirmar sucesso); (c) **`--yes`** (repassa `yes:true` ao `confirmDestructive` e prossegue); (d) **`--dry-run`** (sem confirmação/MFA, `body.dryRun=true`, sem poll); (e) manual-cutover (pausa e instrui `db move confirm`); (f) guardrails de input (`--to` ausente, estratégia inválida, produto ambíguo → exit 1 sem tocar o Core); (g) `confirm`/`abort`/`status`/`where`; e os helpers PUROS (`classifyRelocation`, `validateMaxQuiesceMs`, `formatVerifyReportLines`).
48
+
49
+ ## [2.28.10] — 2026-09-29 (segurança: step-up MFA nas rotas endurecidas pela auditoria cli/v1 do Core)
50
+
51
+ > **Publicar ANTES do deploy do Core** com a auditoria cli/v1 2026-09-29 (branch `fix/cli-v1-auditoria-2026-09-29` do `neetru-core`). Sem este CLI, os comandos abaixo passam a bater `401 mfa_required` sempre. Contra o Core atual os headers MFA são ignorados (compatível).
52
+
53
+ ### Segurança / Corrigido
54
+
55
+ - **`neetru agent release`** — o Core exige step-up MFA em **todos** os canais (H1: publicar release atinge a frota inteira via auto-update). Novo `--mfa-token <code>`; segue o `resolveStepUp` padrão (sessão de 1h → `--mfa-token` → prompt TOTP; fail-closed sem TTY). A URL de cada binário agora é **validada localmente** com a mesma regra do Core (`src/lib/agent-artifact-url.ts`): só `https://core.neetru.com/releases/...` ou o bucket GCS de releases (`neetru-agent-releases`, ou `NEETRU_AGENT_RELEASES_BUCKET`) — sem porta, sem credencial embutida. Fora disso: erro claro com as origens aceitas, **antes** de pedir MFA ou chamar a API. `--dry-run` segue sem MFA.
56
+ - **`neetru ops reg-token`** — step-up MFA obrigatório (H5) + `--mfa-token`.
57
+ - **`neetru ops bootstrap-admin`** — com admin existente o Core exige step-up MFA (H2). Como o CLI não sabe se já há admin, manda a sessão de 1h / `--mfa-token` se houver e, no `401 mfa_required`, prompta o TOTP e repete uma vez (em `--json`/não-TTY: fail-closed com `error: "mfa_required"`). Novo **`--reactivate`** (envia `reactivate: true`) para reativar staff desligado — sem ele o Core recusa com 409 `staff_disabled`.
58
+ - **`neetru ops migrate cli-keys`** — step-up MFA fora do `--dry-run` (M4) + `--mfa-token`. Dry-run segue sem MFA.
59
+ - **`neetru vm provision`** — step-up MFA obrigatório (M6: cada chamada cria uma VM faturada), resolvido depois da confirmação de custo + `--mfa-token`.
60
+ - **`neetru deploy --env prod|production`** — step-up MFA (M7, mesmo gate de `promote`) nos três alvos (vm, workspace, cloud-run), resolvido **logo antes** do `POST /api/cli/v1/deploy` (depois do build/upload, pra o TOTP não vencer no meio). Novo `--mfa-token`. `dev`/`staging` inalterados. Com `--non-interactive`/`--json` nunca prompta (fail-closed com instrução).
61
+ - **Mensagem do 401** — `handleApiError` distingue `401 mfa_required` ("Step-up MFA exigido: … passe --mfa-token ou rode `neetru auth mfa-session`"; `--json`: `error: "mfa_required"`) de token inválido, e mostra a `message`/`error_description` que o `requireCliAuth` do Core passou a mandar (M8). O 401 legado (`{error:"Unauthorized"}`) mantém o fallback "Execute: neetru login". Exit code segue 2. O parser do `apiRequest` passa a preferir `code` explícito ao `error` string (RFC) quando os dois vêm juntos.
62
+ - Não há comando `functions move|redeploy|revert` no CLI — o gate de MFA (M5) dessas rotas não tem superfície aqui.
63
+
64
+ Revisão adversarial do Core (`neetru-core` PR #512):
65
+
66
+ - **`neetru agent canary start`** — step-up MFA (start empurra a versão pra parte da frota, mesmo peso do rollback) + `--mfa-token`.
67
+ - **`neetru servers provision`** — MFA em **toda** provisão (M6; antes só com `--is-db-vm`).
68
+ - **`neetru admin database set-status`** — o Core exige MFA quando o banco está `active`/`degraded` (H3). Como o CLI não sabe o estado, usa `withStepUpRetry` (tenta; no `401 mfa_required` pede o TOTP e repete 1x) + `--mfa-token`. `archived` passou a ser recusado pelo Core nessa rota (use `db delete`).
69
+ - **Novo `neetru admin oidc-login rotate <clientId> --product-id <id> [--immediate]`** — `POST /api/cli/v1/products/{id}/oidc-login/rotate` com step-up MFA. Mesmo contrato do `create`: o Core **não devolve o secret** (vai pro Secret Manager e o próximo deploy o injeta server-side); a saída mostra `previousSecretValidUntil` (graça de 24h) ou, com `--immediate` (`{immediate:true}`), avisa que o secret anterior já não vale e o login cai até o próximo deploy.
70
+ - **`neetru ops bootstrap-admin`** sem admin existente — envia `x-bootstrap-secret` a partir de `--bootstrap-secret <valor>` ou env `NEETRU_BOOTSTRAP_SECRET` (nunca logado/impresso); com o segredo, a sessão CLI é opcional.
71
+
72
+ ### Interno
73
+
74
+ - `cli-write`: `withStepUpRetry` (step-up condicional com retry único no `401 mfa_required`), `isMfaRequiredError`; `StepUpOptions` ganha `nonInteractive` e `skipSession`.
75
+
76
+ ### Testes
77
+
78
+ - **`step-up-mfa-auditoria-cli-v1.test.ts`** (novo, `cli-write` real + `homedir` temporário): allowlist da URL (aceita/recusa, env do bucket); `agent release` (URL ruim → exit 1 sem MFA/API; header token/sessão; fail-closed; dry-run); `reg-token`; `bootstrap-admin` (sem 401 → 1 chamada; `--reactivate` no body; retry com prompt TOTP; sessão recusada → retry ignora a sessão; `--json` fail-closed; TOTP recusado não repete → exit 2); `migrate cli-keys` (dry-run sem header; aplicar com header; fail-closed); `vm provision`; `deploy` (`isProdEnv`, staging sem MFA, prod/production com header, `--non-interactive` não prompta mesmo com TTY); revisão #512: `agent canary start`, `servers provision` sem `--is-db-vm`, `admin database set-status` (sem 401 → sem MFA; retry com TOTP; `--json` fail-closed), `admin oidc-login rotate` (rota, body com/sem `immediate`, saída, fail-closed) e `bootstrap-admin --bootstrap-secret`/env (header enviado, valor nunca impresso, sessão opcional).
79
+ - `cli-mfa-destructive-surface.test.ts`: `servers provision` de app passa a exigir MFA (teste invertido); `agent canary start` e `servers provision` entram na enumeração destrutiva.
80
+ - **`api-error-401-shape.test.ts`** (novo): parser do 401 novo/legado/RFC/`mfa_required` via `fetch` stubado; mensagens e JSON do `handleApiError`.
81
+ - `ops-new-commands.test.ts` / `deploy.test.ts`: testes existentes de `migrate cli-keys` (aplicar) e `deploy --env prod` passam `mfaToken`; o de deploy afirma o header MFA no POST.
82
+
5
83
  ## [2.28.7] — 2026-09-07 (fix: `servers force-cleanup` sem step-up MFA — drift do P0.4)
6
84
 
7
85
  ### Corrigido
package/README.md CHANGED
@@ -53,6 +53,7 @@ Cria produto + workspace + scaffold local Next.js 15 + instala deps + abre cockp
53
53
  | `neetru add <feature>` | Adicionar features ao scaffold (auth, billing, etc) |
54
54
  | `neetru deploy` | Pipeline de deploy interativo (cloud-run / vm / workspace) |
55
55
  | `neetru build [--stack ...] [--target-env dev\|workspace\|prod] [--env-file ...] [--no-cache] [--no-install]` | Empacotar produto em tarball pra deploy |
56
+ | `neetru smoke [--base-url ...] [--prod ...] [--health-path ...] [--routes csv] [--json]` | Percorrer as páginas do produto **local** antes do deploy (alcance + login + DB) + smoke de prod opcional |
56
57
  | `neetru promote` | Promover dev → staging → prod |
57
58
  | `neetru env switch <target>` | Trocar `NEETRU_ENV` no `.env.local` |
58
59
  | `neetru env set --service=X --set KEY=VAL` | Setar env vars de serviço Cloud Run |
@@ -144,6 +145,28 @@ Isso existe porque o Next.js carrega `.env.local` (arquivo do disco do dev, nunc
144
145
 
145
146
  Se o produto envolver `next.config.mjs` com `withNeetruBuildGuard` (`@neetru/sdk/build-guard`, `@neetru/sdk >= 3.1.15`), `neetru build` confere pós-build que o env realmente compilado bate com o esperado — e **recusa empacotar o tarball** se divergir, em vez de deployar um bundle quebrado silenciosamente.
146
147
 
148
+ ## Smoke local antes do deploy (`neetru smoke`)
149
+
150
+ Roda contra o servidor **dev local** (`next dev` / `neetru dev up`) e percorre as páginas do produto **antes** de `neetru build` + `neetru deploy` — pega página quebrada, login que não renderiza ou banco fora do ar sem subir nada em produção.
151
+
152
+ ```bash
153
+ # suba o dev local primeiro (ex: next dev na porta 3000), depois:
154
+ neetru smoke
155
+ neetru smoke --base-url=http://localhost:9002 --health-path=/api/health
156
+ neetru smoke --routes=/,/login,/dashboard # rotas explícitas (pula a auto-descoberta)
157
+ neetru smoke --prod=https://meu-saas.neetru.com # + smoke básico de prod (GET / e health, espera 200)
158
+ neetru smoke --json | jq '.summary' # saída de 1 linha machine-readable
159
+ ```
160
+
161
+ O que verifica (cada check vira ✓ pass / ✗ fail / ⚠ warn):
162
+
163
+ 1. **Alcance das rotas** — auto-descobre as rotas do App Router (`app/**/page.*`) e do Pages Router legado (`pages/**/*`, exceto `_app`/`_document`/`api`). Route groups `(...)` são removidos; segmentos dinâmicos `[param]`/`[...slug]` são **pulados com aviso** (não há valor de amostra trivial). GET em cada rota: passa em 200–399 sem marcador de erro no corpo; falha em `>=400` ou marcador (`Application error`, `Internal Server Error`, `__next_error__`, 404 do Next, título 500).
164
+ 2. **Login carrega** — acha a rota de login e confere que renderiza; sem um botão/afford de login detectado vira **aviso**, não falha; não-200 falha.
165
+ 3. **Banco / health** — GET no `--health-path`: 200 com corpo saudável passa; **404 vira aviso** (produto não expõe health path — DB não verificável por aqui); qualquer outro não-200 falha.
166
+ 4. **Smoke de prod** (só com `--prod`) — GET em `<prod>/` e `<prod><health-path>`, espera 200 em cada.
167
+
168
+ Exit `1` se **qualquer** check falhar (avisos não bloqueiam). Abordagem **leve, sem Playwright/headless browser** — o CLI é publicado no npm e não pode ganhar uma dependência de ~300MB de browser. Captura de erro de console (que exigiria um browser real) fica para um **v2** documentado, atrás de um flag opt-in que instale o headless sob demanda.
169
+
147
170
  ## Configuração
148
171
 
149
172
  Token Bearer fica em `~/.config/neetru-cli/auth.json` (chmod 0600 em Unix, NTFS ACL em Windows) — gerado por `neetru login` via OAuth Device Code Flow. Configs gerais ficam em `~/.config/neetru-cli/config.json` (Linux/macOS) ou `%APPDATA%\neetru-cli\config.json` (Windows):
@@ -176,7 +199,8 @@ neetru audit tail --json | jq 'select(.action | startswith("billing"))'
176
199
  - **Tokens** salvos em `~/.config/neetru-cli/auth.json` (chmod 0600 em Unix, NTFS ACL em Windows). Desde 2.11.0 o resolver canônico (`getActiveTokenSync`) prefere esse arquivo sobre o Conf storage legado (que será removido em 2.12.0)
177
200
  - **URL allowlist** (desde 2.11.0): `neetruApiUrl` rejeita hosts fora de `*.neetru.com` + `localhost` sem `--allow-untrusted-url` — fecha vetor de exfiltração do Bearer token
178
201
  - **Rate-limit** por método HTTP: GET 120/min, POST/PUT/PATCH 30/min, DELETE 5/min
179
- - **Step-up MFA** (TOTP) obrigatório em operações destrutivas: `--mfa-token <code>` ou prompt
202
+ - **Step-up MFA** (TOTP) obrigatório em operações destrutivas: sessão de 1h (`neetru auth mfa-session`), `--mfa-token <code>` ou prompt (em `--json`/sem TTY: fail-closed). Desde 2.28.10 também em `agent release` (todos os canais), `ops reg-token`, `ops bootstrap-admin` (quando já há admin; `--reactivate` reativa staff desligado), `ops migrate cli-keys` (fora do dry-run), `vm provision` e `deploy --env prod`
203
+ - **`agent release`** só aceita binários em `https://core.neetru.com/releases/...` ou no bucket GCS de releases (validado localmente, mesma regra do Core)
180
204
  - **Dry-run** disponível em comandos de mutação: `--dry-run` mostra efeito SEM aplicar
181
205
  - **Telemetry** opt-in (desde 2.11.0): habilitando `telemetry.enabled=true` o CLI emite `{command, durationMs, ok, exitCode}` anônimo via `installId` UUID. Zero token/path/email/env vazam
182
206
 
@@ -9,6 +9,24 @@ export interface OidcLoginCreateOptions {
9
9
  json?: boolean;
10
10
  }
11
11
  export declare function runOidcLoginCreate(opts: OidcLoginCreateOptions): Promise<void>;
12
+ export interface OidcLoginRotateOptions {
13
+ productId?: string;
14
+ /** `--immediate` — revoga o secret anterior na hora (sem a graça de 24h). */
15
+ immediate?: boolean;
16
+ mfaToken?: string;
17
+ json?: boolean;
18
+ }
19
+ /**
20
+ * `neetru admin oidc-login rotate <clientId> --product-id <id> [--immediate]`
21
+ *
22
+ * `POST /api/cli/v1/products/{productId}/oidc-login/rotate` (H4, auditoria
23
+ * cli/v1 2026-09-29). Mesmo contrato de `create`: o Core NÃO devolve o
24
+ * `client_secret` — grava a versão nova no Secret Manager e o PRÓXIMO deploy a
25
+ * injeta server-side. O secret anterior segue aceito até
26
+ * `previousSecretValidUntil` (24h); com `--immediate` ele é revogado na hora e o
27
+ * login do produto fica fora até o próximo deploy. Step-up MFA obrigatório.
28
+ */
29
+ export declare function runOidcLoginRotate(clientId: string, opts: OidcLoginRotateOptions): Promise<void>;
12
30
  export interface OidcLoginListOptions {
13
31
  productId?: string;
14
32
  json?: boolean;
@@ -13,6 +13,8 @@
13
13
  * Sub-comandos:
14
14
  * create — cria o login-client (PUBLIC/PKCE por default; --confidential p/ BFF)
15
15
  * list — lista os login-clients do produto (mascarado, sem secret)
16
+ * rotate — rotaciona o client_secret (MFA; --immediate revoga o anterior na hora)
17
+ * rotate — rotaciona o client_secret (MFA; --immediate revoga o anterior na hora)
16
18
  *
17
19
  * Dois padrões de `redirect_uri` (o `/authorize` faz match EXATO byte-a-byte):
18
20
  * - PUBLIC (PKCE client-side puro, ex.: NeetruLoginButton sem backend) → o SDK
@@ -23,11 +25,14 @@
23
25
  * Endpoints (Core):
24
26
  * GET /api/cli/v1/products/{productId}/oidc-login
25
27
  * POST /api/cli/v1/products/{productId}/oidc-login
28
+ * POST /api/cli/v1/products/{productId}/oidc-login/rotate
29
+ * POST /api/cli/v1/products/{productId}/oidc-login/rotate
26
30
  */
27
31
  import chalk from 'chalk';
28
32
  import ora from 'ora';
29
33
  import { apiRequest } from '../../lib/api-client.js';
30
34
  import { requireToken, handleApiError } from '../../lib/cli-read.js';
35
+ import { resolveStepUp } from '../../lib/cli-write.js';
31
36
  import { renderTable } from '../../lib/render.js';
32
37
  import { log } from '../../utils/logger.js';
33
38
  import { safeExit } from '../../utils/safe-exit.js';
@@ -67,9 +72,11 @@ export async function runOidcLoginCreate(opts) {
67
72
  // pula a tela (autoConsent) — use só para integração 1ª-parte consciente.
68
73
  if (opts.noConsent)
69
74
  body.autoConsent = true;
70
- const headers = {};
71
- if (opts.mfaToken)
72
- headers['x-neetru-mfa-token'] = opts.mfaToken;
75
+ // step-up MFA canônico (mesmo hotfix de `admin database rotate` 2026-08-16):
76
+ // honra a sessão MFA de 1h (`neetru auth mfa-session`) → X-Neetru-MFA-Session,
77
+ // senão --mfa-token → X-Neetru-MFA-Token, senão prompt (fail-closed em
78
+ // --json/não-TTY). Antes montava o header só do --mfa-token, ignorando a sessão.
79
+ const { headers } = await resolveStepUp({ mfaToken: opts.mfaToken, json: opts.json });
73
80
  const spinner = opts.json
74
81
  ? null
75
82
  : ora({ text: 'Criando login-client OIDC…', color: 'blue' }).start();
@@ -108,6 +115,64 @@ export async function runOidcLoginCreate(opts) {
108
115
  ' bater com o que o SDK envia (PKCE client-side puro = a ORIGIN do produto).'));
109
116
  console.log();
110
117
  }
118
+ /**
119
+ * `neetru admin oidc-login rotate <clientId> --product-id <id> [--immediate]`
120
+ *
121
+ * `POST /api/cli/v1/products/{productId}/oidc-login/rotate` (H4, auditoria
122
+ * cli/v1 2026-09-29). Mesmo contrato de `create`: o Core NÃO devolve o
123
+ * `client_secret` — grava a versão nova no Secret Manager e o PRÓXIMO deploy a
124
+ * injeta server-side. O secret anterior segue aceito até
125
+ * `previousSecretValidUntil` (24h); com `--immediate` ele é revogado na hora e o
126
+ * login do produto fica fora até o próximo deploy. Step-up MFA obrigatório.
127
+ */
128
+ export async function runOidcLoginRotate(clientId, opts) {
129
+ const token = await requireToken(opts.json);
130
+ function fail(message) {
131
+ if (opts.json) {
132
+ console.log(JSON.stringify({ ok: false, error: 'missing_param', message }));
133
+ }
134
+ else {
135
+ log.error(message);
136
+ }
137
+ return safeExit(1);
138
+ }
139
+ if (!clientId || !clientId.trim())
140
+ fail('<clientId> é obrigatório.');
141
+ if (!opts.productId)
142
+ fail('--product-id é obrigatório.');
143
+ const { headers } = await resolveStepUp({ mfaToken: opts.mfaToken, json: opts.json });
144
+ const spinner = opts.json
145
+ ? null
146
+ : ora({ text: `Rotacionando credencial de ${clientId}…`, color: 'blue' }).start();
147
+ let res;
148
+ try {
149
+ res = await apiRequest(`/api/cli/v1/products/${encodeURIComponent(opts.productId)}/oidc-login/rotate`, {
150
+ method: 'POST',
151
+ token,
152
+ headers,
153
+ body: { clientId: clientId.trim(), ...(opts.immediate ? { immediate: true } : {}) },
154
+ });
155
+ spinner?.stop();
156
+ }
157
+ catch (error) {
158
+ spinner?.fail('Falha ao rotacionar a credencial.');
159
+ handleApiError(error, opts.json);
160
+ }
161
+ if (opts.json) {
162
+ console.log(JSON.stringify(res));
163
+ return;
164
+ }
165
+ console.log();
166
+ log.success(`Credencial do login-client ${chalk.cyan(res.clientId)} rotacionada.`);
167
+ console.log(chalk.yellow(' NEETRU_CLIENT_SECRET novo → Secret Manager; NÃO é exibido. O próximo deploy o injeta server-side.'));
168
+ if (res.immediate || opts.immediate) {
169
+ console.log(chalk.red(' --immediate: o secret anterior JÁ NÃO VALE — o login do produto fica fora até o próximo deploy. Rode o deploy agora.'));
170
+ }
171
+ else if (res.previousSecretValidUntil) {
172
+ console.log(` ${chalk.dim('secret anterior aceito até')} ${res.previousSecretValidUntil} — faça o deploy antes disso.`);
173
+ }
174
+ console.log();
175
+ }
111
176
  export async function runOidcLoginList(opts) {
112
177
  const token = await requireToken(opts.json);
113
178
  if (!opts.productId) {
@@ -1 +1 @@
1
- {"version":3,"file":"oidc-login.js","sourceRoot":"","sources":["../../../src/commands/admin/oidc-login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA6CpD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5C,SAAS,IAAI,CAAC,OAAe;QAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,QAAQ,CAAC,CAAC,CAAU,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CACF,yEAAyE;YACvE,yEAAyE;YACzE,iCAAiC,CACpC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAA8B,IAAI,CAAC,YAAY;QAC7D,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,IAAI,GAA4B;QACpC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY;QACZ,UAAU;KACX,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnF,CAAC;IACD,mFAAmF;IACnF,0EAA0E;IAC1E,IAAI,IAAI,CAAC,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAE5C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvE,IAAI,GAAmB,CAAC;IACxB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,UAAU,CACpB,wBAAwB,IAAI,CAAC,SAAS,aAAa,EACnD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CACzC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC9C,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,OAAO,CAAC,6BAA6B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,gFAAgF,CACjF,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,kFAAkF,CACnF,CACF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,iFAAiF;QAC/E,8EAA8E,CACjF,CACF,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA0B;IAE1B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAC7G,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC3C,CAAC;QACD,QAAQ,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpE,IAAI,GAAiB,CAAC;IACtB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,UAAU,CACpB,wBAAwB,IAAI,CAAC,SAAS,aAAa,EACnD,EAAE,KAAK,EAAE,CACV,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAChD,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,gCAAgC,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IAC7E,WAAW,CACT;QACE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/D,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtD,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzF;YACE,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;SACtE;KACF,EACD,GAAG,CAAC,OAAO,CACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"oidc-login.js","sourceRoot":"","sources":["../../../src/commands/admin/oidc-login.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import chalk from 'chalk';
22
22
  import ora from 'ora';
23
23
  import { apiRequest } from '../../lib/api-client.js';
24
24
  import { requireToken, handleApiError } from '../../lib/cli-read.js';
25
+ import { resolveStepUp } from '../../lib/cli-write.js';
25
26
  import { renderTable } from '../../lib/render.js';
26
27
  import { log } from '../../utils/logger.js';
27
28
  import { safeExit } from '../../utils/safe-exit.js';
@@ -52,9 +53,13 @@ export async function runSdkCredentialCreate(opts) {
52
53
  const body = { name: opts.name };
53
54
  if (scopesList)
54
55
  body.allowedScopes = scopesList;
55
- const headers = {};
56
- if (opts.mfaToken)
57
- headers['x-neetru-mfa-token'] = opts.mfaToken;
56
+ // step-up MFA canônico (mesmo hotfix aplicado em `admin database rotate`
57
+ // 2026-08-16): resolveStepUp honra a sessão MFA de 1h (`neetru auth
58
+ // mfa-session`) → X-Neetru-MFA-Session, senão --mfa-token → X-Neetru-MFA-Token,
59
+ // senão prompt (fail-closed em --json/não-TTY com mensagem acionável). Antes
60
+ // montava o header só de --mfa-token, IGNORANDO a sessão de 1h — o operador com
61
+ // sessão ativa levava 401 fantasma ('Token inválido... neetru login').
62
+ const { headers } = await resolveStepUp({ mfaToken: opts.mfaToken, json: opts.json });
58
63
  const spinner = opts.json
59
64
  ? null
60
65
  : ora({ text: 'Criando credencial OIDC…', color: 'blue' }).start();
@@ -145,9 +150,9 @@ export async function runSdkCredentialRevoke(clientId, opts) {
145
150
  }
146
151
  safeExit(1);
147
152
  }
148
- const headers = {};
149
- if (opts.mfaToken)
150
- headers['x-neetru-mfa-token'] = opts.mfaToken;
153
+ // step-up MFA canônico (idem create): honra a sessão de 1h antes de cair no
154
+ // --mfa-token/prompt, em vez de montar o header só do --mfa-token.
155
+ const { headers } = await resolveStepUp({ mfaToken: opts.mfaToken, json: opts.json });
151
156
  const spinner = opts.json
152
157
  ? null
153
158
  : ora({ text: `Revogando ${clientId}…`, color: 'yellow' }).start();
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-credential.js","sourceRoot":"","sources":["../../../src/commands/admin/sdk-credential.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk-credential.js","sourceRoot":"","sources":["../../../src/commands/admin/sdk-credential.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,7 @@ export interface AgentReleaseOptions {
9
9
  artifact?: string[];
10
10
  /** se setado, só monta o payload e imprime, não chama API */
11
11
  dryRun?: boolean;
12
+ /** `--mfa-token <código>` — TOTP do step-up MFA (pula o prompt interativo). */
13
+ mfaToken?: string;
12
14
  }
13
15
  export declare function runAgentRelease(opts: AgentReleaseOptions): Promise<void>;
@@ -11,6 +11,11 @@
11
11
  * Backend: `POST api.neetru.com/cli/v1/agent/release` (Bearer token nrt_*),
12
12
  * exige role `admin` em `cli_api_keys/{keyId}`.
13
13
  *
14
+ * Auditoria cli/v1 2026-09-29 (H1): o Core exige step-up MFA em TODO canal
15
+ * (sessão de 1h via `neetru auth mfa-session` → `--mfa-token` → prompt TOTP) e
16
+ * só aceita `artifacts.<arch>.url` em `https://core.neetru.com/releases/...` ou
17
+ * no bucket GCS de releases — validado aqui ANTES de chamar a API.
18
+ *
14
19
  * Roadmap:
15
20
  * - Sprint futura: comando `--upload` que faz GCS upload + sha256 + register
16
21
  * numa só chamada (precisa de credenciais GCP locais ou signed URL via Core).
@@ -21,13 +26,18 @@ import * as path from 'node:path';
21
26
  import { createHash } from 'node:crypto';
22
27
  import chalk from 'chalk';
23
28
  import { log } from '../utils/logger.js';
24
- import { apiRequest, CliApiError, CliNetworkError } from '../lib/api-client.js';
29
+ import { apiRequest } from '../lib/api-client.js';
30
+ import { handleApiError } from '../lib/api-error.js';
31
+ import { resolveStepUp } from '../lib/cli-write.js';
32
+ import { AGENT_ARTIFACT_URL_HINT, agentReleasesBucket, isAllowedAgentArtifactUrl, } from '../lib/agent-artifact-url.js';
25
33
  import { safeExit } from '../utils/safe-exit.js';
26
34
  const VALID_CHANNELS = ['stable', 'beta', 'canary'];
27
35
  const VALID_ARCHS = ['linux-x64', 'linux-arm64', 'darwin-x64', 'darwin-arm64'];
28
36
  const SEMVER_RE = /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/;
29
37
  const SHA256_RE = /^[a-f0-9]{64}$/;
30
- const GCS_BASE = 'https://storage.googleapis.com/neetru-agent-releases/releases';
38
+ function gcsBase() {
39
+ return `https://storage.googleapis.com/${agentReleasesBucket()}/releases`;
40
+ }
31
41
  function isArch(s) {
32
42
  return VALID_ARCHS.includes(s);
33
43
  }
@@ -85,18 +95,18 @@ export async function runAgentRelease(opts) {
85
95
  // ── validação básica ───────────────────────────────────────────────
86
96
  if (!opts.version) {
87
97
  log.error('--version é obrigatório (ex: 1.2.0).');
88
- safeExit(2);
98
+ safeExit(1);
89
99
  return;
90
100
  }
91
101
  if (!SEMVER_RE.test(opts.version)) {
92
102
  log.error(`--version inválido "${opts.version}". Use semver (1.2.3 ou 1.2.3-beta.1).`);
93
- safeExit(2);
103
+ safeExit(1);
94
104
  return;
95
105
  }
96
106
  const channel = (opts.channel ?? 'beta').toLowerCase();
97
107
  if (!isChannel(channel)) {
98
108
  log.error(`--channel inválido "${channel}". Válidos: ${VALID_CHANNELS.join(' | ')}`);
99
- safeExit(2);
109
+ safeExit(1);
100
110
  return;
101
111
  }
102
112
  // ── changelog ───────────────────────────────────────────────────────
@@ -107,13 +117,13 @@ export async function runAgentRelease(opts) {
107
117
  }
108
118
  catch (err) {
109
119
  log.error(`Falha ao ler changelog "${changelog}": ${err.message}`);
110
- safeExit(3);
120
+ safeExit(1);
111
121
  return;
112
122
  }
113
123
  }
114
124
  if (!changelog || changelog.trim().length < 10) {
115
125
  log.error('--changelog obrigatório (mín 10 chars). Use "@path/to/CHANGELOG.md" pra ler de arquivo.');
116
- safeExit(2);
126
+ safeExit(1);
117
127
  return;
118
128
  }
119
129
  // ── monta artifacts ────────────────────────────────────────────────
@@ -124,14 +134,14 @@ export async function runAgentRelease(opts) {
124
134
  const { arch, filePath } = parseBinaryArg(a);
125
135
  log.info(`Computando sha256 de ${chalk.dim(filePath)}...`);
126
136
  const { sha256, sizeBytes } = await sha256File(filePath);
127
- const url = `${GCS_BASE}/${encodeURIComponent(opts.version)}/neetru-agent-${arch}`;
137
+ const url = `${gcsBase()}/${encodeURIComponent(opts.version)}/neetru-agent-${arch}`;
128
138
  artifacts[arch] = { url, sha256, sizeBytes };
129
139
  log.success(` ${arch}: sha256=${sha256.slice(0, 12)}... (${(sizeBytes / 1_000_000).toFixed(1)} MB)`);
130
140
  log.dim(` URL: ${url}`);
131
141
  }
132
142
  catch (err) {
133
143
  log.error(err.message);
134
- safeExit(2);
144
+ safeExit(1);
135
145
  return;
136
146
  }
137
147
  }
@@ -144,13 +154,25 @@ export async function runAgentRelease(opts) {
144
154
  }
145
155
  catch (err) {
146
156
  log.error(err.message);
147
- safeExit(2);
157
+ safeExit(1);
148
158
  return;
149
159
  }
150
160
  }
151
161
  if (Object.keys(artifacts).length === 0) {
152
162
  log.error('Nenhum artifact informado. Use --binary arch=path ou --artifact arch=URL@sha256@sizeBytes.');
153
- safeExit(2);
163
+ safeExit(1);
164
+ return;
165
+ }
166
+ // H1 (auditoria cli/v1 2026-09-29): mesma allowlist de origem do Core —
167
+ // falha aqui, com mensagem clara, em vez de um 400 genérico da API.
168
+ const badUrls = Object.entries(artifacts).filter(([, a]) => !isAllowedAgentArtifactUrl(a.url));
169
+ if (badUrls.length > 0) {
170
+ for (const [arch, a] of badUrls) {
171
+ log.error(`--artifact ${arch}: URL fora da origem permitida de releases: ${a.url}`);
172
+ }
173
+ log.dim(` Origens aceitas: ${AGENT_ARTIFACT_URL_HINT}`);
174
+ log.dim(' Suba o binário pro bucket de releases (ou use --binary, que deriva a URL canônica).');
175
+ safeExit(1);
154
176
  return;
155
177
  }
156
178
  // ── payload ─────────────────────────────────────────────────────────
@@ -168,9 +190,13 @@ export async function runAgentRelease(opts) {
168
190
  return;
169
191
  }
170
192
  log.info(`Registrando release ${chalk.bold(opts.version)} (channel=${chalk.bold(channel)}, ${Object.keys(artifacts).length} arch(s))...`);
193
+ // H1: publicar release atinge a frota inteira via auto-update — step-up MFA
194
+ // obrigatório em todos os canais (mesmo fluxo de `agent yank`).
195
+ const { headers } = await resolveStepUp({ mfaToken: opts.mfaToken });
171
196
  try {
172
197
  const r = await apiRequest('/api/cli/v1/agent/release', {
173
198
  method: 'POST',
199
+ headers,
174
200
  body: payload,
175
201
  });
176
202
  if (r.alreadyExists) {
@@ -182,24 +208,10 @@ export async function runAgentRelease(opts) {
182
208
  log.dim(` Painel: https://core.neetru.com/agent/releases`);
183
209
  }
184
210
  catch (err) {
185
- if (err instanceof CliApiError) {
186
- if (err.status === 401 || err.status === 403) {
187
- log.error('Não autorizado. CLI precisa estar logado com chave admin.');
188
- log.dim(' neetru login');
189
- safeExit(4);
190
- return;
191
- }
192
- log.error(`API ${err.status}: ${err.message}`);
193
- safeExit(5);
194
- return;
195
- }
196
- if (err instanceof CliNetworkError) {
197
- log.error(`Conexão falhou: ${err.message}`);
198
- safeExit(6);
199
- return;
200
- }
201
- log.error(err instanceof Error ? err.message : String(err));
202
- safeExit(7);
211
+ // Exit codes canônicos (api-error.ts): 401→2, 403→3, 4xx→1, 5xx/rede→4.
212
+ // Antes: 401 e 403 fundidos em exit 4, API→5, rede→6, unknown→7 — fora da
213
+ // convenção única e ilegível pra CI. Auditoria UX 2026-09.
214
+ handleApiError(err);
203
215
  }
204
216
  }
205
217
  //# sourceMappingURL=agent-release.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-release.js","sourceRoot":"","sources":["../../src/commands/agent-release.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-release.js","sourceRoot":"","sources":["../../src/commands/agent-release.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface AgentYankOptions extends StepUpOptions {
5
5
  export declare function runAgentYank(version: string, opts: AgentYankOptions): Promise<void>;
6
6
  export declare function runAgentCanaryStart(version: string, opts: {
7
7
  json?: boolean;
8
+ mfaToken?: string;
8
9
  }): Promise<void>;
9
10
  export interface AgentCanaryRollbackOptions extends StepUpOptions {
10
11
  reason: string;