@neetru/cli 2.7.4 → 2.8.0

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 (75) hide show
  1. package/CHANGELOG.md +220 -208
  2. package/README.md +137 -137
  3. package/dist/cli-kit/format.d.ts +49 -0
  4. package/dist/cli-kit/format.js +88 -0
  5. package/dist/cli-kit/format.js.map +1 -0
  6. package/dist/cli-kit/glyphs.d.ts +22 -0
  7. package/dist/cli-kit/glyphs.js +22 -0
  8. package/dist/cli-kit/glyphs.js.map +1 -0
  9. package/dist/cli-kit/index.d.ts +13 -0
  10. package/dist/cli-kit/index.js +12 -0
  11. package/dist/cli-kit/index.js.map +1 -0
  12. package/dist/cli-kit/palette.d.ts +10 -0
  13. package/dist/cli-kit/palette.js +36 -0
  14. package/dist/cli-kit/palette.js.map +1 -0
  15. package/dist/commands/ai.js +8 -8
  16. package/dist/commands/autocomplete.js +34 -34
  17. package/dist/commands/db.d.ts +87 -7
  18. package/dist/commands/db.js +697 -126
  19. package/dist/commands/db.js.map +1 -1
  20. package/dist/commands/deploy.d.ts +5 -0
  21. package/dist/commands/deploy.js +68 -0
  22. package/dist/commands/deploy.js.map +1 -1
  23. package/dist/commands/dev.d.ts +68 -0
  24. package/dist/commands/dev.js +345 -0
  25. package/dist/commands/dev.js.map +1 -0
  26. package/dist/commands/init.js +121 -121
  27. package/dist/commands/new.d.ts +6 -0
  28. package/dist/commands/new.js +31 -10
  29. package/dist/commands/new.js.map +1 -1
  30. package/dist/commands/products-db.d.ts +1 -1
  31. package/dist/commands/products-db.js +17 -4
  32. package/dist/commands/products-db.js.map +1 -1
  33. package/dist/commands/upgrade.js +5 -2
  34. package/dist/commands/upgrade.js.map +1 -1
  35. package/dist/index.js +258 -42
  36. package/dist/index.js.map +1 -1
  37. package/dist/lib/ai/context.js +90 -90
  38. package/dist/lib/db-local/db-json.d.ts +63 -0
  39. package/dist/lib/db-local/db-json.js +189 -0
  40. package/dist/lib/db-local/db-json.js.map +1 -0
  41. package/dist/lib/db-local/env.d.ts +26 -0
  42. package/dist/lib/db-local/env.js +64 -0
  43. package/dist/lib/db-local/env.js.map +1 -0
  44. package/dist/lib/db-local/fingerprint.d.ts +8 -0
  45. package/dist/lib/db-local/fingerprint.js +28 -0
  46. package/dist/lib/db-local/fingerprint.js.map +1 -0
  47. package/dist/lib/db-local/index.d.ts +15 -0
  48. package/dist/lib/db-local/index.js +14 -0
  49. package/dist/lib/db-local/index.js.map +1 -0
  50. package/dist/lib/db-pipeline/build-deps.d.ts +14 -0
  51. package/dist/lib/db-pipeline/build-deps.js +158 -0
  52. package/dist/lib/db-pipeline/build-deps.js.map +1 -0
  53. package/dist/lib/db-pipeline/errors.d.ts +29 -0
  54. package/dist/lib/db-pipeline/errors.js +29 -0
  55. package/dist/lib/db-pipeline/errors.js.map +1 -0
  56. package/dist/lib/db-pipeline/index.d.ts +26 -0
  57. package/dist/lib/db-pipeline/index.js +25 -0
  58. package/dist/lib/db-pipeline/index.js.map +1 -0
  59. package/dist/lib/db-pipeline/pipeline.d.ts +13 -0
  60. package/dist/lib/db-pipeline/pipeline.js +119 -0
  61. package/dist/lib/db-pipeline/pipeline.js.map +1 -0
  62. package/dist/lib/db-pipeline/rehearse.d.ts +99 -0
  63. package/dist/lib/db-pipeline/rehearse.js +219 -0
  64. package/dist/lib/db-pipeline/rehearse.js.map +1 -0
  65. package/dist/lib/db-pipeline/types.d.ts +112 -0
  66. package/dist/lib/db-pipeline/types.js +20 -0
  67. package/dist/lib/db-pipeline/types.js.map +1 -0
  68. package/package.json +63 -62
  69. package/templates/auth/callback.ts +22 -22
  70. package/templates/auth/sign-in.tsx +41 -41
  71. package/templates/billing/checkout.ts +22 -22
  72. package/templates/billing/page.tsx +43 -43
  73. package/templates/support/ticket-form.tsx +68 -68
  74. package/templates/usage/track.ts +30 -30
  75. package/templates/users/profile.tsx +43 -43
