@neetru/cli 2.3.0 → 2.5.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 (48) hide show
  1. package/dist/commands/artifact-registry.d.ts +7 -0
  2. package/dist/commands/artifact-registry.js +60 -0
  3. package/dist/commands/artifact-registry.js.map +1 -0
  4. package/dist/commands/deploy.js +8 -8
  5. package/dist/commands/deployments.d.ts +5 -5
  6. package/dist/commands/deployments.js +32 -6
  7. package/dist/commands/deployments.js.map +1 -1
  8. package/dist/commands/env.d.ts +11 -0
  9. package/dist/commands/env.js +91 -0
  10. package/dist/commands/env.js.map +1 -1
  11. package/dist/commands/hosting-write.d.ts +6 -0
  12. package/dist/commands/hosting-write.js +52 -0
  13. package/dist/commands/hosting-write.js.map +1 -0
  14. package/dist/commands/products-db.d.ts +9 -9
  15. package/dist/commands/products-db.js +84 -19
  16. package/dist/commands/products-db.js.map +1 -1
  17. package/dist/commands/products.d.ts +2 -2
  18. package/dist/commands/products.js +8 -6
  19. package/dist/commands/products.js.map +1 -1
  20. package/dist/commands/schema.d.ts +25 -0
  21. package/dist/commands/schema.js +321 -0
  22. package/dist/commands/schema.js.map +1 -0
  23. package/dist/commands/servers.d.ts +5 -5
  24. package/dist/commands/servers.js +25 -17
  25. package/dist/commands/servers.js.map +1 -1
  26. package/dist/commands/status.js +3 -2
  27. package/dist/commands/status.js.map +1 -1
  28. package/dist/commands/tenants.d.ts +14 -14
  29. package/dist/commands/tenants.js +62 -30
  30. package/dist/commands/tenants.js.map +1 -1
  31. package/dist/commands/ui.d.ts +1 -0
  32. package/dist/commands/ui.js +454 -0
  33. package/dist/commands/ui.js.map +1 -0
  34. package/dist/commands/workspaces.d.ts +9 -9
  35. package/dist/commands/workspaces.js +66 -31
  36. package/dist/commands/workspaces.js.map +1 -1
  37. package/dist/index.js +164 -65
  38. package/dist/index.js.map +1 -1
  39. package/dist/lib/ai/orchestrator.js +46 -23
  40. package/dist/lib/ai/orchestrator.js.map +1 -1
  41. package/dist/lib/config-schema.d.ts +18 -18
  42. package/dist/lib/pickers.d.ts +123 -0
  43. package/dist/lib/pickers.js +336 -0
  44. package/dist/lib/pickers.js.map +1 -0
  45. package/dist/lib/schema-cache.d.ts +87 -0
  46. package/dist/lib/schema-cache.js +134 -0
  47. package/dist/lib/schema-cache.js.map +1 -0
  48. package/package.json +1 -1
