@neetru/cli 2.11.4 → 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.
- package/README.md +27 -0
- package/dist/commands/ai.js +33 -8
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/auth.js +8 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/config.js +13 -3
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/deploy.js +64 -7
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev-up.d.ts +70 -0
- package/dist/commands/dev-up.js +224 -0
- package/dist/commands/dev-up.js.map +1 -0
- package/dist/commands/doctor.js +14 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/dr.js +8 -0
- package/dist/commands/dr.js.map +1 -1
- package/dist/commands/init.js +46 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/ops.d.ts +41 -9
- package/dist/commands/ops.js +367 -17
- package/dist/commands/ops.js.map +1 -1
- package/dist/index.js +36 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/ai/auth-discovery.d.ts +7 -1
- package/dist/lib/ai/auth-discovery.js +23 -1
- package/dist/lib/ai/auth-discovery.js.map +1 -1
- package/dist/lib/ai/context.d.ts +0 -3
- package/dist/lib/ai/context.js +23 -4
- package/dist/lib/ai/context.js.map +1 -1
- package/dist/lib/ai/orchestrator.d.ts +43 -8
- package/dist/lib/ai/orchestrator.js +452 -150
- package/dist/lib/ai/orchestrator.js.map +1 -1
- package/dist/lib/api-client.js +9 -2
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/config.d.ts +5 -1
- package/dist/lib/config.js +5 -1
- package/dist/lib/config.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/ops.js
CHANGED
|
@@ -5,15 +5,18 @@
|
|
|
5
5
|
* via Bearer token e flags --dry-run onde há mutação.
|
|
6
6
|
*
|
|
7
7
|
* Namespace ops:
|
|
8
|
-
* neetru ops heartbeat
|
|
9
|
-
* neetru ops smoke notification
|
|
10
|
-
* neetru ops smoke observability
|
|
11
|
-
* neetru ops reg-token <serverId>
|
|
12
|
-
* neetru ops resolve-errors
|
|
13
|
-
* neetru ops openapi-diff
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
8
|
+
* neetru ops heartbeat — checar heartbeat do agente em um server
|
|
9
|
+
* neetru ops smoke notification — dispara notification de smoke end-to-end
|
|
10
|
+
* neetru ops smoke observability — smoke test do pipeline de observability
|
|
11
|
+
* neetru ops reg-token <serverId> — gerar registration token para um server
|
|
12
|
+
* neetru ops resolve-errors — resolver erros abertos em lote
|
|
13
|
+
* neetru ops openapi-diff — detectar breaking changes na spec OpenAPI
|
|
14
|
+
* neetru ops bootstrap-admin <uid> — promover 1º admin (bootstrap gate)
|
|
15
|
+
* neetru ops backfill incidents-source — popular campo source em incidents legados
|
|
16
|
+
* neetru ops backfill workspaces — popular campo type em tenants legados
|
|
17
|
+
* neetru ops seed api-catalog — seed das 12 APIs Core no registry apis/
|
|
18
|
+
* neetru ops rehash-sdk-secrets — re-hash/rotação de clientSecrets SDK
|
|
19
|
+
* neetru ops migrate cli-keys — adicionar allowedTenants em cli_api_keys
|
|
17
20
|
*/
|
|
18
21
|
import chalk from 'chalk';
|
|
19
22
|
import ora from 'ora';
|
|
@@ -167,7 +170,8 @@ export async function runOpsRegToken(serverId, opts) {
|
|
|
167
170
|
}
|
|
168
171
|
export async function runOpsResolveErrors(opts) {
|
|
169
172
|
const token = await requireToken(opts.json);
|
|
170
|
-
|
|
173
|
+
// bug: guard não checava opts.yes — prompt sempre disparava mesmo com --yes
|
|
174
|
+
if (!opts.dryRun && !opts.json && !opts.yes) {
|
|
171
175
|
const { default: readline } = await import('node:readline');
|
|
172
176
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
173
177
|
const answer = await new Promise((resolve) => {
|
|
@@ -259,6 +263,278 @@ export async function runOpsOpenapiDiff(opts) {
|
|
|
259
263
|
log.success('Sem mudanças na spec. Snapshot inalterado.');
|
|
260
264
|
}
|
|
261
265
|
}
|
|
266
|
+
export async function runOpsBootstrapAdmin(uid, opts) {
|
|
267
|
+
const token = await requireToken(opts.json);
|
|
268
|
+
if (!uid || !uid.trim()) {
|
|
269
|
+
if (opts.json) {
|
|
270
|
+
console.log(JSON.stringify({ ok: false, error: 'validation', message: 'uid é obrigatório.' }));
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
log.error('uid é obrigatório. Uso: neetru ops bootstrap-admin <uid>');
|
|
274
|
+
}
|
|
275
|
+
safeExit(1);
|
|
276
|
+
}
|
|
277
|
+
const spinner = opts.json ? null : ora({ text: `Promovendo ${uid} a admin…`, color: 'blue' }).start();
|
|
278
|
+
let res;
|
|
279
|
+
try {
|
|
280
|
+
res = await apiRequest('/api/cli/v1/ops/bootstrap-admin', {
|
|
281
|
+
method: 'POST',
|
|
282
|
+
body: { uid },
|
|
283
|
+
token,
|
|
284
|
+
});
|
|
285
|
+
spinner?.stop();
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
spinner?.fail('Falha ao promover admin.');
|
|
289
|
+
handleApiError(error, opts.json);
|
|
290
|
+
}
|
|
291
|
+
if (opts.json) {
|
|
292
|
+
console.log(JSON.stringify(res));
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const data = res;
|
|
296
|
+
log.success(`${String(data.email ?? uid)} promovido a admin (${String(data.action ?? '')}).`);
|
|
297
|
+
console.log(chalk.dim(` ${String(data.message ?? '')}`));
|
|
298
|
+
}
|
|
299
|
+
export async function runOpsBackfillIncidentsSource(opts) {
|
|
300
|
+
const token = await requireToken(opts.json);
|
|
301
|
+
const spinner = opts.json
|
|
302
|
+
? null
|
|
303
|
+
: ora({ text: `Backfill incidents.source${opts.dryRun ? ' (dry-run)' : ''}…`, color: 'blue' }).start();
|
|
304
|
+
let res;
|
|
305
|
+
try {
|
|
306
|
+
res = await apiRequest('/api/cli/v1/ops/backfill/incidents-source', {
|
|
307
|
+
method: 'POST',
|
|
308
|
+
body: { dryRun: opts.dryRun ?? false },
|
|
309
|
+
token,
|
|
310
|
+
});
|
|
311
|
+
spinner?.stop();
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
spinner?.fail('Falha ao executar backfill incidents-source.');
|
|
315
|
+
handleApiError(error, opts.json);
|
|
316
|
+
}
|
|
317
|
+
if (opts.json) {
|
|
318
|
+
console.log(JSON.stringify(res));
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
const data = res;
|
|
322
|
+
const status = data.status;
|
|
323
|
+
if (status === 'already_applied') {
|
|
324
|
+
log.warn('Migration incidents_source_v1 já foi aplicada anteriormente.');
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const stats = data.stats;
|
|
328
|
+
console.log(chalk.bold(`\nBackfill incidents.source (${opts.dryRun ? 'DRY-RUN' : 'APLICADO'}):`));
|
|
329
|
+
if (stats) {
|
|
330
|
+
console.log(` scanned: ${stats.scanned ?? 0}`);
|
|
331
|
+
console.log(` já tinham source: ${stats.alreadyHasSource ?? 0}`);
|
|
332
|
+
console.log(` a atualizar: ${stats.toUpdate ?? 0}`);
|
|
333
|
+
if (!opts.dryRun) {
|
|
334
|
+
console.log(` escritas: ${stats.written ?? 0}`);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
console.log(chalk.dim(' (dry-run — nada foi escrito; rode sem --dry-run para aplicar)'));
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
export async function runOpsBackfillWorkspaces(opts) {
|
|
342
|
+
const token = await requireToken(opts.json);
|
|
343
|
+
const spinner = opts.json
|
|
344
|
+
? null
|
|
345
|
+
: ora({ text: `Backfill tenants.type${opts.dryRun ? ' (dry-run)' : ''}…`, color: 'blue' }).start();
|
|
346
|
+
let res;
|
|
347
|
+
try {
|
|
348
|
+
res = await apiRequest('/api/cli/v1/ops/backfill/workspaces', {
|
|
349
|
+
method: 'POST',
|
|
350
|
+
body: { dryRun: opts.dryRun ?? false },
|
|
351
|
+
token,
|
|
352
|
+
});
|
|
353
|
+
spinner?.stop();
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
spinner?.fail('Falha ao executar backfill workspaces.');
|
|
357
|
+
handleApiError(error, opts.json);
|
|
358
|
+
}
|
|
359
|
+
if (opts.json) {
|
|
360
|
+
console.log(JSON.stringify(res));
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
const data = res;
|
|
364
|
+
const stats = data.stats;
|
|
365
|
+
const status = data.status;
|
|
366
|
+
console.log(chalk.bold(`\nBackfill tenants.type (${opts.dryRun ? 'DRY-RUN' : 'APLICADO'}):`));
|
|
367
|
+
if (stats) {
|
|
368
|
+
console.log(` → workspace: ${stats.toWorkspace ?? 0}`);
|
|
369
|
+
console.log(` → production: ${stats.toProduction ?? 0}`);
|
|
370
|
+
console.log(` já tipados: ${stats.alreadyTyped ?? 0}`);
|
|
371
|
+
if (!opts.dryRun) {
|
|
372
|
+
console.log(` escritas: ${stats.written ?? 0}`);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
console.log(chalk.dim(' (dry-run — nada foi escrito; rode sem --dry-run para aplicar)'));
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (status === 'nothing_to_do') {
|
|
379
|
+
log.success('Nada a fazer. Banco já está consistente.');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
export async function runOpsSeedApiCatalog(opts) {
|
|
383
|
+
const token = await requireToken(opts.json);
|
|
384
|
+
const spinner = opts.json
|
|
385
|
+
? null
|
|
386
|
+
: ora({ text: `Seed do catálogo de APIs${opts.dryRun ? ' (dry-run)' : ''}…`, color: 'blue' }).start();
|
|
387
|
+
let res;
|
|
388
|
+
try {
|
|
389
|
+
res = await apiRequest('/api/cli/v1/ops/seed/api-catalog', {
|
|
390
|
+
method: 'POST',
|
|
391
|
+
body: { dryRun: opts.dryRun ?? false },
|
|
392
|
+
token,
|
|
393
|
+
});
|
|
394
|
+
spinner?.stop();
|
|
395
|
+
}
|
|
396
|
+
catch (error) {
|
|
397
|
+
spinner?.fail('Falha ao executar seed do catálogo de APIs.');
|
|
398
|
+
handleApiError(error, opts.json);
|
|
399
|
+
}
|
|
400
|
+
if (opts.json) {
|
|
401
|
+
console.log(JSON.stringify(res));
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
const data = res;
|
|
405
|
+
const count = data.count;
|
|
406
|
+
const apis = data.apis;
|
|
407
|
+
if (opts.dryRun) {
|
|
408
|
+
console.log(chalk.bold(`\nSeed api-catalog (DRY-RUN) — ${count ?? 0} APIs seriam gravadas:`));
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
log.success(`${count ?? 0} APIs gravadas em apis/.`);
|
|
412
|
+
}
|
|
413
|
+
if (apis && !opts.json) {
|
|
414
|
+
const header = ` ${'ID'.padEnd(30)} ${'STATUS'.padEnd(10)} NOME`;
|
|
415
|
+
const sep = ` ${'─'.repeat(30)} ${'─'.repeat(10)} ${'─'.repeat(30)}`;
|
|
416
|
+
console.log(chalk.dim(header));
|
|
417
|
+
console.log(chalk.dim(sep));
|
|
418
|
+
for (const api of apis) {
|
|
419
|
+
const statusColored = api.status === 'active'
|
|
420
|
+
? chalk.green(api.status.padEnd(10))
|
|
421
|
+
: chalk.yellow(api.status.padEnd(10));
|
|
422
|
+
console.log(` ${api.id.padEnd(30)} ${statusColored} ${api.name}`);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
export async function runOpsRehashSdkSecrets(opts) {
|
|
427
|
+
const token = await requireToken(opts.json);
|
|
428
|
+
const spinner = opts.json
|
|
429
|
+
? null
|
|
430
|
+
: ora({ text: `Re-hash SDK secrets${opts.dryRun ? ' (dry-run)' : ''}${opts.rotate ? ' [ROTATE]' : ''}…`, color: 'blue' }).start();
|
|
431
|
+
let res;
|
|
432
|
+
try {
|
|
433
|
+
res = await apiRequest('/api/cli/v1/ops/rehash-sdk-secrets', {
|
|
434
|
+
method: 'POST',
|
|
435
|
+
body: { dryRun: opts.dryRun ?? false, rotate: opts.rotate ?? false },
|
|
436
|
+
token,
|
|
437
|
+
});
|
|
438
|
+
spinner?.stop();
|
|
439
|
+
}
|
|
440
|
+
catch (error) {
|
|
441
|
+
spinner?.fail('Falha ao re-hash SDK secrets.');
|
|
442
|
+
handleApiError(error, opts.json);
|
|
443
|
+
}
|
|
444
|
+
if (opts.json) {
|
|
445
|
+
console.log(JSON.stringify(res));
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
const data = res;
|
|
449
|
+
const stats = data.stats;
|
|
450
|
+
const rotatedSecrets = data.rotatedSecrets;
|
|
451
|
+
const warning = data.warning;
|
|
452
|
+
console.log(chalk.bold(`\nRe-hash SDK secrets (${opts.dryRun ? 'DRY-RUN' : opts.rotate ? 'ROTATE' : 'REHASH'}):`));
|
|
453
|
+
if (stats) {
|
|
454
|
+
console.log(` total: ${stats.total ?? 0}`);
|
|
455
|
+
console.log(` já ok: ${stats.alreadyOk ?? 0}`);
|
|
456
|
+
console.log(` sem secret: ${stats.noSecret ?? 0}`);
|
|
457
|
+
console.log(` re-hashados: ${stats.rehashed ?? 0}${opts.dryRun ? ' (dry-run)' : ''}`);
|
|
458
|
+
console.log(` rotacionados:${stats.rotated ?? 0}${opts.dryRun ? ' (dry-run)' : ''}`);
|
|
459
|
+
}
|
|
460
|
+
if (rotatedSecrets && rotatedSecrets.length > 0) {
|
|
461
|
+
console.log(chalk.red('\n=== NOVOS SECRETS (anote AGORA — não serão exibidos de novo) ==='));
|
|
462
|
+
for (const r of rotatedSecrets) {
|
|
463
|
+
console.log(` client: ${r.name} (${r.clientId})`);
|
|
464
|
+
console.log(` secret: ${chalk.bold(r.clientSecret)}`);
|
|
465
|
+
console.log('');
|
|
466
|
+
}
|
|
467
|
+
console.log(chalk.yellow(' Entregue cada secret ao dono do client por canal seguro.'));
|
|
468
|
+
console.log(chalk.yellow(' Os secrets antigos deixaram de funcionar.'));
|
|
469
|
+
}
|
|
470
|
+
if (warning) {
|
|
471
|
+
log.warn(warning);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
export async function runOpsMigrateCliKeys(opts) {
|
|
475
|
+
const token = await requireToken(opts.json);
|
|
476
|
+
// Parse --allowed-tenants "keyId1:t-1,t-2;keyId2:t-3" → Record<string, string[]>
|
|
477
|
+
const tenantMap = {};
|
|
478
|
+
if (opts.allowedTenants) {
|
|
479
|
+
for (const pair of opts.allowedTenants.split(';')) {
|
|
480
|
+
const [keyId, tenants] = pair.split(':');
|
|
481
|
+
if (keyId && tenants) {
|
|
482
|
+
tenantMap[keyId.trim()] = tenants.split(',').map((t) => t.trim()).filter(Boolean);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
const spinner = opts.json
|
|
487
|
+
? null
|
|
488
|
+
: ora({ text: `Migrando cli_api_keys${opts.dryRun ? ' (dry-run)' : ''}…`, color: 'blue' }).start();
|
|
489
|
+
let res;
|
|
490
|
+
try {
|
|
491
|
+
res = await apiRequest('/api/cli/v1/ops/migrate/cli-keys', {
|
|
492
|
+
method: 'POST',
|
|
493
|
+
body: {
|
|
494
|
+
dryRun: opts.dryRun ?? false,
|
|
495
|
+
autoAdmin: opts.autoAdmin !== false,
|
|
496
|
+
tenantMap,
|
|
497
|
+
},
|
|
498
|
+
token,
|
|
499
|
+
});
|
|
500
|
+
spinner?.stop();
|
|
501
|
+
}
|
|
502
|
+
catch (error) {
|
|
503
|
+
spinner?.fail('Falha ao migrar cli_api_keys.');
|
|
504
|
+
handleApiError(error, opts.json);
|
|
505
|
+
}
|
|
506
|
+
if (opts.json) {
|
|
507
|
+
console.log(JSON.stringify(res));
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
const data = res;
|
|
511
|
+
const stats = data.stats;
|
|
512
|
+
const results = data.results;
|
|
513
|
+
const warning = data.warning;
|
|
514
|
+
console.log(chalk.bold(`\nMigração cli_api_keys (${opts.dryRun ? 'DRY-RUN' : 'APLICADO'}):`));
|
|
515
|
+
if (stats) {
|
|
516
|
+
console.log(` total: ${stats.total ?? 0}`);
|
|
517
|
+
console.log(` já ok: ${stats.alreadyOk ?? 0}`);
|
|
518
|
+
console.log(` revogadas: ${stats.revoked ?? 0}`);
|
|
519
|
+
console.log(` atualizadas: ${stats.updated ?? 0}${opts.dryRun ? ' (dry-run)' : ''}`);
|
|
520
|
+
}
|
|
521
|
+
if (results && results.length > 0) {
|
|
522
|
+
console.log('');
|
|
523
|
+
const header = ` ${'KEY ID'.padEnd(24)} ${'EMAIL'.padEnd(24)} ${'ROLE'.padEnd(12)} AÇÃO`;
|
|
524
|
+
const sep = ` ${'─'.repeat(24)} ${'─'.repeat(24)} ${'─'.repeat(12)} ─────`;
|
|
525
|
+
console.log(chalk.dim(header));
|
|
526
|
+
console.log(chalk.dim(sep));
|
|
527
|
+
for (const r of results) {
|
|
528
|
+
const actionColored = r.action === 'updated' ? chalk.green(r.action) :
|
|
529
|
+
r.action === 'dry_run' ? chalk.cyan(r.action) :
|
|
530
|
+
chalk.dim(r.action);
|
|
531
|
+
console.log(` ${r.keyId.padEnd(24)} ${r.email.padEnd(24)} ${r.role.padEnd(12)} ${actionColored}`);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
if (warning) {
|
|
535
|
+
log.warn(warning);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
262
538
|
// ─── Registro do comando `ops` em program ─────────────────────────────────────
|
|
263
539
|
export function registerOpsCommand(program) {
|
|
264
540
|
const opsCmd = program
|
|
@@ -335,6 +611,8 @@ export function registerOpsCommand(program) {
|
|
|
335
611
|
await runOpsResolveErrors({
|
|
336
612
|
dryRun: !!cmdOpts.dryRun,
|
|
337
613
|
resolvedBy: cmdOpts.resolvedBy,
|
|
614
|
+
// bug: cmdOpts.yes nunca era repassado — --yes era ignorado
|
|
615
|
+
yes: !!cmdOpts.yes,
|
|
338
616
|
json: !!cmdOpts.json,
|
|
339
617
|
});
|
|
340
618
|
});
|
|
@@ -347,13 +625,85 @@ export function registerOpsCommand(program) {
|
|
|
347
625
|
.action(async (cmdOpts) => {
|
|
348
626
|
await runOpsOpenapiDiff({ update: !!cmdOpts.update, json: !!cmdOpts.json });
|
|
349
627
|
});
|
|
350
|
-
// ──
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
628
|
+
// ── ops bootstrap-admin ───────────────────────────────────────────────────
|
|
629
|
+
opsCmd
|
|
630
|
+
.command('bootstrap-admin <uid>')
|
|
631
|
+
.description('Promover um usuário a admin (resolve o problema ovo-galinha do 1º admin). ' +
|
|
632
|
+
'Se não existe nenhum admin, o gate está aberto sem auth. ' +
|
|
633
|
+
'Se já existe admin, exige Bearer com role admin.')
|
|
634
|
+
.option('--json', 'saída em JSON')
|
|
635
|
+
.action(async (uid, cmdOpts) => {
|
|
636
|
+
await runOpsBootstrapAdmin(uid, { json: !!cmdOpts.json });
|
|
637
|
+
});
|
|
638
|
+
// ── ops backfill ──────────────────────────────────────────────────────────
|
|
639
|
+
const backfillCmd = opsCmd
|
|
640
|
+
.command('backfill')
|
|
641
|
+
.description('Backfill de campos legados em coleções do Core');
|
|
642
|
+
backfillCmd
|
|
643
|
+
.command('incidents-source')
|
|
644
|
+
.description('Popular campo "source" em incidents/* legados (default: source=manual)')
|
|
645
|
+
.option('--dry-run', 'mostra o que seria atualizado sem gravar')
|
|
646
|
+
.option('--json', 'saída em JSON')
|
|
647
|
+
.action(async (cmdOpts) => {
|
|
648
|
+
await runOpsBackfillIncidentsSource({ dryRun: !!cmdOpts.dryRun, json: !!cmdOpts.json });
|
|
649
|
+
});
|
|
650
|
+
backfillCmd
|
|
651
|
+
.command('workspaces')
|
|
652
|
+
.description('Popular campo "type" em tenants/* legados (heurística: temporaryDomain→workspace, default→production)')
|
|
653
|
+
.option('--dry-run', 'mostra o que seria atualizado sem gravar')
|
|
654
|
+
.option('--json', 'saída em JSON')
|
|
655
|
+
.action(async (cmdOpts) => {
|
|
656
|
+
await runOpsBackfillWorkspaces({ dryRun: !!cmdOpts.dryRun, json: !!cmdOpts.json });
|
|
657
|
+
});
|
|
658
|
+
// ── ops seed ──────────────────────────────────────────────────────────────
|
|
659
|
+
const seedCmd = opsCmd
|
|
660
|
+
.command('seed')
|
|
661
|
+
.description('Seed de coleções do Core com dados canônicos');
|
|
662
|
+
seedCmd
|
|
663
|
+
.command('api-catalog')
|
|
664
|
+
.description('Seed das 12 APIs Core no registry apis/ (idempotente — usa set/overwrite)')
|
|
665
|
+
.option('--dry-run', 'mostra o que seria gravado sem aplicar')
|
|
666
|
+
.option('--json', 'saída em JSON')
|
|
667
|
+
.action(async (cmdOpts) => {
|
|
668
|
+
await runOpsSeedApiCatalog({ dryRun: !!cmdOpts.dryRun, json: !!cmdOpts.json });
|
|
669
|
+
});
|
|
670
|
+
// ── ops rehash-sdk-secrets ────────────────────────────────────────────────
|
|
671
|
+
opsCmd
|
|
672
|
+
.command('rehash-sdk-secrets')
|
|
673
|
+
.description('Re-hash ou rotação dos clientSecrets de sdk_clients/ (migração SEC-001). ' +
|
|
674
|
+
'Default: rehash in-place (secret preservado, plaintext removido). ' +
|
|
675
|
+
'--rotate: gera novo secret e o imprime UMA VEZ na saída — anote por canal seguro.')
|
|
676
|
+
.option('--dry-run', 'lista o que seria migrado sem gravar')
|
|
677
|
+
.option('--rotate', 'gerar novos secrets (invalida os antigos)')
|
|
678
|
+
.option('--json', 'saída em JSON')
|
|
679
|
+
.action(async (cmdOpts) => {
|
|
680
|
+
await runOpsRehashSdkSecrets({
|
|
681
|
+
dryRun: !!cmdOpts.dryRun,
|
|
682
|
+
rotate: !!cmdOpts.rotate,
|
|
683
|
+
json: !!cmdOpts.json,
|
|
684
|
+
});
|
|
685
|
+
});
|
|
686
|
+
// ── ops migrate ───────────────────────────────────────────────────────────
|
|
687
|
+
const migrateCmd = opsCmd
|
|
688
|
+
.command('migrate')
|
|
689
|
+
.description('Migrações de schema do Core');
|
|
690
|
+
migrateCmd
|
|
691
|
+
.command('cli-keys')
|
|
692
|
+
.description('Adicionar campo allowedTenants em cli_api_keys/ (BUG-002). ' +
|
|
693
|
+
'Admin keys recebem ["*"]. Roles não-admin recebem [] (fail-closed) ' +
|
|
694
|
+
'a menos que --allowed-tenants mapeie explicitamente.')
|
|
695
|
+
.option('--dry-run', 'lista o que seria atualizado sem gravar')
|
|
696
|
+
.option('--no-auto-admin', 'não aplica ["*"] automaticamente em admin keys')
|
|
697
|
+
.option('--allowed-tenants <map>', 'mapeamento keyId→tenants no formato "keyId1:t-1,t-2;keyId2:t-3" (para roles não-admin)')
|
|
698
|
+
.option('--json', 'saída em JSON')
|
|
699
|
+
.action(async (cmdOpts) => {
|
|
700
|
+
await runOpsMigrateCliKeys({
|
|
701
|
+
dryRun: !!cmdOpts.dryRun,
|
|
702
|
+
autoAdmin: cmdOpts.autoAdmin !== false,
|
|
703
|
+
allowedTenants: cmdOpts.allowedTenants,
|
|
704
|
+
json: !!cmdOpts.json,
|
|
705
|
+
});
|
|
706
|
+
});
|
|
357
707
|
}
|
|
358
708
|
// ─── Re-export deprecation helper para uso em scripts/ ───────────────────────
|
|
359
709
|
export { deprecationBanner };
|
package/dist/commands/ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/commands/ops.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/commands/ops.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -212,18 +212,49 @@ program
|
|
|
212
212
|
await runWhoami({ json: !!opts.json });
|
|
213
213
|
});
|
|
214
214
|
// ── neetru dev ────────────────────────────────────────────────────────
|
|
215
|
-
//
|
|
216
|
-
//
|
|
217
|
-
//
|
|
218
|
-
|
|
215
|
+
// `neetru dev` (sem subcomando) = banco local Docker + watch de schema (M1
|
|
216
|
+
// GAP-M1-4) — comportamento legado preservado (action + options intactos).
|
|
217
|
+
// `neetru dev up` = emulador local completo (Firebase Emulators + Core),
|
|
218
|
+
// estilo `firebase emulators` (ENG_REVERSA_CLI F-EMU/P0). Subcomando aditivo:
|
|
219
|
+
// a action de `dev` só dispara quando nenhum subcomando casa.
|
|
220
|
+
const devCmd = program
|
|
219
221
|
.command('dev')
|
|
220
|
-
.description('
|
|
222
|
+
.description('Ambiente de dev local — banco Docker (default) ou emulador completo (`dev up`)')
|
|
221
223
|
.option('--db <name>', 'banco alvo do .neetru/db.json (default: único registrado)')
|
|
222
224
|
.option('--schema <path>', 'caminho do arquivo de schema (default: db/schema.ts)')
|
|
223
225
|
.action(async (opts) => {
|
|
224
226
|
const { runDev } = await import('./commands/dev.js');
|
|
225
227
|
await runDev({ db: opts.db, schema: opts.schema });
|
|
226
228
|
});
|
|
229
|
+
devCmd
|
|
230
|
+
.command('up')
|
|
231
|
+
.description('Subir emulador local completo (Firebase Emulators + Core Next.js) — 100% offline')
|
|
232
|
+
.option('--only <emus>', 'emuladores a subir', 'firestore,auth,functions')
|
|
233
|
+
.option('--core-port <port>', 'porta do Core (default 9003)')
|
|
234
|
+
.option('--core-path <path>', 'diretório do Core (default: cwd; precisa ter firebase.json)')
|
|
235
|
+
.option('--skip-core', 'só os emuladores, sem subir o Core')
|
|
236
|
+
.option('--import <dir>', 'importa estado dos emuladores deste diretório (seed portátil)')
|
|
237
|
+
.option('--export-on-exit <dir>', 'exporta o estado dos emuladores ao sair (snapshot)')
|
|
238
|
+
.action(async (opts) => {
|
|
239
|
+
const { runDevUp } = await import('./commands/dev-up.js');
|
|
240
|
+
await runDevUp({
|
|
241
|
+
only: opts.only,
|
|
242
|
+
corePort: opts.corePort ? Number(opts.corePort) : undefined,
|
|
243
|
+
corePath: opts.corePath,
|
|
244
|
+
skipCore: Boolean(opts.skipCore),
|
|
245
|
+
importDir: opts.import,
|
|
246
|
+
exportOnExit: opts.exportOnExit,
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
devCmd
|
|
250
|
+
.command('exec <script>')
|
|
251
|
+
.description('Roda <script> com os emuladores ativos, encerra e retorna o exit code (CI)')
|
|
252
|
+
.option('--only <emus>', 'emuladores a subir', 'firestore,auth,functions')
|
|
253
|
+
.option('--core-path <path>', 'diretório do Core (default: cwd)')
|
|
254
|
+
.action(async (script, opts) => {
|
|
255
|
+
const { runDevExec } = await import('./commands/dev-up.js');
|
|
256
|
+
await runDevExec(script, { only: opts.only, corePath: opts.corePath });
|
|
257
|
+
});
|
|
227
258
|
// ── neetru build ──────────────────────────────────────────────────────
|
|
228
259
|
program
|
|
229
260
|
.command('build')
|