package/CHANGELOG.md CHANGED
@@ -1,208 +1,220 @@
1
- # Changelog @neetru/cli
2
-
3
- Convenção: [Keep a Changelog](https://keepachangelog.com/) + [SemVer](https://semver.org/).
4
-
5
- ## [2.7.4] — 2026-05-20 (submenus redesenhados)
6
-
7
- ### Adicionado
8
-
9
- - Submenu **"Começar um projeto"** no menu principal reúne o scaffold
10
- local (`neetru init`), a criação completa (`neetru new`) e uma tela de
11
- info sobre o `@neetru/sdk` (o que é, como instalar e consumir).
12
- - Os 10 submenus ganharam o **mesmo visual do menu principal**: moldura
13
- azul-marinho, marcador `> <` no item ativo e navegação por setas — em
14
- coluna única, alinhada à esquerda.
15
-
16
- ### Corrigido
17
-
18
- - Submenu não engole mais a primeira seta. O menu principal entregava o
19
- stdin pausado / fora de raw mode pro submenu, e o inquirer perdia a
20
- 1ª tecla — só respondia depois de um toque inicial. Agora o stdin fica
21
- "quente" na entrega; a seta funciona de cara.
22
-
23
- ## [2.7.3] 2026-05-20 (polish do cabeçalho)
24
-
25
- ### Mudado
26
-
27
- - Cabeçalho do `neetru` interativo: logo renderizado **ao lado** do texto
28
- (antes era acima), com a sessão e a versão alinhadas à direita do logo.
29
- - Paleta de contorno do menu e do logo ajustada para um azul mais suave.
30
-
31
- ## [2.7.2] 2026-05-20 (aviso de versão + menu em 2 colunas)
32
-
33
- ### Adicionado
34
-
35
- - O cabeçalho do `neetru` interativo mostra a **versão instalada** (`v2.7.2`)
36
- ao lado do usuário logado. Quando há uma versão mais nova publicada no
37
- npm, aparece uma linha **amarela** avisando pra rodar `neetru upgrade`.
38
- A checagem tem timeout curto e é à prova de falha — offline não trava o
39
- CLI.
40
- - Menu principal redesenhado em **duas colunas**, com navegação por setas
41
- (↑/↓/←/→) e contorno azul-marinho; o item ativo é marcado com `> <`.
42
-
43
- ## [2.7.1] — 2026-05-20 (UI do CLI interativo)
44
-
45
- ### Adicionado
46
-
47
- - Logo Neetru em ANSI truecolor no cabeçalho do `neetru` interativo.
48
- - Cabeçalho mostra o usuário logado (email), lido localmente do
49
- `auth.json` sem chamada de rede.
50
- - Menu principal com o nome do recurso + uma descrição curta abaixo,
51
- quando útil.
52
-
53
- ### Corrigido
54
-
55
- - O CLI interativo não encerra mais sozinho: comandos que chamavam
56
- `process.exit()` em erro (ex.: "Nenhum server encontrado") matavam o
57
- menu inteiro. Agora o erro é capturado e o CLI volta ao menu — só
58
- "Sair" (ou Ctrl+C) encerra.
59
-
60
- ## [2.7.0] 2026-05-20 (Fluxo de Ambientes Fase 3 — destino cloud-run)
61
-
62
- ### Adicionado
63
-
64
- - `neetru deploy --target=cloud-run` — caminho de deploy pro destino Cloud Run
65
- dedicado. Aceita `--image <uri>` (imagem de container já buildada e pushada)
66
- ou faz `docker build` + `docker push` automático via `--registry <host>`
67
- (Artifact Registry). O destino `cloud-run` agora aparece no menu interativo.
68
-
69
- ### Mudado
70
-
71
- - `neetru promote` — vocabulário de estágios migrado para `dev | staging | prod`
72
- (antes `dev/workspace/beta/prod`). Gates: 24h em `dev→staging`,
73
- 168h + canary em `staging→prod`.
74
- - `neetru deploy --target` — sem valor default; omitir abre o menu interativo
75
- (workspace / cloud-run / vm). Modo não-interativo continua assumindo `vm`.
76
-
77
- ## [2.0.0] 2026-05-06 (Sprint 12 CLI estabilizada)
78
-
79
- ### Adicionado
80
-
81
- - `neetru doctor` — diagnóstico completo do ambiente: token CLI, Core acessível,
82
- schema do `neetru.config.json`, valor de `NEETRU_ENV`, e versão do CLI
83
- comparada com a `latest` no npm. Saída em tabela colorida (default) ou
84
- JSON (`--json`). Diferença pra `validate`: doctor inclui environment +
85
- version mismatch (warning, não fail).
86
- - `neetru upgrade` — verifica `dist-tags.latest` em
87
- `https://registry.npmjs.org/@neetru/cli` e exibe instrução de upgrade
88
- (`npm install -g @neetru/cli@latest`). Sem auto-install — não quebra
89
- pipelines pinados.
90
- - `neetru autocomplete <bash|zsh|pwsh>` — gera script de shell completion
91
- pra os 22 subcomandos top-level. Usuário cola na config do shell:
92
- `neetru autocomplete bash >> ~/.bashrc`.
93
- - `neetru config set telemetry.enabled <true|false>` opt-in explícito de
94
- telemetria. Default desligado. Quando ligado, CLI envia eventos
95
- anonimizados pra `POST /sdk/v1/telemetry/log` (placeholder na v2.0).
96
- Nunca envia tokens, paths absolutos ou conteúdo de arquivos.
97
-
98
- ### Bumped
99
-
100
- - `1.4.0 2.0.0` (major bump por convenção de estabilidade sem breaking
101
- changes funcionais).
102
-
103
- ### Não publicado no npm ainda
104
-
105
- Bump local. Publish manual pra npm fica deferido owner aprovará. Build
106
- local (`npm run build` em `cli/`) gera o `dist/` pronto pra publicação.
107
-
108
- ## [1.3.0] 2026-05-06
109
-
110
- ### Adicionado
111
-
112
- - `neetru add <feature>` copia template em `cli/templates/{feature}/*` para
113
- `src/lib/neetru/{feature}/*` no projeto atual. Features: `auth`, `billing`,
114
- `usage`, `users`, `support`. Suporta `--force` pra sobrescrever.
115
- - `neetru mocks reset` reseta `.neetru/dev-fixtures.json` para `{}` (útil
116
- com `NEETRU_ENV=dev`).
117
- - `neetru env switch <dev|workspace|production>`atualiza/insere
118
- `NEETRU_ENV=<value>` em `.env.local` preservando as outras chaves.
119
- - `neetru logs` ganhou flags:
120
- - `--product <productId>` filtra logs por produto.
121
- - `--channel <channel>` — filtra por channel (stdout/stderr/app/...).
122
- - `--correlation-id <uuid>` — filtra por correlation ID.
123
-
124
- ### Templates novos (`cli/templates/`)
125
-
126
- - `auth/sign-in.tsx`, `auth/callback.ts`
127
- - `billing/page.tsx`, `billing/checkout.ts`
128
- - `usage/track.ts`
129
- - `users/profile.tsx`
130
- - `support/ticket-form.tsx`
131
-
132
- ### Não publicado no npm ainda
133
-
134
- Bump local `1.2.0 1.3.0`. Publish pra npm fica deferido — owner aprovará
135
- manualmente quando quiser. Build local (`npm run build` em `cli/`) já compila.
136
-
137
- ## [1.2.0] — 2026-05-06
138
-
139
- **Consolidação das duas linhas paralelas.** Esta versão unifica os comandos das duas linhas de CLI que estavam coexistindo:
140
-
141
- - **`@neetru/cli@1.0.x` (publicada no npm)**: linha *workspace-centric* com `init`, `add`, `validate`, `generate-types`, `whoami`, `login`, `status`, `logs`, `deploy`, `open`. APIs: `/api/v1/cli/workspace/*`.
142
- - **`@neetru/cli@0.1.0` (monorepo, não publicada)**: linha *server-centric* com `ai`, `init`, `config`, `login`, `logout`, `whoami`, `build`, `deploy`, `publish`. APIs: `/api/v1/cli/{catalog,deploy,servers}`.
143
-
144
- As duas falam **APIs distintas e complementares** do mesmo Neetru Core, refletindo a topologia real do produto:
145
-
146
- ```
147
- Workspace (prototipação) ──build/promote──► Server VM ou Cloud Run (produção)
148
- ```
149
-
150
- A `1.2.0` traz ambos os conjuntos de comandos numa única CLI. O monorepo passa a ser a fonte canônica.
151
-
152
- ### Adicionado em relação a `1.0.1`
153
-
154
- Comandos da linha *server-centric* (deploy via VM agent ou Cloud Run):
155
-
156
- - `neetru ai` REPL multi-model (Claude/OpenAI/Gemini) com contexto Neetru-aware
157
- - `neetru build` — empacota produto local em tarball + manifest com sha256, detecção automática de stack (node/docker/php-apache/static)
158
- - `neetru deploy` — pipeline E2E interativo (escolha de produto/server/domain/port + polling status até estado terminal). Suporta `--non-interactive` para CI.
159
- - `neetru publish` registra produto no catálogo público (`public_products`), com `--draft` e `--unpublish`
160
- - `neetru config {set|get|path}` — gerenciamento de chaves de API e config local
161
- - `neetru logout` — limpa credenciais
162
- - `neetru login --token nrt_<keyId>_<secret>` modo CI/legacy paralelo ao Device Code OAuth
163
- - `neetru login --json` — saída machine-readable para scripts
164
-
165
- ### Mantido de `1.0.1` (re-implementado em TypeScript com convenções do monorepo)
166
-
167
- - `neetru status --client-id <id>` — status de workspace (build/deploy último, domínio, tier, expira em N dias)
168
- - `neetru logs --client-id <id>` visualiza logs do workspace; suporta `-f` follow + `-n N` lines + `--since 30m` + `--level error`
169
- - `neetru validate` — health-check da config local + ping `/api/health` + whoami
170
- - `neetru open [target]` — abre dashboard, builds, logs, workspaces, products, servers, incidents no browser
171
- - `neetru init <name>` agora gera projeto Next.js 15 OU Node API (Fastify) com schema canônico v2
172
-
173
- ### Backlog 1.3.x
174
-
175
- Comandos que ainda dependem de design/templates novos:
176
-
177
- - `neetru add <feature>` scaffolds OAuth/billing/usage/users
178
- - `neetru generate-types` — codegen TypeScript de planos/features/entitlements
179
-
180
- ### Alterado
181
-
182
- - Package agora é ESM nativo (`"type": "module"`). Imports usam `.js` extension.
183
- - `neetru login` agora usa Device Code OAuth (RFC 8628) por default; `--token` permanece para CI.
184
-
185
- ### Migração de `1.0.x`
186
-
187
- Não caminho 100% automático porque a config local muda:
188
-
189
- - `1.0.x` lia `neetru.json` workspace-local com `{clientId, coreUrl}` + var de ambiente `NEETRU_CLIENT_SECRET`
190
- - `1.2.0` lê `~/.config/neetru-cli/auth.json` (Bearer token salvo por `neetru login`) + `neetru.config.json` por projeto com `{slug, runtime, publish}`
191
-
192
- Recomendação:
193
-
194
- 1. `npm uninstall -g @neetru/cli && npm install -g @neetru/cli@1.2.0`
195
- 2. `neetru login` (Device Code) gera credencial Bearer no novo formato
196
- 3. Para comandos workspace (`status`, `logs`, `open`), passe `--client-id <oauthClientId>` explicitamente — o `clientId` continua sendo o `oauthClientId` do seu workspace, achável em UI Core `/workspaces/{id}`
197
-
198
- ## [1.0.1] — anterior
199
-
200
- Linha workspace publicada no npm. Comandos: `init`, `add`, `validate`, `generate-types`, `whoami`, `login`, `status`, `logs`, `deploy`, `open`. APIs: `/api/v1/cli/workspace/*`.
201
-
202
- ## [1.0.0] anterior
203
-
204
- Primeira versão pública.
205
-
206
- ## [0.1.0] interno (não publicado)
207
-
208
- Snapshot interno do monorepo durante desenvolvimento da Sprint 1+. Substituído por `1.2.0`.
1
+ # Changelog @neetru/cli
2
+
3
+ Convenção: [Keep a Changelog](https://keepachangelog.com/) + [SemVer](https://semver.org/).
4
+
5
+ ## [2.7.5] — 2026-05-20 (fix do crash no upgrade)
6
+
7
+ ### Corrigido
8
+
9
+ - `neetru upgrade` não crasha mais ao terminar. O comando chamava
10
+ `process.exit(0)` logo após o `fetch` ao npm no Windows isso
11
+ derrubava o libuv com `Assertion failed: !(handle->flags &
12
+ UV_HANDLE_CLOSING)` (`async.c`), porque o socket do undici (fetch
13
+ nativo) ainda estava em teardown. Agora o comando retorna; o event
14
+ loop drena sozinho (o undici dá unref nos sockets idle) e o processo
15
+ encerra limpo na hora.
16
+
17
+ ## [2.7.4] — 2026-05-20 (submenus redesenhados)
18
+
19
+ ### Adicionado
20
+
21
+ - Submenu **"Começar um projeto"** no menu principal reúne o scaffold
22
+ local (`neetru init`), a criação completa (`neetru new`) e uma tela de
23
+ info sobre o `@neetru/sdk` (o que é, como instalar e consumir).
24
+ - Os 10 submenus ganharam o **mesmo visual do menu principal**: moldura
25
+ azul-marinho, marcador `> <` no item ativo e navegação por setas — em
26
+ coluna única, alinhada à esquerda.
27
+
28
+ ### Corrigido
29
+
30
+ - Submenu não engole mais a primeira seta. O menu principal entregava o
31
+ stdin pausado / fora de raw mode pro submenu, e o inquirer perdia a
32
+ 1ª tecla — só respondia depois de um toque inicial. Agora o stdin fica
33
+ "quente" na entrega; a seta funciona de cara.
34
+
35
+ ## [2.7.3] 2026-05-20 (polish do cabeçalho)
36
+
37
+ ### Mudado
38
+
39
+ - Cabeçalho do `neetru` interativo: logo renderizado **ao lado** do texto
40
+ (antes era acima), com a sessão e a versão alinhadas à direita do logo.
41
+ - Paleta de contorno do menu e do logo ajustada para um azul mais suave.
42
+
43
+ ## [2.7.2] — 2026-05-20 (aviso de versão + menu em 2 colunas)
44
+
45
+ ### Adicionado
46
+
47
+ - O cabeçalho do `neetru` interativo mostra a **versão instalada** (`v2.7.2`)
48
+ ao lado do usuário logado. Quando uma versão mais nova publicada no
49
+ npm, aparece uma linha **amarela** avisando pra rodar `neetru upgrade`.
50
+ A checagem tem timeout curto e é à prova de falha offline não trava o
51
+ CLI.
52
+ - Menu principal redesenhado em **duas colunas**, com navegação por setas
53
+ (↑/↓/←/→) e contorno azul-marinho; o item ativo é marcado com `> <`.
54
+
55
+ ## [2.7.1] 2026-05-20 (UI do CLI interativo)
56
+
57
+ ### Adicionado
58
+
59
+ - Logo Neetru em ANSI truecolor no cabeçalho do `neetru` interativo.
60
+ - Cabeçalho mostra o usuário logado (email), lido localmente do
61
+ `auth.json` — sem chamada de rede.
62
+ - Menu principal com o nome do recurso + uma descrição curta abaixo,
63
+ quando útil.
64
+
65
+ ### Corrigido
66
+
67
+ - O CLI interativo não encerra mais sozinho: comandos que chamavam
68
+ `process.exit()` em erro (ex.: "Nenhum server encontrado") matavam o
69
+ menu inteiro. Agora o erro é capturado e o CLI volta ao menu — só
70
+ "Sair" (ou Ctrl+C) encerra.
71
+
72
+ ## [2.7.0] 2026-05-20 (Fluxo de Ambientes Fase 3 — destino cloud-run)
73
+
74
+ ### Adicionado
75
+
76
+ - `neetru deploy --target=cloud-run` — caminho de deploy pro destino Cloud Run
77
+ dedicado. Aceita `--image <uri>` (imagem de container buildada e pushada)
78
+ ou faz `docker build` + `docker push` automático via `--registry <host>`
79
+ (Artifact Registry). O destino `cloud-run` agora aparece no menu interativo.
80
+
81
+ ### Mudado
82
+
83
+ - `neetru promote` vocabulário de estágios migrado para `dev | staging | prod`
84
+ (antes `dev/workspace/beta/prod`). Gates: 24h em `dev→staging`,
85
+ 168h + canary em `staging→prod`.
86
+ - `neetru deploy --target` — sem valor default; omitir abre o menu interativo
87
+ (workspace / cloud-run / vm). Modo não-interativo continua assumindo `vm`.
88
+
89
+ ## [2.0.0] — 2026-05-06 (Sprint 12 — CLI estabilizada)
90
+
91
+ ### Adicionado
92
+
93
+ - `neetru doctor` diagnóstico completo do ambiente: token CLI, Core acessível,
94
+ schema do `neetru.config.json`, valor de `NEETRU_ENV`, e versão do CLI
95
+ comparada com a `latest` no npm. Saída em tabela colorida (default) ou
96
+ JSON (`--json`). Diferença pra `validate`: doctor inclui environment +
97
+ version mismatch (warning, não fail).
98
+ - `neetru upgrade` — verifica `dist-tags.latest` em
99
+ `https://registry.npmjs.org/@neetru/cli` e exibe instrução de upgrade
100
+ (`npm install -g @neetru/cli@latest`). Sem auto-installnão quebra
101
+ pipelines pinados.
102
+ - `neetru autocomplete <bash|zsh|pwsh>` — gera script de shell completion
103
+ pra os 22 subcomandos top-level. Usuário cola na config do shell:
104
+ `neetru autocomplete bash >> ~/.bashrc`.
105
+ - `neetru config set telemetry.enabled <true|false>`opt-in explícito de
106
+ telemetria. Default desligado. Quando ligado, CLI envia eventos
107
+ anonimizados pra `POST /sdk/v1/telemetry/log` (placeholder na v2.0).
108
+ Nunca envia tokens, paths absolutos ou conteúdo de arquivos.
109
+
110
+ ### Bumped
111
+
112
+ - `1.4.0 2.0.0` (major bump por convenção de estabilidade — sem breaking
113
+ changes funcionais).
114
+
115
+ ### Não publicado no npm ainda
116
+
117
+ Bump local. Publish manual pra npm fica deferido owner aprovará. Build
118
+ local (`npm run build` em `cli/`) gera o `dist/` pronto pra publicação.
119
+
120
+ ## [1.3.0]2026-05-06
121
+
122
+ ### Adicionado
123
+
124
+ - `neetru add <feature>` — copia template em `cli/templates/{feature}/*` para
125
+ `src/lib/neetru/{feature}/*` no projeto atual. Features: `auth`, `billing`,
126
+ `usage`, `users`, `support`. Suporta `--force` pra sobrescrever.
127
+ - `neetru mocks reset` — reseta `.neetru/dev-fixtures.json` para `{}` (útil
128
+ com `NEETRU_ENV=dev`).
129
+ - `neetru env switch <dev|workspace|production>` — atualiza/insere
130
+ `NEETRU_ENV=<value>` em `.env.local` preservando as outras chaves.
131
+ - `neetru logs` ganhou flags:
132
+ - `--product <productId>` filtra logs por produto.
133
+ - `--channel <channel>` — filtra por channel (stdout/stderr/app/...).
134
+ - `--correlation-id <uuid>` filtra por correlation ID.
135
+
136
+ ### Templates novos (`cli/templates/`)
137
+
138
+ - `auth/sign-in.tsx`, `auth/callback.ts`
139
+ - `billing/page.tsx`, `billing/checkout.ts`
140
+ - `usage/track.ts`
141
+ - `users/profile.tsx`
142
+ - `support/ticket-form.tsx`
143
+
144
+ ### Não publicado no npm ainda
145
+
146
+ Bump local `1.2.0 → 1.3.0`. Publish pra npm fica deferido — owner aprovará
147
+ manualmente quando quiser. Build local (`npm run build` em `cli/`) já compila.
148
+
149
+ ## [1.2.0] — 2026-05-06
150
+
151
+ **Consolidação das duas linhas paralelas.** Esta versão unifica os comandos das duas linhas de CLI que estavam coexistindo:
152
+
153
+ - **`@neetru/cli@1.0.x` (publicada no npm)**: linha *workspace-centric* com `init`, `add`, `validate`, `generate-types`, `whoami`, `login`, `status`, `logs`, `deploy`, `open`. APIs: `/api/v1/cli/workspace/*`.
154
+ - **`@neetru/cli@0.1.0` (monorepo, não publicada)**: linha *server-centric* com `ai`, `init`, `config`, `login`, `logout`, `whoami`, `build`, `deploy`, `publish`. APIs: `/api/v1/cli/{catalog,deploy,servers}`.
155
+
156
+ As duas falam **APIs distintas e complementares** do mesmo Neetru Core, refletindo a topologia real do produto:
157
+
158
+ ```
159
+ Workspace (prototipação) ──build/promote──► Server VM ou Cloud Run (produção)
160
+ ```
161
+
162
+ A `1.2.0` traz ambos os conjuntos de comandos numa única CLI. O monorepo passa a ser a fonte canônica.
163
+
164
+ ### Adicionado em relação a `1.0.1`
165
+
166
+ Comandos da linha *server-centric* (deploy via VM agent ou Cloud Run):
167
+
168
+ - `neetru ai`REPL multi-model (Claude/OpenAI/Gemini) com contexto Neetru-aware
169
+ - `neetru build` — empacota produto local em tarball + manifest com sha256, detecção automática de stack (node/docker/php-apache/static)
170
+ - `neetru deploy` — pipeline E2E interativo (escolha de produto/server/domain/port + polling status até estado terminal). Suporta `--non-interactive` para CI.
171
+ - `neetru publish`registra produto no catálogo público (`public_products`), com `--draft` e `--unpublish`
172
+ - `neetru config {set|get|path}` — gerenciamento de chaves de API e config local
173
+ - `neetru logout` — limpa credenciais
174
+ - `neetru login --token nrt_<keyId>_<secret>` — modo CI/legacy paralelo ao Device Code OAuth
175
+ - `neetru login --json` saída machine-readable para scripts
176
+
177
+ ### Mantido de `1.0.1` (re-implementado em TypeScript com convenções do monorepo)
178
+
179
+ - `neetru status --client-id <id>` — status de workspace (build/deploy último, domínio, tier, expira em N dias)
180
+ - `neetru logs --client-id <id>` — visualiza logs do workspace; suporta `-f` follow + `-n N` lines + `--since 30m` + `--level error`
181
+ - `neetru validate` — health-check da config local + ping `/api/health` + whoami
182
+ - `neetru open [target]` abre dashboard, builds, logs, workspaces, products, servers, incidents no browser
183
+ - `neetru init <name>` — agora gera projeto Next.js 15 OU Node API (Fastify) com schema canônico v2
184
+
185
+ ### Backlog 1.3.x
186
+
187
+ Comandos que ainda dependem de design/templates novos:
188
+
189
+ - `neetru add <feature>` scaffolds OAuth/billing/usage/users
190
+ - `neetru generate-types` codegen TypeScript de planos/features/entitlements
191
+
192
+ ### Alterado
193
+
194
+ - Package agora é ESM nativo (`"type": "module"`). Imports usam `.js` extension.
195
+ - `neetru login` agora usa Device Code OAuth (RFC 8628) por default; `--token` permanece para CI.
196
+
197
+ ### Migração de `1.0.x`
198
+
199
+ Não há caminho 100% automático porque a config local muda:
200
+
201
+ - `1.0.x` lia `neetru.json` workspace-local com `{clientId, coreUrl}` + var de ambiente `NEETRU_CLIENT_SECRET`
202
+ - `1.2.0` `~/.config/neetru-cli/auth.json` (Bearer token salvo por `neetru login`) + `neetru.config.json` por projeto com `{slug, runtime, publish}`
203
+
204
+ Recomendação:
205
+
206
+ 1. `npm uninstall -g @neetru/cli && npm install -g @neetru/cli@1.2.0`
207
+ 2. `neetru login` (Device Code) — gera credencial Bearer no novo formato
208
+ 3. Para comandos workspace (`status`, `logs`, `open`), passe `--client-id <oauthClientId>` explicitamente — o `clientId` continua sendo o `oauthClientId` do seu workspace, achável em UI Core `/workspaces/{id}`
209
+
210
+ ## [1.0.1] — anterior
211
+
212
+ Linha workspace publicada no npm. Comandos: `init`, `add`, `validate`, `generate-types`, `whoami`, `login`, `status`, `logs`, `deploy`, `open`. APIs: `/api/v1/cli/workspace/*`.
213
+
214
+ ## [1.0.0] — anterior
215
+
216
+ Primeira versão pública.
217
+
218
+ ## [0.1.0] — interno (não publicado)
219
+
220
+ Snapshot interno do monorepo durante desenvolvimento da Sprint 1+. Substituído por `1.2.0`.