@neetru/cli 2.11.3 → 2.12.1

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 (56) hide show
  1. package/CHANGELOG.md +561 -547
  2. package/README.md +33 -5
  3. package/dist/commands/ai.js +40 -15
  4. package/dist/commands/ai.js.map +1 -1
  5. package/dist/commands/auth.js +8 -0
  6. package/dist/commands/auth.js.map +1 -1
  7. package/dist/commands/autocomplete.js +34 -34
  8. package/dist/commands/config.js +13 -3
  9. package/dist/commands/config.js.map +1 -1
  10. package/dist/commands/db.d.ts +6 -0
  11. package/dist/commands/db.js +58 -0
  12. package/dist/commands/db.js.map +1 -1
  13. package/dist/commands/deploy.js +64 -7
  14. package/dist/commands/deploy.js.map +1 -1
  15. package/dist/commands/dev-up.d.ts +70 -0
  16. package/dist/commands/dev-up.js +224 -0
  17. package/dist/commands/dev-up.js.map +1 -0
  18. package/dist/commands/doctor.js +14 -2
  19. package/dist/commands/doctor.js.map +1 -1
  20. package/dist/commands/dr.js +8 -0
  21. package/dist/commands/dr.js.map +1 -1
  22. package/dist/commands/fn.d.ts +6 -0
  23. package/dist/commands/fn.js +88 -0
  24. package/dist/commands/fn.js.map +1 -0
  25. package/dist/commands/init.js +164 -121
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/marketplace.d.ts +36 -0
  28. package/dist/commands/marketplace.js +585 -0
  29. package/dist/commands/marketplace.js.map +1 -0
  30. package/dist/commands/ops.d.ts +41 -9
  31. package/dist/commands/ops.js +371 -21
  32. package/dist/commands/ops.js.map +1 -1
  33. package/dist/index.js +38 -5
  34. package/dist/index.js.map +1 -1
  35. package/dist/lib/ai/auth-discovery.d.ts +7 -1
  36. package/dist/lib/ai/auth-discovery.js +23 -1
  37. package/dist/lib/ai/auth-discovery.js.map +1 -1
  38. package/dist/lib/ai/context.d.ts +0 -3
  39. package/dist/lib/ai/context.js +109 -90
  40. package/dist/lib/ai/context.js.map +1 -1
  41. package/dist/lib/ai/orchestrator.d.ts +43 -8
  42. package/dist/lib/ai/orchestrator.js +452 -150
  43. package/dist/lib/ai/orchestrator.js.map +1 -1
  44. package/dist/lib/api-client.js +9 -2
  45. package/dist/lib/api-client.js.map +1 -1
  46. package/dist/lib/config.d.ts +5 -1
  47. package/dist/lib/config.js +5 -1
  48. package/dist/lib/config.js.map +1 -1
  49. package/package.json +1 -1
  50. package/templates/auth/callback.ts +22 -22
  51. package/templates/auth/sign-in.tsx +41 -41
  52. package/templates/billing/checkout.ts +22 -22
  53. package/templates/billing/page.tsx +43 -43
  54. package/templates/support/ticket-form.tsx +68 -68
  55. package/templates/usage/track.ts +30 -30
  56. package/templates/users/profile.tsx +43 -43
