kaven-cli 0.4.0-alpha.1 → 0.4.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 (43) hide show
  1. package/README.md +147 -84
  2. package/README.pt-BR.md +334 -0
  3. package/dist/commands/config/features.js +1 -34
  4. package/dist/commands/config/index.js +1 -34
  5. package/dist/commands/index.js +1 -0
  6. package/dist/commands/init/index.js +4 -37
  7. package/dist/commands/marketplace/browse.js +1 -34
  8. package/dist/commands/module/activate.js +7 -5
  9. package/dist/commands/module/publish.js +2 -35
  10. package/dist/commands/upgrade/index.js +6 -39
  11. package/dist/core/AuthService.js +2 -34
  12. package/dist/core/CacheManager.js +3 -0
  13. package/dist/core/ConfigManager.js +8 -7
  14. package/dist/core/ErrorRecovery.js +1 -0
  15. package/dist/core/LicenseService.js +3 -38
  16. package/dist/core/ModuleDoctor.js +3 -0
  17. package/dist/core/ModuleInstaller.js +5 -36
  18. package/dist/core/ProjectInitializer.js +26 -5
  19. package/dist/core/RegistryResolver.js +3 -2
  20. package/dist/core/SchemaActivator.js +21 -8
  21. package/dist/core/ScriptRunner.js +3 -2
  22. package/dist/core/index.js +1 -0
  23. package/dist/index.js +12 -7
  24. package/dist/infrastructure/Container.js +2 -4
  25. package/dist/infrastructure/MarketplaceClient.js +5 -3
  26. package/dist/infrastructure/TelemetryBuffer.js +3 -1
  27. package/dist/infrastructure/TransactionalFileSystem.js +4 -1
  28. package/dist/infrastructure/errors.js +2 -0
  29. package/dist/infrastructure/index.js +1 -0
  30. package/package.json +10 -3
  31. package/dist/commands/modules/add.js +0 -53
  32. package/dist/commands/modules/list.js +0 -40
  33. package/dist/commands/modules/remove.js +0 -54
  34. package/dist/core/api/KavenApiClient.js +0 -61
  35. package/dist/core/auth/AuthManager.js +0 -91
  36. package/dist/core/modules/Injector.js +0 -86
  37. package/dist/core/modules/ModuleInstaller.js +0 -63
  38. package/dist/core/modules/ModuleManager.js +0 -59
  39. package/dist/core/modules/ModuleRemover.js +0 -60
  40. package/dist/lib/config.js +0 -66
  41. package/dist/lib/errors.js +0 -32
  42. package/dist/lib/logger.js +0 -70
  43. package/dist/types/module.js +0 -49
