@neetru/cli 2.24.1 → 2.26.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 (53) hide show
  1. package/dist/commands/ai.js +8 -8
  2. package/dist/commands/bootstrap.js +18 -1
  3. package/dist/commands/bootstrap.js.map +1 -1
  4. package/dist/commands/build.js +12 -17
  5. package/dist/commands/build.js.map +1 -1
  6. package/dist/commands/dev-up.d.ts +10 -26
  7. package/dist/commands/dev-up.js +78 -140
  8. package/dist/commands/dev-up.js.map +1 -1
  9. package/dist/commands/doctor.js +10 -4
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/init.js +147 -147
  12. package/dist/commands/logs.d.ts +29 -0
  13. package/dist/commands/logs.js +161 -0
  14. package/dist/commands/logs.js.map +1 -1
  15. package/dist/commands/webhooks.d.ts +34 -0
  16. package/dist/commands/webhooks.js +162 -0
  17. package/dist/commands/webhooks.js.map +1 -0
  18. package/dist/index.js +109 -27
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/ai/context.js +91 -91
  21. package/dist/lib/compose-generator.d.ts +36 -0
  22. package/dist/lib/compose-generator.js +152 -0
  23. package/dist/lib/compose-generator.js.map +1 -0
  24. package/dist/lib/config-schema.d.ts +18 -0
  25. package/dist/lib/config-schema.js +4 -0
  26. package/dist/lib/config-schema.js.map +1 -1
  27. package/dist/utils/safe-exit.d.ts +23 -0
  28. package/dist/utils/safe-exit.js +53 -1
  29. package/dist/utils/safe-exit.js.map +1 -1
  30. package/package.json +1 -1
  31. package/templates/auth/callback.ts +22 -22
  32. package/templates/auth/sign-in.tsx +41 -41
  33. package/templates/billing/checkout.ts +38 -22
  34. package/templates/billing/page.tsx +84 -43
  35. package/templates/billing/webhooks.ts +83 -0
  36. package/templates/dev/Dockerfile.agent +39 -0
  37. package/templates/dev/agent-entrypoint.sh +41 -0
  38. package/templates/dev/docker-compose.dev.yml +63 -0
  39. package/templates/support/ticket-form.tsx +68 -68
  40. package/templates/usage/track.ts +30 -30
  41. package/templates/users/profile.tsx +43 -43
  42. package/dist/commands/fn.d.ts +0 -6
  43. package/dist/commands/fn.js +0 -88
  44. package/dist/commands/fn.js.map +0 -1
  45. package/dist/commands/marketplace.d.ts +0 -36
  46. package/dist/commands/marketplace.js +0 -585
  47. package/dist/commands/marketplace.js.map +0 -1
  48. package/dist/lib/code-agent-neetru-tools.d.ts +0 -15
  49. package/dist/lib/code-agent-neetru-tools.js +0 -571
  50. package/dist/lib/code-agent-neetru-tools.js.map +0 -1
  51. package/dist/lib/code-agent-report.d.ts +0 -22
  52. package/dist/lib/code-agent-report.js +0 -43
  53. package/dist/lib/code-agent-report.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dev-up.js","sourceRoot":"","sources":["../../src/commands/dev-up.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-up.js","sourceRoot":"","sources":["../../src/commands/dev-up.ts"],"names":[],"mappings":"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"}
@@ -28,16 +28,22 @@ import { safeExit } from '../utils/safe-exit.js';
28
28
  const NPM_REGISTRY = 'https://registry.npmjs.org/@neetru/cli';
29
29
  /* ── Checks individuais — exportados pra teste ────────────────────── */