@@ -0,0 +1,224 @@
1
+ /**
2
+ * `neetru dev up` — emulador local estilo Firebase Emulator Suite.
3
+ *
4
+ * Origem: ENG_REVERSA_CLI_2026-06-08 (F-EMU / P0) — "neetru dev start" que sobe
5
+ * o ambiente de dev 100% local, sem tocar GCP. Opção A (VM-first):
6
+ *
7
+ * 1. Sobe os Firebase Emulators (Firestore + Auth + Functions) via
8
+ * `firebase emulators:start --only ...` no diretório do Core.
9
+ * 2. Espera o Firestore subir (porta 8080).
10
+ * 3. Sobe o Core Next.js em modo dev (`npm run dev`) com env apontando pros
11
+ * emuladores locais (FIRESTORE_EMULATOR_HOST / FIREBASE_AUTH_EMULATOR_HOST).
12
+ * 4. Espera o Core subir (porta 9003) e imprime as URLs.
13
+ * 5. Ctrl-C encerra os DOIS processos limpo (SIGTERM em cascata).
14
+ *
15
+ * A orquestração é injetada via `DevUpDeps` pra ser unit-testável sem subir
16
+ * processo/rede de verdade (mesmo padrão do `dev.ts`).
17
+ *
18
+ * Plain PT-BR nas strings visíveis. NÃO substitui a migração futura pra um
19
+ * emulador de ModuleEngine (Opção C do design) — é o passo P0.
20
+ */
21
+ import { spawn } from 'node:child_process';
22
+ import * as fsSync from 'node:fs';
23
+ import * as net from 'node:net';
24
+ import * as path from 'node:path';
25
+ import chalk from 'chalk';
26
+ import ora from 'ora';
27
+ import { log } from '../utils/logger.js';
28
+ import { safeExit, setSafeExitCode } from '../utils/safe-exit.js';
29
+ // ---------------------------------------------------------------------------
30
+ // Constantes
31
+ // ---------------------------------------------------------------------------
32
+ /** Portas default dos emuladores Firebase (firebase.json pode sobrescrever). */
33
+ const FIRESTORE_PORT = 8080;
34
+ const AUTH_PORT = 9099;
35
+ /** Porta default do Core Next.js em dev (CLAUDE.md: dev port 9003). */
36
+ const DEFAULT_CORE_PORT = 9003;
37
+ /** Timeout pra cada serviço subir antes de desistir. */
38
+ const PORT_WAIT_TIMEOUT_MS = 90_000;
39
+ /** Arquivos que identificam o diretório do Core (onde rodar tudo). */
40
+ const CORE_MARKERS = ['firebase.json'];
41
+ // ---------------------------------------------------------------------------
42
+ // buildDevUpDeps — fiação de produção
43
+ // ---------------------------------------------------------------------------
44
+ export function buildDevUpDeps() {
45
+ return {
46
+ spawnProc(name, cmd, args, env, cwd) {
47
+ const child = spawn(cmd, args, {
48
+ cwd,
49
+ env: { ...process.env, ...env },
50
+ stdio: 'inherit',
51
+ shell: process.platform === 'win32',
52
+ });
53
+ return {
54
+ name,
55
+ kill: (signal = 'SIGTERM') => {
56
+ try {
57
+ child.kill(signal);
58
+ }
59
+ catch {
60
+ // já morto — ignora
61
+ }
62
+ },
63
+ onExit: (cb) => child.on('exit', cb),
64
+ };
65
+ },
66
+ waitForPort(port, timeoutMs) {
67
+ const deadline = Date.now() + timeoutMs;
68
+ return new Promise((resolve) => {
69
+ const tryOnce = () => {
70
+ const sock = net.connect({ port, host: '127.0.0.1' });
71
+ const onFail = () => {
72
+ sock.destroy();
73
+ if (Date.now() >= deadline) {
74
+ resolve(false);
75
+ }
76
+ else {
77
+ setTimeout(tryOnce, 500);
78
+ }
79
+ };
80
+ sock.once('connect', () => {
81
+ sock.destroy();
82
+ resolve(true);
83
+ });
84
+ sock.once('error', onFail);
85
+ };
86
+ tryOnce();
87
+ });
88
+ },
89
+ existsSync: (p) => fsSync.existsSync(p),
90
+ };
91
+ }
92
+ // ---------------------------------------------------------------------------
93
+ // runDevUp — o orquestrador
94
+ // ---------------------------------------------------------------------------
95
+ export async function runDevUp(opts = {}, deps = buildDevUpDeps()) {
96
+ log.banner();
97
+ log.heading('neetru dev up');
98
+ const corePath = path.resolve(opts.corePath ?? process.cwd());
99
+ const corePort = opts.corePort ?? DEFAULT_CORE_PORT;
100
+ const only = opts.only ?? 'firestore,auth,functions';
101
+ // ── 1. Valida que estamos no diretório do Core ─────────────────────────────
102
+ const hasMarker = CORE_MARKERS.some((m) => deps.existsSync(path.join(corePath, m)));
103
+ if (!hasMarker) {
104
+ log.error(`firebase.json não encontrado em ${chalk.bold(corePath)}. ` +
105
+ 'Rode `neetru dev up` na raiz do Core (ou passe --core-path).');
106
+ safeExit(1);
107
+ return;
108
+ }
109
+ const procs = [];
110
+ let tearingDown = false;
111
+ const teardown = (reason) => {
112
+ if (tearingDown)
113
+ return;
114
+ tearingDown = true;
115
+ log.dim('');
116
+ log.info(`Encerrando (${reason})…`);
117
+ // SIGTERM em cascata — Core primeiro, emuladores depois.
118
+ for (const p of [...procs].reverse()) {
119
+ p.kill('SIGTERM');
120
+ }
121
+ };
122
+ // ── 2. Sobe os emuladores Firebase ─────────────────────────────────────────
123
+ // F-IMPORT: --import restaura um seed portátil; --export-on-exit salva o
124
+ // estado ao sair (time-travel de dados compartilhável no repo via git).
125
+ const emuArgs = ['emulators:start', '--only', only];
126
+ if (opts.importDir)
127
+ emuArgs.push('--import', opts.importDir);
128
+ if (opts.exportOnExit)
129
+ emuArgs.push('--export-on-exit', opts.exportOnExit);
130
+ const emuSpinner = ora({ text: `Subindo emuladores (${only})…`, color: 'blue' }).start();
131
+ const emulators = deps.spawnProc('emulators', 'firebase', emuArgs, {}, corePath);
132
+ procs.push(emulators);
133
+ // Se os emuladores morrerem, derruba tudo.
134
+ emulators.onExit((code) => {
135
+ if (!tearingDown)
136
+ teardown(`emuladores saíram com código ${code ?? '?'}`);
137
+ });
138
+ const firestoreUp = await deps.waitForPort(FIRESTORE_PORT, PORT_WAIT_TIMEOUT_MS);
139
+ if (!firestoreUp) {
140
+ emuSpinner.fail(`Firestore não subiu na porta ${FIRESTORE_PORT} a tempo.`);
141
+ teardown('timeout dos emuladores');
142
+ safeExit(1);
143
+ return;
144
+ }
145
+ emuSpinner.succeed(`Emuladores no ar — Firestore ${chalk.dim(':' + FIRESTORE_PORT)} · Auth ${chalk.dim(':' + AUTH_PORT)}`);
146
+ log.dim(` Emulator UI: ${chalk.cyan('http://localhost:4000')}`);
147
+ // ── 3. Sobe o Core apontando pros emuladores ───────────────────────────────
148
+ if (!opts.skipCore) {
149
+ const coreSpinner = ora({ text: 'Subindo Core (npm run dev)…', color: 'blue' }).start();
150
+ const core = deps.spawnProc('core', 'npm', ['run', 'dev'], {
151
+ FIRESTORE_EMULATOR_HOST: `127.0.0.1:${FIRESTORE_PORT}`,
152
+ FIREBASE_AUTH_EMULATOR_HOST: `127.0.0.1:${AUTH_PORT}`,
153
+ NEETRU_ENV: 'dev',
154
+ PORT: String(corePort),
155
+ }, corePath);
156
+ procs.push(core);
157
+ core.onExit((code) => {
158
+ if (!tearingDown)
159
+ teardown(`Core saiu com código ${code ?? '?'}`);
160
+ });
161
+ const coreUp = await deps.waitForPort(corePort, PORT_WAIT_TIMEOUT_MS);
162
+ if (!coreUp) {
163
+ coreSpinner.fail(`Core não subiu na porta ${corePort} a tempo.`);
164
+ teardown('timeout do Core');
165
+ safeExit(1);
166
+ return;
167
+ }
168
+ coreSpinner.succeed(`Core no ar — ${chalk.cyan('http://localhost:' + corePort)}`);
169
+ }
170
+ log.dim('');
171
+ log.success('Ambiente de dev local pronto. 100% offline (sem GCP).');
172
+ log.dim(' (Ctrl-C para encerrar tudo)');
173
+ // ── 4. Aguarda Ctrl-C / autoStop ───────────────────────────────────────────
174
+ if (opts.autoStop) {
175
+ teardown('autoStop');
176
+ return;
177
+ }
178
+ await new Promise((resolve) => {
179
+ const onSignal = () => {
180
+ teardown('Ctrl-C');
181
+ // dá um tempinho pros processos receberem o SIGTERM antes de sair.
182
+ setTimeout(resolve, 300);
183
+ };
184
+ process.once('SIGINT', onSignal);
185
+ process.once('SIGTERM', onSignal);
186
+ });
187
+ }
188
+ /**
189
+ * Roda `<script>` com os emuladores ativos, encerra e propaga o exit code —
190
+ * idêntico ao `firebase emulators:exec`. Fecha o gap de testes de integração
191
+ * CI que hoje precisam de credenciais de staging real (ENG_REVERSA_CLI F-SEED).
192
+ */
193
+ export async function runDevExec(script, opts = {}, deps = buildDevUpDeps()) {
194
+ log.banner();
195
+ log.heading('neetru dev exec');
196
+ const corePath = path.resolve(opts.corePath ?? process.cwd());
197
+ const only = opts.only ?? 'firestore,auth,functions';
198
+ if (!script || !script.trim()) {
199
+ log.error('Informe o script a rodar: `neetru dev exec "<comando>"`.');
200
+ safeExit(1);
201
+ return;
202
+ }
203
+ if (!CORE_MARKERS.some((m) => deps.existsSync(path.join(corePath, m)))) {
204
+ log.error(`firebase.json não encontrado em ${chalk.bold(corePath)}. ` +
205
+ 'Rode na raiz do Core (ou passe --core-path).');
206
+ safeExit(1);
207
+ return;
208
+ }
209
+ log.info(`Rodando ${chalk.bold(script)} com emuladores (${only})…`);
210
+ const proc = deps.spawnProc('exec', 'firebase', ['emulators:exec', '--only', only, script], {}, corePath);
211
+ await new Promise((resolve) => {
212
+ proc.onExit((code) => {
213
+ if (code && code !== 0) {
214
+ log.error(`Script falhou (exit ${code}).`);
215
+ setSafeExitCode(code); // propaga pro CI sem matar o drain
216
+ }
217
+ else {
218
+ log.success('Script concluído.');
219
+ }
220
+ resolve();
221
+ });
222
+ });
223
+ }
224
+ //# sourceMappingURL=dev-up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-up.js","sourceRoot":"","sources":["../../src/commands/dev-up.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,9 @@ export async function checkToken() {
35
35
  if (typeof t !== 'string' || !t.startsWith('nrt_')) {
36
36
  return { name: 'token CLI', ok: false, detail: 'formato inválido (esperado nrt_*)' };
37
37
  }