@@ -0,0 +1,454 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import chalk from 'chalk';
4
+ import inquirer from 'inquirer';
5
+ import { apiRequest } from '../lib/api-client.js';
6
+ import { config } from '../lib/config.js';
7
+ import { resolveToken } from '../lib/cli-read.js';
8
+ import { CLI_VERSION } from '../version.js';
9
+ import { log } from '../utils/logger.js';
10
+ function canPrompt() {
11
+ return Boolean(process.stdin.isTTY) && Boolean(process.stdout.isTTY) && process.env.CI !== 'true';
12
+ }
13
+ async function pause() {
14
+ await inquirer.prompt([
15
+ {
16
+ type: 'input',
17
+ name: 'continue',
18
+ message: 'Enter para voltar ao menu',
19
+ },
20
+ ]);
21
+ }
22
+ async function safeRun(fn, opts = {}) {
23
+ try {
24
+ await fn();
25
+ }
26
+ catch (error) {
27
+ log.error(error instanceof Error ? error.message : String(error));
28
+ }
29
+ if (opts.pauseAfter !== false)
30
+ await pause();
31
+ }
32
+ async function readLocalProject(cwd) {
33
+ for (const file of ['neetru.config.json', '.neetru.json']) {
34
+ const full = path.join(cwd, file);
35
+ try {
36
+ const raw = await fs.readFile(full, 'utf8');
37
+ return { file, data: JSON.parse(raw) };
38
+ }
39
+ catch (error) {
40
+ if (error.code !== 'ENOENT') {
41
+ return { file, data: { error: error.message } };
42
+ }
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ async function showOverview() {
48
+ const cwd = process.cwd();
49
+ const local = await readLocalProject(cwd);
50
+ const token = await resolveToken();
51
+ console.log();
52
+ log.heading('Projeto atual');
53
+ console.log(` ${chalk.dim('cwd')} ${cwd}`);
54
+ console.log(` ${chalk.dim('cli')} ${CLI_VERSION}`);
55
+ console.log(` ${chalk.dim('api')} ${config.get('neetruApiUrl') ?? 'https://api.neetru.com'}`);
56
+ console.log(` ${chalk.dim('config')} ${config.path}`);
57
+ if (local) {
58
+ console.log(` ${chalk.dim('arquivo')} ${local.file}`);
59
+ for (const key of ['name', 'slug', 'runtime', 'stack', 'schemaVersion', 'apiVersion']) {
60
+ if (local.data[key] !== undefined) {
61
+ console.log(` ${chalk.dim(key.padEnd(10))} ${String(local.data[key])}`);
62
+ }
63
+ }
64
+ }
65
+ else {
66
+ console.log(` ${chalk.dim('arquivo')} nenhum neetru.config.json no cwd`);
67
+ }
68
+ console.log();
69
+ log.heading('Sessao');
70
+ if (!token) {
71
+ console.log(` ${chalk.yellow('sem login')} rode ${chalk.cyan('neetru login')}`);
72
+ return;
73
+ }
74
+ try {
75
+ const me = await apiRequest('/api/cli/v1/whoami', { token });
76
+ console.log(` ${chalk.dim('email')} ${me.email}`);
77
+ console.log(` ${chalk.dim('role')} ${me.role}`);
78
+ console.log(` ${chalk.dim('uid')} ${me.uid}`);
79
+ console.log(` ${chalk.dim('keyId')} ${me.keyId}`);
80
+ }
81
+ catch (error) {
82
+ console.log(` ${chalk.yellow('login local encontrado, mas whoami falhou')}`);
83
+ console.log(` ${chalk.dim(error instanceof Error ? error.message : String(error))}`);
84
+ }
85
+ }
86
+ async function quickstart() {
87
+ const answers = await inquirer.prompt([
88
+ {
89
+ type: 'input',
90
+ name: 'name',
91
+ message: 'Nome do produto:',
92
+ validate: (value) => value.trim().length > 0 || 'Obrigatorio.',
93
+ },
94
+ {
95
+ type: 'confirm',
96
+ name: 'skipInit',
97
+ message: 'Pular scaffold local?',
98
+ default: false,
99
+ },
100
+ {
101
+ type: 'confirm',
102
+ name: 'skipOpen',
103
+ message: 'Nao abrir browser no final?',
104
+ default: false,
105
+ },
106
+ ]);
107
+ const { runNewMacro } = await import('./new.js');
108
+ await runNewMacro(answers.name, {
109
+ skipInit: answers.skipInit,
110
+ skipOpen: answers.skipOpen,
111
+ });
112
+ }
113
+ async function productsMenu() {
114
+ const answer = await inquirer.prompt([
115
+ {
116
+ type: 'list',
117
+ name: 'action',
118
+ message: 'Produtos',
119
+ choices: [
120
+ { name: 'Listar produtos', value: 'list' },
121
+ { name: 'Criar produto', value: 'create' },
122
+ { name: 'Publicar no catalogo', value: 'publish' },
123
+ { name: 'Remover do catalogo', value: 'unpublish' },
124
+ { name: 'Voltar', value: 'back' },
125
+ ],
126
+ },
127
+ ]);
128
+ if (answer.action === 'back')
129
+ return;
130
+ const products = await import('./products.js');
131
+ if (answer.action === 'list')
132
+ await products.runProductsList({});
133
+ if (answer.action === 'create')
134
+ await products.runProductsCreate({});
135
+ if (answer.action === 'publish')
136
+ await products.runProductsPublish(undefined, {});
137
+ if (answer.action === 'unpublish')
138
+ await products.runProductsUnpublish(undefined, {});
139
+ await pause();
140
+ }
141
+ async function workspacesMenu() {
142
+ const answer = await inquirer.prompt([
143
+ {
144
+ type: 'list',
145
+ name: 'action',
146
+ message: 'Workspaces',
147
+ choices: [
148
+ { name: 'Listar workspaces', value: 'list' },
149
+ { name: 'Criar workspace', value: 'create' },
150
+ { name: 'Ver detalhes', value: 'get' },
151
+ { name: 'Abrir no painel', value: 'open' },
152
+ { name: 'Promover bundle', value: 'advance' },
153
+ { name: 'Voltar', value: 'back' },
154
+ ],
155
+ },
156
+ ]);
157
+ if (answer.action === 'back')
158
+ return;
159
+ const workspaces = await import('./workspaces.js');
160
+ if (answer.action === 'list')
161
+ await workspaces.runWorkspacesList({});
162
+ if (answer.action === 'create')
163
+ await workspaces.runWorkspacesCreate({});
164
+ if (answer.action === 'get')
165
+ await workspaces.runWorkspacesGet(undefined, {});
166
+ if (answer.action === 'open')
167
+ await workspaces.runWorkspacesOpen(undefined);
168
+ if (answer.action === 'advance')
169
+ await workspaces.runWorkspacesAdvance(undefined, {});
170
+ await pause();
171
+ }
172
+ async function serversMenu() {
173
+ const answer = await inquirer.prompt([
174
+ {
175
+ type: 'list',
176
+ name: 'action',
177
+ message: 'Servers',
178
+ choices: [
179
+ { name: 'Listar servers', value: 'list' },
180
+ { name: 'Provisionar VM', value: 'provision' },
181
+ { name: 'Despachar comando', value: 'dispatch' },
182
+ { name: 'Desativar server', value: 'deactivate' },
183
+ { name: 'Voltar', value: 'back' },
184
+ ],
185
+ },
186
+ ]);
187
+ if (answer.action === 'back')
188
+ return;
189
+ const servers = await import('./servers.js');
190
+ if (answer.action === 'list')
191
+ await servers.runServersList({ capacity: true });
192
+ if (answer.action === 'provision')
193
+ await servers.runServersProvision({});
194
+ if (answer.action === 'dispatch')
195
+ await servers.runServersDispatch(undefined, undefined, {});
196
+ if (answer.action === 'deactivate')
197
+ await servers.runServersDeactivate(undefined, {});
198
+ await pause();
199
+ }
200
+ async function databasesMenu() {
201
+ const answer = await inquirer.prompt([
202
+ {
203
+ type: 'list',
204
+ name: 'action',
205
+ message: 'Bancos de produto',
206
+ choices: [
207
+ { name: 'Listar bancos', value: 'list' },
208
+ { name: 'Criar banco', value: 'create' },
209
+ { name: 'Detalhar banco', value: 'get' },
210
+ { name: 'Listar engines', value: 'engines' },
211
+ { name: 'Retry provisionamento', value: 'retry' },
212
+ { name: 'Rotacionar credenciais', value: 'rotate' },
213
+ { name: 'Arquivar banco', value: 'delete' },
214
+ { name: 'Voltar', value: 'back' },
215
+ ],
216
+ },
217
+ ]);
218
+ if (answer.action === 'back')
219
+ return;
220
+ const db = await import('./products-db.js');
221
+ if (answer.action === 'list')
222
+ await db.runDbList({});
223
+ if (answer.action === 'create')
224
+ await db.runDbCreate({ region: 'us-central1' });
225
+ if (answer.action === 'get')
226
+ await db.runDbGet(undefined, {});
227
+ if (answer.action === 'engines')
228
+ await db.runDbEngines({});
229
+ if (answer.action === 'retry')
230
+ await db.runDbRetry(undefined, {});
231
+ if (answer.action === 'rotate')
232
+ await db.runDbRotate(undefined, {});
233
+ if (answer.action === 'delete')
234
+ await db.runDbDelete(undefined, {});
235
+ await pause();
236
+ }
237
+ async function tenantsMenu() {
238
+ const answer = await inquirer.prompt([
239
+ {
240
+ type: 'list',
241
+ name: 'action',
242
+ message: 'Tenants',
243
+ choices: [
244
+ { name: 'Listar tenants', value: 'list' },
245
+ { name: 'Detalhar tenant', value: 'get' },
246
+ { name: 'Criar tenant', value: 'create' },
247
+ { name: 'Atualizar tenant', value: 'update' },
248
+ { name: 'Suspender tenant', value: 'suspend' },
249
+ { name: 'Reativar tenant', value: 'reactivate' },
250
+ { name: 'Voltar', value: 'back' },
251
+ ],
252
+ },
253
+ ]);
254
+ if (answer.action === 'back')
255
+ return;
256
+ const tenants = await import('./tenants.js');
257
+ if (answer.action === 'list')
258
+ await tenants.runTenantsList({});
259
+ if (answer.action === 'get')
260
+ await tenants.runTenantsGet(undefined, {});
261
+ if (answer.action === 'create')
262
+ await tenants.runTenantsCreate({});
263
+ if (answer.action === 'update')
264
+ await tenants.runTenantsUpdate(undefined, {});
265
+ if (answer.action === 'suspend')
266
+ await tenants.runTenantsSuspend(undefined, {});
267
+ if (answer.action === 'reactivate')
268
+ await tenants.runTenantsReactivate(undefined, {});
269
+ await pause();
270
+ }
271
+ async function supportMenu() {
272
+ const answer = await inquirer.prompt([
273
+ {
274
+ type: 'list',
275
+ name: 'action',
276
+ message: 'Suporte',
277
+ choices: [
278
+ { name: 'Listar tickets', value: 'list' },
279
+ { name: 'Detalhar ticket', value: 'describe' },
280
+ { name: 'Responder ticket', value: 'reply' },
281
+ { name: 'Mudar status', value: 'status' },
282
+ { name: 'Voltar', value: 'back' },
283
+ ],
284
+ },
285
+ ]);
286
+ if (answer.action === 'back')
287
+ return;
288
+ const support = await import('./support.js');
289
+ if (answer.action === 'list')
290
+ await support.runSupportTicketsList({});
291
+ if (answer.action === 'describe') {
292
+ const { id } = await inquirer.prompt([
293
+ { type: 'input', name: 'id', message: 'Ticket ID:', validate: Boolean },
294
+ ]);
295
+ await support.runSupportTicketsDescribe(id, {});
296
+ }
297
+ if (answer.action === 'reply') {
298
+ const { id, message } = await inquirer.prompt([
299
+ { type: 'input', name: 'id', message: 'Ticket ID:', validate: Boolean },
300
+ { type: 'editor', name: 'message', message: 'Mensagem:' },
301
+ ]);
302
+ await support.runSupportTicketsReply(id, { message });
303
+ }
304
+ if (answer.action === 'status') {
305
+ const { id, to } = await inquirer.prompt([
306
+ { type: 'input', name: 'id', message: 'Ticket ID:', validate: Boolean },
307
+ {
308
+ type: 'list',
309
+ name: 'to',
310
+ message: 'Novo status:',
311
+ choices: ['open', 'in_progress', 'resolved', 'closed'],
312
+ },
313
+ ]);
314
+ await support.runSupportTicketsStatus(id, { to });
315
+ }
316
+ await pause();
317
+ }
318
+ async function healthMenu() {
319
+ const answer = await inquirer.prompt([
320
+ {
321
+ type: 'list',
322
+ name: 'action',
323
+ message: 'Status e diagnostico',
324
+ choices: [
325
+ { name: 'Status das superficies', value: 'status' },
326
+ { name: 'Doctor', value: 'doctor' },
327
+ { name: 'Whoami', value: 'whoami' },
328
+ { name: 'Voltar', value: 'back' },
329
+ ],
330
+ },
331
+ ]);
332
+ if (answer.action === 'back')
333
+ return;
334
+ if (answer.action === 'status') {
335
+ const { runSurfaceStatus } = await import('./surface-status.js');
336
+ await runSurfaceStatus({});
337
+ }
338
+ if (answer.action === 'doctor') {
339
+ const doctor = await import('./doctor.js');
340
+ const checks = [
341
+ await doctor.checkToken(),
342
+ await doctor.checkCoreHealth(),
343
+ await doctor.checkConfigSchema(process.cwd()),
344
+ await doctor.checkNeetruEnv(process.cwd()),
345
+ await doctor.checkCliVersion(),
346
+ ];
347
+ log.heading('Doctor');
348
+ for (const check of checks) {
349
+ const marker = check.ok ? chalk.green('*') : check.warning ? chalk.yellow('!') : chalk.red('x');
350
+ console.log(` ${marker} ${check.name}${check.detail ? chalk.dim(` - ${check.detail}`) : ''}`);
351
+ }
352
+ }
353
+ if (answer.action === 'whoami') {
354
+ const { runWhoami } = await import('./whoami.js');
355
+ await runWhoami({});
356
+ }
357
+ await pause();
358
+ }
359
+ async function authMenu() {
360
+ const answer = await inquirer.prompt([
361
+ {
362
+ type: 'list',
363
+ name: 'action',
364
+ message: 'Login e configuracao',
365
+ choices: [
366
+ { name: 'Login', value: 'login' },
367
+ { name: 'Logout', value: 'logout' },
368
+ { name: 'Ver config', value: 'config' },
369
+ { name: 'Caminho da config', value: 'path' },
370
+ { name: 'Voltar', value: 'back' },
371
+ ],
372
+ },
373
+ ]);
374
+ if (answer.action === 'back')
375
+ return;
376
+ if (answer.action === 'login') {
377
+ const { runLogin } = await import('./login.js');
378
+ await runLogin({});
379
+ }
380
+ if (answer.action === 'logout') {
381
+ const { runLogout } = await import('./logout.js');
382
+ await runLogout();
383
+ }
384
+ if (answer.action === 'config') {
385
+ const { configGet } = await import('./config.js');
386
+ configGet();
387
+ }
388
+ if (answer.action === 'path') {
389
+ const { configPath } = await import('./config.js');
390
+ configPath();
391
+ }
392
+ await pause();
393
+ }
394
+ export async function runTerminalUi() {
395
+ if (!canPrompt()) {
396
+ log.error('A interface interativa exige um terminal TTY. Use comandos diretos ou --json em CI.');
397
+ process.exit(1);
398
+ }
399
+ log.banner();
400
+ let running = true;
401
+ while (running) {
402
+ const answer = await inquirer.prompt([
403
+ {
404
+ type: 'list',
405
+ name: 'action',
406
+ message: 'Neetru',
407
+ pageSize: 14,
408
+ choices: [
409
+ { name: 'Visao do projeto e sessao', value: 'overview' },
410
+ { name: 'Criar produto + workspace', value: 'quickstart' },
411
+ { name: 'Produtos', value: 'products' },
412
+ { name: 'Workspaces', value: 'workspaces' },
413
+ { name: 'Deploy guiado', value: 'deploy' },
414
+ { name: 'Servers', value: 'servers' },
415
+ { name: 'Bancos de produto', value: 'databases' },
416
+ { name: 'Tenants', value: 'tenants' },
417
+ { name: 'Suporte', value: 'support' },
418
+ { name: 'Status e diagnostico', value: 'health' },
419
+ { name: 'Login e configuracao', value: 'auth' },
420
+ { name: 'Sair', value: 'exit' },
421
+ ],
422
+ },
423
+ ]);
424
+ if (answer.action === 'exit') {
425
+ running = false;
426
+ continue;
427
+ }
428
+ if (answer.action === 'overview')
429
+ await safeRun(showOverview);
430
+ if (answer.action === 'quickstart')
431
+ await safeRun(quickstart, { pauseAfter: false });
432
+ if (answer.action === 'products')
433
+ await safeRun(productsMenu, { pauseAfter: false });
434
+ if (answer.action === 'workspaces')
435
+ await safeRun(workspacesMenu, { pauseAfter: false });
436
+ if (answer.action === 'deploy') {
437
+ const { runDeploy } = await import('./deploy.js');
438
+ await safeRun(() => runDeploy({}), { pauseAfter: false });
439
+ }
440
+ if (answer.action === 'servers')
441
+ await safeRun(serversMenu, { pauseAfter: false });
442
+ if (answer.action === 'databases')
443
+ await safeRun(databasesMenu, { pauseAfter: false });
444
+ if (answer.action === 'tenants')
445
+ await safeRun(tenantsMenu, { pauseAfter: false });
446
+ if (answer.action === 'support')
447
+ await safeRun(supportMenu, { pauseAfter: false });
448
+ if (answer.action === 'health')
449
+ await safeRun(healthMenu, { pauseAfter: false });
450
+ if (answer.action === 'auth')
451
+ await safeRun(authMenu, { pauseAfter: false });
452
+ }
453
+ }
454
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/commands/ui.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  export interface WorkspacesCreateOptions {
2
- product: string;
3
- customer: string;
4
- env: string;
5
- tier: string;
2
+ product?: string;
3
+ customer?: string;
4
+ env?: string;
5
+ tier?: string;
6
6
  name?: string;
7
7
  json?: boolean;
8
8
  }
9
9
  export declare function runWorkspacesCreate(opts: WorkspacesCreateOptions): Promise<void>;
10
10
  export interface WorkspacesAdvanceOptions {
11
- product: string;
12
- version: string;
11
+ product?: string;
12
+ version?: string;
13
13
  json?: boolean;
14
14
  }
15
- export declare function runWorkspacesAdvance(id: string, opts: WorkspacesAdvanceOptions): Promise<void>;
15
+ export declare function runWorkspacesAdvance(id: string | undefined, opts: WorkspacesAdvanceOptions): Promise<void>;
16
16
  export interface WorkspacesListOptions {
17
17
  product?: string;
18
18
  env?: string;
@@ -23,7 +23,7 @@ export declare function runWorkspacesList(opts: WorkspacesListOptions): Promise<
23
23
  export interface WorkspacesGetOptions {
24
24
  json?: boolean;
25
25
  }
26
- export declare function runWorkspacesGet(id: string, opts: WorkspacesGetOptions): Promise<void>;
26
+ export declare function runWorkspacesGet(id: string | undefined, opts: WorkspacesGetOptions): Promise<void>;
27
27
  export interface WorkspacesOpenOptions {
28
28
  /** Pula a abertura real do browser (útil pra testes/CI). */
29
29
  printOnly?: boolean;
@@ -34,4 +34,4 @@ export declare function buildWorkspaceDashboardUrl(id: string): string;
34
34
  * Em caso de erro, só loga warn — o caller pode copiar a URL printada.
35
35
  */
36
36
  export declare function openBrowser(url: string): void;
37
- export declare function runWorkspacesOpen(id: string, opts?: WorkspacesOpenOptions): Promise<void>;
37
+ export declare function runWorkspacesOpen(id: string | undefined, opts?: WorkspacesOpenOptions): Promise<void>;