30
30
  export async function checkToken() {
31
- // MASTER-HIGH-048 (2.11.0): le do auth.json (canonico) com Conf como fallback.
32
31
  const t = getActiveTokenSync();
33
32
  if (!t)
34
33
  return { name: 'token CLI', ok: false, detail: 'rode neetru login' };
35
34
  if (typeof t !== 'string' || !t.startsWith('nrt_')) {
36
35
  return { name: 'token CLI', ok: false, detail: 'formato inválido (esperado nrt_*)' };
37
36
  }
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_*)` };
37
+ // Valida token contra o Core (whoami autenticado)
38
+ try {
39
+ const who = await apiRequest('/api/cli/v1/whoami');
40
+ if (!who?.uid)
41
+ return { name: 'token CLI', ok: false, detail: 'token rejeitado pelo Core (whoami sem uid)' };
42
+ return { name: 'token CLI', ok: true, detail: `válido (uid: ${who.uid.slice(0, 8)}…)` };
43
+ }
44
+ catch {
45
+ return { name: 'token CLI', ok: false, detail: 'token não validado pelo Core (rede ou expirado)' };
46
+ }
41
47
  }
42
48
  export async function checkCoreHealth() {
43
49
  try {
@@ -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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"}
@@ -316,106 +316,106 @@ async function scaffoldNextjs(dir, name, write) {
316
316
  },
317
317
  }, null, 2));
318
318
  // next.config.mjs
319
- await write(path.join(dir, 'next.config.mjs'), `/** @type {import('next').NextConfig} */
320
- const nextConfig = {};
321
- export default nextConfig;
319
+ await write(path.join(dir, 'next.config.mjs'), `/** @type {import('next').NextConfig} */
320
+ const nextConfig = {};
321
+ export default nextConfig;
322
322
  `);
323
323
  // Layout raiz
