@neetru/cli 2.7.5 → 2.9.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/CHANGELOG.md +316 -220
- package/README.md +137 -137
- package/dist/cli-kit/format.d.ts +49 -0
- package/dist/cli-kit/format.js +88 -0
- package/dist/cli-kit/format.js.map +1 -0
- package/dist/cli-kit/glyphs.d.ts +22 -0
- package/dist/cli-kit/glyphs.js +22 -0
- package/dist/cli-kit/glyphs.js.map +1 -0
- package/dist/cli-kit/index.d.ts +13 -0
- package/dist/cli-kit/index.js +12 -0
- package/dist/cli-kit/index.js.map +1 -0
- package/dist/cli-kit/palette.d.ts +10 -0
- package/dist/cli-kit/palette.js +36 -0
- package/dist/cli-kit/palette.js.map +1 -0
- package/dist/commands/ai.js +8 -8
- package/dist/commands/autocomplete.js +34 -34
- package/dist/commands/bug.d.ts +87 -0
- package/dist/commands/bug.js +419 -0
- package/dist/commands/bug.js.map +1 -0
- package/dist/commands/customers.d.ts +17 -0
- package/dist/commands/customers.js +160 -0
- package/dist/commands/customers.js.map +1 -0
- package/dist/commands/db.d.ts +91 -7
- package/dist/commands/db.js +898 -123
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/deploy.d.ts +5 -0
- package/dist/commands/deploy.js +68 -0
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +68 -0
- package/dist/commands/dev.js +345 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs.d.ts +4 -0
- package/dist/commands/docs.js +99 -7
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/doctor.js +4 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +121 -121
- package/dist/commands/marketplace.d.ts +36 -0
- package/dist/commands/marketplace.js +584 -0
- package/dist/commands/marketplace.js.map +1 -0
- package/dist/commands/new.d.ts +6 -0
- package/dist/commands/new.js +220 -40
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/open.d.ts +8 -0
- package/dist/commands/open.js +61 -13
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/products-db.d.ts +1 -1
- package/dist/commands/products-db.js +17 -4
- package/dist/commands/products-db.js.map +1 -1
- package/dist/commands/products.d.ts +23 -0
- package/dist/commands/products.js +39 -1
- package/dist/commands/products.js.map +1 -1
- package/dist/commands/tenants.js +15 -0
- package/dist/commands/tenants.js.map +1 -1
- package/dist/commands/ui.d.ts +1 -1
- package/dist/commands/ui.js +172 -2
- package/dist/commands/ui.js.map +1 -1
- package/dist/commands/workspaces.d.ts +10 -1
- package/dist/commands/workspaces.js +136 -22
- package/dist/commands/workspaces.js.map +1 -1
- package/dist/index.js +532 -44
- package/dist/index.js.map +1 -1
- package/dist/lib/ai/context.js +90 -90
- package/dist/lib/config-schema.d.ts +8 -8
- package/dist/lib/db-local/db-json.d.ts +63 -0
- package/dist/lib/db-local/db-json.js +189 -0
- package/dist/lib/db-local/db-json.js.map +1 -0
- package/dist/lib/db-local/env.d.ts +26 -0
- package/dist/lib/db-local/env.js +64 -0
- package/dist/lib/db-local/env.js.map +1 -0
- package/dist/lib/db-local/fingerprint.d.ts +8 -0
- package/dist/lib/db-local/fingerprint.js +28 -0
- package/dist/lib/db-local/fingerprint.js.map +1 -0
- package/dist/lib/db-local/index.d.ts +15 -0
- package/dist/lib/db-local/index.js +14 -0
- package/dist/lib/db-local/index.js.map +1 -0
- package/dist/lib/db-pipeline/build-deps.d.ts +14 -0
- package/dist/lib/db-pipeline/build-deps.js +158 -0
- package/dist/lib/db-pipeline/build-deps.js.map +1 -0
- package/dist/lib/db-pipeline/errors.d.ts +29 -0
- package/dist/lib/db-pipeline/errors.js +29 -0
- package/dist/lib/db-pipeline/errors.js.map +1 -0
- package/dist/lib/db-pipeline/index.d.ts +26 -0
- package/dist/lib/db-pipeline/index.js +25 -0
- package/dist/lib/db-pipeline/index.js.map +1 -0
- package/dist/lib/db-pipeline/pipeline.d.ts +13 -0
- package/dist/lib/db-pipeline/pipeline.js +119 -0
- package/dist/lib/db-pipeline/pipeline.js.map +1 -0
- package/dist/lib/db-pipeline/rehearse.d.ts +99 -0
- package/dist/lib/db-pipeline/rehearse.js +219 -0
- package/dist/lib/db-pipeline/rehearse.js.map +1 -0
- package/dist/lib/db-pipeline/types.d.ts +112 -0
- package/dist/lib/db-pipeline/types.js +20 -0
- package/dist/lib/db-pipeline/types.js.map +1 -0
- package/dist/lib/pickers.d.ts +12 -0
- package/dist/lib/pickers.js +34 -0
- package/dist/lib/pickers.js.map +1 -1
- package/package.json +66 -62
- package/templates/auth/callback.ts +22 -22
- package/templates/auth/sign-in.tsx +41 -41
- package/templates/billing/checkout.ts +22 -22
- package/templates/billing/page.tsx +43 -43
- package/templates/support/ticket-form.tsx +68 -68
- package/templates/usage/track.ts +30 -30
- package/templates/users/profile.tsx +43 -43
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `neetru customers` — comandos de gestão de customers via CLI.
|
|
3
|
+
*
|
|
4
|
+
* Endpoints:
|
|
5
|
+
* GET /api/cli/v1/customers (list)
|
|
6
|
+
* GET /api/cli/v1/customers/{id} (get)
|
|
7
|
+
* POST /api/cli/v1/customers (create — pdv #2)
|
|
8
|
+
*
|
|
9
|
+
* Customer = empresa/PJ que paga os serviços Neetru (CRM comercial).
|
|
10
|
+
* Diferente de Tenant = instância do produto para esse customer.
|
|
11
|
+
*
|
|
12
|
+
* Plain PT-BR em todas as strings visíveis ao usuário.
|
|
13
|
+
*/
|
|
14
|
+
import chalk from 'chalk';
|
|
15
|
+
import ora from 'ora';
|
|
16
|
+
import { apiRequest } from '../lib/api-client.js';
|
|
17
|
+
import { requireToken, handleApiError, printWriteResult } from '../lib/cli-write.js';
|
|
18
|
+
import { renderTable, fmtTimestamp } from '../lib/render.js';
|
|
19
|
+
import { promptText } from '../lib/pickers.js';
|
|
20
|
+
import { log } from '../utils/logger.js';
|
|
21
|
+
function colorStatus(s) {
|
|
22
|
+
if (!s)
|
|
23
|
+
return chalk.dim('—');
|
|
24
|
+
if (s === 'ativo')
|
|
25
|
+
return chalk.green(s);
|
|
26
|
+
if (s === 'suspenso')
|
|
27
|
+
return chalk.yellow(s);
|
|
28
|
+
if (s === 'arquivado')
|
|
29
|
+
return chalk.dim(s);
|
|
30
|
+
return s;
|
|
31
|
+
}
|
|
32
|
+
export async function runCustomersList(opts = {}) {
|
|
33
|
+
const token = await requireToken(opts.json);
|
|
34
|
+
const params = new URLSearchParams();
|
|
35
|
+
if (opts.status)
|
|
36
|
+
params.set('status', opts.status);
|
|
37
|
+
if (opts.search)
|
|
38
|
+
params.set('search', opts.search);
|
|
39
|
+
const qs = params.toString();
|
|
40
|
+
const spinner = opts.json
|
|
41
|
+
? null
|
|
42
|
+
: ora({ text: 'Buscando customers…', color: 'blue' }).start();
|
|
43
|
+
let res;
|
|
44
|
+
try {
|
|
45
|
+
res = await apiRequest(`/api/cli/v1/customers${qs ? `?${qs}` : ''}`, { token });
|
|
46
|
+
spinner?.stop();
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
spinner?.fail('Falha ao buscar customers.');
|
|
50
|
+
handleApiError(error, opts.json);
|
|
51
|
+
}
|
|
52
|
+
if (opts.json) {
|
|
53
|
+
console.log(JSON.stringify({ ok: res.ok, count: res.count, customers: res.customers }));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
log.heading(`Customers (${res.count})`);
|
|
57
|
+
renderTable([
|
|
58
|
+
{ header: 'ID', value: (r) => r.id, maxWidth: 24 },
|
|
59
|
+
{ header: 'NOME', value: (r) => r.name ?? '—', maxWidth: 28 },
|
|
60
|
+
{ header: 'EMAIL', value: (r) => r.contactEmail ?? '—', maxWidth: 30 },
|
|
61
|
+
{ header: 'CNPJ/CPF', value: (r) => r.cnpj ?? '—', maxWidth: 18 },
|
|
62
|
+
{ header: 'STATUS', value: (r) => colorStatus(r.status), maxWidth: 14 },
|
|
63
|
+
{ header: 'CRIADO', value: (r) => fmtTimestamp(r.createdAt) },
|
|
64
|
+
], res.customers);
|
|
65
|
+
console.log();
|
|
66
|
+
}
|
|
67
|
+
export async function runCustomersGet(id, opts = {}) {
|
|
68
|
+
const token = await requireToken(opts.json);
|
|
69
|
+
if (!id) {
|
|
70
|
+
if (opts.json) {
|
|
71
|
+
console.log(JSON.stringify({ ok: false, error: 'missing_input', message: '<id> é obrigatório.' }));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
log.error('<id> é obrigatório. Use: neetru customers get <id>');
|
|
75
|
+
}
|
|
76
|
+
process.exit(1);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const spinner = opts.json
|
|
80
|
+
? null
|
|
81
|
+
: ora({ text: `Buscando customer ${id}…`, color: 'blue' }).start();
|
|
82
|
+
let res;
|
|
83
|
+
try {
|
|
84
|
+
res = await apiRequest(`/api/cli/v1/customers/${encodeURIComponent(id)}`, { token });
|
|
85
|
+
spinner?.stop();
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
spinner?.fail('Falha ao buscar customer.');
|
|
89
|
+
handleApiError(error, opts.json);
|
|
90
|
+
}
|
|
91
|
+
if (opts.json) {
|
|
92
|
+
console.log(JSON.stringify(res));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const c = res.customer ?? {};
|
|
96
|
+
log.heading(`Customer ${c.name ?? id}`);
|
|
97
|
+
renderTable([
|
|
98
|
+
{ header: 'CAMPO', value: (r) => r.k, maxWidth: 20 },
|
|
99
|
+
{ header: 'VALOR', value: (r) => r.v, maxWidth: 70 },
|
|
100
|
+
], [
|
|
101
|
+
{ k: 'id', v: c.id ?? id },
|
|
102
|
+
{ k: 'nome', v: c.name ?? '—' },
|
|
103
|
+
{ k: 'email', v: c.contactEmail ?? '—' },
|
|
104
|
+
{ k: 'cnpj/cpf', v: c.cnpj ?? '—' },
|
|
105
|
+
{ k: 'razão social', v: c.legalName ?? '—' },
|
|
106
|
+
{ k: 'status', v: colorStatus(c.status) },
|
|
107
|
+
{ k: 'origem', v: c.origin ?? '—' },
|
|
108
|
+
{ k: 'criado', v: fmtTimestamp(c.createdAt) },
|
|
109
|
+
{ k: 'atualizado', v: fmtTimestamp(c.updatedAt) },
|
|
110
|
+
]);
|
|
111
|
+
console.log();
|
|
112
|
+
}
|
|
113
|
+
export async function runCustomersCreate(opts = {}) {
|
|
114
|
+
const token = await requireToken(opts.json);
|
|
115
|
+
// Coleta os campos — interativo se não passados como flags.
|
|
116
|
+
let name = opts.name?.trim() ?? '';
|
|
117
|
+
if (!name) {
|
|
118
|
+
name = await promptText('Nome do customer (ex: Mercado X Ltda):', {
|
|
119
|
+
json: opts.json,
|
|
120
|
+
required: true,
|
|
121
|
+
validate: (v) => (v.length >= 2 ? true : 'Mínimo 2 caracteres.'),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
let email = opts.email?.trim() ?? '';
|
|
125
|
+
if (!email) {
|
|
126
|
+
email = await promptText('Email de contato:', {
|
|
127
|
+
json: opts.json,
|
|
128
|
+
required: true,
|
|
129
|
+
validate: (v) => (v.includes('@') ? true : 'Email inválido.'),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// taxId é opcional — CNPJ ou CPF.
|
|
133
|
+
const taxId = opts.taxId?.trim() || undefined;
|
|
134
|
+
const spinner = opts.json
|
|
135
|
+
? null
|
|
136
|
+
: ora({ text: 'Criando customer…', color: 'blue' }).start();
|
|
137
|
+
let res;
|
|
138
|
+
try {
|
|
139
|
+
res = await apiRequest('/api/cli/v1/customers', {
|
|
140
|
+
method: 'POST',
|
|
141
|
+
token,
|
|
142
|
+
body: { name, email, taxId },
|
|
143
|
+
});
|
|
144
|
+
spinner?.stop();
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
spinner?.fail('Falha ao criar customer.');
|
|
148
|
+
handleApiError(error, opts.json);
|
|
149
|
+
}
|
|
150
|
+
printWriteResult({ id: res.id, name: res.name, contactEmail: res.contactEmail, status: res.status }, `Customer criado: ${chalk.bold(res.name)} (${res.id})`, opts.json);
|
|
151
|
+
if (!opts.json) {
|
|
152
|
+
log.dim(` ID: ${res.id}`);
|
|
153
|
+
log.dim(` Email: ${res.contactEmail}`);
|
|
154
|
+
log.dim(` Status: ${colorStatus(res.status)}`);
|
|
155
|
+
log.dim('');
|
|
156
|
+
log.dim('Próximos passos:');
|
|
157
|
+
log.dim(` Criar workspace: neetru workspaces create --customer ${res.id} --product <id>`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=customers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customers.js","sourceRoot":"","sources":["../../src/commands/customers.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/db.d.ts
CHANGED
|
@@ -1,14 +1,98 @@
|
|
|
1
|
+
export interface DbListOptions {
|
|
2
|
+
productId?: string;
|
|
3
|
+
engine?: string;
|
|
4
|
+
status?: string;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function runDbList(opts?: DbListOptions): Promise<void>;
|
|
8
|
+
export interface DbStatusOptions {
|
|
9
|
+
json?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function runDbStatus(dbId: string, opts?: DbStatusOptions): Promise<void>;
|
|
1
12
|
export interface DbInitOptions {
|
|
13
|
+
name?: string;
|
|
14
|
+
engine?: string;
|
|
15
|
+
env?: string;
|
|
16
|
+
productId?: string;
|
|
17
|
+
yes?: boolean;
|
|
18
|
+
/** gestovendas #9: saída em JSON para integração CI/automação. */
|
|
19
|
+
json?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Opção legada removida (D-3). Passar `--out` resulta em exit(1)
|
|
22
|
+
* com mensagem clara. Mantida na interface só para não quebrar callers que
|
|
23
|
+
* constroem o objeto — não tem efeito funcional.
|
|
24
|
+
*/
|
|
2
25
|
out?: string;
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Opção legada removida (D-3). Ver nota de `out` acima.
|
|
28
|
+
*/
|
|
3
29
|
force?: boolean;
|
|
4
30
|
}
|
|
5
31
|
export declare function runDbInit(opts?: DbInitOptions): Promise<void>;
|
|
6
|
-
export interface
|
|
7
|
-
|
|
8
|
-
|
|
32
|
+
export interface DbApplyOptions {
|
|
33
|
+
dbName?: string;
|
|
34
|
+
env?: string;
|
|
35
|
+
schemaPath?: string;
|
|
36
|
+
dryRun?: boolean;
|
|
37
|
+
yes?: boolean;
|
|
38
|
+
/** gestovendas #9: saída em JSON para integração CI/automação. */
|
|
39
|
+
json?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function runDbApply(opts?: DbApplyOptions): Promise<void>;
|
|
42
|
+
export interface DbMigrationsListOptions {
|
|
43
|
+
dbId?: string;
|
|
44
|
+
json?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare function runDbMigrationsList(opts?: DbMigrationsListOptions): Promise<void>;
|
|
47
|
+
export interface DbMigrationsConfirmOptions {
|
|
48
|
+
mfa: string;
|
|
49
|
+
json?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export declare function runDbMigrationsConfirm(migrationId: string, opts: DbMigrationsConfirmOptions): Promise<void>;
|
|
52
|
+
export interface DbBackupsOptions {
|
|
53
|
+
json?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Lista os backups disponíveis de um banco específico.
|
|
57
|
+
*
|
|
58
|
+
* Endpoint: GET /api/cli/v1/db/[id]/backups
|
|
59
|
+
* Rota implementada em `src/app/api/cli/v1/db/[id]/backups/route.ts`.
|
|
60
|
+
*/
|
|
61
|
+
export declare function runDbBackups(dbId: string, opts?: DbBackupsOptions): Promise<void>;
|
|
62
|
+
export interface DbRestoreOptions {
|
|
63
|
+
mfa: string;
|
|
64
|
+
json?: boolean;
|
|
9
65
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Dispara um restore de banco a partir de um backup selecionado interativamente.
|
|
68
|
+
*
|
|
69
|
+
* Fluxo:
|
|
70
|
+
* 1. Lista backups disponíveis via GET /api/cli/v1/db/[id]/backups
|
|
71
|
+
* 2. Operador escolhe qual backup restaurar
|
|
72
|
+
* 3. Exige confirmação textual "RESTAURAR" (operação destrutiva)
|
|
73
|
+
* 4. POST /api/cli/v1/db/[id]/restore com MFA step-up
|
|
74
|
+
*
|
|
75
|
+
* Endpoints implementados em:
|
|
76
|
+
* GET src/app/api/cli/v1/db/[id]/backups/route.ts
|
|
77
|
+
* POST src/app/api/cli/v1/db/[id]/restore/route.ts
|
|
78
|
+
*/
|
|
79
|
+
export declare function runDbRestore(dbId: string, opts: DbRestoreOptions): Promise<void>;
|
|
80
|
+
export interface DbHostsOptions {
|
|
81
|
+
json?: boolean;
|
|
13
82
|
}
|
|
14
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Lista as VMs host e quantos bancos de produto cada uma hospeda.
|
|
85
|
+
*
|
|
86
|
+
* Usa o endpoint de servers com `?capacity=true&db=true` para incluir
|
|
87
|
+
* o inventário de bancos por servidor. O Core agrega o campo `databases`
|
|
88
|
+
* quando `db=true` é passado.
|
|
89
|
+
*
|
|
90
|
+
* Endpoint: GET /api/cli/v1/servers?capacity=true&db=true
|
|
91
|
+
*
|
|
92
|
+
* NOTA: O parâmetro `db=true` (que instrui o Core a enriquecer cada server
|
|
93
|
+
* com o array `databases`) não está implementado ainda no endpoint de servers
|
|
94
|
+
* do Core (GAP: parâmetro db=true em /api/cli/v1/servers ausente). O comando
|
|
95
|
+
* funciona com a resposta atual — apenas o campo `databases` por server
|
|
96
|
+
* ficará ausente/vazio até o Core implementar o enriquecimento.
|
|
97
|
+
*/
|
|
98
|
+
export declare function runDbHosts(opts?: DbHostsOptions): Promise<void>;
|