38
- return { name: 'token CLI', ok: true, detail: `prefix ${t.slice(0, 12)}…` };
38
+ // bug: slice(0,12) expunha 8 chars de material secreto em --json/logs.
39
+ // Mostra apenas o prefixo constante "nrt_" sem entropia do token.
40
+ return { name: 'token CLI', ok: true, detail: `presente (nrt_*)` };
39
41
  }
40
42
  export async function checkCoreHealth() {
41
43
  try {
@@ -82,7 +84,9 @@ export async function checkConfigSchema(cwd) {
82
84
  };
83
85
  }
84
86
  export async function checkNeetruEnv(cwd) {
85
- const valid = ['dev', 'workspace', 'beta', 'production'];
87
+ // bug: 'production' não é valor canônico do SDK/Core — o correto é 'prod'.
88
+ // 'production' causava doctor OK mas runtime falhava ao comparar NEETRU_ENV.
89
+ const valid = ['dev', 'workspace', 'beta', 'prod'];
86
90
  // Procura .env.local pra ver NEETRU_ENV.
87
91
  try {
88
92
  const raw = await fs.readFile(path.join(cwd, '.env.local'), 'utf8');
@@ -96,6 +100,14 @@ export async function checkNeetruEnv(cwd) {
96
100
  };
97
101
  }
98
102
  const v = m[1].trim().replace(/^['"]|['"]$/g, '');
103
+ // Dica de migração: 'production' era aceito antes mas nunca foi canônico.
104
+ if (v === 'production') {
105
+ return {
106
+ name: 'NEETRU_ENV',
107
+ ok: false,
108
+ detail: `"production" não é valor válido — renomeie pra "prod" em .env.local`,
109
+ };
110
+ }
99
111
  if (!valid.includes(v)) {
100
112
  return {
101
113
  name: 'NEETRU_ENV',
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export async function runDrExportsList(opts) {
17
17
  const spinner = opts.json
18
18
  ? null
19
19
  : ora({ text: 'Buscando exports de DR…', color: 'blue' }).start();
20
+ // bug: res sem inicialização — se handleApiError for mockado como no-op em testes,
21
+ // o acesso posterior causaria TypeError. Usar undefined + null-check como defesa.
20
22
  let res;
21
23
  try {
22
24
  res = await apiRequest('/api/cli/v1/dr/exports', { token });
@@ -26,6 +28,8 @@ export async function runDrExportsList(opts) {
26
28
  spinner?.fail('Falha ao listar exports.');
27
29
  handleApiError(error, opts.json);
28
30
  }
31
+ if (!res)
32
+ return;
29
33
  if (opts.json) {
30
34
  console.log(JSON.stringify(res));
31
35
  return;
@@ -58,6 +62,8 @@ export async function runDrRestore(opts) {
58
62
  const spinner = opts.json
59
63
  ? null
60
64
  : ora({ text: 'Disparando restore…', color: 'blue' }).start();
65
+ // bug: res sem inicialização — se handleApiError for mockado como no-op em testes,
66
+ // o acesso posterior causaria TypeError. Usar undefined + null-check como defesa.
61
67
  let res;
62
68
  try {
63
69
  res = await apiRequest(`/api/cli/v1/dr/restore${opts.dryRun ? '?dryRun=true' : ''}`, {
@@ -72,6 +78,8 @@ export async function runDrRestore(opts) {
72
78
  spinner?.fail('Falha ao disparar restore.');
73
79
  handleApiError(error, opts.json);
74
80
  }
81
+ if (!res)
82
+ return;
75
83
  printWriteResult(res.dryRun
76
84
  ? res
77
85
  : { operationName: res.operationName, targetProject: res.targetProject }, `Restore disparado — operationName: ${res.operationName}. ` +
@@ -1 +1 @@
1
- {"version":3,"file":"dr.js","sourceRoot":"","sources":["../../src/commands/dr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dr.js","sourceRoot":"","sources":["../../src/commands/dr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface FnDeployOptions {
2
+ version?: string;
3
+ channel?: 'stable' | 'beta' | 'alpha';
4
+ spec?: string;
5
+ }
6
+ export declare function runFnDeploy(opts?: FnDeployOptions): Promise<void>;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * `neetru fn` — gestão de Functions/APIs do produto.
3
+ *
4
+ * Sprint 10 (CLI 1.4) — `neetru fn deploy`.
5
+ * Stub: chama API Core (`/cli/v1/fn/deploy`) registrando uma nova versão da
6
+ * API publicada no catálogo `neetru-apis` (Sprint 7 — `api-catalog/`).
7
+ *
8
+ * NOTA: O endpoint real ainda não existe (pendente Sprint 11). Por agora
9
+ * o command apresenta o fluxo + faz uma chamada que retorna 404 ou 501 —
10
+ * trata gracefully como "feature em construção" pra o owner saber que o
11
+ * comando está wired mas o backend não está pronto.
12
+ */
13
+ import * as fs from 'node:fs/promises';
14
+ import * as fsSync from 'node:fs';
15
+ import * as path from 'node:path';
16
+ import chalk from 'chalk';
17
+ import { log } from '../utils/logger.js';
18
+ import { apiRequest, CliApiError, CliNetworkError } from '../lib/api-client.js';
19
+ import { safeExit } from '../utils/safe-exit.js';
20
+ const CONFIG_FILENAMES = ['neetru.config.json', '.neetru.json'];
21
+ async function loadProductConfig() {
22
+ for (const name of CONFIG_FILENAMES) {
23
+ const filePath = path.resolve(process.cwd(), name);
24
+ if (fsSync.existsSync(filePath)) {
25
+ try {
26
+ const raw = await fs.readFile(filePath, 'utf8');
27
+ return JSON.parse(raw);
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ export async function runFnDeploy(opts = {}) {
37
+ log.banner();
38
+ log.heading('neetru fn deploy');
39
+ const cfg = await loadProductConfig();
40
+ if (!cfg) {
41
+ log.error('neetru.config.json não encontrado.');
42
+ safeExit(1);
43
+ return;
44
+ }
45
+ const version = opts.version ?? cfg.apiVersion ?? 'v1';
46
+ const channel = opts.channel ?? 'stable';
47
+ // Optional spec file (OpenAPI / JSON schema). Apenas valida existência —
48
+ // upload real virá no Sprint 11.
49
+ if (opts.spec) {
50
+ const specAbs = path.resolve(process.cwd(), opts.spec);
51
+ if (!fsSync.existsSync(specAbs)) {
52
+ log.error(`Spec não encontrado: ${opts.spec}`);
53
+ safeExit(2);
54
+ return;
55
+ }
56
+ log.info(`Spec carregado: ${chalk.bold(opts.spec)}`);
57
+ }
58
+ log.info(`Registering API ${chalk.bold(cfg.slug)} ${chalk.bold(version)} (${channel}) ...`);
59
+ try {
60
+ const r = await apiRequest('/cli/v1/fn/deploy', {
61
+ method: 'POST',
62
+ body: { productId: cfg.slug, apiVersion: version, channel, hasSpec: !!opts.spec },
63
+ });
64
+ log.success(`API ${r.productId}@${r.apiVersion} registrada no canal ${r.channel}.`);
65
+ log.dim(` registered=${r.registered}`);
66
+ }
67
+ catch (err) {
68
+ if (err instanceof CliApiError) {
69
+ if (err.status === 404 || err.status === 501) {
70
+ log.warn(`Endpoint /cli/v1/fn/deploy ainda não disponível (${err.status}).`);
71
+ log.dim(' Esta funcionalidade entra em build no Sprint 11. Ver docs/PLATFORM_RELATORIO_FINAL_CTO.md.');
72
+ safeExit(0);
73
+ return;
74
+ }
75
+ log.error(`API ${err.status}: ${err.message}`);
76
+ safeExit(3);
77
+ return;
78
+ }
79
+ if (err instanceof CliNetworkError) {
80
+ log.error(`Conexão falhou: ${err.message}`);
81
+ safeExit(4);
82
+ return;
83
+ }
84
+ log.error(err instanceof Error ? err.message : String(err));
85
+ safeExit(5);
86
+ }
87
+ }
88
+ //# sourceMappingURL=fn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fn.js","sourceRoot":"","sources":["../../src/commands/fn.ts"],"names":[],"mappings":"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"}