kybernus 1.0.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 (407) hide show
  1. package/README.md +321 -0
  2. package/dist/cli/commands/init.d.ts +12 -0
  3. package/dist/cli/commands/init.d.ts.map +1 -0
  4. package/dist/cli/commands/init.js +71 -0
  5. package/dist/cli/commands/init.js.map +1 -0
  6. package/dist/cli/commands/login.d.ts +6 -0
  7. package/dist/cli/commands/login.d.ts.map +1 -0
  8. package/dist/cli/commands/login.js +42 -0
  9. package/dist/cli/commands/login.js.map +1 -0
  10. package/dist/cli/commands/logout.d.ts +2 -0
  11. package/dist/cli/commands/logout.d.ts.map +1 -0
  12. package/dist/cli/commands/logout.js +22 -0
  13. package/dist/cli/commands/logout.js.map +1 -0
  14. package/dist/cli/commands/register.d.ts +2 -0
  15. package/dist/cli/commands/register.d.ts.map +1 -0
  16. package/dist/cli/commands/register.js +69 -0
  17. package/dist/cli/commands/register.js.map +1 -0
  18. package/dist/cli/commands/status.d.ts +2 -0
  19. package/dist/cli/commands/status.d.ts.map +1 -0
  20. package/dist/cli/commands/status.js +46 -0
  21. package/dist/cli/commands/status.js.map +1 -0
  22. package/dist/cli/commands/upgrade.d.ts +2 -0
  23. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  24. package/dist/cli/commands/upgrade.js +62 -0
  25. package/dist/cli/commands/upgrade.js.map +1 -0
  26. package/dist/cli/prompts/wizard.d.ts +3 -0
  27. package/dist/cli/prompts/wizard.d.ts.map +1 -0
  28. package/dist/cli/prompts/wizard.js +121 -0
  29. package/dist/cli/prompts/wizard.js.map +1 -0
  30. package/dist/cli/services/AnalyticsClient.d.ts +11 -0
  31. package/dist/cli/services/AnalyticsClient.d.ts.map +1 -0
  32. package/dist/cli/services/AnalyticsClient.js +32 -0
  33. package/dist/cli/services/AnalyticsClient.js.map +1 -0
  34. package/dist/core/ai/documentation-generator.d.ts +36 -0
  35. package/dist/core/ai/documentation-generator.d.ts.map +1 -0
  36. package/dist/core/ai/documentation-generator.js +111 -0
  37. package/dist/core/ai/documentation-generator.js.map +1 -0
  38. package/dist/core/ai/gemini-service.d.ts +17 -0
  39. package/dist/core/ai/gemini-service.d.ts.map +1 -0
  40. package/dist/core/ai/gemini-service.js +68 -0
  41. package/dist/core/ai/gemini-service.js.map +1 -0
  42. package/dist/core/ai/prompts/documentation-prompts.d.ts +17 -0
  43. package/dist/core/ai/prompts/documentation-prompts.d.ts.map +1 -0
  44. package/dist/core/ai/prompts/documentation-prompts.js +195 -0
  45. package/dist/core/ai/prompts/documentation-prompts.js.map +1 -0
  46. package/dist/core/auth/license-validator.d.ts +33 -0
  47. package/dist/core/auth/license-validator.d.ts.map +1 -0
  48. package/dist/core/auth/license-validator.js +81 -0
  49. package/dist/core/auth/license-validator.js.map +1 -0
  50. package/dist/core/config/config-manager.d.ts +24 -0
  51. package/dist/core/config/config-manager.d.ts.map +1 -0
  52. package/dist/core/config/config-manager.js +56 -0
  53. package/dist/core/config/config-manager.js.map +1 -0
  54. package/dist/core/generator/context-builder.d.ts +10 -0
  55. package/dist/core/generator/context-builder.d.ts.map +1 -0
  56. package/dist/core/generator/context-builder.js +43 -0
  57. package/dist/core/generator/context-builder.js.map +1 -0
  58. package/dist/core/generator/project.d.ts +42 -0
  59. package/dist/core/generator/project.d.ts.map +1 -0
  60. package/dist/core/generator/project.js +278 -0
  61. package/dist/core/generator/project.js.map +1 -0
  62. package/dist/core/templates/engine.d.ts +25 -0
  63. package/dist/core/templates/engine.d.ts.map +1 -0
  64. package/dist/core/templates/engine.js +78 -0
  65. package/dist/core/templates/engine.js.map +1 -0
  66. package/dist/core/templates/helpers.d.ts +6 -0
  67. package/dist/core/templates/helpers.d.ts.map +1 -0
  68. package/dist/core/templates/helpers.js +63 -0
  69. package/dist/core/templates/helpers.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +48 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/models/config.d.ts +38 -0
  75. package/dist/models/config.d.ts.map +1 -0
  76. package/dist/models/config.js +2 -0
  77. package/dist/models/config.js.map +1 -0
  78. package/package.json +66 -0
  79. package/templates/java-spring/free/mvc/.gitignore.hbs +39 -0
  80. package/templates/java-spring/free/mvc/README.md.hbs +116 -0
  81. package/templates/java-spring/free/mvc/docker-compose.yml.hbs +18 -0
  82. package/templates/java-spring/free/mvc/pom.xml.hbs +92 -0
  83. package/templates/java-spring/free/mvc/src/main/java/{{packagePath}}/config/GlobalExceptionHandler.java.hbs +39 -0
  84. package/templates/java-spring/free/mvc/src/main/java/{{packagePath}}/config/WebConfig.java.hbs +30 -0
  85. package/templates/java-spring/free/mvc/src/main/java/{{packagePath}}/controller/HealthController.java.hbs +30 -0
  86. package/templates/java-spring/free/mvc/src/main/java/{{packagePath}}/model/.gitkeep +0 -0
  87. package/templates/java-spring/free/mvc/src/main/java/{{packagePath}}/repository/.gitkeep +0 -0
  88. package/templates/java-spring/free/mvc/src/main/java/{{packagePath}}/service/.gitkeep +0 -0
  89. package/templates/java-spring/free/mvc/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +13 -0
  90. package/templates/java-spring/free/mvc/src/main/resources/application.yml.hbs +32 -0
  91. package/templates/java-spring/free/mvc/src/test/java/{{packagePath}}/{{projectNamePascalCase}}ApplicationTests.java.hbs +13 -0
  92. package/templates/java-spring/free/mvc/src/test/resources/application.yml.hbs +10 -0
  93. package/templates/java-spring/free/mvc/template.json +14 -0
  94. package/templates/java-spring/pro/clean/.github/workflows/ci-cd.yml.hbs +88 -0
  95. package/templates/java-spring/pro/clean/Dockerfile.hbs +45 -0
  96. package/templates/java-spring/pro/clean/README.md.hbs +31 -0
  97. package/templates/java-spring/pro/clean/docker-compose.yml.hbs +18 -0
  98. package/templates/java-spring/pro/clean/infra/main.tf.hbs +83 -0
  99. package/templates/java-spring/pro/clean/infra/modules/ecs/main.tf.hbs +54 -0
  100. package/templates/java-spring/pro/clean/infra/modules/rds/main.tf.hbs +88 -0
  101. package/templates/java-spring/pro/clean/infra/modules/vpc/main.tf.hbs +107 -0
  102. package/templates/java-spring/pro/clean/pom.xml.hbs +130 -0
  103. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/application/service/AuthService.java.hbs +36 -0
  104. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/entity/User.java.hbs +77 -0
  105. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/repository/UserRepository.java.hbs +15 -0
  106. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/usecase/LoginUserUseCase.java.hbs +36 -0
  107. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/usecase/RegisterUserUseCase.java.hbs +46 -0
  108. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/persistence/InMemoryUserRepository.java.hbs +41 -0
  109. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/security/SecurityAdapters.java.hbs +53 -0
  110. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/web/controller/AuthController.java.hbs +41 -0
  111. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +14 -0
  112. package/templates/java-spring/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +88 -0
  113. package/templates/java-spring/pro/hexagonal/Dockerfile.hbs +45 -0
  114. package/templates/java-spring/pro/hexagonal/README.md.hbs +38 -0
  115. package/templates/java-spring/pro/hexagonal/docker-compose.yml.hbs +18 -0
  116. package/templates/java-spring/pro/hexagonal/infra/main.tf.hbs +83 -0
  117. package/templates/java-spring/pro/hexagonal/infra/modules/ecs/main.tf.hbs +54 -0
  118. package/templates/java-spring/pro/hexagonal/infra/modules/rds/main.tf.hbs +88 -0
  119. package/templates/java-spring/pro/hexagonal/infra/modules/vpc/main.tf.hbs +107 -0
  120. package/templates/java-spring/pro/hexagonal/pom.xml.hbs +130 -0
  121. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/application/service/AuthService.java.hbs +36 -0
  122. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/entity/User.java.hbs +77 -0
  123. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/repository/UserRepository.java.hbs +15 -0
  124. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/usecase/LoginUserUseCase.java.hbs +36 -0
  125. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/usecase/RegisterUserUseCase.java.hbs +46 -0
  126. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/persistence/InMemoryUserRepository.java.hbs +41 -0
  127. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/security/SecurityAdapters.java.hbs +53 -0
  128. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/web/controller/AuthController.java.hbs +41 -0
  129. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +14 -0
  130. package/templates/java-spring/pro/mvc/.github/workflows/ci-cd.yml.hbs +88 -0
  131. package/templates/java-spring/pro/mvc/Dockerfile.hbs +45 -0
  132. package/templates/java-spring/pro/mvc/README.md.hbs +116 -0
  133. package/templates/java-spring/pro/mvc/docker-compose.yml.hbs +18 -0
  134. package/templates/java-spring/pro/mvc/infra/main.tf.hbs +83 -0
  135. package/templates/java-spring/pro/mvc/infra/modules/ecs/main.tf.hbs +54 -0
  136. package/templates/java-spring/pro/mvc/infra/modules/rds/main.tf.hbs +88 -0
  137. package/templates/java-spring/pro/mvc/infra/modules/vpc/main.tf.hbs +107 -0
  138. package/templates/java-spring/pro/mvc/pom.xml.hbs +130 -0
  139. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/GlobalExceptionHandler.java.hbs +39 -0
  140. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/SecurityConfig.java.hbs +44 -0
  141. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/WebConfig.java.hbs +30 -0
  142. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/AuthController.java.hbs +69 -0
  143. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/HealthController.java.hbs +30 -0
  144. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/PaymentsController.java.hbs +49 -0
  145. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/dto/AuthRequest.java.hbs +3 -0
  146. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/dto/AuthResponse.java.hbs +3 -0
  147. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/model/.gitkeep +0 -0
  148. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/repository/.gitkeep +0 -0
  149. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/security/JwtAuthenticationFilter.java.hbs +56 -0
  150. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/security/JwtTokenProvider.java.hbs +59 -0
  151. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/service/.gitkeep +0 -0
  152. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/service/StripeService.java.hbs +67 -0
  153. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +13 -0
  154. package/templates/java-spring/pro/mvc/src/main/resources/application.yml.hbs +32 -0
  155. package/templates/java-spring/pro/mvc/src/test/java/{{packagePath}}/{{projectNamePascalCase}}ApplicationTests.java.hbs +13 -0
  156. package/templates/java-spring/pro/mvc/src/test/resources/application.yml.hbs +10 -0
  157. package/templates/java-spring/pro/mvc/template.json +14 -0
  158. package/templates/nestjs/free/mvc/README.md.hbs +28 -0
  159. package/templates/nestjs/free/mvc/package.json.hbs +29 -0
  160. package/templates/nestjs/free/mvc/src/app.module.ts.hbs +13 -0
  161. package/templates/nestjs/free/mvc/src/controllers/health.controller.ts.hbs +9 -0
  162. package/templates/nestjs/free/mvc/src/controllers/items.controller.ts.hbs +32 -0
  163. package/templates/nestjs/free/mvc/src/main.ts.hbs +17 -0
  164. package/templates/nestjs/free/mvc/src/models/create-item.dto.ts.hbs +10 -0
  165. package/templates/nestjs/free/mvc/src/models/item.model.ts.hbs +6 -0
  166. package/templates/nestjs/free/mvc/src/modules/items.module.ts.hbs +9 -0
  167. package/templates/nestjs/free/mvc/src/services/items.service.ts.hbs +32 -0
  168. package/templates/nestjs/free/mvc/tsconfig.json.hbs +21 -0
  169. package/templates/nestjs/pro/clean/.env.example.hbs +19 -0
  170. package/templates/nestjs/pro/clean/.github/workflows/ci-cd.yml.hbs +88 -0
  171. package/templates/nestjs/pro/clean/Dockerfile.hbs +45 -0
  172. package/templates/nestjs/pro/clean/infra/main.tf.hbs +83 -0
  173. package/templates/nestjs/pro/clean/infra/modules/ecs/main.tf.hbs +54 -0
  174. package/templates/nestjs/pro/clean/infra/modules/rds/main.tf.hbs +88 -0
  175. package/templates/nestjs/pro/clean/infra/modules/vpc/main.tf.hbs +107 -0
  176. package/templates/nestjs/pro/clean/package.json.hbs +37 -0
  177. package/templates/nestjs/pro/clean/src/auth.module.ts.hbs +17 -0
  178. package/templates/nestjs/pro/clean/src/domain/entities/user.entity.ts.hbs +12 -0
  179. package/templates/nestjs/pro/clean/src/domain/repositories/user.repository.ts.hbs +6 -0
  180. package/templates/nestjs/pro/clean/src/domain/use-cases/register.use-case.ts.hbs +18 -0
  181. package/templates/nestjs/pro/clean/src/infrastructure/database/in-memory.repository.ts.hbs +17 -0
  182. package/templates/nestjs/pro/clean/src/infrastructure/http/auth.controller.ts.hbs +16 -0
  183. package/templates/nestjs/pro/clean/tsconfig.json.hbs +21 -0
  184. package/templates/nestjs/pro/hexagonal/.env.example.hbs +19 -0
  185. package/templates/nestjs/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +88 -0
  186. package/templates/nestjs/pro/hexagonal/Dockerfile.hbs +45 -0
  187. package/templates/nestjs/pro/hexagonal/infra/main.tf.hbs +83 -0
  188. package/templates/nestjs/pro/hexagonal/infra/modules/ecs/main.tf.hbs +54 -0
  189. package/templates/nestjs/pro/hexagonal/infra/modules/rds/main.tf.hbs +88 -0
  190. package/templates/nestjs/pro/hexagonal/infra/modules/vpc/main.tf.hbs +107 -0
  191. package/templates/nestjs/pro/hexagonal/package.json.hbs +37 -0
  192. package/templates/nestjs/pro/hexagonal/src/adapters/inbound/http.adapter.ts.hbs +12 -0
  193. package/templates/nestjs/pro/hexagonal/src/adapters/outbound/persistence.adapter.ts.hbs +13 -0
  194. package/templates/nestjs/pro/hexagonal/src/auth.module.ts.hbs +19 -0
  195. package/templates/nestjs/pro/hexagonal/src/core/auth.service.ts.hbs +16 -0
  196. package/templates/nestjs/pro/hexagonal/src/core/domain/user.entity.ts.hbs +8 -0
  197. package/templates/nestjs/pro/hexagonal/src/core/ports/ports.ts.hbs +9 -0
  198. package/templates/nestjs/pro/hexagonal/tsconfig.json.hbs +21 -0
  199. package/templates/nestjs/pro/mvc/.env.example.hbs +19 -0
  200. package/templates/nestjs/pro/mvc/.github/workflows/ci-cd.yml.hbs +88 -0
  201. package/templates/nestjs/pro/mvc/Dockerfile.hbs +45 -0
  202. package/templates/nestjs/pro/mvc/README.md.hbs +28 -0
  203. package/templates/nestjs/pro/mvc/infra/main.tf.hbs +83 -0
  204. package/templates/nestjs/pro/mvc/infra/modules/ecs/main.tf.hbs +54 -0
  205. package/templates/nestjs/pro/mvc/infra/modules/rds/main.tf.hbs +88 -0
  206. package/templates/nestjs/pro/mvc/infra/modules/vpc/main.tf.hbs +107 -0
  207. package/templates/nestjs/pro/mvc/package.json.hbs +37 -0
  208. package/templates/nestjs/pro/mvc/src/app.module.ts.hbs +17 -0
  209. package/templates/nestjs/pro/mvc/src/auth/auth.controller.ts.hbs +35 -0
  210. package/templates/nestjs/pro/mvc/src/auth/auth.module.ts.hbs +25 -0
  211. package/templates/nestjs/pro/mvc/src/auth/auth.service.ts.hbs +55 -0
  212. package/templates/nestjs/pro/mvc/src/auth/jwt.strategy.ts.hbs +19 -0
  213. package/templates/nestjs/pro/mvc/src/controllers/health.controller.ts.hbs +9 -0
  214. package/templates/nestjs/pro/mvc/src/controllers/items.controller.ts.hbs +32 -0
  215. package/templates/nestjs/pro/mvc/src/main.ts.hbs +17 -0
  216. package/templates/nestjs/pro/mvc/src/models/create-item.dto.ts.hbs +10 -0
  217. package/templates/nestjs/pro/mvc/src/models/item.model.ts.hbs +6 -0
  218. package/templates/nestjs/pro/mvc/src/modules/items.module.ts.hbs +9 -0
  219. package/templates/nestjs/pro/mvc/src/payments/payments.controller.ts.hbs +26 -0
  220. package/templates/nestjs/pro/mvc/src/payments/payments.module.ts.hbs +11 -0
  221. package/templates/nestjs/pro/mvc/src/payments/payments.service.ts.hbs +43 -0
  222. package/templates/nestjs/pro/mvc/src/services/items.service.ts.hbs +32 -0
  223. package/templates/nestjs/pro/mvc/tsconfig.json.hbs +21 -0
  224. package/templates/nextjs/free/default/.env.example.hbs +1 -0
  225. package/templates/nextjs/free/default/.gitignore.hbs +8 -0
  226. package/templates/nextjs/free/default/README.md.hbs +96 -0
  227. package/templates/nextjs/free/default/docker-compose.yml.hbs +18 -0
  228. package/templates/nextjs/free/default/next.config.js.hbs +4 -0
  229. package/templates/nextjs/free/default/package.json.hbs +32 -0
  230. package/templates/nextjs/free/default/postcss.config.js.hbs +6 -0
  231. package/templates/nextjs/free/default/prisma/schema.prisma.hbs +18 -0
  232. package/templates/nextjs/free/default/public/.gitkeep +0 -0
  233. package/templates/nextjs/free/default/src/app/api/health/route.ts.hbs +9 -0
  234. package/templates/nextjs/free/default/src/app/globals.css.hbs +3 -0
  235. package/templates/nextjs/free/default/src/app/layout.tsx.hbs +22 -0
  236. package/templates/nextjs/free/default/src/app/page.tsx.hbs +38 -0
  237. package/templates/nextjs/free/default/src/components/.gitkeep +0 -0
  238. package/templates/nextjs/free/default/src/lib/prisma.ts.hbs +13 -0
  239. package/templates/nextjs/free/default/src/proxy.ts.hbs +22 -0
  240. package/templates/nextjs/free/default/tailwind.config.ts.hbs +15 -0
  241. package/templates/nextjs/free/default/template.json +18 -0
  242. package/templates/nextjs/free/default/tsconfig.json.hbs +23 -0
  243. package/templates/nextjs/pro/default/.env.example.hbs +20 -0
  244. package/templates/nextjs/pro/default/.github/workflows/ci-cd.yml.hbs +88 -0
  245. package/templates/nextjs/pro/default/Dockerfile.hbs +45 -0
  246. package/templates/nextjs/pro/default/README.md.hbs +96 -0
  247. package/templates/nextjs/pro/default/docker-compose.yml.hbs +18 -0
  248. package/templates/nextjs/pro/default/infra/main.tf.hbs +83 -0
  249. package/templates/nextjs/pro/default/infra/modules/ecs/main.tf.hbs +54 -0
  250. package/templates/nextjs/pro/default/infra/modules/rds/main.tf.hbs +88 -0
  251. package/templates/nextjs/pro/default/infra/modules/vpc/main.tf.hbs +107 -0
  252. package/templates/nextjs/pro/default/next.config.js.hbs +4 -0
  253. package/templates/nextjs/pro/default/package.json.hbs +34 -0
  254. package/templates/nextjs/pro/default/postcss.config.js.hbs +6 -0
  255. package/templates/nextjs/pro/default/prisma/schema.prisma.hbs +18 -0
  256. package/templates/nextjs/pro/default/public/.gitkeep +0 -0
  257. package/templates/nextjs/pro/default/src/app/api/auth/[...nextauth]/route.ts.hbs +61 -0
  258. package/templates/nextjs/pro/default/src/app/api/checkout/route.ts.hbs +30 -0
  259. package/templates/nextjs/pro/default/src/app/api/health/route.ts.hbs +9 -0
  260. package/templates/nextjs/pro/default/src/app/api/webhook/route.ts.hbs +51 -0
  261. package/templates/nextjs/pro/default/src/app/dashboard/page.tsx.hbs +52 -0
  262. package/templates/nextjs/pro/default/src/app/globals.css.hbs +3 -0
  263. package/templates/nextjs/pro/default/src/app/layout.tsx.hbs +22 -0
  264. package/templates/nextjs/pro/default/src/app/page.tsx.hbs +38 -0
  265. package/templates/nextjs/pro/default/src/components/.gitkeep +0 -0
  266. package/templates/nextjs/pro/default/src/components/AuthButton.tsx.hbs +34 -0
  267. package/templates/nextjs/pro/default/src/components/Providers.tsx.hbs +7 -0
  268. package/templates/nextjs/pro/default/src/lib/prisma.ts.hbs +13 -0
  269. package/templates/nextjs/pro/default/src/proxy.ts.hbs +22 -0
  270. package/templates/nextjs/pro/default/tailwind.config.ts.hbs +15 -0
  271. package/templates/nextjs/pro/default/template.json +18 -0
  272. package/templates/nextjs/pro/default/tsconfig.json.hbs +40 -0
  273. package/templates/nodejs-express/free/mvc/.env.example.hbs +3 -0
  274. package/templates/nodejs-express/free/mvc/.gitignore.hbs +6 -0
  275. package/templates/nodejs-express/free/mvc/README.md.hbs +128 -0
  276. package/templates/nodejs-express/free/mvc/docker-compose.yml.hbs +18 -0
  277. package/templates/nodejs-express/free/mvc/package.json.hbs +39 -0
  278. package/templates/nodejs-express/free/mvc/src/app.ts.hbs +29 -0
  279. package/templates/nodejs-express/free/mvc/src/config/database.ts.hbs +10 -0
  280. package/templates/nodejs-express/free/mvc/src/controllers/healthController.ts.hbs +20 -0
  281. package/templates/nodejs-express/free/mvc/src/index.ts.hbs +12 -0
  282. package/templates/nodejs-express/free/mvc/src/middleware/errorHandler.ts.hbs +22 -0
  283. package/templates/nodejs-express/free/mvc/src/models/.gitkeep +0 -0
  284. package/templates/nodejs-express/free/mvc/src/routes/index.ts.hbs +14 -0
  285. package/templates/nodejs-express/free/mvc/src/services/.gitkeep +0 -0
  286. package/templates/nodejs-express/free/mvc/template.json +18 -0
  287. package/templates/nodejs-express/free/mvc/tsconfig.json.hbs +18 -0
  288. package/templates/nodejs-express/pro/clean/.env.example.hbs +19 -0
  289. package/templates/nodejs-express/pro/clean/.github/workflows/ci-cd.yml.hbs +88 -0
  290. package/templates/nodejs-express/pro/clean/Dockerfile.hbs +45 -0
  291. package/templates/nodejs-express/pro/clean/README.md.hbs +41 -0
  292. package/templates/nodejs-express/pro/clean/docker-compose.yml.hbs +18 -0
  293. package/templates/nodejs-express/pro/clean/infra/main.tf.hbs +83 -0
  294. package/templates/nodejs-express/pro/clean/infra/modules/ecs/main.tf.hbs +54 -0
  295. package/templates/nodejs-express/pro/clean/infra/modules/rds/main.tf.hbs +88 -0
  296. package/templates/nodejs-express/pro/clean/infra/modules/vpc/main.tf.hbs +107 -0
  297. package/templates/nodejs-express/pro/clean/package.json.hbs +55 -0
  298. package/templates/nodejs-express/pro/clean/src/application/services/AuthService.ts.hbs +66 -0
  299. package/templates/nodejs-express/pro/clean/src/domain/entities/User.ts.hbs +38 -0
  300. package/templates/nodejs-express/pro/clean/src/domain/repositories/IUserRepository.ts.hbs +13 -0
  301. package/templates/nodejs-express/pro/clean/src/domain/usecases/LoginUserUseCase.ts.hbs +39 -0
  302. package/templates/nodejs-express/pro/clean/src/domain/usecases/RegisterUserUseCase.ts.hbs +51 -0
  303. package/templates/nodejs-express/pro/clean/src/index.ts.hbs +40 -0
  304. package/templates/nodejs-express/pro/clean/src/infrastructure/database/InMemoryUserRepository.ts.hbs +46 -0
  305. package/templates/nodejs-express/pro/clean/src/infrastructure/http/controllers/AuthController.ts.hbs +45 -0
  306. package/templates/nodejs-express/pro/clean/src/infrastructure/http/middlewares/AuthMiddleware.ts.hbs +27 -0
  307. package/templates/nodejs-express/pro/clean/src/infrastructure/providers/PasswordHasher.ts.hbs +14 -0
  308. package/templates/nodejs-express/pro/clean/src/infrastructure/providers/TokenGenerator.ts.hbs +25 -0
  309. package/templates/nodejs-express/pro/clean/tsconfig.json.hbs +27 -0
  310. package/templates/nodejs-express/pro/hexagonal/.env.example.hbs +19 -0
  311. package/templates/nodejs-express/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +88 -0
  312. package/templates/nodejs-express/pro/hexagonal/Dockerfile.hbs +45 -0
  313. package/templates/nodejs-express/pro/hexagonal/README.md.hbs +42 -0
  314. package/templates/nodejs-express/pro/hexagonal/docker-compose.yml.hbs +18 -0
  315. package/templates/nodejs-express/pro/hexagonal/infra/main.tf.hbs +83 -0
  316. package/templates/nodejs-express/pro/hexagonal/infra/modules/ecs/main.tf.hbs +54 -0
  317. package/templates/nodejs-express/pro/hexagonal/infra/modules/rds/main.tf.hbs +88 -0
  318. package/templates/nodejs-express/pro/hexagonal/infra/modules/vpc/main.tf.hbs +107 -0
  319. package/templates/nodejs-express/pro/hexagonal/package.json.hbs +55 -0
  320. package/templates/nodejs-express/pro/hexagonal/src/adapters/inbound/http/AuthController.ts.hbs +48 -0
  321. package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/SecurityAdapters.ts.hbs +31 -0
  322. package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/persistence/InMemoryUserAdapter.ts.hbs +38 -0
  323. package/templates/nodejs-express/pro/hexagonal/src/core/AuthService.ts.hbs +51 -0
  324. package/templates/nodejs-express/pro/hexagonal/src/core/domain/entities/User.ts.hbs +28 -0
  325. package/templates/nodejs-express/pro/hexagonal/src/core/ports/inbound/IAuthPort.ts.hbs +11 -0
  326. package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/ISecurityPorts.ts.hbs +15 -0
  327. package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/IUserRepositoryPort.ts.hbs +13 -0
  328. package/templates/nodejs-express/pro/hexagonal/src/index.ts.hbs +41 -0
  329. package/templates/nodejs-express/pro/hexagonal/tsconfig.json.hbs +27 -0
  330. package/templates/nodejs-express/pro/mvc/.env.example.hbs +19 -0
  331. package/templates/nodejs-express/pro/mvc/.github/workflows/ci-cd.yml.hbs +88 -0
  332. package/templates/nodejs-express/pro/mvc/Dockerfile.hbs +45 -0
  333. package/templates/nodejs-express/pro/mvc/README.md.hbs +85 -0
  334. package/templates/nodejs-express/pro/mvc/docker-compose.yml.hbs +18 -0
  335. package/templates/nodejs-express/pro/mvc/infra/main.tf.hbs +83 -0
  336. package/templates/nodejs-express/pro/mvc/infra/modules/ecs/main.tf.hbs +54 -0
  337. package/templates/nodejs-express/pro/mvc/infra/modules/rds/main.tf.hbs +88 -0
  338. package/templates/nodejs-express/pro/mvc/infra/modules/vpc/main.tf.hbs +107 -0
  339. package/templates/nodejs-express/pro/mvc/package.json.hbs +55 -0
  340. package/templates/nodejs-express/pro/mvc/src/app.ts.hbs +34 -0
  341. package/templates/nodejs-express/pro/mvc/src/config/database.ts.hbs +10 -0
  342. package/templates/nodejs-express/pro/mvc/src/controllers/auth.controller.ts.hbs +91 -0
  343. package/templates/nodejs-express/pro/mvc/src/controllers/healthController.ts.hbs +20 -0
  344. package/templates/nodejs-express/pro/mvc/src/controllers/payments.controller.ts.hbs +72 -0
  345. package/templates/nodejs-express/pro/mvc/src/index.ts.hbs +12 -0
  346. package/templates/nodejs-express/pro/mvc/src/middleware/errorHandler.ts.hbs +22 -0
  347. package/templates/nodejs-express/pro/mvc/src/middlewares/auth.middleware.ts.hbs +31 -0
  348. package/templates/nodejs-express/pro/mvc/src/models/.gitkeep +0 -0
  349. package/templates/nodejs-express/pro/mvc/src/routes/index.ts.hbs +14 -0
  350. package/templates/nodejs-express/pro/mvc/src/services/.gitkeep +0 -0
  351. package/templates/nodejs-express/pro/mvc/src/services/stripe.service.ts.hbs +102 -0
  352. package/templates/nodejs-express/pro/mvc/template.json +18 -0
  353. package/templates/nodejs-express/pro/mvc/tsconfig.json.hbs +27 -0
  354. package/templates/python-fastapi/free/mvc/README.md.hbs +41 -0
  355. package/templates/python-fastapi/free/mvc/app/controllers/health.py.hbs +7 -0
  356. package/templates/python-fastapi/free/mvc/app/controllers/items.py.hbs +27 -0
  357. package/templates/python-fastapi/free/mvc/app/main.py.hbs +26 -0
  358. package/templates/python-fastapi/free/mvc/app/models/item.py.hbs +11 -0
  359. package/templates/python-fastapi/free/mvc/app/schemas/item.py.hbs +17 -0
  360. package/templates/python-fastapi/free/mvc/app/services/item_service.py.hbs +33 -0
  361. package/templates/python-fastapi/free/mvc/requirements.txt.hbs +4 -0
  362. package/templates/python-fastapi/pro/clean/.env.example.hbs +17 -0
  363. package/templates/python-fastapi/pro/clean/.github/workflows/ci-cd.yml.hbs +88 -0
  364. package/templates/python-fastapi/pro/clean/Dockerfile.hbs +20 -0
  365. package/templates/python-fastapi/pro/clean/app/domain/entities/user.py.hbs +23 -0
  366. package/templates/python-fastapi/pro/clean/app/domain/repositories/user_repository.py.hbs +22 -0
  367. package/templates/python-fastapi/pro/clean/app/domain/usecases/register_user.py.hbs +30 -0
  368. package/templates/python-fastapi/pro/clean/app/infrastructure/database/in_memory_repository.py.hbs +26 -0
  369. package/templates/python-fastapi/pro/clean/app/infrastructure/http/auth_controller.py.hbs +26 -0
  370. package/templates/python-fastapi/pro/clean/app/infrastructure/security/adapters.py.hbs +23 -0
  371. package/templates/python-fastapi/pro/clean/app/main.py.hbs +10 -0
  372. package/templates/python-fastapi/pro/clean/infra/main.tf.hbs +83 -0
  373. package/templates/python-fastapi/pro/clean/infra/modules/ecs/main.tf.hbs +54 -0
  374. package/templates/python-fastapi/pro/clean/infra/modules/rds/main.tf.hbs +88 -0
  375. package/templates/python-fastapi/pro/clean/infra/modules/vpc/main.tf.hbs +107 -0
  376. package/templates/python-fastapi/pro/clean/requirements.txt.hbs +12 -0
  377. package/templates/python-fastapi/pro/hexagonal/.env.example.hbs +17 -0
  378. package/templates/python-fastapi/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +88 -0
  379. package/templates/python-fastapi/pro/hexagonal/Dockerfile.hbs +20 -0
  380. package/templates/python-fastapi/pro/hexagonal/app/adapters/inbound/http_adapter.py.hbs +29 -0
  381. package/templates/python-fastapi/pro/hexagonal/app/core/domain/user.py.hbs +15 -0
  382. package/templates/python-fastapi/pro/hexagonal/app/core/ports.py.hbs +25 -0
  383. package/templates/python-fastapi/pro/hexagonal/app/core/service.py.hbs +28 -0
  384. package/templates/python-fastapi/pro/hexagonal/app/main.py.hbs +22 -0
  385. package/templates/python-fastapi/pro/hexagonal/infra/main.tf.hbs +83 -0
  386. package/templates/python-fastapi/pro/hexagonal/infra/modules/ecs/main.tf.hbs +54 -0
  387. package/templates/python-fastapi/pro/hexagonal/infra/modules/rds/main.tf.hbs +88 -0
  388. package/templates/python-fastapi/pro/hexagonal/infra/modules/vpc/main.tf.hbs +107 -0
  389. package/templates/python-fastapi/pro/hexagonal/requirements.txt.hbs +12 -0
  390. package/templates/python-fastapi/pro/mvc/.env.example.hbs +17 -0
  391. package/templates/python-fastapi/pro/mvc/.github/workflows/ci-cd.yml.hbs +88 -0
  392. package/templates/python-fastapi/pro/mvc/Dockerfile.hbs +20 -0
  393. package/templates/python-fastapi/pro/mvc/README.md.hbs +41 -0
  394. package/templates/python-fastapi/pro/mvc/app/controllers/auth.py.hbs +46 -0
  395. package/templates/python-fastapi/pro/mvc/app/controllers/health.py.hbs +7 -0
  396. package/templates/python-fastapi/pro/mvc/app/controllers/items.py.hbs +21 -0
  397. package/templates/python-fastapi/pro/mvc/app/controllers/payments.py.hbs +32 -0
  398. package/templates/python-fastapi/pro/mvc/app/main.py.hbs +20 -0
  399. package/templates/python-fastapi/pro/mvc/app/middleware/security.py.hbs +39 -0
  400. package/templates/python-fastapi/pro/mvc/app/models/item.py.hbs +11 -0
  401. package/templates/python-fastapi/pro/mvc/app/schemas/item.py.hbs +16 -0
  402. package/templates/python-fastapi/pro/mvc/app/services/item_service.py.hbs +24 -0
  403. package/templates/python-fastapi/pro/mvc/infra/main.tf.hbs +83 -0
  404. package/templates/python-fastapi/pro/mvc/infra/modules/ecs/main.tf.hbs +54 -0
  405. package/templates/python-fastapi/pro/mvc/infra/modules/rds/main.tf.hbs +88 -0
  406. package/templates/python-fastapi/pro/mvc/infra/modules/vpc/main.tf.hbs +107 -0
  407. package/templates/python-fastapi/pro/mvc/requirements.txt.hbs +12 -0