324
- await write(path.join(dir, 'src', 'app', 'layout.tsx'), `import type { Metadata } from 'next';
325
-
326
- export const metadata: Metadata = {
327
- title: '${name}',
328
- };
329
-
330
- export default function RootLayout({ children }: { children: React.ReactNode }) {
331
- return (
332
- <html lang="pt-BR">
333
- <body>{children}</body>
334
- </html>
335
- );
336
- }
324
+ await write(path.join(dir, 'src', 'app', 'layout.tsx'), `import type { Metadata } from 'next';
325
+
326
+ export const metadata: Metadata = {
327
+ title: '${name}',
328
+ };
329
+
330
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
331
+ return (
332
+ <html lang="pt-BR">
333
+ <body>{children}</body>
334
+ </html>
335
+ );
336
+ }
337
337
  `);
338
338
  // Página inicial com auth gate via SDK 1.1
339
- await write(path.join(dir, 'src', 'app', 'page.tsx'), `// Produto Neetru — gerado por neetru init
340
- // Auth via @neetru/sdk client (createNeetruClient + auth namespace)
341
-
342
- 'use client';
343
-
344
- import { createNeetruClient } from '@neetru/sdk';
345
- import { useEffect, useState } from 'react';
346
- import type { NeetruUser } from '@neetru/sdk';
347
-
348
- // [C1] Falha rápido se NEXT_PUBLIC_NEETRU_ENV não estiver configurada —
349
- // nunca defaulta silenciosamente pra 'dev' em produção.
350
- const _neetruEnv = process.env.NEXT_PUBLIC_NEETRU_ENV;
351
- if (!_neetruEnv) {
352
- throw new Error(
353
- 'NEXT_PUBLIC_NEETRU_ENV não está definida. ' +
354
- 'Defina como "prod" no ambiente de produção e "dev" no ambiente de desenvolvimento. ' +
355
- 'Exemplo: NEXT_PUBLIC_NEETRU_ENV=prod',
356
- );
357
- }
358
- const neetru = createNeetruClient({
359
- apiKey: process.env.NEXT_PUBLIC_NEETRU_API_KEY,
360
- env: _neetruEnv as 'dev' | 'prod',
361
- });
362
-
363
- export default function HomePage() {
364
- const [user, setUser] = useState<NeetruUser | null>(null);
365
- const [loading, setLoading] = useState(true);
366
-
367
- useEffect(() => {
368
- let unsub: (() => void) | undefined;
369
- neetru.auth.getUser().then((u) => {
370
- setUser(u);
371
- setLoading(false);
372
- });
373
- unsub = neetru.auth.onAuthStateChanged((u) => setUser(u));
374
- return () => unsub?.();
375
- }, []);
376
-
377
- if (loading) return <main><p>Carregando...</p></main>;
378
- if (!user) {
379
- return (
380
- <main>
381
- <h1>${name}</h1>
382
- <button onClick={() => neetru.auth.signIn()}>Entrar com Neetru</button>
383
- </main>
384
- );
385
- }
386
- return (
387
- <main>
388
- <h1>Bem-vindo, {user.email}</h1>
389
- <p>UID: {user.uid}</p>
390
- <button onClick={() => neetru.auth.signOut()}>Sair</button>
391
- </main>
392
- );
393
- }
339
+ await write(path.join(dir, 'src', 'app', 'page.tsx'), `// Produto Neetru — gerado por neetru init
340
+ // Auth via @neetru/sdk client (createNeetruClient + auth namespace)
341
+
342
+ 'use client';
343
+
344
+ import { createNeetruClient } from '@neetru/sdk';
345
+ import { useEffect, useState } from 'react';
346
+ import type { NeetruUser } from '@neetru/sdk';
347
+
348
+ // [C1] Falha rápido se NEXT_PUBLIC_NEETRU_ENV não estiver configurada —
349
+ // nunca defaulta silenciosamente pra 'dev' em produção.
350
+ const _neetruEnv = process.env.NEXT_PUBLIC_NEETRU_ENV;
351
+ if (!_neetruEnv) {
352
+ throw new Error(
353
+ 'NEXT_PUBLIC_NEETRU_ENV não está definida. ' +
354
+ 'Defina como "prod" no ambiente de produção e "dev" no ambiente de desenvolvimento. ' +
355
+ 'Exemplo: NEXT_PUBLIC_NEETRU_ENV=prod',
356
+ );
357
+ }
358
+ const neetru = createNeetruClient({
359
+ apiKey: process.env.NEXT_PUBLIC_NEETRU_API_KEY,
360
+ env: _neetruEnv as 'dev' | 'prod',
361
+ });
362
+
363
+ export default function HomePage() {
364
+ const [user, setUser] = useState<NeetruUser | null>(null);
365
+ const [loading, setLoading] = useState(true);
366
+
367
+ useEffect(() => {
368
+ let unsub: (() => void) | undefined;
369
+ neetru.auth.getUser().then((u) => {
370
+ setUser(u);
371
+ setLoading(false);
372
+ });
373
+ unsub = neetru.auth.onAuthStateChanged((u) => setUser(u));
374
+ return () => unsub?.();
375
+ }, []);
376
+
377
+ if (loading) return <main><p>Carregando...</p></main>;
378
+ if (!user) {
379
+ return (
380
+ <main>
381
+ <h1>${name}</h1>
382
+ <button onClick={() => neetru.auth.signIn()}>Entrar com Neetru</button>
383
+ </main>
384
+ );
385
+ }
386
+ return (
387
+ <main>
388
+ <h1>Bem-vindo, {user.email}</h1>
389
+ <p>UID: {user.uid}</p>
390
+ <button onClick={() => neetru.auth.signOut()}>Sair</button>
391
+ </main>
392
+ );
393
+ }
394
394
  `);
395
395
  // Middleware Next.js — gate de cookie de sessão em rotas privadas
396
- await write(path.join(dir, 'src', 'middleware.ts'), `import { NextRequest, NextResponse } from 'next/server';
397
-
398
- const PUBLIC_PATHS = ['/login', '/api/auth', '/_next', '/favicon.ico'];
399
-
400
- export function middleware(request: NextRequest) {
401
- const { pathname } = request.nextUrl;
402
- if (PUBLIC_PATHS.some((p) => pathname.startsWith(p))) {
403
- return NextResponse.next();
404
- }
405
-
406
- const hasSession = request.cookies.has('__session');
407
- if (!hasSession) {
408
- const url = request.nextUrl.clone();
409
- url.pathname = '/login';
410
- return NextResponse.redirect(url);
411
- }
412
-
413
- return NextResponse.next();
414
- }
415
-
416
- export const config = {
417
- matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
418
- };
396
+ await write(path.join(dir, 'src', 'middleware.ts'), `import { NextRequest, NextResponse } from 'next/server';
397
+
398
+ const PUBLIC_PATHS = ['/login', '/api/auth', '/_next', '/favicon.ico'];
399
+
400
+ export function middleware(request: NextRequest) {
401
+ const { pathname } = request.nextUrl;
402
+ if (PUBLIC_PATHS.some((p) => pathname.startsWith(p))) {
403
+ return NextResponse.next();
404
+ }
405
+
406
+ const hasSession = request.cookies.has('__session');
407
+ if (!hasSession) {
408
+ const url = request.nextUrl.clone();
409
+ url.pathname = '/login';
410
+ return NextResponse.redirect(url);
411
+ }
412
+
413
+ return NextResponse.next();
414
+ }
415
+
416
+ export const config = {
417
+ matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
418
+ };
419
419
  `);
420
420
  // tsconfig.json
421
421
  await write(path.join(dir, 'tsconfig.json'), JSON.stringify({
@@ -461,59 +461,59 @@ async function scaffoldNodeApi(dir, name, write) {
461
461
  '@types/node': '^22.0.0',
462
462
  },
463
463
  }, null, 2));
464
- await write(path.join(dir, 'src', 'index.ts'), `import Fastify from 'fastify';
465
- import { createNeetruClient } from '@neetru/sdk';
466
-
467
- // Padrão @neetru/sdk@1.1 — namespaces server-side: entitlements/usage/telemetry.
468
- // [C1] Falha rápido se NEETRU_ENV não estiver configurada.
469
- const _neetruEnv = process.env.NEETRU_ENV;
470
- if (!_neetruEnv) {
471
- throw new Error(
472
- 'NEETRU_ENV não está definida. ' +
473
- 'Defina como "prod" no ambiente de produção e "dev" no ambiente de desenvolvimento. ' +
474
- 'Exemplo: NEETRU_ENV=prod',
475
- );
476
- }
477
- // [C2] NEETRU_API_KEY é obrigatória — falha rápido com mensagem clara.
478
- const apiKey = process.env.NEETRU_API_KEY;
479
- if (!apiKey) {
480
- throw new Error(
481
- 'NEETRU_API_KEY é obrigatória. Configure a variável de ambiente antes de iniciar o servidor.',
482
- );
483
- }
484
- const neetru = createNeetruClient({
485
- apiKey,
486
- env: _neetruEnv as 'dev' | 'prod',
487
- });
488
-
489
- const PRODUCT_SLUG = process.env.NEETRU_PRODUCT_SLUG ?? '${name}';
490
-
491
- const app = Fastify({ logger: true });
492
-
493
- function requireEntitlement(feature: string) {
494
- return async (
495
- _request: import('fastify').FastifyRequest,
496
- reply: import('fastify').FastifyReply,
497
- ) => {
498
- const allowed = await neetru.entitlements.check(PRODUCT_SLUG, feature);
499
- if (!allowed) {
500
- return reply.code(403).send({ error: 'entitlement_denied', feature });
501
- }
502
- };
503
- }
504
-
505
- app.get('/health', async () => ({ status: 'ok' }));
506
-
507
- app.get(
508
- '/api/data',
509
- { preHandler: requireEntitlement('api-access') },
510
- async () => {
511
- await neetru.usage.report('api_call', 1, { productId: PRODUCT_SLUG });
512
- return { data: [] };
513
- },
514
- );
515
-
516
- await app.listen({ port: 3000, host: '0.0.0.0' });
464
+ await write(path.join(dir, 'src', 'index.ts'), `import Fastify from 'fastify';
465
+ import { createNeetruClient } from '@neetru/sdk';
466
+
467
+ // Padrão @neetru/sdk@1.1 — namespaces server-side: entitlements/usage/telemetry.
468
+ // [C1] Falha rápido se NEETRU_ENV não estiver configurada.
469
+ const _neetruEnv = process.env.NEETRU_ENV;
470
+ if (!_neetruEnv) {
471
+ throw new Error(
472
+ 'NEETRU_ENV não está definida. ' +
473
+ 'Defina como "prod" no ambiente de produção e "dev" no ambiente de desenvolvimento. ' +
474
+ 'Exemplo: NEETRU_ENV=prod',
475
+ );
476
+ }
477
+ // [C2] NEETRU_API_KEY é obrigatória — falha rápido com mensagem clara.
478
+ const apiKey = process.env.NEETRU_API_KEY;
479
+ if (!apiKey) {
480
+ throw new Error(
481
+ 'NEETRU_API_KEY é obrigatória. Configure a variável de ambiente antes de iniciar o servidor.',
482
+ );
483
+ }
484
+ const neetru = createNeetruClient({
485
+ apiKey,
486
+ env: _neetruEnv as 'dev' | 'prod',
487
+ });
488
+
489
+ const PRODUCT_SLUG = process.env.NEETRU_PRODUCT_SLUG ?? '${name}';
490
+
491
+ const app = Fastify({ logger: true });
492
+
493
+ function requireEntitlement(feature: string) {
494
+ return async (
495
+ _request: import('fastify').FastifyRequest,
496
+ reply: import('fastify').FastifyReply,
497
+ ) => {
498
+ const allowed = await neetru.entitlements.check(PRODUCT_SLUG, feature);
499
+ if (!allowed) {
500
+ return reply.code(403).send({ error: 'entitlement_denied', feature });
501
+ }
502
+ };
503
+ }
504
+
505
+ app.get('/health', async () => ({ status: 'ok' }));
506
+
507
+ app.get(
508
+ '/api/data',
509
+ { preHandler: requireEntitlement('api-access') },
510
+ async () => {
511
+ await neetru.usage.report('api_call', 1, { productId: PRODUCT_SLUG });
512
+ return { data: [] };
513
+ },
514
+ );
515
+
516
+ await app.listen({ port: 3000, host: '0.0.0.0' });
517
517
  `);
518
518
  }
519
519
  //# sourceMappingURL=init.js.map
@@ -1,3 +1,10 @@
1
+ interface LogEntry {
2
+ timestamp: string;
3
+ level?: string;
4
+ message: string;
5
+ source?: string;
6
+ metadata?: Record<string, unknown>;
7
+ }
1
8
  export interface LogsOptions {
2
9
  clientId?: string;
3
10
  follow?: boolean;
@@ -14,5 +21,27 @@ export interface LogsOptions {
14
21
  correlationId?: string;
15
22
  /** C2 2026-05-18 — saída NDJSON linha a linha (útil para pipes). */
16
23
  json?: boolean;
24
+ /**
25
+ * Dev Suite — lê o NDJSON local do emulador (`neetru dev up`) em vez do Core.
26
+ * `--local` sem valor usa `.neetru/dev/logs.ndjson` (ou `LOG_COLLECTOR_PATH`);
27
+ * com valor, o caminho dado. Curto-circuita rede/auth. Pareia com o coletor
28
+ * do Core que espelha o log estruturado quando NEETRU_ENV=dev-local.
29
+ */
30
+ local?: string | boolean;
17
31
  }
32
+ /**
33
+ * Normaliza uma linha crua do NDJSON local pro shape `LogEntry`. Aceita tanto o
34
+ * shape do Core (`severity`/`event`/`service`) quanto um `LogEntry` já pronto
35
+ * (`level`/`source`). Campos não-mapeados viram `metadata`.
36
+ */
37
+ export declare function normalizeLocalEntry(raw: Record<string, unknown>): LogEntry;
38
+ /**
39
+ * Lê o NDJSON local, parseia linha a linha (ignora malformadas), filtra por
40
+ * `level` e retorna as últimas `lines` entradas normalizadas.
41
+ */
42
+ export declare function readLocalNdjson(filePath: string, opts?: {
43
+ lines?: number;
44
+ level?: string;
45
+ }): LogEntry[];
18
46
  export declare function runLogs(opts: LogsOptions): Promise<void>;
47
+ export {};
@@ -7,6 +7,8 @@
7
7
  * - Modo polling NDJSON (fallback): poll a cada 5s com `after=<lastTs>`.
8
8
  * Saída NDJSON (`--json`): imprime cada LogEntry como JSON line.
9
9
  */
10
+ import { existsSync, readFileSync, statSync, openSync, readSync, closeSync } from 'node:fs';
11
+ import { join } from 'node:path';
10
12
  import chalk from 'chalk';
11
13
  import { apiRequest, CliApiError, CliNetworkError } from '../lib/api-client.js';
12
14
  import { config } from '../lib/config.js';
@@ -48,6 +50,160 @@ function printLog(entry, jsonMode) {
48
50
  const src = entry.source ? chalk.dim(`[${entry.source}]`) : '';
49
51
  console.log(`${chalk.dim(ts)} ${color(lvl)} ${src} ${entry.message}`);
50
52
  }
53
+ // ── Dev Suite — leitura do NDJSON local do emulador (`neetru dev up`) ─────────
54
+ // Pareia com o coletor do Core (`.neetru/dev/logs.ndjson`), que espelha o log
55
+ // estruturado quando NEETRU_ENV=dev-local. O CLI lê esse arquivo direto, sem
56
+ // tocar em rede/auth — é o "observável sob demanda" do backstage local.
57
+ /** Caminho default do NDJSON local (bate com o DEFAULT_LOG_PATH do coletor do Core). */
58
+ function resolveLocalLogPath(local) {
59
+ if (typeof local === 'string' && local.length > 0)
60
+ return local;
61
+ return process.env.LOG_COLLECTOR_PATH ?? join('.neetru', 'dev', 'logs.ndjson');
62
+ }
63
+ /** Mapeia `severity` do Core (INFO/WARNING/...) pro `level` do CLI (info/warn/...). */
64
+ function severityToLevel(sev) {
65
+ if (typeof sev !== 'string')
66
+ return undefined;
67
+ switch (sev.toUpperCase()) {
68
+ case 'DEBUG': return 'debug';
69
+ case 'INFO':
70
+ case 'NOTICE': return 'info';
71
+ case 'WARNING':
72
+ case 'WARN': return 'warn';
73
+ case 'ERROR': return 'error';
74
+ case 'CRITICAL':
75
+ case 'FATAL': return 'fatal';
76
+ default: return sev.toLowerCase();
77
+ }
78
+ }
79
+ /**
80
+ * Normaliza uma linha crua do NDJSON local pro shape `LogEntry`. Aceita tanto o
81
+ * shape do Core (`severity`/`event`/`service`) quanto um `LogEntry` já pronto
82
+ * (`level`/`source`). Campos não-mapeados viram `metadata`.
83
+ */
84
+ export function normalizeLocalEntry(raw) {
85
+ const { timestamp, level, severity, message, event, source, service, ...rest } = raw;
86
+ return {
87
+ timestamp: typeof timestamp === 'string' ? timestamp : new Date().toISOString(),
88
+ level: (typeof level === 'string' ? level : undefined) ?? severityToLevel(severity),
89
+ message: typeof message === 'string' ? message
90
+ : typeof event === 'string' ? event
91
+ : '(sem mensagem)',
92
+ source: (typeof source === 'string' ? source : undefined)
93
+ ?? (typeof service === 'string' ? service : undefined),
94
+ metadata: Object.keys(rest).length > 0 ? rest : undefined,
95
+ };
96
+ }
97
+ function passesLevel(entry, level) {
98
+ if (!level)
99
+ return true;
100
+ return (entry.level ?? 'info').toLowerCase() === level.toLowerCase();
101
+ }
102
+ /**
103
+ * Lê o NDJSON local, parseia linha a linha (ignora malformadas), filtra por
104
+ * `level` e retorna as últimas `lines` entradas normalizadas.
105
+ */
106
+ export function readLocalNdjson(filePath, opts = {}) {
107
+ if (!existsSync(filePath))
108
+ return [];
109
+ const entries = [];
110
+ for (const line of readFileSync(filePath, 'utf8').split('\n')) {
111
+ const t = line.trim();
112
+ if (!t)
113
+ continue;
114
+ let parsed;
115
+ try {
116
+ parsed = JSON.parse(t);
117
+ }
118
+ catch {
119
+ continue;
120
+ }
121
+ const entry = normalizeLocalEntry(parsed);
122
+ if (passesLevel(entry, opts.level))
123
+ entries.push(entry);
124
+ }
125
+ const n = opts.lines && opts.lines > 0 ? opts.lines : entries.length;
126
+ return entries.slice(-n);
127
+ }
128
+ /** Modo `--local`: lê o NDJSON do emulador, imprime, e faz tail se `--follow`. */
129
+ async function runLocalLogs(opts) {
130
+ const jsonMode = opts.json ?? false;
131
+ const filePath = resolveLocalLogPath(opts.local ?? true);
132
+ const lines = Math.max(1, Math.min(1000, Number.parseInt(opts.lines ?? '50', 10) || 50));
133
+ if (!existsSync(filePath)) {
134
+ if (!jsonMode) {
135
+ log.error(`Nenhum coletor local em ${filePath}.`);
136
+ log.dim(' Suba o emulador (`neetru dev up`, NEETRU_ENV=dev-local) pra gerar logs.');
137
+ }
138
+ return;
139
+ }
140
+ const initial = readLocalNdjson(filePath, { lines, level: opts.level });
141
+ if (initial.length === 0 && !jsonMode)
142
+ log.dim(' Nenhum log local no arquivo.');
143
+ else
144
+ for (const e of initial)
145
+ printLog(e, jsonMode);
146
+ if (!opts.follow)
147
+ return;
148
+ // Tail por polling do tamanho do arquivo (robusto no Windows; ~igual ao remoto).
149
+ if (!jsonMode)
150
+ log.dim(' Aguardando novos logs locais… (Ctrl+C para sair)');
151
+ let offset = statSync(filePath).size;
152
+ let stopped = false;
153
+ const onSigint = () => { stopped = true; };
154
+ process.once('SIGINT', onSigint);
155
+ try {
156
+ while (!stopped) {
157
+ await new Promise((r) => setTimeout(r, 1000));
158
+ if (stopped)
159
+ break;
160
+ if (!existsSync(filePath))
161
+ continue;
162
+ let size;
163
+ try {
164
+ size = statSync(filePath).size;
165
+ }
166
+ catch {
167
+ continue;
168
+ }
169
+ if (size < offset)
170
+ offset = 0; // rotacionou/truncou
171
+ if (size <= offset)
172
+ continue;
173
+ const fd = openSync(filePath, 'r');
174
+ const buf = Buffer.alloc(size - offset);
175
+ try {
176
+ readSync(fd, buf, 0, buf.length, offset);
177
+ }
178
+ finally {
179
+ closeSync(fd);
180
+ }
181
+ offset = size;
182
+ for (const line of buf.toString('utf8').split('\n')) {
183
+ const t = line.trim();
184
+ if (!t)
185
+ continue;
186
+ let parsed;
187
+ try {
188
+ parsed = JSON.parse(t);
189
+ }
190
+ catch {
191
+ continue;
192
+ }
193
+ const entry = normalizeLocalEntry(parsed);
194
+ if (passesLevel(entry, opts.level))
195
+ printLog(entry, jsonMode);
196
+ }
197
+ }
198
+ }
199
+ finally {
200
+ process.removeListener('SIGINT', onSigint);
201
+ }
202
+ if (!jsonMode) {
203
+ process.stdout.write('\n');
204
+ log.dim(' tail local encerrado.');
205
+ }
206
+ }
51
207
  async function fetchLogs(clientId, params) {
52
208
  const qs = new URLSearchParams({
53
209
  clientId,
@@ -256,6 +412,11 @@ async function runPollingFollow(clientId, lastTs, lines, opts, jsonMode) {
256
412
  }
257
413
  }
258
414
  export async function runLogs(opts) {
415
+ // Dev Suite: `--local` lê o NDJSON do emulador e curto-circuita rede/auth.
416
+ if (opts.local !== undefined && opts.local !== false) {
417
+ await runLocalLogs(opts);
418
+ return;
419
+ }
259
420
  if (!opts.clientId && !opts.product) {
260
421
  log.error('Informe --product <slug> ou --client-id <oauthClientId>.');
261
422
  safeExit(1);