@neetru/cli 1.0.1 → 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.
Files changed (135) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/README.md +109 -152
  3. package/dist/commands/add.d.ts +8 -3
  4. package/dist/commands/add.js +70 -143
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/ai.d.ts +4 -0
  7. package/dist/commands/ai.js +88 -0
  8. package/dist/commands/ai.js.map +1 -0
  9. package/dist/commands/autocomplete.d.ts +7 -0
  10. package/dist/commands/autocomplete.js +107 -0
  11. package/dist/commands/autocomplete.js.map +1 -0
  12. package/dist/commands/build.d.ts +18 -0
  13. package/dist/commands/build.js +288 -0
  14. package/dist/commands/build.js.map +1 -0
  15. package/dist/commands/config.d.ts +3 -0
  16. package/dist/commands/config.js +70 -0
  17. package/dist/commands/config.js.map +1 -0
  18. package/dist/commands/db.d.ts +14 -0
  19. package/dist/commands/db.js +187 -0
  20. package/dist/commands/db.js.map +1 -0
  21. package/dist/commands/deploy.d.ts +16 -3
  22. package/dist/commands/deploy.js +400 -180
  23. package/dist/commands/deploy.js.map +1 -1
  24. package/dist/commands/doctor.d.ts +27 -0
  25. package/dist/commands/doctor.js +211 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/env.d.ts +15 -0
  28. package/dist/commands/env.js +56 -0
  29. package/dist/commands/env.js.map +1 -0
  30. package/dist/commands/fn.d.ts +6 -0
  31. package/dist/commands/fn.js +87 -0
  32. package/dist/commands/fn.js.map +1 -0
  33. package/dist/commands/init.d.ts +10 -3
  34. package/dist/commands/init.js +212 -143
  35. package/dist/commands/init.js.map +1 -1
  36. package/dist/commands/login.d.ts +6 -3
  37. package/dist/commands/login.js +222 -92
  38. package/dist/commands/login.js.map +1 -1
  39. package/dist/commands/logout.d.ts +1 -0
  40. package/dist/commands/logout.js +28 -0
  41. package/dist/commands/logout.js.map +1 -0
  42. package/dist/commands/logs.d.ts +14 -3
  43. package/dist/commands/logs.js +132 -106
  44. package/dist/commands/logs.js.map +1 -1
  45. package/dist/commands/mocks.d.ts +5 -0
  46. package/dist/commands/mocks.js +23 -0
  47. package/dist/commands/mocks.js.map +1 -0
  48. package/dist/commands/open.d.ts +4 -3
  49. package/dist/commands/open.js +53 -85
  50. package/dist/commands/open.js.map +1 -1
  51. package/dist/commands/promote.d.ts +9 -0
  52. package/dist/commands/promote.js +114 -0
  53. package/dist/commands/promote.js.map +1 -0
  54. package/dist/commands/publish.d.ts +14 -0
  55. package/dist/commands/publish.js +180 -0
  56. package/dist/commands/publish.js.map +1 -0
  57. package/dist/commands/status.d.ts +5 -3
  58. package/dist/commands/status.js +91 -93
  59. package/dist/commands/status.js.map +1 -1
  60. package/dist/commands/upgrade.d.ts +12 -0
  61. package/dist/commands/upgrade.js +77 -0
  62. package/dist/commands/upgrade.js.map +1 -0
  63. package/dist/commands/validate.d.ts +1 -3
  64. package/dist/commands/validate.js +83 -91
  65. package/dist/commands/validate.js.map +1 -1
  66. package/dist/commands/whoami.d.ts +5 -3
  67. package/dist/commands/whoami.js +76 -28
  68. package/dist/commands/whoami.js.map +1 -1
  69. package/dist/index.d.ts +0 -1
  70. package/dist/index.js +337 -36
  71. package/dist/index.js.map +1 -1
  72. package/dist/lib/ai/context.d.ts +11 -0
  73. package/dist/lib/ai/context.js +112 -0
  74. package/dist/lib/ai/context.js.map +1 -0
  75. package/dist/lib/ai/orchestrator.d.ts +10 -0
  76. package/dist/lib/ai/orchestrator.js +92 -0
  77. package/dist/lib/ai/orchestrator.js.map +1 -0
  78. package/dist/lib/api-client.d.ts +21 -0
  79. package/dist/lib/api-client.js +65 -0
  80. package/dist/lib/api-client.js.map +1 -0
  81. package/dist/lib/auth.d.ts +15 -0
  82. package/dist/lib/auth.js +98 -0
  83. package/dist/lib/auth.js.map +1 -0
  84. package/dist/lib/config-schema.d.ts +165 -0
  85. package/dist/lib/config-schema.js +57 -0
  86. package/dist/lib/config-schema.js.map +1 -0
  87. package/dist/lib/config.d.ts +15 -0
  88. package/dist/lib/config.js +33 -0
  89. package/dist/lib/config.js.map +1 -0
  90. package/dist/utils/logger.d.ts +13 -0
  91. package/dist/utils/logger.js +27 -0
  92. package/dist/utils/logger.js.map +1 -0
  93. package/package.json +35 -33
  94. package/templates/auth/callback.ts +22 -0
  95. package/templates/auth/sign-in.tsx +41 -0
  96. package/templates/billing/checkout.ts +22 -0
  97. package/templates/billing/page.tsx +43 -0
  98. package/templates/support/ticket-form.tsx +68 -0
  99. package/templates/usage/track.ts +30 -0
  100. package/templates/users/profile.tsx +43 -0
  101. package/LICENSE +0 -21
  102. package/dist/commands/add.d.ts.map +0 -1
  103. package/dist/commands/deploy.d.ts.map +0 -1
  104. package/dist/commands/generate-types.d.ts +0 -3
  105. package/dist/commands/generate-types.d.ts.map +0 -1
  106. package/dist/commands/generate-types.js +0 -150
  107. package/dist/commands/generate-types.js.map +0 -1
  108. package/dist/commands/init.d.ts.map +0 -1
  109. package/dist/commands/login.d.ts.map +0 -1
  110. package/dist/commands/logs.d.ts.map +0 -1
  111. package/dist/commands/open.d.ts.map +0 -1
  112. package/dist/commands/status.d.ts.map +0 -1
  113. package/dist/commands/validate.d.ts.map +0 -1
  114. package/dist/commands/whoami.d.ts.map +0 -1
  115. package/dist/config.d.ts +0 -14
  116. package/dist/config.d.ts.map +0 -1
  117. package/dist/config.js +0 -83
  118. package/dist/config.js.map +0 -1
  119. package/dist/index.d.ts.map +0 -1
  120. package/dist/scaffold/auth.d.ts +0 -3
  121. package/dist/scaffold/auth.d.ts.map +0 -1
  122. package/dist/scaffold/auth.js +0 -228
  123. package/dist/scaffold/auth.js.map +0 -1
  124. package/dist/scaffold/billing.d.ts +0 -3
  125. package/dist/scaffold/billing.d.ts.map +0 -1
  126. package/dist/scaffold/billing.js +0 -184
  127. package/dist/scaffold/billing.js.map +0 -1
  128. package/dist/scaffold/usage.d.ts +0 -3
  129. package/dist/scaffold/usage.d.ts.map +0 -1
  130. package/dist/scaffold/usage.js +0 -173
  131. package/dist/scaffold/usage.js.map +0 -1
  132. package/dist/scaffold/users.d.ts +0 -3
  133. package/dist/scaffold/users.d.ts.map +0 -1
  134. package/dist/scaffold/users.js +0 -135
  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