package/README.md ADDED
@@ -0,0 +1,321 @@
1
+ # Kybernus CLI 🚀
2
+
3
+ [![CI](https://github.com/ViniMTrevisan/Kybernus-CLI/workflows/CI%20-%20Tests/badge.svg)](https://github.com/ViniMTrevisan/Kybernus-CLI/actions)
4
+ [![npm version](https://img.shields.io/npm/v/kybernus)](https://www.npmjs.com/package/kybernus)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ **The Ultimate Backend Scaffolding Tool for Modern Developers.**
8
+
9
+ Build production-ready applications in minutes, not days. Kybernus automates the setup of robust, scalable backend and fullstack architectures with industry best practices built-in.
10
+
11
+ ---
12
+
13
+ ## 📦 Project Structure
14
+
15
+ ```
16
+ kybernus/
17
+ ├── apps/web/ # Next.js Web Application (Dashboard, Admin, APIs)
18
+ ├── src/ # CLI Source Code
19
+ ├── templates/ # Project Templates (5 stacks × 2 tiers)
20
+ ├── tests/ # Automated Test Suite
21
+ └── docs/ # Documentation
22
+ ```
23
+
24
+ ### Components
25
+
26
+ | Component | Description |
27
+ |-----------|-------------|
28
+ | **CLI** | Interactive command-line tool for project scaffolding |
29
+ | **Web App** | Dashboard, authentication, admin panel, payment integration |
30
+ | **License System** | Trial/Free/Pro tiers with usage tracking |
31
+ | **Templates** | Production-ready project templates for 5 tech stacks |
32
+
33
+ ---
34
+
35
+ ## 🛠️ Tech Stack
36
+
37
+ ### CLI
38
+ - **TypeScript** - Type-safe codebase
39
+ - **Commander.js** - CLI framework
40
+ - **Clack** - Beautiful interactive prompts
41
+ - **Handlebars** - Template engine
42
+ - **Google Gemini** - AI-powered documentation (Pro)
43
+
44
+ ### Web Application
45
+ - **Next.js 16** - React framework with App Router
46
+ - **PostgreSQL** - Database (via Prisma ORM)
47
+ - **Stripe** - Payment processing
48
+ - **Resend** - Transactional emails
49
+ - **Upstash Redis** - Rate limiting & caching
50
+ - **TailwindCSS** - Styling
51
+
52
+ ---
53
+
54
+ ## 🚀 Supported Stacks & Architectures
55
+
56
+ | Stack | Free Tier | Pro Tier 🌟 |
57
+ |:------|:---------:|:-----------:|
58
+ | **Node.js + Express** | ✅ MVC | ✅ Clean/Hexagonal |
59
+ | **Next.js** | ✅ MVC | ✅ Clean/Hexagonal |
60
+ | **Java Spring Boot** | ✅ MVC | ✅ Clean/Hexagonal |
61
+ | **NestJS** | ❌ | ✅ All Patterns |
62
+ | **Python FastAPI** | ❌ | ✅ All Patterns |
63
+
64
+ ### Features by Tier
65
+
66
+ | Feature | Free | Trial (15 days) | Pro ($97) |
67
+ |:--------|:----:|:---------------:|:---------:|
68
+ | Basic Stacks | ✅ | ✅ | ✅ |
69
+ | Pro Stacks (NestJS, FastAPI) | ❌ | ✅ | ✅ |
70
+ | Clean/Hexagonal Architecture | ❌ | ✅ | ✅ |
71
+ | Docker & CI/CD | ❌ | ✅ | ✅ |
72
+ | Terraform Configs | ❌ | ✅ | ✅ |
73
+ | AI Documentation | ❌ | ✅ | ✅ |
74
+ | Project Limit | Unlimited | 3 Projects | Unlimited |
75
+
76
+ ---
77
+
78
+ ## 📖 CLI Commands
79
+
80
+ ```bash
81
+ # Installation
82
+ npm install -g kybernus
83
+
84
+ # Core Commands
85
+ kybernus init # Start the interactive project generator
86
+ kybernus register # Create a free trial account (15 days, 3 projects)
87
+ kybernus login # Authenticate with a license key
88
+ kybernus status # Check license status and usage
89
+ kybernus upgrade # Upgrade to Pro ($97 lifetime)
90
+ kybernus logout # Sign out and remove license
91
+ ```
92
+
93
+ ### Usage Example
94
+
95
+ ```bash
96
+ # Start a new project
97
+ $ kybernus init
98
+
99
+ ┌ 🚀 Kybernus Project Generator
100
+
101
+ ◆ Project name: my-api
102
+ ◆ Select your stack:
103
+ │ ● Node.js + Express
104
+ │ ○ NestJS (Pro)
105
+ │ ○ Java Spring Boot
106
+ │ ○ Python FastAPI (Pro)
107
+ │ ○ Next.js
108
+
109
+ ◆ Architecture: Clean Architecture
110
+ ◆ Include Docker? Yes
111
+ ◆ Generate AI docs? Yes
112
+
113
+ └ ✔ Project created successfully!
114
+ ```
115
+
116
+ ---
117
+
118
+ ## 🌐 Web Application
119
+
120
+ The web app (`apps/web/`) provides:
121
+
122
+ ### Public Pages
123
+ - **Landing Page** - Product showcase with pricing
124
+ - **Documentation** - CLI reference and guides
125
+ - **Privacy Policy** & **Terms of Service**
126
+
127
+ ### Authentication
128
+ - **Register/Login** - Email + password with bcrypt hashing
129
+ - **Password Recovery** - Email-based reset flow
130
+ - **Session Management** - JWT with 7-day persistence
131
+ - **Cookie Consent** - LGPD compliant
132
+
133
+ ### User Dashboard
134
+ - License key display & copy
135
+ - Usage tracking (projects used / limit)
136
+ - Profile management (email/password updates)
137
+ - Upgrade to Pro via Stripe
138
+
139
+ ### Admin Panel
140
+ - User management with search/filter
141
+ - Analytics dashboard
142
+ - System metrics
143
+
144
+ ### API Endpoints
145
+
146
+ | Endpoint | Description |
147
+ |----------|-------------|
148
+ | `POST /api/auth/register` | Create trial account |
149
+ | `POST /api/auth/login` | Authenticate user |
150
+ | `POST /api/licenses/validate` | Validate license key |
151
+ | `POST /api/licenses/consume` | Consume a project credit |
152
+ | `POST /api/checkout` | Create Stripe checkout session |
153
+ | `POST /api/webhooks/stripe` | Handle payment webhooks |
154
+ | `GET /api/user/me` | Get current user data |
155
+ | `GET /api/admin/dashboard` | Admin analytics |
156
+
157
+ ---
158
+
159
+ ## 🧪 Testing
160
+
161
+ ```bash
162
+ # Run all CLI tests (unit)
163
+ npm test
164
+
165
+ # Run web app tests
166
+ cd apps/web && npm test
167
+
168
+ # Run with watch mode
169
+ npm run test:watch
170
+ ```
171
+
172
+ ### Test Coverage
173
+ - **CLI Unit Tests**: 14 tests - Config, Generator, License Validator
174
+ - **Web Unit Tests**: 5 tests - Email templates
175
+ - **E2E Tests**: 40+ tests - API integration (run locally)
176
+
177
+ ---
178
+
179
+ ## 🚢 Deployment
180
+
181
+ ### Web App (Vercel)
182
+ 1. Import repo to Vercel
183
+ 2. Set **Root Directory**: `apps/web`
184
+ 3. Add environment variables
185
+ 4. Deploy
186
+
187
+ ### CLI (NPM)
188
+ ```bash
189
+ # Bump version
190
+ npm version patch
191
+
192
+ # Create and push tag
193
+ git tag v1.0.0
194
+ git push --tags
195
+
196
+ # GitHub Actions auto-publishes to NPM
197
+ ```
198
+
199
+ See [VERCEL_README.md](apps/web/VERCEL_README.md) for detailed deployment guide.
200
+
201
+ ---
202
+
203
+ ## 🔧 Development
204
+
205
+ ### Prerequisites
206
+ - Node.js 18+
207
+ - PostgreSQL (or Docker)
208
+ - NPM account (for publishing)
209
+
210
+ ### Local Setup
211
+
212
+ ```bash
213
+ # Clone repository
214
+ git clone https://github.com/ViniMTrevisan/Kybernus-CLI.git
215
+ cd Kybernus-CLI
216
+
217
+ # Install CLI dependencies
218
+ npm install
219
+ npm run build
220
+
221
+ # Install Web dependencies
222
+ cd apps/web
223
+ npm install
224
+
225
+ # Setup environment
226
+ cp .env.example .env
227
+ # Edit .env with your credentials
228
+
229
+ # Run database migrations
230
+ npx prisma migrate dev
231
+
232
+ # Start development server
233
+ npm run dev
234
+ ```
235
+
236
+ ### Environment Variables
237
+
238
+ ```env
239
+ DATABASE_URL="postgresql://..."
240
+ JWT_SECRET="your-secret-key"
241
+ STRIPE_SECRET_KEY="sk_..."
242
+ STRIPE_WEBHOOK_SECRET="whsec_..."
243
+ RESEND_API_KEY="re_..."
244
+ UPSTASH_REDIS_REST_URL="https://..."
245
+ UPSTASH_REDIS_REST_TOKEN="..."
246
+ ```
247
+
248
+ ---
249
+
250
+ ## 📁 Template Structure
251
+
252
+ Each template includes:
253
+
254
+ ```
255
+ templates/{stack}/{tier}/
256
+ ├── src/
257
+ │ ├── controllers/ # Route handlers
258
+ │ ├── services/ # Business logic
259
+ │ ├── repositories/ # Data access (Clean/Hex only)
260
+ │ ├── entities/ # Domain models (Clean/Hex only)
261
+ │ └── ports/ # Interfaces (Hexagonal only)
262
+ ├── docker/
263
+ │ ├── Dockerfile
264
+ │ └── docker-compose.yml
265
+ ├── .github/
266
+ │ └── workflows/ # CI/CD pipelines
267
+ ├── terraform/ # Infrastructure as Code
268
+ └── README.md
269
+ ```
270
+
271
+ ---
272
+
273
+ ## 🔐 License System
274
+
275
+ ### How It Works
276
+ 1. **Free Mode**: Basic stacks, MVC only, unlimited projects
277
+ 2. **Trial Mode**: Full Pro access for 15 days, 3 project limit
278
+ 3. **Pro Mode**: Lifetime access, all features, unlimited projects
279
+
280
+ ### License Key Format
281
+ - Trial: `KYB-TRIAL-XXXX-XXXX-XXXX`
282
+ - Pro: `KYB-PRO-XXXX-XXXX-XXXX`
283
+
284
+ ### Validation Flow
285
+ ```
286
+ CLI → validate(licenseKey) → API → Database → Response
287
+ ← { valid, tier, usage, limit } ←
288
+ ```
289
+
290
+ ---
291
+
292
+ ## 🤝 Contributing
293
+
294
+ Contributions are welcome! Please read our contributing guidelines before submitting PRs.
295
+
296
+ 1. Fork the repository
297
+ 2. Create a feature branch: `git checkout -b feature/amazing-feature`
298
+ 3. Commit changes: `git commit -m 'feat: add amazing feature'`
299
+ 4. Push to branch: `git push origin feature/amazing-feature`
300
+ 5. Open a Pull Request
301
+
302
+ ---
303
+
304
+ ## 📄 License
305
+
306
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
307
+
308
+ ---
309
+
310
+ ## 🙋 Support
311
+
312
+ - **Documentation**: [kybernus.dev/docs](https://kybernus.vercel.app/docs)
313
+ - **Issues**: [GitHub Issues](https://github.com/ViniMTrevisan/Kybernus-CLI/issues)
314
+ - **Email**: support@kybernus.dev
315
+
316
+ ---
317
+
318
+ <p align="center">
319
+ <strong>Code less, Build more.</strong><br>
320
+ © 2026 Kybernus Systems. All rights reserved.
321
+ </p>
@@ -0,0 +1,12 @@
1
+ interface InitOptions {
2
+ name?: string;
3
+ stack?: string;
4
+ architecture?: string;
5
+ buildTool?: string;
6
+ license?: string;
7
+ ai?: boolean;
8
+ nonInteractive?: boolean;
9
+ }
10
+ export declare function initCommand(options: InitOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBA+ErD"}
@@ -0,0 +1,71 @@
1
+ import * as clack from '@clack/prompts';
2
+ import { runWizard } from '../prompts/wizard.js';
3
+ import { ProjectGenerator } from '../../core/generator/project.js';
4
+ import { ConfigManager } from '../../core/config/config-manager.js';
5
+ import { LicenseValidator } from '../../core/auth/license-validator.js';
6
+ import { AnalyticsClient } from '../services/AnalyticsClient.js';
7
+ export async function initCommand(options) {
8
+ const configManager = new ConfigManager();
9
+ const validator = new LicenseValidator();
10
+ // Determinar tier de licença
11
+ let licenseTier = 'free';
12
+ let licenseKey = options.license;
13
+ // If no license provided via flag, check stored config
14
+ if (!licenseKey) {
15
+ licenseKey = configManager.getLicenseKey();
16
+ }
17
+ // Validate license if present
18
+ if (licenseKey) {
19
+ const result = await validator.validate(licenseKey);
20
+ if (result.valid && result.tier === 'PRO') {
21
+ const expiration = configManager.getLicenseExpiration();
22
+ // Check if license is still active
23
+ if (validator.isLicenseActive(expiration)) {
24
+ licenseTier = 'pro';
25
+ }
26
+ else {
27
+ clack.log.warn('Your Pro license has expired. Switching to Free mode.');
28
+ configManager.clearLicense();
29
+ }
30
+ }
31
+ }
32
+ if (licenseTier === 'free') {
33
+ clack.note('🆓 Modo Free ativo\n\nVocê está usando o Kybernus Free. Para acessar:\n- Arquiteturas avançadas (Clean, Hexagonal)\n- Stacks adicionais (Python FastAPI, NestJS)\n- DevOps completo (Docker, CI/CD, Terraform)\n\nAdquira uma licença Pro em: https://kybernus.dev/pro', 'ℹ️ Informação');
34
+ }
35
+ else {
36
+ clack.note('🌟 Modo Pro ativo\n\nVocê tem acesso a todos os recursos!', '✨ Pro');
37
+ }
38
+ // Executar wizard interativo (ou usar options se non-interactive)
39
+ const config = await runWizard(licenseTier);
40
+ // Validate project limit (Metered Trial)
41
+ if (licenseTier === 'pro' && licenseKey) {
42
+ const spinner = clack.spinner();
43
+ spinner.start('Validando cota de projetos...');
44
+ const creditCheck = await validator.consumeCredit(licenseKey);
45
+ spinner.stop('Cota verificada');
46
+ if (!creditCheck.authorized) {
47
+ clack.log.error(creditCheck.message || 'Criação de projeto bloqueada por limite da licença.');
48
+ if (creditCheck.message?.includes('Trial limit')) {
49
+ clack.note('🔓 Desbloqueie projetos ilimitados com Kybernus Pro lifetime.\nExecute: kybernus upgrade', 'Limite Atingido');
50
+ }
51
+ return; // Stop generation
52
+ }
53
+ if (creditCheck.remaining !== undefined && creditCheck.remaining >= 0) {
54
+ clack.log.info(`Créditos Trial: ${creditCheck.usage}/${creditCheck.limit} utilizados. (${creditCheck.remaining} restantes)`);
55
+ }
56
+ }
57
+ // Gerar projeto
58
+ const generator = new ProjectGenerator();
59
+ await generator.generate(config, process.cwd());
60
+ // Track generation
61
+ const analytics = new AnalyticsClient();
62
+ analytics.track('project_generated', {
63
+ name: config.projectName,
64
+ stack: config.stack,
65
+ architecture: config.architecture,
66
+ tier: licenseTier,
67
+ command: 'init'
68
+ });
69
+ clack.outro('🎉 Projeto criado com sucesso! Bom desenvolvimento!');
70
+ }
71
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface LoginOptions {
2
+ key?: string;
3
+ }
4
+ export declare function loginCommand(options: LoginOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBA+CvD"}
@@ -0,0 +1,42 @@
1
+ import * as clack from '@clack/prompts';
2
+ import { ConfigManager } from '../../core/config/config-manager.js';
3
+ import { LicenseValidator } from '../../core/auth/license-validator.js';
4
+ export async function loginCommand(options) {
5
+ clack.intro('🔐 Kybernus Pro Login');
6
+ const configManager = new ConfigManager();
7
+ const validator = new LicenseValidator();
8
+ let licenseKey = options.key;
9
+ // If no key provided via flag, prompt for it
10
+ if (!licenseKey) {
11
+ const keyInput = await clack.text({
12
+ message: 'Enter your Pro license key:',
13
+ placeholder: 'KYB-PRO-XXXXXXXX',
14
+ validate: (value) => {
15
+ if (!value)
16
+ return 'License key is required';
17
+ },
18
+ });
19
+ if (clack.isCancel(keyInput)) {
20
+ clack.cancel('Login cancelled');
21
+ process.exit(0);
22
+ }
23
+ licenseKey = keyInput;
24
+ }
25
+ // Validate the key
26
+ const spinner = clack.spinner();
27
+ spinner.start('Validating license key...');
28
+ const result = await validator.validate(licenseKey);
29
+ spinner.stop();
30
+ if (!result.valid) {
31
+ clack.log.error(result.message || 'Invalid license key');
32
+ process.exit(1);
33
+ }
34
+ // Save license to config
35
+ configManager.setLicenseKey(licenseKey);
36
+ configManager.setLicenseTier(result.tier);
37
+ if (result.expiration) {
38
+ configManager.setLicenseExpiration(result.expiration.toISOString());
39
+ }
40
+ clack.outro('✅ Successfully authenticated! You now have access to Pro features.');
41
+ }
42
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAMxE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACpD,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAErC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEzC,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAE7B,6CAA6C;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,6BAA6B;YACtC,WAAW,EAAE,kBAAkB;YAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,KAAK;oBAAE,OAAO,yBAAyB,CAAC;YACjD,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,UAAU,GAAG,QAAkB,CAAC;IACpC,CAAC;IAED,mBAAmB;IACnB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEpD,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,yBAAyB;IACzB,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACxC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function logoutCommand(): Promise<void>;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logout.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,kBAwBlC"}
@@ -0,0 +1,22 @@
1
+ import * as clack from '@clack/prompts';
2
+ import { ConfigManager } from '../../core/config/config-manager.js';
3
+ export async function logoutCommand() {
4
+ clack.intro('🔓 Kybernus Logout');
5
+ const configManager = new ConfigManager();
6
+ const currentKey = configManager.getLicenseKey();
7
+ if (!currentKey) {
8
+ clack.log.warn('No active license found');
9
+ clack.outro('Already in Free mode');
10
+ return;
11
+ }
12
+ const shouldLogout = await clack.confirm({
13
+ message: 'Are you sure you want to logout? You will lose access to Pro features.',
14
+ });
15
+ if (clack.isCancel(shouldLogout) || !shouldLogout) {
16
+ clack.cancel('Logout cancelled');
17
+ return;
18
+ }
19
+ configManager.clearLicense();
20
+ clack.outro('✅ Successfully logged out. Switched to Free mode.');
21
+ }
22
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/cli/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;IAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC1C,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO;IACX,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;QACrC,OAAO,EAAE,wEAAwE;KACpF,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjC,OAAO;IACX,CAAC;IAED,aAAa,CAAC,YAAY,EAAE,CAAC;IAE7B,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function registerCommand(): Promise<void>;
2
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"AAMA,wBAAsB,eAAe,kBA+EpC"}
@@ -0,0 +1,69 @@
1
+ import * as clack from '@clack/prompts';
2
+ import { ConfigManager } from '../../core/config/config-manager.js';
3
+ import { AnalyticsClient } from '../services/AnalyticsClient.js';
4
+ const API_URL = process.env.KYBERNUS_API_URL || 'http://localhost:3010/api';
5
+ export async function registerCommand() {
6
+ console.clear();
7
+ clack.intro('🚀 Kybernus Registration');
8
+ const configManager = new ConfigManager();
9
+ // Check if already registered
10
+ const existingKey = configManager.getLicenseKey();
11
+ if (existingKey) {
12
+ clack.log.warn('You are already registered.');
13
+ const shouldOverwrite = await clack.confirm({
14
+ message: 'Do you want to register a new account? This will replace your current license.',
15
+ });
16
+ if (clack.isCancel(shouldOverwrite) || !shouldOverwrite) {
17
+ clack.outro('Operation cancelled.');
18
+ process.exit(0);
19
+ }
20
+ }
21
+ const email = await clack.text({
22
+ message: 'Enter your email address to unlock 3 Free Pro Projects (Metered Trial):',
23
+ placeholder: 'you@example.com',
24
+ validate: (value) => {
25
+ if (!value)
26
+ return 'Email is required';
27
+ if (!value.includes('@'))
28
+ return 'Please enter a valid email';
29
+ },
30
+ });
31
+ if (clack.isCancel(email)) {
32
+ clack.outro('Operation cancelled.');
33
+ process.exit(0);
34
+ }
35
+ const s = clack.spinner();
36
+ s.start('Registering account...');
37
+ try {
38
+ const machineId = configManager.getMachineId();
39
+ const response = await fetch(`${API_URL}/auth/register`, {
40
+ method: 'POST',
41
+ headers: { 'Content-Type': 'application/json' },
42
+ body: JSON.stringify({ email, machineId }),
43
+ });
44
+ const data = await response.json();
45
+ if (!response.ok) {
46
+ s.stop('Registration failed');
47
+ clack.log.error(data.error || 'Unknown error occurred');
48
+ return;
49
+ }
50
+ // Save new credentials
51
+ configManager.setLicenseKey(data.licenseKey);
52
+ configManager.setEmail(email);
53
+ configManager.setLicenseTier(data.tier === 'pro' ? 'PRO' : 'FREE');
54
+ if (data.trialEndsAt) {
55
+ configManager.setLicenseExpiration(data.trialEndsAt);
56
+ }
57
+ // Track registration
58
+ const analytics = new AnalyticsClient();
59
+ analytics.track('user_registered', { email });
60
+ s.stop('Registration successful! 🎉');
61
+ clack.note(`License Key: ${data.licenseKey}\nPlan: Metered Trial (3 Projects included)`, 'Trial Activated');
62
+ clack.outro('You are now ready to build amazing projects with Kybernus!');
63
+ }
64
+ catch (error) {
65
+ s.stop('Error connecting to server');
66
+ clack.log.error(error.message);
67
+ }
68
+ }
69
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function statusCommand(): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,kBAuDlC"}
@@ -0,0 +1,46 @@
1
+ import * as clack from '@clack/prompts';
2
+ import { ConfigManager } from '../../core/config/config-manager.js';
3
+ import { LicenseValidator } from '../../core/auth/license-validator.js';
4
+ export async function statusCommand() {
5
+ console.clear();
6
+ clack.intro('📊 Kybernus Status');
7
+ const configManager = new ConfigManager();
8
+ const validator = new LicenseValidator();
9
+ const key = configManager.getLicenseKey();
10
+ if (!key) {
11
+ clack.log.warn('No license found. You are running in unregistered mode.');
12
+ clack.outro('Run "kybernus register" to start a Free Trial.');
13
+ return;
14
+ }
15
+ const s = clack.spinner();
16
+ s.start('Validating license...');
17
+ const result = await validator.validate(key);
18
+ s.stop('Validation complete');
19
+ // Update local cache based on remote validation
20
+ configManager.setLicenseTier(result.tier);
21
+ if (result.expiration) {
22
+ configManager.setLicenseExpiration(result.expiration.toISOString());
23
+ }
24
+ const statusMap = {
25
+ 'TRIAL': '🟢 Active Trial (All Features Unlocked)',
26
+ 'TRIAL_EXPIRED': '🔴 Trial Expired',
27
+ 'FREE_ACTIVE': '🟢 Active Monthly Subscription',
28
+ 'FREE_PAST_DUE': '🟠 Subscription Past Due',
29
+ 'PRO_ACTIVE': '💎 Pro Lifetime',
30
+ 'CANCELLED': '🔴 Cancelled'
31
+ };
32
+ const statusLabel = result.status ? (statusMap[result.status] || result.status) : 'Unknown';
33
+ let details = `License Key: ${key}\n` +
34
+ `Tier: ${result.tier}\n` +
35
+ `Status: ${statusLabel}\n`;
36
+ if (result.status === 'TRIAL' && result.limit !== undefined) {
37
+ details += `Usage: ${result.usage}/${result.limit} Projects\n`;
38
+ }
39
+ else {
40
+ details += `Expires: ${result.expiration ? result.expiration.toLocaleDateString() : 'Never'}\n`;
41
+ }
42
+ details += `Message: ${result.message || ''}`;
43
+ clack.note(details, 'License Information');
44
+ clack.outro('Use "kybernus upgrade" to change your plan.');
45
+ }
46
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;IAE1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QAC1E,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO;IACX,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAE9B,gDAAgD;IAChD,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,SAAS,GAA2B;QACtC,OAAO,EAAE,yCAAyC;QAClD,eAAe,EAAE,kBAAkB;QACnC,aAAa,EAAE,gCAAgC;QAC/C,eAAe,EAAE,0BAA0B;QAC3C,YAAY,EAAE,iBAAiB;QAC/B,WAAW,EAAE,cAAc;KAC9B,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5F,IAAI,OAAO,GAAG,gBAAgB,GAAG,IAAI;QACjC,SAAS,MAAM,CAAC,IAAI,IAAI;QACxB,WAAW,WAAW,IAAI,CAAC;IAE/B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1D,OAAO,IAAI,UAAU,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,aAAa,CAAC;IACnE,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,YAAY,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC;IACpG,CAAC;IAED,OAAO,IAAI,YAAY,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IAE9C,KAAK,CAAC,IAAI,CACN,OAAO,EACP,qBAAqB,CACxB,CAAC;IAEF,KAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function upgradeCommand(): Promise<void>;
2
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,kBAoEnC"}