@neetru/cli 1.0.0 → 2.0.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.
- package/CHANGELOG.md +136 -0
- package/README.md +109 -152
- package/dist/commands/add.d.ts +8 -3
- package/dist/commands/add.js +70 -143
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/ai.d.ts +4 -0
- package/dist/commands/ai.js +88 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/autocomplete.d.ts +7 -0
- package/dist/commands/autocomplete.js +107 -0
- package/dist/commands/autocomplete.js.map +1 -0
- package/dist/commands/build.d.ts +18 -0
- package/dist/commands/build.js +288 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.js +70 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/db.d.ts +14 -0
- package/dist/commands/db.js +187 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/deploy.d.ts +16 -3
- package/dist/commands/deploy.js +400 -180
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/doctor.d.ts +27 -0
- package/dist/commands/doctor.js +211 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env.d.ts +15 -0
- package/dist/commands/env.js +56 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/fn.d.ts +6 -0
- package/dist/commands/fn.js +87 -0
- package/dist/commands/fn.js.map +1 -0
- package/dist/commands/init.d.ts +10 -3
- package/dist/commands/init.js +212 -143
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +6 -3
- package/dist/commands/login.js +222 -92
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -0
- package/dist/commands/logout.js +28 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +14 -3
- package/dist/commands/logs.js +132 -106
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/mocks.d.ts +5 -0
- package/dist/commands/mocks.js +23 -0
- package/dist/commands/mocks.js.map +1 -0
- package/dist/commands/open.d.ts +4 -3
- package/dist/commands/open.js +53 -85
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/promote.d.ts +9 -0
- package/dist/commands/promote.js +114 -0
- package/dist/commands/promote.js.map +1 -0
- package/dist/commands/publish.d.ts +14 -0
- package/dist/commands/publish.js +180 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/status.d.ts +5 -3
- package/dist/commands/status.js +91 -93
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/upgrade.d.ts +12 -0
- package/dist/commands/upgrade.js +77 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/validate.d.ts +1 -3
- package/dist/commands/validate.js +83 -91
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/whoami.d.ts +5 -3
- package/dist/commands/whoami.js +76 -28
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +337 -36
- package/dist/index.js.map +1 -1
- package/dist/lib/ai/context.d.ts +11 -0
- package/dist/lib/ai/context.js +112 -0
- package/dist/lib/ai/context.js.map +1 -0
- package/dist/lib/ai/orchestrator.d.ts +10 -0
- package/dist/lib/ai/orchestrator.js +92 -0
- package/dist/lib/ai/orchestrator.js.map +1 -0
- package/dist/lib/api-client.d.ts +21 -0
- package/dist/lib/api-client.js +65 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/auth.d.ts +15 -0
- package/dist/lib/auth.js +98 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config-schema.d.ts +165 -0
- package/dist/lib/config-schema.js +57 -0
- package/dist/lib/config-schema.js.map +1 -0
- package/dist/lib/config.d.ts +15 -0
- package/dist/lib/config.js +33 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.js +27 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +35 -33
- package/templates/auth/callback.ts +22 -0
- package/templates/auth/sign-in.tsx +41 -0
- package/templates/billing/checkout.ts +22 -0
- package/templates/billing/page.tsx +43 -0
- package/templates/support/ticket-form.tsx +68 -0
- package/templates/usage/track.ts +30 -0
- package/templates/users/profile.tsx +43 -0
- package/LICENSE +0 -21
- package/dist/commands/add.d.ts.map +0 -1
- package/dist/commands/deploy.d.ts.map +0 -1
- package/dist/commands/generate-types.d.ts +0 -3
- package/dist/commands/generate-types.d.ts.map +0 -1
- package/dist/commands/generate-types.js +0 -150
- package/dist/commands/generate-types.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/open.d.ts.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/config.d.ts +0 -14
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -83
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/scaffold/auth.d.ts +0 -3
- package/dist/scaffold/auth.d.ts.map +0 -1
- package/dist/scaffold/auth.js +0 -228
- package/dist/scaffold/auth.js.map +0 -1
- package/dist/scaffold/billing.d.ts +0 -3
- package/dist/scaffold/billing.d.ts.map +0 -1
- package/dist/scaffold/billing.js +0 -184
- package/dist/scaffold/billing.js.map +0 -1
- package/dist/scaffold/usage.d.ts +0 -3
- package/dist/scaffold/usage.d.ts.map +0 -1
- package/dist/scaffold/usage.js +0 -173
- package/dist/scaffold/usage.js.map +0 -1
- package/dist/scaffold/users.d.ts +0 -3
- package/dist/scaffold/users.d.ts.map +0 -1
- package/dist/scaffold/users.js +0 -135
- package/dist/scaffold/users.js.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Changelog @neetru/cli
|
|
2
|
+
|
|
3
|
+
Convenção: [Keep a Changelog](https://keepachangelog.com/) + [SemVer](https://semver.org/).
|
|
4
|
+
|
|
5
|
+
## [2.0.0] — 2026-05-06 (Sprint 12 — CLI estabilizada)
|
|
6
|
+
|
|
7
|
+
### Adicionado
|
|
8
|
+
|
|
9
|
+
- `neetru doctor` — diagnóstico completo do ambiente: token CLI, Core acessível,
|
|
10
|
+
schema do `neetru.config.json`, valor de `NEETRU_ENV`, e versão do CLI
|
|
11
|
+
comparada com a `latest` no npm. Saída em tabela colorida (default) ou
|
|
12
|
+
JSON (`--json`). Diferença pra `validate`: doctor inclui environment +
|
|
13
|
+
version mismatch (warning, não fail).
|
|
14
|
+
- `neetru upgrade` — verifica `dist-tags.latest` em
|
|
15
|
+
`https://registry.npmjs.org/@neetru/cli` e exibe instrução de upgrade
|
|
16
|
+
(`npm install -g @neetru/cli@latest`). Sem auto-install — não quebra
|
|
17
|
+
pipelines pinados.
|
|
18
|
+
- `neetru autocomplete <bash|zsh|pwsh>` — gera script de shell completion
|
|
19
|
+
pra os 22 subcomandos top-level. Usuário cola na config do shell:
|
|
20
|
+
`neetru autocomplete bash >> ~/.bashrc`.
|
|
21
|
+
- `neetru config set telemetry.enabled <true|false>` — opt-in explícito de
|
|
22
|
+
telemetria. Default desligado. Quando ligado, CLI envia eventos
|
|
23
|
+
anonimizados pra `POST /sdk/v1/telemetry/log` (placeholder na v2.0).
|
|
24
|
+
Nunca envia tokens, paths absolutos ou conteúdo de arquivos.
|
|
25
|
+
|
|
26
|
+
### Bumped
|
|
27
|
+
|
|
28
|
+
- `1.4.0 → 2.0.0` (major bump por convenção de estabilidade — sem breaking
|
|
29
|
+
changes funcionais).
|
|
30
|
+
|
|
31
|
+
### Não publicado no npm ainda
|
|
32
|
+
|
|
33
|
+
Bump local. Publish manual pra npm fica deferido — owner aprovará. Build
|
|
34
|
+
local (`npm run build` em `cli/`) gera o `dist/` pronto pra publicação.
|
|
35
|
+
|
|
36
|
+
## [1.3.0] — 2026-05-06
|
|
37
|
+
|
|
38
|
+
### Adicionado
|
|
39
|
+
|
|
40
|
+
- `neetru add <feature>` — copia template em `cli/templates/{feature}/*` para
|
|
41
|
+
`src/lib/neetru/{feature}/*` no projeto atual. Features: `auth`, `billing`,
|
|
42
|
+
`usage`, `users`, `support`. Suporta `--force` pra sobrescrever.
|
|
43
|
+
- `neetru mocks reset` — reseta `.neetru/dev-fixtures.json` para `{}` (útil
|
|
44
|
+
com `NEETRU_ENV=dev`).
|
|
45
|
+
- `neetru env switch <dev|workspace|production>` — atualiza/insere
|
|
46
|
+
`NEETRU_ENV=<value>` em `.env.local` preservando as outras chaves.
|
|
47
|
+
- `neetru logs` ganhou flags:
|
|
48
|
+
- `--product <productId>` — filtra logs por produto.
|
|
49
|
+
- `--channel <channel>` — filtra por channel (stdout/stderr/app/...).
|
|
50
|
+
- `--correlation-id <uuid>` — filtra por correlation ID.
|
|
51
|
+
|
|
52
|
+
### Templates novos (`cli/templates/`)
|
|
53
|
+
|
|
54
|
+
- `auth/sign-in.tsx`, `auth/callback.ts`
|
|
55
|
+
- `billing/page.tsx`, `billing/checkout.ts`
|
|
56
|
+
- `usage/track.ts`
|
|
57
|
+
- `users/profile.tsx`
|
|
58
|
+
- `support/ticket-form.tsx`
|
|
59
|
+
|
|
60
|
+
### Não publicado no npm ainda
|
|
61
|
+
|
|
62
|
+
Bump local `1.2.0 → 1.3.0`. Publish pra npm fica deferido — owner aprovará
|
|
63
|
+
manualmente quando quiser. Build local (`npm run build` em `cli/`) já compila.
|
|
64
|
+
|
|
65
|
+
## [1.2.0] — 2026-05-06
|
|
66
|
+
|
|
67
|
+
**Consolidação das duas linhas paralelas.** Esta versão unifica os comandos das duas linhas de CLI que estavam coexistindo:
|
|
68
|
+
|
|
69
|
+
- **`@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/*`.
|
|
70
|
+
- **`@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}`.
|
|
71
|
+
|
|
72
|
+
As duas falam **APIs distintas e complementares** do mesmo Neetru Core, refletindo a topologia real do produto:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Workspace (prototipação) ──build/promote──► Server VM ou Cloud Run (produção)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
A `1.2.0` traz ambos os conjuntos de comandos numa única CLI. O monorepo passa a ser a fonte canônica.
|
|
79
|
+
|
|
80
|
+
### Adicionado em relação a `1.0.1`
|
|
81
|
+
|
|
82
|
+
Comandos da linha *server-centric* (deploy via VM agent ou Cloud Run):
|
|
83
|
+
|
|
84
|
+
- `neetru ai` — REPL multi-model (Claude/OpenAI/Gemini) com contexto Neetru-aware
|
|
85
|
+
- `neetru build` — empacota produto local em tarball + manifest com sha256, detecção automática de stack (node/docker/php-apache/static)
|
|
86
|
+
- `neetru deploy` — pipeline E2E interativo (escolha de produto/server/domain/port + polling status até estado terminal). Suporta `--non-interactive` para CI.
|
|
87
|
+
- `neetru publish` — registra produto no catálogo público (`public_products`), com `--draft` e `--unpublish`
|
|
88
|
+
- `neetru config {set|get|path}` — gerenciamento de chaves de API e config local
|
|
89
|
+
- `neetru logout` — limpa credenciais
|
|
90
|
+
- `neetru login --token nrt_<keyId>_<secret>` — modo CI/legacy paralelo ao Device Code OAuth
|
|
91
|
+
- `neetru login --json` — saída machine-readable para scripts
|
|
92
|
+
|
|
93
|
+
### Mantido de `1.0.1` (re-implementado em TypeScript com convenções do monorepo)
|
|
94
|
+
|
|
95
|
+
- `neetru status --client-id <id>` — status de workspace (build/deploy último, domínio, tier, expira em N dias)
|
|
96
|
+
- `neetru logs --client-id <id>` — visualiza logs do workspace; suporta `-f` follow + `-n N` lines + `--since 30m` + `--level error`
|
|
97
|
+
- `neetru validate` — health-check da config local + ping `/api/health` + whoami
|
|
98
|
+
- `neetru open [target]` — abre dashboard, builds, logs, workspaces, products, servers, incidents no browser
|
|
99
|
+
- `neetru init <name>` — agora gera projeto Next.js 15 OU Node API (Fastify) com schema canônico v2
|
|
100
|
+
|
|
101
|
+
### Backlog 1.3.x
|
|
102
|
+
|
|
103
|
+
Comandos que ainda dependem de design/templates novos:
|
|
104
|
+
|
|
105
|
+
- `neetru add <feature>` — scaffolds OAuth/billing/usage/users
|
|
106
|
+
- `neetru generate-types` — codegen TypeScript de planos/features/entitlements
|
|
107
|
+
|
|
108
|
+
### Alterado
|
|
109
|
+
|
|
110
|
+
- Package agora é ESM nativo (`"type": "module"`). Imports usam `.js` extension.
|
|
111
|
+
- `neetru login` agora usa Device Code OAuth (RFC 8628) por default; `--token` permanece para CI.
|
|
112
|
+
|
|
113
|
+
### Migração de `1.0.x`
|
|
114
|
+
|
|
115
|
+
Não há caminho 100% automático porque a config local muda:
|
|
116
|
+
|
|
117
|
+
- `1.0.x` lia `neetru.json` workspace-local com `{clientId, coreUrl}` + var de ambiente `NEETRU_CLIENT_SECRET`
|
|
118
|
+
- `1.2.0` lê `~/.config/neetru-cli/auth.json` (Bearer token salvo por `neetru login`) + `neetru.config.json` por projeto com `{slug, runtime, publish}`
|
|
119
|
+
|
|
120
|
+
Recomendação:
|
|
121
|
+
|
|
122
|
+
1. `npm uninstall -g @neetru/cli && npm install -g @neetru/cli@1.2.0`
|
|
123
|
+
2. `neetru login` (Device Code) — gera credencial Bearer no novo formato
|
|
124
|
+
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}`
|
|
125
|
+
|
|
126
|
+
## [1.0.1] — anterior
|
|
127
|
+
|
|
128
|
+
Linha workspace publicada no npm. Comandos: `init`, `add`, `validate`, `generate-types`, `whoami`, `login`, `status`, `logs`, `deploy`, `open`. APIs: `/api/v1/cli/workspace/*`.
|
|
129
|
+
|
|
130
|
+
## [1.0.0] — anterior
|
|
131
|
+
|
|
132
|
+
Primeira versão pública.
|
|
133
|
+
|
|
134
|
+
## [0.1.0] — interno (não publicado)
|
|
135
|
+
|
|
136
|
+
Snapshot interno do monorepo durante desenvolvimento da Sprint 1+. Substituído por `1.2.0`.
|
package/README.md
CHANGED
|
@@ -1,197 +1,154 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @neetru/cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> Developer Kit oficial da Neetru — scaffold, AI assistant, publish, build e deploy de produtos SaaS via Neetru Core.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
npm install -g @neetru/cli
|
|
7
|
-
```
|
|
5
|
+
[](https://www.npmjs.com/package/@neetru/cli)
|
|
8
6
|
|
|
9
|
-
##
|
|
7
|
+
## Instalação
|
|
10
8
|
|
|
11
9
|
```bash
|
|
12
|
-
|
|
13
|
-
neetru
|
|
14
|
-
|
|
15
|
-
# 2. Inicialize seu projeto
|
|
16
|
-
neetru init
|
|
17
|
-
|
|
18
|
-
# 3. Adicione integrações (auth, billing, usage, users)
|
|
19
|
-
neetru add auth
|
|
20
|
-
neetru add billing
|
|
21
|
-
|
|
22
|
-
# 4. Verifique tudo
|
|
23
|
-
neetru validate
|
|
24
|
-
|
|
25
|
-
# 5. Deploy
|
|
26
|
-
neetru deploy --env dev --watch
|
|
10
|
+
npm install -g @neetru/cli
|
|
11
|
+
neetru --version
|
|
27
12
|
```
|
|
28
13
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
### Setup
|
|
14
|
+
Requer Node 20 ou superior.
|
|
32
15
|
|
|
33
|
-
|
|
34
|
-
|---------|-----------|
|
|
35
|
-
| `neetru init` | Inicializa `neetru.json` no projeto atual |
|
|
36
|
-
| `neetru add <feature>` | Scaffold de integração (auth, billing, usage, users) |
|
|
37
|
-
| `neetru generate-types` | Gera tipos TypeScript a partir do schema do Core |
|
|
38
|
-
| `neetru validate` | Valida configuração e conexão |
|
|
16
|
+
> **Migrando de `1.0.x`?** A linha `2.x` é uma **reescrita completa** com arquitetura nova (VM-based agents). Veja [CHANGELOG.md](./CHANGELOG.md) — não há caminho automático.
|
|
39
17
|
|
|
40
|
-
|
|
18
|
+
## Topologia de produto Neetru
|
|
41
19
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
20
|
+
```
|
|
21
|
+
┌─────────────┐ build/promote ┌──────────────┐
|
|
22
|
+
│ Workspace │ ─────────────────► │ Server (VM) │
|
|
23
|
+
│ prototipação│ │ ou Cloud Run│
|
|
24
|
+
│ no Core │ │ produção │
|
|
25
|
+
└─────────────┘ └──────────────┘
|
|
26
|
+
neetru neetru
|
|
27
|
+
status / logs / open build / deploy
|
|
28
|
+
```
|
|
46
29
|
|
|
47
|
-
|
|
30
|
+
- **Workspace** = ambiente lógico de prototipação no Core (clientId/oauthClientId, domínio temporário, tier de recurso, builds e deployments lógicos). Ideal pra iterar rápido.
|
|
31
|
+
- **Server / Cloud Run** = ambiente físico de produção. Quando o produto matura no workspace, você empacota (`neetru build`) e promove (`neetru deploy`) pra VM gerenciada pelo agent ou Cloud Run.
|
|
48
32
|
|
|
49
|
-
|
|
50
|
-
|---------|-----------|
|
|
51
|
-
| `neetru status` | Status do workspace (build, deploy, domínio) |
|
|
52
|
-
| `neetru deploy [-e dev\|staging\|prod] [--watch]` | Dispara deploy |
|
|
53
|
-
| `neetru logs [-f] [-n 100] [--since 1h]` | Logs do workspace |
|
|
54
|
-
| `neetru open [page]` | Abre painel Neetru no navegador |
|
|
33
|
+
## Começo rápido
|
|
55
34
|
|
|
56
|
-
|
|
35
|
+
```bash
|
|
36
|
+
# 1. Login (abre browser para Device Code OAuth)
|
|
37
|
+
neetru login
|
|
57
38
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
3. Dê um nome descritivo (ex: "MacBook Local")
|
|
61
|
-
4. Copie o token mostrado **uma única vez** (formato: `nrt_xxxxxxxx_yyyyy...`)
|
|
62
|
-
5. No terminal: `neetru login` e cole o token
|
|
39
|
+
# 2. Valida config + conexão
|
|
40
|
+
neetru validate
|
|
63
41
|
|
|
64
|
-
|
|
42
|
+
# 3. Cria um projeto novo
|
|
43
|
+
neetru init meu-saas --type nextjs
|
|
44
|
+
cd meu-saas
|
|
65
45
|
|
|
66
|
-
|
|
46
|
+
# 4. Vê status do workspace (se você já tem um criado em UI Core)
|
|
47
|
+
neetru status --client-id <oauthClientId>
|
|
67
48
|
|
|
68
|
-
|
|
69
|
-
|
|
49
|
+
# 5. Acompanha logs em tempo real
|
|
50
|
+
neetru logs --client-id <oauthClientId> -f
|
|
70
51
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"projectName": "minha-app",
|
|
76
|
-
"features": ["auth", "billing"],
|
|
77
|
-
"createdAt": "2026-04-25T..."
|
|
78
|
-
}
|
|
52
|
+
# 6. Quando estiver pronto pra produção: publica no catálogo + builda + deploya
|
|
53
|
+
neetru publish --draft
|
|
54
|
+
neetru build
|
|
55
|
+
neetru deploy --target=vm
|
|
79
56
|
```
|
|
80
57
|
|
|
81
|
-
|
|
82
|
-
Credenciais (criadas por `neetru login`):
|
|
83
|
-
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"coreUrl": "https://core.neetru.com",
|
|
87
|
-
"clientSecret": "nrt_xxxxxxxx_yyyy..."
|
|
88
|
-
}
|
|
89
|
-
```
|
|
58
|
+
## Comandos
|
|
90
59
|
|
|
91
|
-
###
|
|
60
|
+
### Auth
|
|
92
61
|
|
|
93
|
-
|
|
|
94
|
-
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `NEETRU_CLIENT_SECRET` | Client secret OAuth (do SDK no app) |
|
|
62
|
+
| Comando | O que faz |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `neetru login` | Device Code OAuth (RFC 8628). Abre browser. `--token nrt_…` para CI. |
|
|
65
|
+
| `neetru logout` | Apaga credenciais locais. |
|
|
66
|
+
| `neetru whoami` | Mostra identidade da chave atual. `--json` para scripts. |
|
|
99
67
|
|
|
100
|
-
|
|
68
|
+
### Workspace (prototipação no Core)
|
|
101
69
|
|
|
102
|
-
|
|
70
|
+
| Comando | O que faz |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `neetru init <name>` | Scaffold de projeto Next.js ou Node API. `--type nextjs\|node-api`. |
|
|
73
|
+
| `neetru status --client-id <id>` | Status do workspace: build/deploy último, domínio, tier. `--json` para scripts. |
|
|
74
|
+
| `neetru logs --client-id <id>` | Logs do workspace; `-f` follow, `-n` lines, `--since 30m`, `--level error`. |
|
|
75
|
+
| `neetru validate` | Health check da config local + conexão com Core. |
|
|
76
|
+
| `neetru open [target]` | Abre página do painel: `dashboard\|builds\|logs\|workspaces\|products\|servers`. |
|
|
77
|
+
| `neetru config set <key> <value>` | Define configuração local. |
|
|
78
|
+
| `neetru config get [key]` | Lê configuração. Sem arg = lista tudo. |
|
|
79
|
+
| `neetru config path` | Mostra caminho do arquivo de config. |
|
|
103
80
|
|
|
104
|
-
|
|
105
|
-
- Rotas `/auth/login` e `/auth/callback`
|
|
106
|
-
- Session management
|
|
107
|
-
- `requireNeetruSession()` middleware
|
|
81
|
+
### Catálogo
|
|
108
82
|
|
|
109
|
-
|
|
83
|
+
| Comando | O que faz |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `neetru publish` | Registra produto em `public_products/`. `--draft` para não aparecer público. |
|
|
86
|
+
| `neetru publish --unpublish` | Despublica (mantém doc). |
|
|
110
87
|
|
|
111
|
-
|
|
112
|
-
```ts
|
|
113
|
-
import { neetruBilling } from '@/lib/neetru';
|
|
88
|
+
### Build & Deploy (promoção pra produção)
|
|
114
89
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
90
|
+
| Comando | O que faz |
|
|
91
|
+
|---|---|
|
|
92
|
+
| `neetru build` | Empacota em tarball + manifest. Detecta stack (node/docker/php-apache/static) automaticamente. |
|
|
93
|
+
| `neetru deploy` | Pipeline E2E pra VM (via agent) ou Cloud Run. `--non-interactive` para CI. |
|
|
118
94
|
|
|
119
|
-
###
|
|
95
|
+
### Assistant
|
|
120
96
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
97
|
+
| Comando | O que faz |
|
|
98
|
+
|---|---|
|
|
99
|
+
| `neetru ai` | REPL interativo Claude/OpenAI/Gemini com contexto Neetru-aware. `--model auto\|claude\|openai\|gemini`. |
|
|
124
100
|
|
|
125
|
-
|
|
126
|
-
reporter.track('storage_gb', 2.5);
|
|
127
|
-
// Eventos enviados em batch a cada 60s
|
|
128
|
-
```
|
|
101
|
+
### Estabilidade & maintenance (v2.0)
|
|
129
102
|
|
|
130
|
-
|
|
103
|
+
| Comando | O que faz |
|
|
104
|
+
|---|---|
|
|
105
|
+
| `neetru doctor` | Diagnóstico de 5 checks: token CLI, Core acessível, schema do `neetru.config.json`, valor de `NEETRU_ENV`, versão CLI vs npm latest. `--json` para machine-readable. |
|
|
106
|
+
| `neetru upgrade` | Verifica `dist-tags.latest` em registry.npmjs.org/@neetru/cli. Se diferente da local, mostra instrução `npm install -g @neetru/cli@latest`. Sem auto-install. `--json` aceito. |
|
|
107
|
+
| `neetru autocomplete <bash\|zsh\|pwsh>` | Gera script de shell completion (lista os 22 subcomandos). Cole na config do shell: `neetru autocomplete bash >> ~/.bashrc`. |
|
|
108
|
+
| `neetru config set telemetry.enabled <true\|false>` | Telemetria opt-in (default off). Quando true, CLI envia eventos anonimizados pra `POST /sdk/v1/telemetry/log`. Nunca envia tokens, paths absolutos ou conteúdo de arquivos. |
|
|
131
109
|
|
|
132
|
-
|
|
110
|
+
## Configuração
|
|
133
111
|
|
|
134
|
-
|
|
112
|
+
Token OAuth fica em `~/.config/neetru-cli/auth.json` (chmod 0600). Override via env:
|
|
135
113
|
|
|
136
114
|
```bash
|
|
137
|
-
#
|
|
138
|
-
|
|
139
|
-
🔐 Neetru CLI — Login
|
|
140
|
-
Obtenha sua API key em: https://core.neetru.com/admin/cli-keys
|
|
141
|
-
API key: ********
|
|
142
|
-
✓ Autenticado como devops@cliente.com (operator)
|
|
143
|
-
|
|
144
|
-
$ cd ~/projects/minha-app
|
|
145
|
-
$ neetru init
|
|
146
|
-
🚀 Neetru SDK — Inicialização
|
|
147
|
-
URL do Neetru Core: https://core.neetru.com
|
|
148
|
-
OAuth Client ID: client_a1b2c3
|
|
149
|
-
✓ neetru.json criado
|
|
150
|
-
|
|
151
|
-
$ neetru add auth
|
|
152
|
-
✓ auth adicionado
|
|
153
|
-
src/lib/neetru/auth.ts
|
|
154
|
-
src/app/api/auth/callback/route.ts
|
|
155
|
-
|
|
156
|
-
$ neetru deploy --env staging --watch
|
|
157
|
-
🚀 Deploy → staging
|
|
158
|
-
Branch: main
|
|
159
|
-
Workspace: client_a1b2c3
|
|
160
|
-
|
|
161
|
-
✓ Deploy iniciado: dpl_xyz789
|
|
162
|
-
|
|
163
|
-
✓ pre-checks (success)
|
|
164
|
-
✓ download-artifact (success)
|
|
165
|
-
✓ run-migrations (success)
|
|
166
|
-
✓ restart-services (success)
|
|
167
|
-
✓ healthcheck (success)
|
|
168
|
-
✓ post-hooks (success)
|
|
169
|
-
|
|
170
|
-
✓ Deploy concluído com sucesso
|
|
171
|
-
→ https://minha-app.staging.neetru.com
|
|
115
|
+
NEETRU_API_KEY=nrt_xxx_yyy # bypass do auth.json
|
|
116
|
+
NEETRU_API_BASE=https://api.neetru.com # default
|
|
172
117
|
```
|
|
173
118
|
|
|
174
|
-
|
|
119
|
+
`neetru.config.json` por projeto:
|
|
175
120
|
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"$schema": "https://neetru.com/schema/neetru.config.json",
|
|
124
|
+
"slug": "meu-saas",
|
|
125
|
+
"name": "Meu SaaS",
|
|
126
|
+
"runtime": "nextjs",
|
|
127
|
+
"publish": {
|
|
128
|
+
"tagline": "Resumo curto, 2-120 chars",
|
|
129
|
+
"description": "Descrição detalhada, 10-2000 chars",
|
|
130
|
+
"iconKey": "spark",
|
|
131
|
+
"status": "soon",
|
|
132
|
+
"order": 100
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
181
136
|
|
|
182
|
-
|
|
183
|
-
npm run build
|
|
137
|
+
## Exit codes
|
|
184
138
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
139
|
+
| Code | Significado |
|
|
140
|
+
|---|---|
|
|
141
|
+
| 0 | sucesso |
|
|
142
|
+
| 1 | erro de validação ou recurso negado |
|
|
143
|
+
| 2 | falha de autenticação (token inválido/expirado) |
|
|
144
|
+
| 3 | permissão negada (role insuficiente) |
|
|
145
|
+
| 4 | erro de servidor ou rede |
|
|
146
|
+
| 5 | recurso não implementado |
|
|
188
147
|
|
|
189
|
-
##
|
|
148
|
+
## Repositório
|
|
190
149
|
|
|
191
|
-
|
|
192
|
-
- Issues: https://github.com/neetru/cli/issues
|
|
193
|
-
- Painel: https://core.neetru.com
|
|
150
|
+
Mantido em [`Neetru/core/cli/`](https://github.com/Neetru/core/tree/main/cli) como parte do monorepo.
|
|
194
151
|
|
|
195
|
-
##
|
|
152
|
+
## License
|
|
196
153
|
|
|
197
|
-
MIT © Neetru
|
|
154
|
+
MIT © Neetru Inc.
|
package/dist/commands/add.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export interface AddOptions {
|
|
2
|
+
feature: string;
|
|
3
|
+
/** Override target dir (test injeta cwd diferente). Default: process.cwd(). */
|
|
4
|
+
cwd?: string;
|
|
5
|
+
/** Force-overwrite existing files. Default false. */
|
|
6
|
+
force?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function runAdd(opts: AddOptions): Promise<void>;
|