- # Neetru CLI
1
+ # @neetru/cli
2
2
 
3
- SDK scaffolding e operações DevOps para integrar seu SaaS com **Neetru Core**.
3
+ > Developer Kit oficial da Neetru scaffold, AI assistant, publish, build e deploy de produtos SaaS via Neetru Core.
4
4
 
5
- ```bash
6
- npm install -g @neetru/cli
7
- ```
5
+ [![npm version](https://img.shields.io/npm/v/@neetru/cli.svg)](https://www.npmjs.com/package/@neetru/cli)
8
6
 
9
- ## Quick Start
7
+ ## Instalação
10
8
 
11
9
  ```bash
12
- # 1. Autentique seu CLI (uma vez)
13
- neetru login
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
- ## Comandos
30
-
31
- ### Setup
14
+ Requer Node 20 ou superior.
32
15
 
33
- | Comando | Descrição |
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
- ### Autenticação
18
+ ## Topologia de produto Neetru
41
19
 
42
- | Comando | Descrição |
43
- |---------|-----------|
44
- | `neetru login` | Autentica o CLI com API key |
45
- | `neetru whoami` | Mostra configuração do projeto atual |
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
- ### Operações
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
- | Comando | Descrição |
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
- ## Como obter API Key
35
+ ```bash
36
+ # 1. Login (abre browser para Device Code OAuth)
37
+ neetru login
57
38
 
58
- 1. Acesse o painel Neetru Core: `https://core.neetru.com/admin/cli-keys`
59
- 2. Clique em **"Gerar nova API key"**
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
- API keys são vinculadas ao seu usuário e respeitam suas roles (admin/operator/viewer).
42
+ # 3. Cria um projeto novo
43
+ neetru init meu-saas --type nextjs
44
+ cd meu-saas
65
45
 
66
- ## Configuração
46
+ # 4. Vê status do workspace (se você já tem um criado em UI Core)
47
+ neetru status --client-id <oauthClientId>
67
48
 
68
- ### Local (`./neetru.json`)
69
- Criado por `neetru init`. Define o projeto:
49
+ # 5. Acompanha logs em tempo real
50
+ neetru logs --client-id <oauthClientId> -f
70
51
 
71
- ```json
72
- {
73
- "coreUrl": "https://core.neetru.com",
74
- "clientId": "client_abc123",
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
- ### Global (`~/.neetru/config.json`)
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
- ### Variáveis de ambiente
60
+ ### Auth
92
61
 
93
- | Variável | Uso |
94
- |----------|-----|
95
- | `NEETRU_CLI_API_KEY` | API key alternativa (override de `~/.neetru/config.json`) |
96
- | `NEETRU_CORE_URL` | Override do core URL |
97
- | `NEETRU_CLIENT_ID` | Client ID (necessário no app, não no CLI) |
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
- ## Features
68
+ ### Workspace (prototipação no Core)
101
69
 
102
- ### `auth` OAuth 2.0 / OIDC
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
- Login SSO com Neetru Core. Scaffold inclui:
105
- - Rotas `/auth/login` e `/auth/callback`
106
- - Session management
107
- - `requireNeetruSession()` middleware
81
+ ### Catálogo
108
82
 
109
- ### `billing` Assinaturas e Planos
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
- Client para checar entitlements e planos:
112
- ```ts
113
- import { neetruBilling } from '@/lib/neetru';
88
+ ### Build & Deploy (promoção pra produção)
114
89
 
115
- const sub = await neetruBilling.getSubscription();
116
- const canUseFeature = await neetruBilling.checkEntitlement('advanced_reports');
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
- ### `usage` — Metered Billing
95
+ ### Assistant
120
96
 
121
- Reportar eventos de uso (faturados via Stripe):
122
- ```ts
123
- import { reporter } from '@/lib/neetru/usage';
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
- reporter.track('api_call', 1);
126
- reporter.track('storage_gb', 2.5);
127
- // Eventos enviados em batch a cada 60s
128
- ```
101
+ ### Estabilidade & maintenance (v2.0)
129
102
 
130
- ### `users` API de Usuários
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
- Buscar perfis e preferências dos usuários autenticados via Neetru Auth.
110
+ ## Configuração
133
111
 
134
- ## Exemplo End-to-End
112
+ Token OAuth fica em `~/.config/neetru-cli/auth.json` (chmod 0600). Override via env:
135
113
 
136
114
  ```bash
137
- # Cliente final (ou DevOps do cliente)
138
- $ neetru login
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
- ## Desenvolvimento Local
119
+ `neetru.config.json` por projeto:
175
120
 
176
- ```bash
177
- git clone https://github.com/neetru/cli.git
178
- cd cli
179
- npm install
180
- npm run dev -- --help
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
- # Build
183
- npm run build
137
+ ## Exit codes
184
138
 
185
- # Testar localmente
186
- node dist/index.js init
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
- ## Suporte
148
+ ## Repositório
190
149
 
191
- - Documentação: https://docs.neetru.com
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
- ## Licença
152
+ ## License
196
153
 
197
- MIT © Neetru
154
+ MIT © Neetru Inc.
@@ -1,3 +1,8 @@
1
- import { Command } from 'commander';
2
- export declare function addCommand(): Command;
3
- //# sourceMappingURL=add.d.ts.map
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>;