@neetru/cli 1.0.1 → 2.1.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.
- package/CHANGELOG.md +136 -0
- package/README.md +109 -152
- package/dist/commands/add.d.ts +8 -3
- package/dist/commands/add.js +70 -143
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/agent-release.d.ts +13 -0
- package/dist/commands/agent-release.js +204 -0
- package/dist/commands/agent-release.js.map +1 -0
- package/dist/commands/agent-write.d.ts +12 -0
- package/dist/commands/agent-write.js +94 -0
- package/dist/commands/agent-write.js.map +1 -0
- package/dist/commands/ai.d.ts +4 -0
- package/dist/commands/ai.js +88 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/api-catalog.d.ts +20 -0
- package/dist/commands/api-catalog.js +126 -0
- package/dist/commands/api-catalog.js.map +1 -0
- package/dist/commands/audit.d.ts +8 -0
- package/dist/commands/audit.js +69 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/autocomplete.d.ts +7 -0
- package/dist/commands/autocomplete.js +107 -0
- package/dist/commands/autocomplete.js.map +1 -0
- package/dist/commands/billing.d.ts +6 -0
- package/dist/commands/billing.js +69 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/build.d.ts +18 -0
- package/dist/commands/build.js +295 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/cloud-run.d.ts +11 -0
- package/dist/commands/cloud-run.js +87 -0
- package/dist/commands/cloud-run.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.js +70 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/db.d.ts +14 -0
- package/dist/commands/db.js +187 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/deploy.d.ts +23 -3
- package/dist/commands/deploy.js +530 -177
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/deployments.d.ts +11 -0
- package/dist/commands/deployments.js +69 -0
- package/dist/commands/deployments.js.map +1 -0
- package/dist/commands/doctor.d.ts +27 -0
- package/dist/commands/doctor.js +211 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/dr.d.ts +11 -0
- package/dist/commands/dr.js +79 -0
- package/dist/commands/dr.js.map +1 -0
- package/dist/commands/env.d.ts +15 -0
- package/dist/commands/env.js +56 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/fn.d.ts +6 -0
- package/dist/commands/fn.js +87 -0
- package/dist/commands/fn.js.map +1 -0
- package/dist/commands/infra-read.d.ts +9 -0
- package/dist/commands/infra-read.js +113 -0
- package/dist/commands/infra-read.js.map +1 -0
- package/dist/commands/init.d.ts +10 -3
- package/dist/commands/init.js +275 -142
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +6 -3
- package/dist/commands/login.js +222 -92
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -0
- package/dist/commands/logout.js +28 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +14 -3
- package/dist/commands/logs.js +132 -106
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/mocks.d.ts +5 -0
- package/dist/commands/mocks.js +23 -0
- package/dist/commands/mocks.js.map +1 -0
- package/dist/commands/open.d.ts +4 -3
- package/dist/commands/open.js +53 -85
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/products-db.d.ts +37 -0
- package/dist/commands/products-db.js +230 -0
- package/dist/commands/products-db.js.map +1 -0
- package/dist/commands/products.d.ts +12 -0
- package/dist/commands/products.js +97 -0
- package/dist/commands/products.js.map +1 -0
- package/dist/commands/promote.d.ts +9 -0
- package/dist/commands/promote.js +114 -0
- package/dist/commands/promote.js.map +1 -0
- package/dist/commands/publish.d.ts +14 -0
- package/dist/commands/publish.js +180 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/servers.d.ts +23 -0
- package/dist/commands/servers.js +166 -0
- package/dist/commands/servers.js.map +1 -0
- package/dist/commands/status.d.ts +5 -3
- package/dist/commands/status.js +91 -93
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/support.d.ts +25 -0
- package/dist/commands/support.js +184 -0
- package/dist/commands/support.js.map +1 -0
- package/dist/commands/surface-status.d.ts +5 -0
- package/dist/commands/surface-status.js +63 -0
- package/dist/commands/surface-status.js.map +1 -0
- package/dist/commands/tenants.d.ts +34 -0
- package/dist/commands/tenants.js +179 -0
- package/dist/commands/tenants.js.map +1 -0
- package/dist/commands/upgrade.d.ts +12 -0
- package/dist/commands/upgrade.js +77 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/validate.d.ts +1 -3
- package/dist/commands/validate.js +83 -91
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/whoami.d.ts +5 -3
- package/dist/commands/whoami.js +76 -28
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workspaces.d.ts +15 -0
- package/dist/commands/workspaces.js +72 -0
- package/dist/commands/workspaces.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1094 -36
- package/dist/index.js.map +1 -1
- package/dist/lib/ai/context.d.ts +11 -0
- package/dist/lib/ai/context.js +112 -0
- package/dist/lib/ai/context.js.map +1 -0
- package/dist/lib/ai/orchestrator.d.ts +10 -0
- package/dist/lib/ai/orchestrator.js +92 -0
- package/dist/lib/ai/orchestrator.js.map +1 -0
- package/dist/lib/api-client.d.ts +39 -0
- package/dist/lib/api-client.js +185 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/auth.d.ts +15 -0
- package/dist/lib/auth.js +98 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/cli-read.d.ts +13 -0
- package/dist/lib/cli-read.js +103 -0
- package/dist/lib/cli-read.js.map +1 -0
- package/dist/lib/cli-write.d.ts +47 -0
- package/dist/lib/cli-write.js +137 -0
- package/dist/lib/cli-write.js.map +1 -0
- package/dist/lib/config-schema.d.ts +165 -0
- package/dist/lib/config-schema.js +57 -0
- package/dist/lib/config-schema.js.map +1 -0
- package/dist/lib/config.d.ts +15 -0
- package/dist/lib/config.js +33 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/render.d.ts +16 -0
- package/dist/lib/render.js +74 -0
- package/dist/lib/render.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.js +27 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +35 -33
- package/templates/auth/callback.ts +22 -0
- package/templates/auth/sign-in.tsx +41 -0
- package/templates/billing/checkout.ts +22 -0
- package/templates/billing/page.tsx +43 -0
- package/templates/support/ticket-form.tsx +68 -0
- package/templates/usage/track.ts +30 -0
- package/templates/users/profile.tsx +43 -0
- package/LICENSE +0 -21
- package/dist/commands/add.d.ts.map +0 -1
- package/dist/commands/deploy.d.ts.map +0 -1
- package/dist/commands/generate-types.d.ts +0 -3
- package/dist/commands/generate-types.d.ts.map +0 -1
- package/dist/commands/generate-types.js +0 -150
- package/dist/commands/generate-types.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/open.d.ts.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/config.d.ts +0 -14
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -83
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/scaffold/auth.d.ts +0 -3
- package/dist/scaffold/auth.d.ts.map +0 -1
- package/dist/scaffold/auth.js +0 -228
- package/dist/scaffold/auth.js.map +0 -1
- package/dist/scaffold/billing.d.ts +0 -3
- package/dist/scaffold/billing.d.ts.map +0 -1
- package/dist/scaffold/billing.js +0 -184
- package/dist/scaffold/billing.js.map +0 -1
- package/dist/scaffold/usage.d.ts +0 -3
- package/dist/scaffold/usage.d.ts.map +0 -1
- package/dist/scaffold/usage.js +0 -173
- package/dist/scaffold/usage.js.map +0 -1
- package/dist/scaffold/users.d.ts +0 -3
- package/dist/scaffold/users.d.ts.map +0 -1
- package/dist/scaffold/users.js +0 -135
- package/dist/scaffold/users.js.map +0 -1
|
@@ -1,99 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `neetru validate` — health check da config local + conexão com Core.
|
|
3
|
+
*
|
|
4
|
+
* Verifica:
|
|
5
|
+
* 1. neetru.config.json válido (lê via mesmo schema do publish)
|
|
6
|
+
* 2. Token presente em ~/.config/neetru-cli/auth.json (ou conf.set)
|
|
7
|
+
* 3. /api/health do Core responde 200
|
|
8
|
+
* 4. /api/cli/v1/whoami responde 200 (token válido)
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'node:fs/promises';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import { apiRequest, CliApiError, CliNetworkError } from '../lib/api-client.js';
|
|
14
|
+
import { config } from '../lib/config.js';
|
|
15
|
+
import { neetruConfigSchema } from '../lib/config-schema.js';
|
|
16
|
+
async function checkConfigFile(cwd) {
|
|
17
|
+
for (const fname of ['neetru.config.json', '.neetru.json']) {
|
|
17
18
|
try {
|
|
18
|
-
|
|
19
|
+
const raw = await fs.readFile(path.join(cwd, fname), 'utf8');
|
|
20
|
+
const parsed = JSON.parse(raw);
|
|
21
|
+
const result = neetruConfigSchema.safeParse(parsed);
|
|
22
|
+
if (!result.success) {
|
|
23
|
+
return { name: `${fname} schema`, ok: false, detail: result.error.issues[0]?.message };
|
|
24
|
+
}
|
|
25
|
+
return { name: fname, ok: true, detail: `slug=${result.data.slug} runtime=${result.data.runtime}` };
|
|
19
26
|
}
|
|
20
27
|
catch (e) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
console.log('\n' + chalk_1.default.bold('Validando configuração Neetru...\n'));
|
|
25
|
-
const checks = [
|
|
26
|
-
{
|
|
27
|
-
name: 'neetru.json existe',
|
|
28
|
-
check: async () => ({ ok: true, message: `clientId: ${config.clientId}` }),
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
name: 'NEETRU_CLIENT_ID definido',
|
|
32
|
-
check: async () => {
|
|
33
|
-
const ok = !!process.env.NEETRU_CLIENT_ID;
|
|
34
|
-
return { ok, message: ok ? 'OK' : 'NEETRU_CLIENT_ID não encontrado no ambiente' };
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'NEETRU_CLIENT_SECRET definido',
|
|
39
|
-
check: async () => {
|
|
40
|
-
const ok = !!process.env.NEETRU_CLIENT_SECRET;
|
|
41
|
-
return { ok, message: ok ? 'OK' : 'NEETRU_CLIENT_SECRET não encontrado (necessário para token exchange)' };
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: `Core acessível (${config.coreUrl})`,
|
|
46
|
-
check: async () => {
|
|
47
|
-
try {
|
|
48
|
-
const res = await fetch(`${config.coreUrl}/api/health`, {
|
|
49
|
-
signal: AbortSignal.timeout(5000),
|
|
50
|
-
});
|
|
51
|
-
return { ok: res.ok, message: res.ok ? `HTTP ${res.status}` : `HTTP ${res.status} — Core inacessível` };
|
|
52
|
-
}
|
|
53
|
-
catch (e) {
|
|
54
|
-
return { ok: false, message: `Falha de rede: ${e.message}` };
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: 'OAuth Client válido',
|
|
60
|
-
check: async () => {
|
|
61
|
-
try {
|
|
62
|
-
const res = await fetch(`${config.coreUrl}/api/v1/oauth/validate-client?client_id=${encodeURIComponent(config.clientId)}`, { signal: AbortSignal.timeout(5000) });
|
|
63
|
-
if (res.ok)
|
|
64
|
-
return { ok: true, message: 'Client ID reconhecido' };
|
|
65
|
-
if (res.status === 404)
|
|
66
|
-
return { ok: false, message: 'Client ID não encontrado no Core' };
|
|
67
|
-
return { ok: false, message: `Status ${res.status}` };
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return { ok: false, message: 'Não foi possível validar (Core offline?)' };
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
];
|
|
75
|
-
let allOk = true;
|
|
76
|
-
for (const check of checks) {
|
|
77
|
-
const spinner = (0, ora_1.default)(check.name).start();
|
|
78
|
-
const result = await check.check();
|
|
79
|
-
if (result.ok) {
|
|
80
|
-
spinner.succeed(`${check.name} — ${chalk_1.default.dim(result.message)}`);
|
|
28
|
+
if (e.code !== 'ENOENT') {
|
|
29
|
+
return { name: fname, ok: false, detail: e.message };
|
|
81
30
|
}
|
|
82
|
-
else {
|
|
83
|
-
spinner.fail(`${check.name} — ${chalk_1.default.yellow(result.message)}`);
|
|
84
|
-
allOk = false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
console.log('');
|
|
88
|
-
if (allOk) {
|
|
89
|
-
console.log(chalk_1.default.green.bold('✓ Configuração válida. Pronto para uso!'));
|
|
90
31
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
32
|
+
}
|
|
33
|
+
return { name: 'neetru.config.json', ok: false, detail: 'arquivo ausente no cwd' };
|
|
34
|
+
}
|
|
35
|
+
async function checkToken() {
|
|
36
|
+
const t = config.get('neetruApiKey');
|
|
37
|
+
if (!t)
|
|
38
|
+
return { name: 'token CLI', ok: false, detail: 'execute neetru login' };
|
|
39
|
+
return { name: 'token CLI', ok: true, detail: `prefix ${String(t).slice(0, 12)}…` };
|
|
40
|
+
}
|
|
41
|
+
async function checkCoreHealth() {
|
|
42
|
+
try {
|
|
43
|
+
await apiRequest('/api/health');
|
|
44
|
+
return { name: 'core acessível', ok: true };
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
if (e instanceof CliNetworkError)
|
|
48
|
+
return { name: 'core acessível', ok: false, detail: 'rede' };
|
|
49
|
+
if (e instanceof CliApiError)
|
|
50
|
+
return { name: 'core acessível', ok: false, detail: `HTTP ${e.status}` };
|
|
51
|
+
return { name: 'core acessível', ok: false, detail: e.message };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function checkWhoami() {
|
|
55
|
+
try {
|
|
56
|
+
const me = await apiRequest('/api/cli/v1/whoami');
|
|
57
|
+
return { name: 'whoami', ok: true, detail: `${me.email} (${me.role})` };
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
if (e instanceof CliApiError) {
|
|
61
|
+
return { name: 'whoami', ok: false, detail: e.status === 401 ? 'token inválido' : `HTTP ${e.status}` };
|
|
94
62
|
}
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
63
|
+
return { name: 'whoami', ok: false, detail: e.message };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export async function runValidate() {
|
|
67
|
+
console.log(chalk.bold('\nValidando configuração Neetru…\n'));
|
|
68
|
+
const cwd = process.cwd();
|
|
69
|
+
const checks = [];
|
|
70
|
+
checks.push(await checkConfigFile(cwd));
|
|
71
|
+
checks.push(await checkToken());
|
|
72
|
+
checks.push(await checkCoreHealth());
|
|
73
|
+
if (checks[1].ok)
|
|
74
|
+
checks.push(await checkWhoami());
|
|
75
|
+
let allOk = true;
|
|
76
|
+
for (const c of checks) {
|
|
77
|
+
const icon = c.ok ? chalk.green('✓') : chalk.red('✗');
|
|
78
|
+
const detail = c.detail ? chalk.dim(` — ${c.detail}`) : '';
|
|
79
|
+
console.log(` ${icon} ${c.name}${detail}`);
|
|
80
|
+
if (!c.ok)
|
|
81
|
+
allOk = false;
|
|
82
|
+
}
|
|
83
|
+
console.log();
|
|
84
|
+
if (allOk) {
|
|
85
|
+
console.log(chalk.green('Tudo certo.'));
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
console.log(chalk.red('Alguma checagem falhou. Veja detalhes acima.'));
|
|
89
|
+
process.exit(1);
|
|
98
90
|
}
|
|
99
91
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAS7D,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,KAAK,MAAM,KAAK,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;YACzF,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACtG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;AACrF,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAChF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AACtF,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,UAAU,CAAqB,aAAa,CAAC,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,eAAe;YAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/F,IAAI,CAAC,YAAY,WAAW;YAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACvG,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,UAAU,CAAkC,oBAAoB,CAAC,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACzG,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;IAEnD,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,KAAK,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -1,33 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `neetru whoami` — exibe identidade da sessão CLI corrente.
|
|
3
|
+
*
|
|
4
|
+
* Sprint 1: lê token de ~/.config/neetru-cli/auth.json (com fallback pra
|
|
5
|
+
* Conf storage legado). Chama GET /api/cli/v1/whoami pra confirmar
|
|
6
|
+
* validade no servidor.
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { config } from '../lib/config.js';
|
|
10
|
+
import { loadToken, AuthFileMissingError, AuthFileInvalidError } from '../lib/auth.js';
|
|
11
|
+
import { apiRequest, CliApiError, CliNetworkError } from '../lib/api-client.js';
|
|
12
|
+
import { log } from '../utils/logger.js';
|
|
13
|
+
async function resolveToken() {
|
|
14
|
+
try {
|
|
15
|
+
const auth = await loadToken();
|
|
16
|
+
return auth.token;
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (err instanceof AuthFileMissingError) {
|
|
20
|
+
// Fallback: Conf storage (legacy `neetru login --token <nrt_...>`).
|
|
21
|
+
const legacy = config.get('neetruApiKey');
|
|
22
|
+
return legacy ?? null;
|
|
23
|
+
}
|
|
24
|
+
if (err instanceof AuthFileInvalidError) {
|
|
25
|
+
log.error(err.message);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
throw err;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export async function runWhoami(opts = {}) {
|
|
32
|
+
const token = await resolveToken();
|
|
33
|
+
if (!token) {
|
|
34
|
+
if (opts.json)
|
|
35
|
+
console.log(JSON.stringify({ ok: false, error: 'unauthenticated' }));
|
|
36
|
+
else
|
|
37
|
+
log.error('Nenhuma sessão ativa. Execute: neetru login');
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const me = await apiRequest('/api/cli/v1/whoami', { token });
|
|
42
|
+
if (opts.json) {
|
|
43
|
+
console.log(JSON.stringify(me));
|
|
19
44
|
return;
|
|
20
45
|
}
|
|
21
|
-
|
|
22
|
-
console.log(`
|
|
23
|
-
console.log(`
|
|
24
|
-
|
|
25
|
-
|
|
46
|
+
log.heading('Sessão CLI');
|
|
47
|
+
console.log(` ${chalk.dim('email')} ${me.email}`);
|
|
48
|
+
console.log(` ${chalk.dim('role')} ${me.role}`);
|
|
49
|
+
console.log(` ${chalk.dim('uid')} ${me.uid}`);
|
|
50
|
+
console.log(` ${chalk.dim('keyId')} ${me.keyId}`);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof CliApiError) {
|
|
54
|
+
if (error.status === 401 || error.status === 403) {
|
|
55
|
+
if (opts.json)
|
|
56
|
+
console.log(JSON.stringify({ ok: false, error: 'invalid_token' }));
|
|
57
|
+
else
|
|
58
|
+
log.error('Token inválido ou revogado. Execute: neetru login');
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
if (opts.json)
|
|
62
|
+
console.log(JSON.stringify({ ok: false, error: error.code, status: error.status, message: error.message }));
|
|
63
|
+
else
|
|
64
|
+
log.error(`${error.status}: ${error.message}`);
|
|
65
|
+
process.exit(2);
|
|
66
|
+
}
|
|
67
|
+
if (error instanceof CliNetworkError) {
|
|
68
|
+
if (opts.json)
|
|
69
|
+
console.log(JSON.stringify({ ok: false, error: 'network', message: error.message }));
|
|
70
|
+
else
|
|
71
|
+
log.error(error.message);
|
|
72
|
+
process.exit(2);
|
|
26
73
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
74
|
+
if (opts.json)
|
|
75
|
+
console.log(JSON.stringify({ ok: false, error: 'unknown', message: error.message }));
|
|
76
|
+
else
|
|
77
|
+
log.error(error.message);
|
|
78
|
+
process.exit(2);
|
|
79
|
+
}
|
|
32
80
|
}
|
|
33
81
|
//# sourceMappingURL=whoami.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface WorkspacesCreateOptions {
|
|
2
|
+
product: string;
|
|
3
|
+
customer: string;
|
|
4
|
+
env: string;
|
|
5
|
+
tier: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function runWorkspacesCreate(opts: WorkspacesCreateOptions): Promise<void>;
|
|
10
|
+
export interface WorkspacesAdvanceOptions {
|
|
11
|
+
product: string;
|
|
12
|
+
version: string;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function runWorkspacesAdvance(id: string, opts: WorkspacesAdvanceOptions): Promise<void>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `neetru workspaces create|advance` — control plane de workspaces (runtime
|
|
3
|
+
* shared `neetru-workspaces`).
|
|
4
|
+
*
|
|
5
|
+
* Endpoints:
|
|
6
|
+
* POST /api/cli/v1/workspaces (create)
|
|
7
|
+
* POST /api/cli/v1/workspaces/{id}/advance (advance — promove bundle)
|
|
8
|
+
*/
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import ora from 'ora';
|
|
11
|
+
import { apiRequest } from '../lib/api-client.js';
|
|
12
|
+
import { requireToken, handleApiError, printWriteResult } from '../lib/cli-write.js';
|
|
13
|
+
import { log } from '../utils/logger.js';
|
|
14
|
+
export async function runWorkspacesCreate(opts) {
|
|
15
|
+
const token = await requireToken(opts.json);
|
|
16
|
+
const spinner = opts.json
|
|
17
|
+
? null
|
|
18
|
+
: ora({ text: 'Criando workspace…', color: 'blue' }).start();
|
|
19
|
+
let res;
|
|
20
|
+
try {
|
|
21
|
+
res = await apiRequest('/api/cli/v1/workspaces', {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
token,
|
|
24
|
+
body: {
|
|
25
|
+
productId: opts.product,
|
|
26
|
+
customerId: opts.customer,
|
|
27
|
+
environmentId: opts.env,
|
|
28
|
+
resourceTier: opts.tier,
|
|
29
|
+
name: opts.name,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
spinner?.stop();
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
spinner?.fail('Falha ao criar workspace.');
|
|
36
|
+
handleApiError(error, opts.json);
|
|
37
|
+
}
|
|
38
|
+
if (opts.json) {
|
|
39
|
+
console.log(JSON.stringify(res));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
log.success(`Workspace criado: ${res.id}`);
|
|
43
|
+
log.dim(`Domínio: ${res.temporaryDomain} · status: ${res.status}`);
|
|
44
|
+
log.warn('OAuth client secret (one-time — guarde agora):');
|
|
45
|
+
console.log(` clientId: ${chalk.cyan(res.oauthClientId)}`);
|
|
46
|
+
console.log(` secret: ${chalk.yellow(res.oauthClientSecret)}`);
|
|
47
|
+
}
|
|
48
|
+
export async function runWorkspacesAdvance(id, opts) {
|
|
49
|
+
if (!id) {
|
|
50
|
+
log.error('Uso: neetru workspaces advance <workspaceId> --product <slug> --version <v>');
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
const token = await requireToken(opts.json);
|
|
54
|
+
const spinner = opts.json
|
|
55
|
+
? null
|
|
56
|
+
: ora({ text: `Promovendo ${opts.product}@${opts.version} no workspace ${id}…`, color: 'blue' }).start();
|
|
57
|
+
let res;
|
|
58
|
+
try {
|
|
59
|
+
res = await apiRequest(`/api/cli/v1/workspaces/${encodeURIComponent(id)}/advance`, {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
token,
|
|
62
|
+
body: { productSlug: opts.product, version: opts.version },
|
|
63
|
+
});
|
|
64
|
+
spinner?.stop();
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
spinner?.fail('Falha ao avançar workspace.');
|
|
68
|
+
handleApiError(error, opts.json);
|
|
69
|
+
}
|
|
70
|
+
printWriteResult({ tenantId: res.tenantId, version: res.version, runtimeStatus: res.runtimeStatus }, `Workspace ${res.tenantId} → ${res.version} (${res.runtimeStatus})`, opts.json);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/commands/workspaces.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED