@neetru/cli 2.0.0 → 2.1.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/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/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/billing.d.ts +6 -0
- package/dist/commands/billing.js +69 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/build.js +10 -3
- package/dist/commands/build.js.map +1 -1
- 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/deploy.d.ts +7 -0
- package/dist/commands/deploy.js +150 -17
- 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/dr.d.ts +11 -0
- package/dist/commands/dr.js +79 -0
- package/dist/commands/dr.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 +13 -1
- package/dist/commands/init.js +327 -70
- package/dist/commands/init.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/servers.d.ts +23 -0
- package/dist/commands/servers.js +166 -0
- package/dist/commands/servers.js.map +1 -0
- 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/workspaces.d.ts +15 -0
- package/dist/commands/workspaces.js +72 -0
- package/dist/commands/workspaces.js.map +1 -0
- package/dist/index.js +775 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +18 -0
- package/dist/lib/api-client.js +124 -4
- package/dist/lib/api-client.js.map +1 -1
- 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 +10 -10
- package/dist/lib/render.d.ts +16 -0
- package/dist/lib/render.js +74 -0
- package/dist/lib/render.js.map +1 -0
- package/package.json +4 -4
|
@@ -13,7 +13,7 @@ export declare const publishBlockSchema: z.ZodObject<{
|
|
|
13
13
|
ctaLabel: z.ZodOptional<z.ZodString>;
|
|
14
14
|
}, "strip", z.ZodTypeAny, {
|
|
15
15
|
description: string;
|
|
16
|
-
status: "soon" | "
|
|
16
|
+
status: "soon" | "beta" | "live";
|
|
17
17
|
tagline: string;
|
|
18
18
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
19
19
|
order?: number | undefined;
|
|
@@ -21,7 +21,7 @@ export declare const publishBlockSchema: z.ZodObject<{
|
|
|
21
21
|
ctaLabel?: string | undefined;
|
|
22
22
|
}, {
|
|
23
23
|
description: string;
|
|
24
|
-
status: "soon" | "
|
|
24
|
+
status: "soon" | "beta" | "live";
|
|
25
25
|
tagline: string;
|
|
26
26
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
27
27
|
order?: number | undefined;
|
|
@@ -54,7 +54,7 @@ export declare const neetruConfigSchema: z.ZodObject<{
|
|
|
54
54
|
ctaLabel: z.ZodOptional<z.ZodString>;
|
|
55
55
|
}, "strip", z.ZodTypeAny, {
|
|
56
56
|
description: string;
|
|
57
|
-
status: "soon" | "
|
|
57
|
+
status: "soon" | "beta" | "live";
|
|
58
58
|
tagline: string;
|
|
59
59
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
60
60
|
order?: number | undefined;
|
|
@@ -62,7 +62,7 @@ export declare const neetruConfigSchema: z.ZodObject<{
|
|
|
62
62
|
ctaLabel?: string | undefined;
|
|
63
63
|
}, {
|
|
64
64
|
description: string;
|
|
65
|
-
status: "soon" | "
|
|
65
|
+
status: "soon" | "beta" | "live";
|
|
66
66
|
tagline: string;
|
|
67
67
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
68
68
|
order?: number | undefined;
|
|
@@ -87,7 +87,7 @@ export declare const neetruConfigSchema: z.ZodObject<{
|
|
|
87
87
|
tenantId?: string | undefined;
|
|
88
88
|
publish?: {
|
|
89
89
|
description: string;
|
|
90
|
-
status: "soon" | "
|
|
90
|
+
status: "soon" | "beta" | "live";
|
|
91
91
|
tagline: string;
|
|
92
92
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
93
93
|
order?: number | undefined;
|
|
@@ -106,7 +106,7 @@ export declare const neetruConfigSchema: z.ZodObject<{
|
|
|
106
106
|
tenantId?: string | undefined;
|
|
107
107
|
publish?: {
|
|
108
108
|
description: string;
|
|
109
|
-
status: "soon" | "
|
|
109
|
+
status: "soon" | "beta" | "live";
|
|
110
110
|
tagline: string;
|
|
111
111
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
112
112
|
order?: number | undefined;
|
|
@@ -134,23 +134,23 @@ export declare const catalogUpsertPayloadSchema: z.ZodObject<{
|
|
|
134
134
|
}, "strip", z.ZodTypeAny, {
|
|
135
135
|
description: string;
|
|
136
136
|
name: string;
|
|
137
|
-
status: "soon" | "
|
|
137
|
+
status: "soon" | "beta" | "live";
|
|
138
138
|
slug: string;
|
|
139
|
+
published: boolean;
|
|
139
140
|
tagline: string;
|
|
140
141
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
141
142
|
order: number;
|
|
142
|
-
published: boolean;
|
|
143
143
|
ctaHref?: string | undefined;
|
|
144
144
|
ctaLabel?: string | undefined;
|
|
145
145
|
}, {
|
|
146
146
|
description: string;
|
|
147
147
|
name: string;
|
|
148
|
-
status: "soon" | "
|
|
148
|
+
status: "soon" | "beta" | "live";
|
|
149
149
|
slug: string;
|
|
150
|
+
published: boolean;
|
|
150
151
|
tagline: string;
|
|
151
152
|
iconKey: "spark" | "target" | "activity" | "factory" | "chart" | "shield" | "trending";
|
|
152
153
|
order: number;
|
|
153
|
-
published: boolean;
|
|
154
154
|
ctaHref?: string | undefined;
|
|
155
155
|
ctaLabel?: string | undefined;
|
|
156
156
|
}>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface TableColumn<T> {
|
|
2
|
+
header: string;
|
|
3
|
+
/** Extrai a célula (string já formatada) da linha. */
|
|
4
|
+
value: (row: T) => string;
|
|
5
|
+
/** Largura máxima da coluna (trunca com `…`). Default: 40. */
|
|
6
|
+
maxWidth?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Imprime uma tabela. Quando `rows` está vazio, imprime uma linha discreta.
|
|
10
|
+
*/
|
|
11
|
+
export declare function renderTable<T>(columns: TableColumn<T>[], rows: T[]): void;
|
|
12
|
+
/**
|
|
13
|
+
* Formata um Firestore timestamp serializado (`{_seconds}` | ISO string | ms)
|
|
14
|
+
* pra `YYYY-MM-DD HH:mm`. Retorna `—` quando ausente/inválido.
|
|
15
|
+
*/
|
|
16
|
+
export declare function fmtTimestamp(value: unknown): string;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderização de tabelas pra saída humana dos comandos de leitura do CLI.
|
|
3
|
+
*
|
|
4
|
+
* Sem dependências externas — só `chalk` (já no bundle). Alinha colunas pela
|
|
5
|
+
* largura máxima de cada uma, trunca células longas e pinta o header.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
function truncate(s, max) {
|
|
9
|
+
if (s.length <= max)
|
|
10
|
+
return s;
|
|
11
|
+
if (max <= 1)
|
|
12
|
+
return s.slice(0, max);
|
|
13
|
+
return `${s.slice(0, max - 1)}…`;
|
|
14
|
+
}
|
|
15
|
+
// Comprimento visível ignorando ANSI escapes (chalk).
|
|
16
|
+
function visibleLength(s) {
|
|
17
|
+
// eslint-disable-next-line no-control-regex
|
|
18
|
+
return s.replace(/\[[0-9;]*m/g, '').length;
|
|
19
|
+
}
|
|
20
|
+
function padEndVisible(s, width) {
|
|
21
|
+
const len = visibleLength(s);
|
|
22
|
+
return len >= width ? s : s + ' '.repeat(width - len);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Imprime uma tabela. Quando `rows` está vazio, imprime uma linha discreta.
|
|
26
|
+
*/
|
|
27
|
+
export function renderTable(columns, rows) {
|
|
28
|
+
if (rows.length === 0) {
|
|
29
|
+
console.log(chalk.dim(' (nenhum resultado)'));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const cells = rows.map((row) => columns.map((col) => truncate(col.value(row) ?? '', col.maxWidth ?? 40)));
|
|
33
|
+
const widths = columns.map((col, i) => {
|
|
34
|
+
const headerLen = col.header.length;
|
|
35
|
+
const maxCell = cells.reduce((m, r) => Math.max(m, visibleLength(r[i])), 0);
|
|
36
|
+
return Math.max(headerLen, maxCell);
|
|
37
|
+
});
|
|
38
|
+
const headerLine = columns
|
|
39
|
+
.map((col, i) => chalk.bold(padEndVisible(col.header, widths[i])))
|
|
40
|
+
.join(' ');
|
|
41
|
+
console.log(` ${headerLine}`);
|
|
42
|
+
console.log(` ${chalk.dim(widths.map((w) => '─'.repeat(w)).join(' '))}`);
|
|
43
|
+
for (const r of cells) {
|
|
44
|
+
const line = r.map((c, i) => padEndVisible(c, widths[i])).join(' ');
|
|
45
|
+
console.log(` ${line}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Formata um Firestore timestamp serializado (`{_seconds}` | ISO string | ms)
|
|
50
|
+
* pra `YYYY-MM-DD HH:mm`. Retorna `—` quando ausente/inválido.
|
|
51
|
+
*/
|
|
52
|
+
export function fmtTimestamp(value) {
|
|
53
|
+
if (value == null)
|
|
54
|
+
return '—';
|
|
55
|
+
let ms = null;
|
|
56
|
+
if (typeof value === 'string') {
|
|
57
|
+
const t = Date.parse(value);
|
|
58
|
+
if (!Number.isNaN(t))
|
|
59
|
+
ms = t;
|
|
60
|
+
}
|
|
61
|
+
else if (typeof value === 'number') {
|
|
62
|
+
ms = value;
|
|
63
|
+
}
|
|
64
|
+
else if (value &&
|
|
65
|
+
typeof value._seconds === 'number') {
|
|
66
|
+
ms = value._seconds * 1000;
|
|
67
|
+
}
|
|
68
|
+
if (ms == null)
|
|
69
|
+
return '—';
|
|
70
|
+
const d = new Date(ms);
|
|
71
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
72
|
+
return `${d.getUTCFullYear()}-${pad(d.getUTCMonth() + 1)}-${pad(d.getUTCDate())} ${pad(d.getUTCHours())}:${pad(d.getUTCMinutes())}`;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/lib/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW;IACtC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACnC,CAAC;AAED,sDAAsD;AACtD,SAAS,aAAa,CAAC,CAAS;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,SAAS,aAAa,CAAC,CAAS,EAAE,KAAa;IAC7C,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,OAAyB,EAAE,IAAS;IACjE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAe,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACzC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CACzE,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1C,CAAC,CACF,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC;IAC9B,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,EAAE,GAAG,KAAK,CAAC;IACb,CAAC;SAAM,IACL,KAAK;QACL,OAAQ,KAA+B,CAAC,QAAQ,KAAK,QAAQ,EAC7D,CAAC;QACD,EAAE,GAAI,KAA8B,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvD,CAAC;IACD,IAAI,EAAE,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC;IAC3B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;AACtI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neetru/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Neetru Developer Kit — scaffold, AI assistant, publish, build e deploy de produtos SaaS Neetru via Core (VM-based agents)",
|
|
6
6
|
"keywords": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"prepublishOnly": "npm run build"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@anthropic-ai/sdk": "^0.
|
|
41
|
+
"@anthropic-ai/sdk": "^0.96.0",
|
|
42
42
|
"chalk": "^5.4.1",
|
|
43
43
|
"commander": "^12.1.0",
|
|
44
44
|
"conf": "^13.0.1",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/inquirer": "^9.0.7",
|
|
52
52
|
"@types/node": "^22.0.0",
|
|
53
|
-
"tsx": "^4.
|
|
54
|
-
"typescript": "^5.
|
|
53
|
+
"tsx": "^4.22.0",
|
|
54
|
+
"typescript": "^5.9.3"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"node": ">=20"
|