@@ -0,0 +1,334 @@
1
+ # Kaven CLI
2
+
3
+ > 📖 English version: [README.md](./README.md)
4
+
5
+ [![npm version](https://img.shields.io/npm/v/kaven-cli/alpha.svg)](https://www.npmjs.com/package/kaven-cli)
6
+ [![npm downloads](https://img.shields.io/npm/dm/kaven-cli.svg)](https://www.npmjs.com/package/kaven-cli)
7
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
8
+ [![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org)
9
+ [![CI](https://github.com/kaven-co/kaven-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/kaven-co/kaven-cli/actions/workflows/ci.yml)
10
+
11
+ A CLI oficial do [Kaven](https://kaven.site) — boilerplate enterprise-grade para SaaS.
12
+ Bootstrap de projetos, gerenciamento de módulos e integração com o Kaven Marketplace diretamente pelo terminal.
13
+
14
+ O Kaven é um projeto brasileiro. O boilerplate comprime de 3-6 meses para dias o trabalho de infraestrutura base de um SaaS (auth, multi-tenancy, pagamentos, design system).
15
+
16
+ > **Alpha:** APIs e comandos podem mudar antes da v1.0.0.
17
+
18
+ ---
19
+
20
+ ## Instalação
21
+
22
+ ```bash
23
+ npm install -g kaven-cli@alpha
24
+ # ou
25
+ pnpm add -g kaven-cli@alpha
26
+ ```
27
+
28
+ **Requisitos:** Node.js >= 20, pnpm (necessário para o `kaven init`)
29
+
30
+ ---
31
+
32
+ ## Início Rápido
33
+
34
+ ```bash
35
+ # 1. Bootstrap de um novo projeto
36
+ kaven init meu-saas
37
+
38
+ # 2. Autenticar com o marketplace
39
+ kaven auth login
40
+
41
+ # 3. Explorar módulos disponíveis
42
+ kaven marketplace browse
43
+
44
+ # 4. Instalar um módulo
45
+ kaven marketplace install payments
46
+
47
+ # 5. Verificar saúde do projeto
48
+ kaven module doctor
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Referência de Comandos
54
+
55
+ ### `kaven init [nome-do-projeto]`
56
+
57
+ Cria um novo projeto Kaven a partir do template oficial.
58
+
59
+ ```
60
+ Opções:
61
+ --defaults Pular prompts interativos, usar valores padrão
62
+ --skip-install Pular o pnpm install após o setup
63
+ --skip-git Pular git init e commit inicial
64
+ --force Sobrescrever diretório existente
65
+ --with-squad Inicializar squad AIOX no projeto
66
+
67
+ Exemplos:
68
+ kaven init meu-app
69
+ kaven init meu-app --defaults
70
+ kaven init meu-app --skip-git --skip-install
71
+ ```
72
+
73
+ ---
74
+
75
+ ### `kaven auth`
76
+
77
+ Gerenciar autenticação com o Kaven Marketplace.
78
+
79
+ ```
80
+ Subcomandos:
81
+ login Iniciar fluxo de device code (RFC 8628) — abre o navegador para confirmar
82
+ logout Encerrar a sessão local
83
+ whoami Exibir informações do usuário autenticado
84
+ ```
85
+
86
+ ---
87
+
88
+ ### `kaven marketplace`
89
+
90
+ Explorar e instalar módulos do Kaven Marketplace.
91
+
92
+ ```
93
+ Subcomandos:
94
+ list Listar módulos disponíveis
95
+ install Baixar e aplicar um módulo no projeto atual
96
+ browse Navegador interativo (TUI)
97
+
98
+ Opções (list):
99
+ --category <cat> Filtrar por categoria
100
+ --sort <campo> newest (padrão) | popular | name
101
+ --page <n> Número da página
102
+ --limit <n> Resultados por página (máx 100)
103
+ --json Saída em JSON bruto
104
+
105
+ Opções (install):
106
+ --version <ver> Instalar uma versão específica
107
+ --force Pular confirmação de sobrescrita
108
+ --skip-env Pular injeção no .env
109
+ --env-file <path> Caminho do .env alvo
110
+ ```
111
+
112
+ ---
113
+
114
+ ### `kaven module`
115
+
116
+ Gerenciar módulos instalados no projeto atual.
117
+
118
+ ```
119
+ Subcomandos:
120
+ doctor Executar health checks no projeto e nos módulos instalados
121
+ add Instalar um módulo a partir de um manifest local
122
+ remove Desinstalar um módulo instalado
123
+ publish Publicar um módulo no marketplace
124
+
125
+ Opções (doctor):
126
+ --fix Corrigir problemas automaticamente (pnpm install, prisma generate, env vars)
127
+ --json Saída em JSON legível por máquina
128
+
129
+ Exit codes (doctor):
130
+ 0 Todos os checks passaram
131
+ 1 Um ou mais erros encontrados
132
+ 2 Apenas avisos (sem erros)
133
+
134
+ Opções (publish):
135
+ --dry-run Validar e empacotar sem fazer upload
136
+ --changelog <msg> Notas de release para esta versão
137
+ ```
138
+
139
+ > `kaven doctor` é um alias para `kaven module doctor`.
140
+
141
+ ---
142
+
143
+ ### `kaven upgrade`
144
+
145
+ Fazer upgrade da licença via checkout Paddle.
146
+
147
+ ```
148
+ Opções:
149
+ --no-browser Imprimir URL do checkout em vez de abrir o navegador
150
+
151
+ Comportamento:
152
+ Abre o checkout Paddle no navegador → aguarda confirmação de pagamento (a cada 5s, máx 10 min)
153
+ → atualiza a licença local em caso de sucesso
154
+ ```
155
+
156
+ ---
157
+
158
+ ### `kaven license`
159
+
160
+ ```
161
+ Subcomandos:
162
+ status Exibir tier e validade da licença atual
163
+ ```
164
+
165
+ ---
166
+
167
+ ### `kaven cache`
168
+
169
+ Gerenciar o cache local de respostas da API (`~/.kaven/cache`, máx 50 MB).
170
+
171
+ ```
172
+ Subcomandos:
173
+ status Exibir estatísticas do cache (tamanho, entradas, idade)
174
+ clear Apagar todos os dados em cache
175
+
176
+ TTLs do cache:
177
+ Listagem de módulos 24 horas
178
+ Manifests de módulos 7 dias
179
+ Status da licença 1 hora
180
+ ```
181
+
182
+ ---
183
+
184
+ ### `kaven telemetry`
185
+
186
+ ```
187
+ Subcomandos:
188
+ view Exibir eventos de telemetria locais recentes
189
+ -l, --limit <n> Número de eventos (padrão: 10)
190
+ ```
191
+
192
+ ---
193
+
194
+ ### `kaven config`
195
+
196
+ ```
197
+ Subcomandos:
198
+ set <chave> <valor> Definir um valor de configuração
199
+ get <chave> Ler um valor de configuração
200
+ ```
201
+
202
+ ---
203
+
204
+ ### `kaven init-ci`
205
+
206
+ Inicializa configuração de CI/CD no projeto atual. Gera workflows do GitHub Actions configurados para projetos Kaven.
207
+
208
+ ---
209
+
210
+ ## Configuração
211
+
212
+ Toda a configuração fica em `~/.kaven/`:
213
+
214
+ ```
215
+ ~/.kaven/
216
+ auth.json Tokens de autenticação (chmod 600)
217
+ config.json Configuração da CLI
218
+ license.json Chave e tier da licença
219
+ signing-key.json Chave Ed25519 para módulos (chmod 600)
220
+ cache/ Cache de respostas da API (máx 50 MB)
221
+ telemetry.log Eventos de telemetria locais
222
+ ```
223
+
224
+ ### Variáveis de Ambiente
225
+
226
+ | Variável | Descrição |
227
+ |----------|-----------|
228
+ | `KAVEN_API_URL` | Sobrescrever a URL da API do marketplace |
229
+ | `KAVEN_DEBUG=1` | Ativar saída de debug detalhada |
230
+ | `KAVEN_OFFLINE=1` | Usar apenas dados em cache, sem requisições de rede |
231
+ | `KAVEN_TELEMETRY=0` | Desativar telemetria completamente |
232
+
233
+ ### Sobrescrever a URL da API (config file)
234
+
235
+ ```json
236
+ // ~/.kaven/config.json
237
+ {
238
+ "apiUrl": "https://api.seu-kaven.com"
239
+ }
240
+ ```
241
+
242
+ ### Modo Debug
243
+
244
+ ```bash
245
+ KAVEN_DEBUG=1 kaven marketplace list
246
+ ```
247
+
248
+ ### Modo Offline
249
+
250
+ ```bash
251
+ KAVEN_OFFLINE=1 kaven marketplace list
252
+ ```
253
+
254
+ ---
255
+
256
+ ## Troubleshooting
257
+
258
+ **Erro "Not authenticated"**
259
+ ```bash
260
+ kaven auth login
261
+ ```
262
+
263
+ **"module.json not found" ao publicar**
264
+
265
+ Execute `kaven module publish` de dentro do diretório do módulo (o que contém o `module.json`).
266
+
267
+ **pnpm install falha no `kaven init`**
268
+ ```bash
269
+ npm install -g pnpm # instalar pnpm globalmente
270
+ # ou pular e instalar depois:
271
+ kaven init meu-app --skip-install
272
+ cd meu-app && pnpm install
273
+ ```
274
+
275
+ **Prisma client desatualizado**
276
+ ```bash
277
+ kaven module doctor --fix
278
+ # ou manualmente:
279
+ npx prisma generate
280
+ ```
281
+
282
+ **Problemas de cache**
283
+ ```bash
284
+ kaven cache clear
285
+ ```
286
+
287
+ **Permission denied em `~/.kaven/`**
288
+ ```bash
289
+ chmod 700 ~/.kaven
290
+ chmod 600 ~/.kaven/auth.json ~/.kaven/signing-key.json
291
+ ```
292
+
293
+ ---
294
+
295
+ ## Contribuindo
296
+
297
+ ```bash
298
+ git clone https://github.com/kaven-co/kaven-cli
299
+ cd kaven-cli
300
+ pnpm install
301
+ pnpm test # 310 testes
302
+ pnpm run typecheck
303
+ pnpm run lint
304
+ ```
305
+
306
+ **Convenção de commits:** este repositório usa [Conventional Commits](https://www.conventionalcommits.org/).
307
+
308
+ ```bash
309
+ feat: adicionar flag --with-squad ao kaven init
310
+ fix: corrigir corrupção de cache em escritas concorrentes
311
+ docs: atualizar seção de troubleshooting
312
+ ```
313
+
314
+ **Fluxo de release:**
315
+ 1. Abrir um PR contra `main`
316
+ 2. CI deve estar verde (lint + typecheck + testes + build)
317
+ 3. Merge → Semantic Release faz o bump de versão automaticamente e publica no npm (tag `@alpha`)
318
+
319
+ Tipos que disparam release: `feat` (minor), `fix` / `perf` / `refactor` (patch), `BREAKING CHANGE` (major).
320
+ Tipos que **não** disparam release: `chore`, `docs`, `test`, `style`, `ci`.
321
+
322
+ Consulte [`docs/releasing.md`](./docs/releasing.md) para a documentação completa do pipeline de release.
323
+
324
+ ---
325
+
326
+ ## Licença
327
+
328
+ Apache 2.0 — veja [LICENSE](LICENSE)
329
+
330
+ ---
331
+
332
+ Documentação: https://docs.kaven.site/cli
333
+ GitHub: https://github.com/kaven-co/kaven-cli
334
+ npm: https://www.npmjs.com/package/kaven-cli
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -945,7 +912,7 @@ async function applyTierDirect(tier, outputPath) {
945
912
  // Interactive TUI mode
946
913
  // ---------------------------------------------------------------------------
947
914
  async function runInteractive(outputPath) {
948
- const { select, confirm } = await Promise.resolve().then(() => __importStar(require("@inquirer/prompts")));
915
+ const { select, confirm } = await import("@inquirer/prompts");
949
916
  // checkbox está disponível em runtime via @inquirer/prompts mas a definição de tipos
950
917
  // não resolve @inquirer/checkbox no node_modules direto (pacote linkado via pnpm store).
951
918
  // eslint-disable-next-line @typescript-eslint/no-require-imports
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -113,7 +80,7 @@ async function configView(options) {
113
80
  * C2.4: Config reset — Reset to defaults
114
81
  */
115
82
  async function configReset() {
116
- const { confirm } = await Promise.resolve().then(() => __importStar(require("@inquirer/prompts")));
83
+ const { confirm } = await import("@inquirer/prompts");
117
84
  const confirmed = await confirm({
118
85
  message: "Are you sure you want to reset config to defaults?",
119
86
  default: false,
@@ -1 +1,2 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -45,7 +12,7 @@ const ProjectInitializer_1 = require("../../core/ProjectInitializer");
45
12
  const ConfigManager_1 = require("../../core/ConfigManager");
46
13
  async function promptAnswers(projectName) {
47
14
  // Dynamic import to keep startup fast and avoid issues if not installed
48
- const { input, select } = await Promise.resolve().then(() => __importStar(require("@inquirer/prompts")));
15
+ const { input, select } = await import("@inquirer/prompts");
49
16
  // Load defaults from config if available
50
17
  await ConfigManager_1.configManager.initialize();
51
18
  const existingDefaults = ConfigManager_1.configManager.getAll().projectDefaults || {};
@@ -83,7 +50,7 @@ async function initProject(projectName, options) {
83
50
  resolvedName = "my-kaven-app";
84
51
  }
85
52
  else {
86
- const { input } = await Promise.resolve().then(() => __importStar(require("@inquirer/prompts")));
53
+ const { input } = await import("@inquirer/prompts");
87
54
  resolvedName = await input({
88
55
  message: "Project name:",
89
56
  default: "my-kaven-app",
@@ -126,7 +93,7 @@ async function initProject(projectName, options) {
126
93
  // Clone template
127
94
  const cloneSpinner = (0, ora_1.default)("Cloning kaven-template...").start();
128
95
  try {
129
- await initializer.cloneTemplate(targetDir);
96
+ await initializer.cloneTemplate(targetDir, options.template);
130
97
  cloneSpinner.succeed("Template cloned successfully");
131
98
  }
132
99
  catch (error) {
@@ -207,7 +174,7 @@ async function initProject(projectName, options) {
207
174
  console.log(chalk_1.default.cyan(" npx prisma migrate dev"));
208
175
  console.log(chalk_1.default.cyan(" pnpm dev"));
209
176
  console.log();
210
- console.log(chalk_1.default.gray("For more help, visit: https://docs.kaven.sh/getting-started"));
177
+ console.log(chalk_1.default.gray("For more help, visit: https://docs.kaven.site/getting-started"));
211
178
  if (options.withSquad) {
212
179
  console.log();
213
180
  console.log(chalk_1.default.bold("AIOX Squad next step:"));
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -68,7 +35,7 @@ async function marketplaceBrowse() {
68
35
  selectedModule: null,
69
36
  screen: "categories",
70
37
  };
71
- const { select } = await Promise.resolve().then(() => __importStar(require("@inquirer/prompts")));
38
+ const { select } = await import("@inquirer/prompts");
72
39
  while (state.screen !== "exit") {
73
40
  if (state.screen === "categories") {
74
41
  // Step 1: Category selection
@@ -8,6 +8,7 @@ exports.moduleDeactivate = moduleDeactivate;
8
8
  exports.moduleListActivation = moduleListActivation;
9
9
  const chalk_1 = __importDefault(require("chalk"));
10
10
  const ora_1 = __importDefault(require("ora"));
11
+ const node_path_1 = __importDefault(require("node:path"));
11
12
  const SchemaActivator_1 = require("../../core/SchemaActivator");
12
13
  const TelemetryBuffer_1 = require("../../infrastructure/TelemetryBuffer");
13
14
  // ============================================================
@@ -16,10 +17,11 @@ const TelemetryBuffer_1 = require("../../infrastructure/TelemetryBuffer");
16
17
  function findModuleDef(moduleId) {
17
18
  return SchemaActivator_1.KAVEN_MODULES.find((m) => m.id === moduleId.toLowerCase());
18
19
  }
19
- function assertSchemaExists(exists) {
20
+ function assertSchemaExists(exists, root) {
20
21
  if (!exists) {
21
- console.error(chalk_1.default.red("\nNão encontrei packages/database/prisma/schema.extended.prisma."));
22
- console.error(chalk_1.default.gray("Execute este comando na raiz de um projeto Kaven."));
22
+ const fullPath = node_path_1.default.join(root, "packages", "database", "prisma", "schema.extended.prisma");
23
+ console.error(chalk_1.default.red(`\nErro: Schema não encontrado em: ${fullPath}`));
24
+ console.error(chalk_1.default.gray("Certifique-se de que o caminho fornecido é a raiz de um projeto Kaven válido."));
23
25
  process.exit(1);
24
26
  }
25
27
  }
@@ -37,7 +39,7 @@ async function moduleActivate(moduleName, projectRoot) {
37
39
  // 1. Validar que o schema existe
38
40
  const exists = await activator.exists();
39
41
  spinner.stop();
40
- assertSchemaExists(exists);
42
+ assertSchemaExists(exists, root);
41
43
  // 2. Validar que o módulo é conhecido
42
44
  const def = findModuleDef(moduleName);
43
45
  if (!def) {
@@ -100,7 +102,7 @@ async function moduleDeactivate(moduleName, projectRoot) {
100
102
  // 1. Validar que o schema existe
101
103
  const exists = await activator.exists();
102
104
  spinner.stop();
103
- assertSchemaExists(exists);
105
+ assertSchemaExists(exists, root);
104
106
  // 2. Validar módulo
105
107
  const def = findModuleDef(moduleName);
106
108
  if (!def) {
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -95,7 +62,7 @@ async function sha256File(filePath) {
95
62
  }
96
63
  /** Create tar.gz archive of current directory, excluding common noise. */
97
64
  async function createTarball(sourceDir, outputPath) {
98
- const tar = await Promise.resolve().then(() => __importStar(require("tar")));
65
+ const tar = await import("tar");
99
66
  await tar.create({
100
67
  gzip: true,
101
68
  file: outputPath,
@@ -281,7 +248,7 @@ async function modulePublish(options) {
281
248
  await fs_extra_1.default.remove(tarballPath).catch(() => { });
282
249
  console.log();
283
250
  console.log(chalk_1.default.green(`✅ Published ${moduleJson.name} v${moduleJson.version} to the Kaven Marketplace!`));
284
- console.log(chalk_1.default.gray(`View your module at: https://marketplace.kaven.sh/modules/${moduleJson.slug}`));
251
+ console.log(chalk_1.default.gray(`View your module at: https://marketplace.kaven.site/modules/${moduleJson.slug}`));
285
252
  // Show next steps
286
253
  console.log();
287
254
  console.log(chalk_1.default.bold("Next steps:"));