@neetru/cli 2.0.0 → 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.
Files changed (71) hide show
  1. package/dist/commands/agent-release.d.ts +13 -0
  2. package/dist/commands/agent-release.js +204 -0
  3. package/dist/commands/agent-release.js.map +1 -0
  4. package/dist/commands/agent-write.d.ts +12 -0
  5. package/dist/commands/agent-write.js +94 -0
  6. package/dist/commands/agent-write.js.map +1 -0
  7. package/dist/commands/api-catalog.d.ts +20 -0
  8. package/dist/commands/api-catalog.js +126 -0
  9. package/dist/commands/api-catalog.js.map +1 -0
  10. package/dist/commands/audit.d.ts +8 -0
  11. package/dist/commands/audit.js +69 -0
  12. package/dist/commands/audit.js.map +1 -0
  13. package/dist/commands/billing.d.ts +6 -0
  14. package/dist/commands/billing.js +69 -0
  15. package/dist/commands/billing.js.map +1 -0
  16. package/dist/commands/build.js +10 -3
  17. package/dist/commands/build.js.map +1 -1
  18. package/dist/commands/cloud-run.d.ts +11 -0
  19. package/dist/commands/cloud-run.js +87 -0
  20. package/dist/commands/cloud-run.js.map +1 -0
  21. package/dist/commands/deploy.d.ts +7 -0
  22. package/dist/commands/deploy.js +150 -17
  23. package/dist/commands/deploy.js.map +1 -1
  24. package/dist/commands/deployments.d.ts +11 -0
  25. package/dist/commands/deployments.js +69 -0
  26. package/dist/commands/deployments.js.map +1 -0
  27. package/dist/commands/dr.d.ts +11 -0
  28. package/dist/commands/dr.js +79 -0
  29. package/dist/commands/dr.js.map +1 -0
  30. package/dist/commands/infra-read.d.ts +9 -0
  31. package/dist/commands/infra-read.js +113 -0
  32. package/dist/commands/infra-read.js.map +1 -0
  33. package/dist/commands/init.js +91 -27
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/products-db.d.ts +37 -0
  36. package/dist/commands/products-db.js +230 -0
  37. package/dist/commands/products-db.js.map +1 -0
  38. package/dist/commands/products.d.ts +12 -0
  39. package/dist/commands/products.js +97 -0
  40. package/dist/commands/products.js.map +1 -0
  41. package/dist/commands/servers.d.ts +23 -0
  42. package/dist/commands/servers.js +166 -0
  43. package/dist/commands/servers.js.map +1 -0
  44. package/dist/commands/support.d.ts +25 -0
  45. package/dist/commands/support.js +184 -0
  46. package/dist/commands/support.js.map +1 -0
  47. package/dist/commands/surface-status.d.ts +5 -0
  48. package/dist/commands/surface-status.js +63 -0
  49. package/dist/commands/surface-status.js.map +1 -0
  50. package/dist/commands/tenants.d.ts +34 -0
  51. package/dist/commands/tenants.js +179 -0
  52. package/dist/commands/tenants.js.map +1 -0
  53. package/dist/commands/workspaces.d.ts +15 -0
  54. package/dist/commands/workspaces.js +72 -0
  55. package/dist/commands/workspaces.js.map +1 -0
  56. package/dist/index.js +761 -4
  57. package/dist/index.js.map +1 -1
  58. package/dist/lib/api-client.d.ts +18 -0
  59. package/dist/lib/api-client.js +124 -4
  60. package/dist/lib/api-client.js.map +1 -1
  61. package/dist/lib/cli-read.d.ts +13 -0
  62. package/dist/lib/cli-read.js +103 -0
  63. package/dist/lib/cli-read.js.map +1 -0
  64. package/dist/lib/cli-write.d.ts +47 -0
  65. package/dist/lib/cli-write.js +137 -0
  66. package/dist/lib/cli-write.js.map +1 -0
  67. package/dist/lib/config-schema.d.ts +10 -10
  68. package/dist/lib/render.d.ts +16 -0
  69. package/dist/lib/render.js +74 -0
  70. package/dist/lib/render.js.map +1 -0
  71. 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" | "live" | "beta";
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" | "live" | "beta";
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" | "live" | "beta";
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" | "live" | "beta";
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" | "live" | "beta";
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" | "live" | "beta";
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" | "live" | "beta";
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" | "live" | "beta";
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neetru/cli",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
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.52.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.19.1",
54
- "typescript": "^5.7.0"
53
+ "tsx": "^4.22.0",
54
+ "typescript": "^5.9.3"
55
55
  },
56
56
  "engines": {
57
57
  "node": ">=20"