@neetru/cli 2.12.13 → 2.12.16

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 CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  Convenção: [Keep a Changelog](https://keepachangelog.com/) + [SemVer](https://semver.org/).
4
4
 
5
+ ## [2.12.16] — 2026-06-16 (deploy: para de mandar segredos por env — Core rejeita fail-closed)
6
+
7
+ > Consome o hardening do Core que rejeita segredos em `envVars` (HTTP 400 via `assertNoSecretEnvVars`). Sem breaking change pra config NÃO-secreta.
8
+
9
+ ### Corrigido
10
+
11
+ - **`neetru deploy --env-file` para de vazar segredos** (`bug_5b6bb0d7`) — o Core agora REJEITA fail-closed (HTTP 400) qualquer chave de `envVars` com aparência de segredo, porque `deployments/{id}.envVars` é legível por todo o staff no Firestore. O CLI passava esses valores adiante e gerava 400. Agora `loadEnvFile` (cobre `--target vm` E `cloud-run`) DROPA toda chave secreta com aviso educativo, espelhando EXATAMENTE `SECRET_ENVVAR_PATTERNS` do Core (`neetru_core/src/lib/actions/vm-deploy.ts:73-88`, anti-drift): `SECRET`, `KEY`, `_KEY$`, `^KEY_`, `APIKEY`, `API_KEY`, `TOKEN`, `PASSWORD`, `PASSWD`, `CREDENTIAL`, `PRIVATE`, `^DATABASE_URL$`, `_DSN$`, `CONNECTION_STRING`.
12
+ - **Credencial SDK não precisa mais ir no `--env-file`** — `NEETRU_CLIENT_SECRET`/`NEETRU_API_KEY`/`NEETRU_CLIENT_ID` são injetadas server-side pelo Core/agente na VM. Se aparecerem no `--env-file`, são dropadas com aviso específico. Em `--target vm`, um `log.info` único lembra que a cred SDK é injetada automaticamente. Config NÃO-secreta (`PORT`, `NODE_ENV`, feature flags) continua passando normalmente.
13
+
14
+ ## [2.12.15] — 2026-06-15 (db migrations show/resolve + chat identity/--as)
15
+
16
+ > Consome features novas do Core (ME1/ME2 migração + CH3 apelido). Sem breaking change.
17
+
18
+ ### Adicionado
19
+
20
+ - **`neetru db migrations show <id>`** (ME2) — detalha UMA migração: status, classificação POR-STATEMENT, `error`, `redundantOfMigrationId` e ponteiros do apply via agente. Resolve a cegueira de "onde/por quê parou" (antes só havia `list`). `GET /api/cli/v1/db/migrations/[id]`.
21
+ - **`neetru db migrations resolve <id>`** (ME1) — destrava migração presa em `partially_applied`/`failed` REDUNDANTE. Sem `--force`: prova por hash (admin|operator, sem MFA). Com `--force`: atestação admin (exige step-up MFA). Caso pdv mig #9. `POST /api/cli/v1/db/migrations/[id]/resolve`.
22
+ - **`neetru chat identity [apelido]`** + **`neetru chat send --as <apelido>`** (CH3) — apelido inerente à credencial: a IA se identifica em nome do dev dono do token. Persiste em `cli_api_keys/{keyId}.displayName`. `identity` sem arg mostra; com arg persiste; vazio limpa. `GET/POST /api/cli/v1/chat/identity`.
23
+
24
+ ### Segurança / dependências
25
+
26
+ - **3 vulnerabilidades HIGH transitivas corrigidas** (`npm audit fix`, sem breaking): `esbuild` (file-read arbitrário no Windows + RCE via registry), `form-data` (CRLF injection), `vite` (bypass `server.fs.deny`). Bumps patch em `@types/node`, `@types/inquirer`, `tsx`, `vitest`. Majors (`commander`/`inquirer`/`zod`/`ora`/`openai`/`typescript`/`conf`) adiados — breaking. 1 HIGH residual (`tmp` via `inquirer@10`) exige major, mantido.
27
+
5
28
  ## [2.11.4] — 2026-06-05 (db init serverId p/ engines vm-* · README/help fixes)
6
29
 
7
30
  > Patch consolidando a branch `feat/cli-2.10.2-2.11` com `main` (que já havia avançado pra 2.11.3 com `deployments get|status` + `--stack=nextjs→node`). Sem breaking change.
@@ -39,6 +39,23 @@ export interface ChatSendOptions {
39
39
  json?: boolean;
40
40
  }
41
41
  export declare function runChatSend(message: string, opts: ChatSendOptions): Promise<void>;
42
+ export interface ChatIdentityOptions {
43
+ json?: boolean;
44
+ /** Suprime o log de sucesso (usado pelo --as do send). */
45
+ quiet?: boolean;
46
+ }
47
+ /**
48
+ * `neetru chat identity [apelido]` — apelido inerente à credencial (CH3).
49
+ *
50
+ * Sem argumento: mostra o apelido atual (GET /api/cli/v1/chat/identity).
51
+ * Com argumento: persiste o apelido na credencial (POST). A partir daí, TODA
52
+ * mensagem postada com este token aparece com este nome — a IA se identifica em
53
+ * nome do dev dono do token. Apelido vazio ("") limpa (volta ao email).
54
+ *
55
+ * O apelido vive em `cli_api_keys/{keyId}.displayName` — é inerente ao token,
56
+ * não por-mensagem.
57
+ */
58
+ export declare function runChatIdentity(displayName: string | undefined, opts?: ChatIdentityOptions): Promise<void>;
42
59
  export interface ChatHistoryOptions {
43
60
  /** Canal de destino (novo — tem precedência sobre product). */
44
61
  channel?: string;
@@ -50,6 +67,12 @@ export interface ChatHistoryOptions {
50
67
  follow?: boolean;
51
68
  /** Intervalo de poll do --follow em ms (default 3000, min 1500, max 60000). */
52
69
  interval?: string;
70
+ /**
71
+ * Cursor incremental (epoch ms OU ISO). Quando presente, busca SÓ mensagens
72
+ * com createdAt > since (servidor ignora a janela em horas). Base do monitor
73
+ * limpo: combine com --json --follow → NDJSON só das novas, sem replay.
74
+ */
75
+ since?: string;
53
76
  }
54
77
  export declare function runChatHistory(opts: ChatHistoryOptions): Promise<void>;
55
78
  export interface ChatLoopOptions {
@@ -227,6 +227,97 @@ export async function runChatSend(message, opts) {
227
227
  }
228
228
  log.success(`Mensagem enviada (id: ${res.id}).`);
229
229
  }
230
+ /**
231
+ * `neetru chat identity [apelido]` — apelido inerente à credencial (CH3).
232
+ *
233
+ * Sem argumento: mostra o apelido atual (GET /api/cli/v1/chat/identity).
234
+ * Com argumento: persiste o apelido na credencial (POST). A partir daí, TODA
235
+ * mensagem postada com este token aparece com este nome — a IA se identifica em
236
+ * nome do dev dono do token. Apelido vazio ("") limpa (volta ao email).
237
+ *
238
+ * O apelido vive em `cli_api_keys/{keyId}.displayName` — é inerente ao token,
239
+ * não por-mensagem.
240
+ */
241
+ export async function runChatIdentity(displayName, opts = {}) {
242
+ const token = await requireToken(opts.json);
243
+ // Sem argumento → mostra o apelido atual.
244
+ if (displayName === undefined) {
245
+ let res;
246
+ try {
247
+ res = await apiRequest('/api/cli/v1/chat/identity', { token });
248
+ }
249
+ catch (error) {
250
+ handleApiError(error, opts.json);
251
+ return;
252
+ }
253
+ if (opts.json) {
254
+ console.log(JSON.stringify(res));
255
+ return;
256
+ }
257
+ if (res.displayName) {
258
+ log.info(`Apelido atual: ${chalk.bold(res.displayName)}`);
259
+ }
260
+ else {
261
+ log.info(`Sem apelido — suas mensagens usam o email${res.email ? ` (${res.email})` : ''}.`);
262
+ }
263
+ return;
264
+ }
265
+ // Com argumento → persiste.
266
+ const spinner = opts.json || opts.quiet ? null : ora({ text: 'Salvando apelido…', color: 'blue' }).start();
267
+ let res;
268
+ try {
269
+ res = await apiRequest('/api/cli/v1/chat/identity', {
270
+ method: 'POST',
271
+ token,
272
+ body: { displayName },
273
+ });
274
+ spinner?.stop();
275
+ }
276
+ catch (error) {
277
+ spinner?.fail('Falha ao salvar apelido.');
278
+ handleApiError(error, opts.json);
279
+ return;
280
+ }
281
+ if (opts.json) {
282
+ console.log(JSON.stringify(res));
283
+ return;
284
+ }
285
+ if (opts.quiet)
286
+ return;
287
+ if (res.displayName) {
288
+ log.success(`Apelido definido: ${chalk.bold(res.displayName)} — suas mensagens no chat aparecem com este nome.`);
289
+ }
290
+ else {
291
+ log.success('Apelido limpo — suas mensagens voltam a usar o email.');
292
+ }
293
+ }
294
+ /** Extrai epoch ms do createdAt serializado (Timestamp/ISO/ms). 0 se inválido. */
295
+ function createdAtMs(createdAt) {
296
+ if (!createdAt)
297
+ return 0;
298
+ if (typeof createdAt === 'number')
299
+ return Number.isFinite(createdAt) ? createdAt : 0;
300
+ if (typeof createdAt === 'string') {
301
+ const ms = Date.parse(createdAt);
302
+ return Number.isFinite(ms) ? ms : 0;
303
+ }
304
+ if (typeof createdAt === 'object') {
305
+ const o = createdAt;
306
+ if (typeof o._seconds === 'number')
307
+ return o._seconds * 1000;
308
+ if (typeof o.seconds === 'number')
309
+ return o.seconds * 1000;
310
+ if (typeof o.toMillis === 'function') {
311
+ try {
312
+ return o.toMillis();
313
+ }
314
+ catch {
315
+ return 0;
316
+ }
317
+ }
318
+ }
319
+ return 0;
320
+ }
230
321
  export async function runChatHistory(opts) {
231
322
  const productSlug = opts.product?.trim();
232
323
  // DEFAULT = canal global (igual ao send): `neetru chat history` sem flags
@@ -236,16 +327,30 @@ export async function runChatHistory(opts) {
236
327
  const sinceHours = Math.min(Math.max(Number(opts.hours ?? '24'), 1), 24);
237
328
  const token = await requireToken(opts.json);
238
329
  const label = channelId ? `canal ${channelId}` : `produto ${productSlug}`;
239
- const buildQs = (hours) => {
240
- const qs = new URLSearchParams({ sinceHours: String(hours) });
330
+ // Cursor explícito (--since): epoch ms OU ISO. Quando setado, o servidor
331
+ // devolve createdAt > since (ignora a janela em horas).
332
+ let initialSinceMs;
333
+ if (opts.since) {
334
+ const asNum = Number(opts.since);
335
+ const parsed = Number.isFinite(asNum) && opts.since.trim() !== '' ? asNum : Date.parse(opts.since);
336
+ if (Number.isFinite(parsed))
337
+ initialSinceMs = parsed;
338
+ }
339
+ const buildQs = (hours, sinceMs) => {
340
+ const qs = new URLSearchParams();
341
+ // `since` (cursor preciso) tem precedência sobre `sinceHours` (janela).
342
+ if (typeof sinceMs === 'number')
343
+ qs.set('since', String(sinceMs));
344
+ else
345
+ qs.set('sinceHours', String(hours));
241
346
  if (channelId)
242
347
  qs.set('channelId', channelId);
243
348
  else
244
349
  qs.set('productSlug', productSlug);
245
350
  return qs.toString();
246
351
  };
247
- const fetchMsgs = async (hours) => {
248
- const res = await apiRequest(`/api/cli/v1/chat?${buildQs(hours)}`, { token });
352
+ const fetchMsgs = async (hours, sinceMs) => {
353
+ const res = await apiRequest(`/api/cli/v1/chat?${buildQs(hours, sinceMs)}`, { token });
249
354
  return res.messages ?? [];
250
355
  };
251
356
  // ── Modo --follow: stream contínuo (tipo tail -f). Ideal pra IAs/agents: ──
@@ -257,25 +362,40 @@ export async function runChatHistory(opts) {
257
362
  if (!opts.json) {
258
363
  console.log(chalk.bold(`\nStream — ${label} (atualiza a cada ${Math.round(intervalMs / 1000)}s · Ctrl-C encerra)\n`));
259
364
  }
260
- // Leitura inicial: marca o passado como visto (em --json NÃO reemite histórico).
365
+ // Cursor (watermark): avança pro maior createdAt visto poll incremental
366
+ // via ?since=. Começa no --since explícito; senão 0 (1ª leitura usa janela h).
367
+ let cursorMs = initialSinceMs ?? 0;
368
+ // Leitura inicial. SEM --since: marca o passado recente como visto e NÃO
369
+ // reemite (em --json, ZERO backlog — só novas daqui pra frente). COM --since:
370
+ // emite o que veio desde o cursor (o usuário pediu), inclusive em --json.
261
371
  try {
262
- const initial = await fetchMsgs(sinceHours);
372
+ const initial = await fetchMsgs(sinceHours, initialSinceMs);
263
373
  for (const m of initial) {
264
374
  seen.add(m.id);
265
- if (!opts.json)
375
+ cursorMs = Math.max(cursorMs, createdAtMs(m.createdAt));
376
+ if (initialSinceMs !== undefined) {
377
+ if (opts.json)
378
+ process.stdout.write(JSON.stringify(m) + '\n');
379
+ else
380
+ printMessage(m);
381
+ }
382
+ else if (!opts.json) {
266
383
  printMessage(m);
384
+ }
267
385
  }
268
386
  }
269
387
  catch (error) {
270
388
  handleApiError(error, opts.json);
271
389
  return;
272
390
  }
273
- // Loop de poll — emite só mensagens novas (dedup por id).
391
+ // Loop de poll — só mensagens novas via cursor (?since) + dedup por id;
392
+ // overlap de 2s pra não perder msgs do mesmo segundo. Sem cursor ainda
393
+ // (canal vazio na 1ª leitura), cai na janela curta de 1h.
274
394
  for (;;) {
275
395
  await new Promise((r) => setTimeout(r, intervalMs));
276
396
  let msgs;
277
397
  try {
278
- msgs = await fetchMsgs(1); // janela curta no follow
398
+ msgs = cursorMs > 0 ? await fetchMsgs(1, Math.max(0, cursorMs - 2000)) : await fetchMsgs(1);
279
399
  }
280
400
  catch {
281
401
  continue; // transitório — tenta de novo
@@ -284,6 +404,7 @@ export async function runChatHistory(opts) {
284
404
  if (seen.has(m.id))
285
405
  continue;
286
406
  seen.add(m.id);
407
+ cursorMs = Math.max(cursorMs, createdAtMs(m.createdAt));
287
408
  if (opts.json)
288
409
  process.stdout.write(JSON.stringify(m) + '\n');
289
410
  else
@@ -297,7 +418,7 @@ export async function runChatHistory(opts) {
297
418
  const spinner = opts.json ? null : ora({ text: 'Buscando histórico…', color: 'blue' }).start();
298
419
  let messages;
299
420
  try {
300
- messages = await fetchMsgs(sinceHours);
421
+ messages = await fetchMsgs(sinceHours, initialSinceMs);
301
422
  spinner?.stop();
302
423
  }
303
424
  catch (error) {
@@ -309,7 +430,8 @@ export async function runChatHistory(opts) {
309
430
  console.log(JSON.stringify({ ok: true, count: messages.length, messages }));
310
431
  return;
311
432
  }
312
- console.log(chalk.bold(`\nHistórico ${label} (últimas ${sinceHours}h · ${messages.length} msg)\n`));
433
+ const janela = initialSinceMs !== undefined ? 'desde o cursor --since' : `últimas ${sinceHours}h`;
434
+ console.log(chalk.bold(`\nHistórico — ${label} (${janela} · ${messages.length} msg)\n`));
313
435
  if (messages.length === 0) {
314
436
  log.dim('Nenhuma mensagem no período.');
315
437
  return;
@@ -476,6 +598,16 @@ export function registerChatCommand(program) {
476
598
  .action(async (id, cmdOpts) => {
477
599
  await runChatChannelClose(id, { json: !!cmdOpts.json });
478
600
  });
601
+ // ── chat identity (CH3) ─────────────────────────────────────────────────────
602
+ // Apelido inerente à credencial: a IA se identifica em nome do dev dono do token.
603
+ chatCmd
604
+ .command('identity [apelido]')
605
+ .alias('apelido')
606
+ .description('Ver/definir o apelido da credencial no chat (persiste por token). Vazio limpa. CH3.')
607
+ .option('--json', 'saída em JSON')
608
+ .action(async (apelido, cmdOpts) => {
609
+ await runChatIdentity(apelido, { json: !!cmdOpts.json });
610
+ });
479
611
  // ── chat send ──────────────────────────────────────────────────────────────
480
612
  // Mensagem pode vir como argumento posicional OU via --mensagem/--message.
481
613
  // Sem --channel/--product, vai pro canal GLOBAL (default). Exemplos:
@@ -492,18 +624,23 @@ export function registerChatCommand(program) {
492
624
  .option('--product <slug>', 'slug do produto — legado (retrocompat)')
493
625
  .option('--actor-type <tipo>', 'tipo do ator: cli|human|agent_claude (default: cli)', 'cli')
494
626
  .option('--product-id <id>', 'id interno do produto (opcional, legado)')
627
+ .option('--as <apelido>', 'definir o apelido da credencial antes de enviar (persiste — CH3)')
495
628
  .option('--json', 'saída em JSON')
496
629
  .action(async (mensagem, cmdOpts, command) => {
497
630
  // bug_71f42072: mesma colisão de --channel/--canal/--product entre o pai
498
631
  // `chat` e o subcomando. Prefere o subcomando, cai no pai.
499
632
  const parent = command?.parent?.opts?.() ?? {};
633
+ // CH3: --as persiste o apelido na credencial antes de postar (quiet).
634
+ if (typeof cmdOpts.as === 'string') {
635
+ await runChatIdentity(cmdOpts.as, { quiet: true, json: !!(cmdOpts.json || parent.json) });
636
+ }
500
637
  const msg = (mensagem ?? cmdOpts.message ?? cmdOpts.mensagem ?? '').toString();
501
638
  await runChatSend(msg, {
502
639
  channel: cmdOpts.channel ?? cmdOpts.canal ?? parent.channel ?? parent.canal,
503
640
  product: cmdOpts.product ?? parent.product,
504
641
  actorType: cmdOpts.actorType,
505
642
  productId: cmdOpts.productId,
506
- json: !!cmdOpts.json,
643
+ json: !!(cmdOpts.json || parent.json),
507
644
  });
508
645
  });
509
646
  // ── chat history ───────────────────────────────────────────────────────────
@@ -514,6 +651,7 @@ export function registerChatCommand(program) {
514
651
  .option('--canal <id>', 'apelido PT-BR de --channel')
515
652
  .option('--product <slug>', 'slug do produto — legado (retrocompat)')
516
653
  .option('--hours <n>', 'janela de histórico em horas (1–24, default: 24)', '24')
654
+ .option('--since <ts>', 'cursor incremental (epoch ms OU ISO) — busca SÓ msgs após esse ponto (monitor limpo)')
517
655
  .option('--follow', 'STREAM contínuo: emite mensagens novas conforme chegam (Ctrl-C encerra)')
518
656
  .option('--stream', 'apelido de --follow')
519
657
  .option('--watch', 'apelido de --follow')
@@ -521,19 +659,20 @@ export function registerChatCommand(program) {
521
659
  .option('--json', 'saída em JSON (com --follow: NDJSON, 1 msg nova por linha)')
522
660
  .action(async (cmdOpts, command) => {
523
661
  // bug_71f42072: o comando-pai `chat` E o subcomando `history` declaram
524
- // --channel/--canal/--product. O Commander roteia o flag pro PAI, deixando
525
- // cmdOpts.channel UNDEFINED no subcomando → caía no default 'global',
526
- // IGNORANDO o canal pedido. Fix: prefere o valor do subcomando e cai no
527
- // do pai (command.parent.opts()) robusto independente de onde o Commander
528
- // colocou o valor.
662
+ // --channel/--canal/--product/--json. O Commander pode rotear o flag pro
663
+ // PAI, deixando cmdOpts.<flag> UNDEFINED no subcomando → caía no default.
664
+ // Fix: prefere o valor do subcomando e cai no do pai (command.parent.opts()).
665
+ // O --json sofria a MESMA colisão (sintoma do pdv: `--follow --json` ignorava
666
+ // o --json → saía texto + despejava backlog). Agora cai no parent.json também.
529
667
  const parent = command?.parent?.opts?.() ?? {};
530
668
  await runChatHistory({
531
669
  channel: cmdOpts.channel ?? cmdOpts.canal ?? parent.channel ?? parent.canal,
532
670
  product: cmdOpts.product ?? parent.product,
533
671
  hours: cmdOpts.hours,
672
+ since: cmdOpts.since,
534
673
  follow: !!(cmdOpts.follow || cmdOpts.stream || cmdOpts.watch),
535
674
  interval: cmdOpts.interval,
536
- json: !!cmdOpts.json,
675
+ json: !!(cmdOpts.json || parent.json),
537
676
  });
538
677
  });
539
678
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -132,3 +132,34 @@ export interface DbMigrationsCancelOptions {
132
132
  * Roles: admin ou operator.
133
133
  */
134
134
  export declare function runDbMigrationsCancel(migrationId: string, opts?: DbMigrationsCancelOptions): Promise<void>;
135
+ export interface DbMigrationsShowOptions {
136
+ json?: boolean;
137
+ }
138
+ /**
139
+ * Detalha UMA migração (GET /api/cli/v1/db/migrations/[id]) — status,
140
+ * classificação POR-STATEMENT, error, redundantOf e ponteiros do apply via
141
+ * agente. Resolve a cegueira de "onde/por quê parou" (antes só havia `list`).
142
+ *
143
+ * Roles: admin ou operator (leitura).
144
+ */
145
+ export declare function runDbMigrationsShow(migrationId: string, opts?: DbMigrationsShowOptions): Promise<void>;
146
+ export interface DbMigrationsResolveOptions {
147
+ /** Atestar manualmente quando não há prova de redundância por hash. */
148
+ force?: boolean;
149
+ /** Código TOTP step-up — obrigatório com --force. */
150
+ mfa?: string;
151
+ json?: boolean;
152
+ }
153
+ /**
154
+ * Destrava uma migração presa em `partially_applied`/`failed` quando ela é
155
+ * REDUNDANTE (o DDL já está no banco). POST /api/cli/v1/db/migrations/[id]/resolve.
156
+ *
157
+ * Dois caminhos:
158
+ * - SEM --force (admin|operator): prova por hash — só resolve se houver outra
159
+ * migração `applied` com o MESMO hash neste banco (evidência determinística).
160
+ * - COM --force (admin + MFA): atestação manual — o admin verificou o estado
161
+ * real do banco (SELECT) e atesta que o schema já está correto.
162
+ *
163
+ * Caso pdv mig #9: re-gerado com a schema do #8 já applied → CREATE TYPE colidiu.
164
+ */
165
+ export declare function runDbMigrationsResolve(migrationId: string, opts?: DbMigrationsResolveOptions): Promise<void>;
@@ -10,8 +10,10 @@
10
10
  * neetru db init — registra banco local + scaffolda db/schema.ts
11
11
  * neetru db apply [--dry-run] — pipeline de migração + envia ao Core
12
12
  * neetru db migrations list [--db <id>]
13
+ * neetru db migrations show <id> — detalha status/classificação por-statement/erro/redundantOf
13
14
  * neetru db migrations confirm <id> — confirma migração destrutiva (exige --mfa)
14
15
  * neetru db migrations cancel <id> — cancela migração presa em awaiting_confirmation ou pending
16
+ * neetru db migrations resolve <id> — destrava partially_applied/failed redundante (--force exige MFA)
15
17
  *
16
18
  * Todos os comandos que chamam o Core usam `apiRequest` do `api-client` —
17
19
  * autenticação via Bearer token resolvido automaticamente do config local.
@@ -1235,6 +1237,152 @@ export async function runDbMigrationsCancel(migrationId, opts = {}) {
1235
1237
  log.dim(` Migração cancelada: ${chalk.bold(migrationId)}`);
1236
1238
  log.dim(` Para reenviar: neetru db apply`);
1237
1239
  }
1240
+ /**
1241
+ * Detalha UMA migração (GET /api/cli/v1/db/migrations/[id]) — status,
1242
+ * classificação POR-STATEMENT, error, redundantOf e ponteiros do apply via
1243
+ * agente. Resolve a cegueira de "onde/por quê parou" (antes só havia `list`).
1244
+ *
1245
+ * Roles: admin ou operator (leitura).
1246
+ */
1247
+ export async function runDbMigrationsShow(migrationId, opts = {}) {
1248
+ if (!opts.json)
1249
+ log.banner();
1250
+ if (!migrationId) {
1251
+ const msg = '<migrationId> é obrigatório.';
1252
+ if (opts.json) {
1253
+ jsonError(msg, 'missing_migration_id');
1254
+ }
1255
+ else {
1256
+ log.error(msg);
1257
+ }
1258
+ safeExit(1);
1259
+ return;
1260
+ }
1261
+ const spinner = opts.json
1262
+ ? null
1263
+ : ora({ text: `Buscando migração ${migrationId}…`, color: 'blue' }).start();
1264
+ let resp;
1265
+ try {
1266
+ resp = await apiRequest(`/api/cli/v1/db/migrations/${encodeURIComponent(migrationId)}`);
1267
+ spinner?.stop();
1268
+ }
1269
+ catch (err) {
1270
+ spinner?.fail('Falha ao buscar migração.');
1271
+ if (opts.json) {
1272
+ jsonError(err.message ?? String(err), 'show_failed');
1273
+ safeExit(4);
1274
+ return;
1275
+ }
1276
+ handleApiError(err);
1277
+ return;
1278
+ }
1279
+ if (opts.json) {
1280
+ console.log(JSON.stringify(resp, null, 2));
1281
+ return;
1282
+ }
1283
+ const m = resp.migration;
1284
+ log.heading(`Migração ${m.id}`);
1285
+ log.dim(` Banco: ${m.dbId}`);
1286
+ log.dim(` Produto: ${m.productId}`);
1287
+ log.dim(` Ambiente: ${m.environment}`);
1288
+ log.dim(` Número: ${m.migrationNumber}`);
1289
+ log.dim(` Status: ${m.status}`);
1290
+ log.dim(` Severidade: ${severityColor(m.severity ?? '—')}`);
1291
+ log.dim(` Aplicado em: ${m.appliedAt ? fmtTimestamp(m.appliedAt) : '—'}`);
1292
+ if (m.redundantOfMigrationId) {
1293
+ log.dim(` Redundante de: ${chalk.bold(m.redundantOfMigrationId)} (DDL idêntico já aplicado)`);
1294
+ }
1295
+ if (m.preBackupGcsPath)
1296
+ log.dim(` Backup: ${m.preBackupGcsPath}`);
1297
+ if (m.error) {
1298
+ log.dim('');
1299
+ log.error(` Erro: ${m.error}`);
1300
+ }
1301
+ if (Array.isArray(m.statements) && m.statements.length > 0) {
1302
+ log.dim('');
1303
+ log.dim(` Statements (${m.statements.length}):`);
1304
+ m.statements.forEach((s, i) => {
1305
+ log.dim(` ${i + 1}. [${severityColor(s.severity)}] ${s.reason}`);
1306
+ log.dim(` ${s.sql.slice(0, 120)}${s.sql.length > 120 ? '…' : ''}`);
1307
+ });
1308
+ }
1309
+ }
1310
+ /**
1311
+ * Destrava uma migração presa em `partially_applied`/`failed` quando ela é
1312
+ * REDUNDANTE (o DDL já está no banco). POST /api/cli/v1/db/migrations/[id]/resolve.
1313
+ *
1314
+ * Dois caminhos:
1315
+ * - SEM --force (admin|operator): prova por hash — só resolve se houver outra
1316
+ * migração `applied` com o MESMO hash neste banco (evidência determinística).
1317
+ * - COM --force (admin + MFA): atestação manual — o admin verificou o estado
1318
+ * real do banco (SELECT) e atesta que o schema já está correto.
1319
+ *
1320
+ * Caso pdv mig #9: re-gerado com a schema do #8 já applied → CREATE TYPE colidiu.
1321
+ */
1322
+ export async function runDbMigrationsResolve(migrationId, opts = {}) {
1323
+ if (!opts.json)
1324
+ log.banner();
1325
+ if (!migrationId) {
1326
+ const msg = '<migrationId> é obrigatório.';
1327
+ if (opts.json) {
1328
+ jsonError(msg, 'missing_migration_id');
1329
+ }
1330
+ else {
1331
+ log.error(msg);
1332
+ }
1333
+ safeExit(1);
1334
+ return;
1335
+ }
1336
+ // --force exige step-up MFA (atestação). Sem force = prova por hash, sem MFA.
1337
+ const reqInit = { method: 'POST' };
1338
+ if (opts.force) {
1339
+ const { headers } = await resolveStepUp({ mfaToken: opts.mfa, json: opts.json });
1340
+ reqInit.headers = headers;
1341
+ reqInit.body = { force: true };
1342
+ }
1343
+ const spinner = opts.json
1344
+ ? null
1345
+ : ora({ text: `Resolvendo migração ${migrationId}…`, color: 'yellow' }).start();
1346
+ let resp;
1347
+ try {
1348
+ resp = await apiRequest(`/api/cli/v1/db/migrations/${encodeURIComponent(migrationId)}/resolve`, reqInit);
1349
+ const modeLabel = resp.mode === 'hash_proven' ? 'prova por hash' : 'atestação admin';
1350
+ spinner?.succeed(`Migração ${chalk.bold(migrationId)} resolvida (${modeLabel}) — status: ${resp.status}`);
1351
+ }
1352
+ catch (err) {
1353
+ spinner?.fail('Falha ao resolver migração.');
1354
+ if (err instanceof CliApiError && err.status === 409) {
1355
+ const msg = `Não foi possível resolver: ${err.message}\n` +
1356
+ `Sem prova de redundância por hash. Verifique o estado real do banco ` +
1357
+ `(SELECT read-only) e, se o schema já estiver correto, use --force (exige MFA); ` +
1358
+ `ou cancele e reenvie a migração.`;
1359
+ if (opts.json) {
1360
+ console.log(JSON.stringify({ ok: false, error: 'migration_not_resolvable', message: msg }));
1361
+ }
1362
+ else {
1363
+ log.error(msg);
1364
+ }
1365
+ safeExit(4);
1366
+ return;
1367
+ }
1368
+ if (opts.json) {
1369
+ jsonError(err.message ?? String(err), 'resolve_failed');
1370
+ safeExit(4);
1371
+ return;
1372
+ }
1373
+ handleApiError(err);
1374
+ return;
1375
+ }
1376
+ if (opts.json) {
1377
+ console.log(JSON.stringify(resp));
1378
+ return;
1379
+ }
1380
+ log.dim('');
1381
+ if (resp.redundantOfMigrationId) {
1382
+ log.dim(` Redundante de: ${chalk.bold(resp.redundantOfMigrationId)}`);
1383
+ }
1384
+ log.dim(` Status final: ${chalk.bold(resp.status)}`);
1385
+ }
1238
1386
  // ── D-3: runDbMigrate e runDbSeed removidos (legado Sprint 10) ──────────────
1239
1387
  // Esses comandos operavam via schema.manifest.json (Sprint 10) e foram cortados
1240
1388
  // junto com o branch legado do `db init`. O fluxo canônico é: