@next-vibe/checker 1.0.11 → 1.0.12

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 (394) hide show
  1. package/.dist/bin/vibe-runtime.js +10 -19
  2. package/.dist/bin/vibe-runtime.js.map +3 -3
  3. package/check.config.ts +4 -4
  4. package/package.json +2 -9
  5. package/src/app/api/[locale]/LICENSE +674 -0
  6. package/src/app/api/[locale]/i18n/de/index.ts +13 -0
  7. package/src/app/api/[locale]/i18n/en/index.ts +12 -0
  8. package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
  9. package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
  10. package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
  11. package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
  12. package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
  13. package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
  14. package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
  15. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
  16. package/src/app/api/[locale]/shared/types/utils.ts +190 -0
  17. package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
  18. package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
  19. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
  20. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
  21. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
  22. package/src/app/api/[locale]/shared/utils/index.ts +11 -0
  23. package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
  24. package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
  25. package/src/app/api/[locale]/shared/utils/object.ts +75 -0
  26. package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
  27. package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
  28. package/src/app/api/[locale]/shared/utils/time.ts +53 -0
  29. package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
  30. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
  31. package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
  32. package/src/app/api/[locale]/system/builder/enum.ts +77 -0
  33. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
  34. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
  35. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
  36. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
  37. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
  38. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
  39. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
  40. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
  41. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
  42. package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
  43. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
  44. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
  45. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
  46. package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
  47. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
  48. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
  49. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
  50. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
  51. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
  52. package/src/app/api/[locale]/system/builder/route.ts +21 -0
  53. package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
  54. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
  55. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
  56. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
  57. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
  58. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
  59. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
  60. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
  61. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
  62. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
  63. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
  64. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
  65. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
  66. package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
  67. package/src/app/api/[locale]/system/check/config/repository.ts +819 -0
  68. package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
  69. package/src/app/api/[locale]/system/check/config/types.ts +616 -0
  70. package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
  71. package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
  72. package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
  73. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
  74. package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
  75. package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
  76. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
  77. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
  78. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
  79. package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
  80. package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
  81. package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
  82. package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
  83. package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
  84. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
  85. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
  86. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
  87. package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
  88. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
  89. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
  90. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
  91. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
  92. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
  93. package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
  94. package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
  95. package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
  96. package/src/app/api/[locale]/system/check/test-project/bun.lock +449 -0
  97. package/src/app/api/[locale]/system/check/test-project/check.config.ts +989 -0
  98. package/src/app/api/[locale]/system/check/test-project/package.json +20 -0
  99. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
  100. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
  101. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
  102. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
  103. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
  104. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
  105. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
  106. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
  107. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
  108. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
  109. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
  110. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
  111. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
  112. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +38 -0
  113. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
  114. package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
  115. package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
  116. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
  117. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
  118. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
  119. package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
  120. package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
  121. package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
  122. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
  123. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
  124. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
  125. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
  126. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
  127. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
  128. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
  129. package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
  130. package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
  131. package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
  132. package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
  133. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
  134. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
  135. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
  136. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
  137. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
  138. package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
  139. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
  140. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
  141. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
  142. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
  143. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
  144. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
  145. package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
  146. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
  147. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
  148. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
  149. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
  150. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
  151. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
  152. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
  153. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
  154. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
  155. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
  156. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
  157. package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
  158. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
  159. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
  160. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
  161. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
  162. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
  163. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
  164. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
  165. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
  166. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
  167. package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
  168. package/src/app/api/[locale]/system/help/definition.ts +445 -0
  169. package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
  170. package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
  171. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
  172. package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
  173. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
  174. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
  175. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
  176. package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
  177. package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
  178. package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
  179. package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
  180. package/src/app/api/[locale]/system/help/list/route.ts +21 -0
  181. package/src/app/api/[locale]/system/help/repository.ts +212 -0
  182. package/src/app/api/[locale]/system/help/route.ts +16 -0
  183. package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
  184. package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
  185. package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
  186. package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
  187. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
  188. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
  189. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
  190. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
  191. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
  192. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
  193. package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
  194. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
  195. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
  196. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
  197. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
  198. package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
  199. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
  200. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
  201. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
  202. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
  203. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
  204. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
  205. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
  206. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
  207. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
  208. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
  209. package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
  210. package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
  211. package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
  212. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
  213. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
  214. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
  215. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
  216. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
  217. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
  218. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
  219. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
  220. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
  221. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
  222. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
  223. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
  224. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
  225. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
  226. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
  227. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
  228. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
  229. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
  230. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
  231. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
  232. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
  233. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
  234. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
  235. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
  236. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
  237. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
  238. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
  239. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
  240. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
  252. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
  253. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
  254. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
  255. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
  256. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
  257. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
  258. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
  259. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
  260. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
  261. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
  262. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
  263. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
  264. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
  265. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
  266. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
  267. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
  268. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
  288. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
  289. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
  290. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
  291. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
  292. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
  293. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
  294. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
  295. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
  296. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
  297. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
  298. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
  299. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
  300. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
  301. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
  302. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
  303. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
  304. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
  305. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
  306. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
  307. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
  308. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
  309. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
  310. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
  311. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
  312. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
  313. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
  314. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
  315. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
  316. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
  317. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
  318. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
  319. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
  320. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
  321. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
  322. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
  323. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
  324. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
  325. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
  326. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
  327. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
  328. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
  329. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
  330. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
  331. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
  332. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
  333. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
  334. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
  335. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
  336. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
  337. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
  338. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
  339. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
  340. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
  341. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
  342. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
  343. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
  344. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
  345. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
  346. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
  347. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
  348. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
  349. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
  350. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
  351. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
  352. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
  353. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
  354. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
  355. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
  356. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
  374. package/src/app/api/[locale]/user/auth/enum.ts +16 -0
  375. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
  376. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
  377. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
  378. package/src/app/api/[locale]/user/auth/types.ts +110 -0
  379. package/src/app/api/[locale]/user/enum.ts +64 -0
  380. package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
  381. package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
  382. package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
  383. package/src/app/api/[locale]/user/types.ts +118 -0
  384. package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
  385. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
  386. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
  387. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
  388. package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
  389. package/src/app/api/i18n/de/index.ts +6 -0
  390. package/src/app/api/i18n/en/index.ts +5 -0
  391. package/src/app/api/i18n/pl/index.ts +5 -0
  392. package/src/app/i18n/de/index.ts +6 -0
  393. package/src/app/i18n/en/index.ts +5 -0
  394. package/src/app/i18n/pl/index.ts +5 -0
@@ -0,0 +1,95 @@
1
+ import type { ResponseType } from "next-vibe/shared/types/response.schema";
2
+
3
+ import type { EndpointLogger } from "../../shared/logger/endpoint";
4
+ import {
5
+ type AuthContext,
6
+ BaseAuthHandler,
7
+ type SessionData,
8
+ } from "../../shared/server-only/auth/base-auth-handler";
9
+ import {
10
+ deleteSessionFile,
11
+ readSessionFile,
12
+ writeSessionFile,
13
+ } from "./session-file";
14
+
15
+ /**
16
+ * CLI/MCP Authentication Handler
17
+ * Handles platform-specific storage for CLI/MCP (session files)
18
+ * All authentication business logic is in AuthRepository
19
+ */
20
+ export class CliAuthHandler extends BaseAuthHandler {
21
+ /**
22
+ * Get authentication token from CLI/MCP storage
23
+ * Checks: Authorization header → .vibe.session file
24
+ */
25
+ async getStoredAuthToken(
26
+ context: AuthContext,
27
+ logger: EndpointLogger,
28
+ ): Promise<string | undefined> {
29
+ // Check Authorization header first
30
+ if (context.request) {
31
+ const authHeader = context.request.headers.get("authorization");
32
+ if (authHeader?.startsWith("Bearer ")) {
33
+ const token = authHeader.slice(7); // Remove "Bearer " prefix
34
+ logger.debug("Found auth token in Authorization header");
35
+ return token;
36
+ }
37
+ }
38
+
39
+ // Fall back to session file
40
+ const sessionResult = await readSessionFile(logger);
41
+ if (sessionResult.success) {
42
+ logger.debug("Found auth token in session file");
43
+ return sessionResult.data.token;
44
+ }
45
+
46
+ return undefined;
47
+ }
48
+
49
+ /**
50
+ * Store authentication token in .vibe.session file
51
+ * @param rememberMe - If true, session lasts 30 days; if false, 7 days
52
+ */
53
+ async storeAuthToken(
54
+ token: string,
55
+ userId: string,
56
+ leadId: string,
57
+ logger: EndpointLogger,
58
+ rememberMe = true, // Default to true (30 days)
59
+ ): Promise<ResponseType<void>> {
60
+ // Set session duration based on rememberMe flag
61
+ // Remember me: 30 days, Regular session: 7 days
62
+ const sessionDurationDays = rememberMe ? 30 : 7;
63
+ const sessionDurationSeconds = sessionDurationDays * 24 * 60 * 60;
64
+
65
+ const expiresAt = new Date(Date.now() + sessionDurationSeconds * 1000);
66
+
67
+ const sessionData: SessionData = {
68
+ token,
69
+ userId,
70
+ leadId,
71
+ expiresAt: expiresAt.toISOString(),
72
+ createdAt: new Date().toISOString(),
73
+ };
74
+
75
+ logger.debug("Storing CLI session", {
76
+ userId,
77
+ leadId,
78
+ rememberMe,
79
+ sessionType: rememberMe ? "persistent (30 days)" : "regular (7 days)",
80
+ });
81
+ return await writeSessionFile(sessionData, logger);
82
+ }
83
+
84
+ /**
85
+ * Clear authentication token by deleting .vibe.session file
86
+ */
87
+ async clearAuthToken(logger: EndpointLogger): Promise<ResponseType<void>> {
88
+ return await deleteSessionFile(logger);
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Singleton instance
94
+ */
95
+ export const cliAuthHandler = new CliAuthHandler();
@@ -0,0 +1,146 @@
1
+ /**
2
+ * CLI User Factory
3
+ * Consolidated CLI user creation logic
4
+ * Eliminates 5+ duplicate implementations across the codebase
5
+ */
6
+
7
+ import type { ResponseType } from "next-vibe/shared/types/response.schema";
8
+ import { ErrorResponseTypes } from "next-vibe/shared/types/response.schema";
9
+
10
+ import type { InferJwtPayloadTypeFromRoles } from "@/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler";
11
+ import type { EndpointLogger } from "@/app/api/[locale]/system/unified-interface/shared/logger/endpoint";
12
+ import {
13
+ UserPermissionRole,
14
+ type UserRoleValue,
15
+ } from "@/app/api/[locale]/user/user-roles/enum";
16
+ import type { CountryLanguage } from "@/i18n/core/config";
17
+
18
+ import { cliEnv } from "../env";
19
+
20
+ /**
21
+ * Default CLI user configuration
22
+ */
23
+ const DEFAULT_CLI_USER_ID = "00000000-0000-0000-0000-000000000001";
24
+
25
+ /**
26
+ * Get CLI user email from environment
27
+ * Returns null if VIBE_CLI_USER_EMAIL is not set
28
+ */
29
+ export function getCliUserEmail(): string | null {
30
+ return cliEnv.VIBE_CLI_USER_EMAIL ?? null;
31
+ }
32
+
33
+ /**
34
+ * Create a default CLI user payload for auth bypass scenarios
35
+ * Used for commands that don't require authenticated user (e.g., seed, dev)
36
+ */
37
+ export function createDefaultCliUser(): InferJwtPayloadTypeFromRoles<
38
+ readonly UserRoleValue[]
39
+ > {
40
+ return {
41
+ isPublic: false,
42
+ id: DEFAULT_CLI_USER_ID,
43
+ leadId: DEFAULT_CLI_USER_ID,
44
+ } as InferJwtPayloadTypeFromRoles<readonly UserRoleValue[]>;
45
+ }
46
+
47
+ /**
48
+ * Create a public CLI user payload
49
+ * Used when VIBE_CLI_USER_EMAIL is not configured
50
+ */
51
+ export function createPublicCliUser(): InferJwtPayloadTypeFromRoles<
52
+ readonly UserRoleValue[]
53
+ > {
54
+ return {
55
+ isPublic: true,
56
+ leadId: DEFAULT_CLI_USER_ID,
57
+ } as InferJwtPayloadTypeFromRoles<readonly UserRoleValue[]>;
58
+ }
59
+ /**
60
+ * Create a mock user for testing/development
61
+ * Used in tasks, generators, and other system operations
62
+ */
63
+ export function createMockUser(): {
64
+ id: string;
65
+ leadId: string;
66
+ isPublic: false;
67
+ roles: (typeof UserPermissionRole.ADMIN)[];
68
+ } {
69
+ return {
70
+ id: DEFAULT_CLI_USER_ID,
71
+ leadId: DEFAULT_CLI_USER_ID,
72
+ isPublic: false,
73
+ roles: [UserPermissionRole.ADMIN],
74
+ };
75
+ }
76
+
77
+ /**
78
+ * Get CLI user with proper authentication flow:
79
+ * 1. Check for session user (from .vibe.session file)
80
+ * 2. Check VIBE_CLI_USER_EMAIL from .env and authenticate from DB
81
+ * 3. If VIBE_CLI_USER_EMAIL is empty → return public user
82
+ * 4. If email is set but not found in DB → return error
83
+ *
84
+ * @param logger - Logger instance for debugging
85
+ * @param locale - Locale for database queries
86
+ * @returns ResponseType with CLI user payload or error
87
+ */
88
+ export async function getCliUser(
89
+ logger: EndpointLogger,
90
+ locale: CountryLanguage,
91
+ ): Promise<
92
+ ResponseType<InferJwtPayloadTypeFromRoles<readonly UserRoleValue[]>>
93
+ > {
94
+ // Enhanced debugging: Log authentication flow entry point
95
+ const authFlowData = {
96
+ locale,
97
+ cwd: process.cwd(),
98
+ nodeEnv: process.env.NODE_ENV,
99
+ vibeProjectRoot: process.env.VIBE_PROJECT_ROOT,
100
+ };
101
+ logger.debug(
102
+ "[CLI AUTH] Starting CLI user authentication flow",
103
+ authFlowData,
104
+ );
105
+
106
+ // Step 1: Session verification removed - AuthRepository deleted
107
+
108
+ // Step 2: Check VIBE_CLI_USER_EMAIL environment variable
109
+ logger.debug(
110
+ "[CLI AUTH] Step 2: Checking VIBE_CLI_USER_EMAIL environment variable",
111
+ );
112
+ const cliUserEmail = getCliUserEmail();
113
+
114
+ logger.debug("[CLI AUTH] VIBE_CLI_USER_EMAIL result", {
115
+ hasEmail: !!cliUserEmail,
116
+ email: cliUserEmail ? `${cliUserEmail.slice(0, 3)}***` : null,
117
+ envVarExists: "VIBE_CLI_USER_EMAIL" in process.env,
118
+ });
119
+
120
+ // Step 3: If VIBE_CLI_USER_EMAIL is not set, return public user
121
+ if (!cliUserEmail) {
122
+ logger.debug(
123
+ "[CLI AUTH] Step 3: CLI user email not configured, creating public user",
124
+ {
125
+ envVar: "VIBE_CLI_USER_EMAIL",
126
+ },
127
+ );
128
+
129
+ // Minimal checker package: use default ID without lead creation
130
+ logger.debug("Using default CLI user (minimal checker package)");
131
+ return {
132
+ success: true,
133
+ data: {
134
+ isPublic: true,
135
+ leadId: DEFAULT_CLI_USER_ID,
136
+ } as InferJwtPayloadTypeFromRoles<readonly UserRoleValue[]>,
137
+ };
138
+ }
139
+
140
+ // Step 4: Email authentication removed - AuthRepository deleted
141
+ return {
142
+ success: false,
143
+ message: "app.api.system.unifiedInterface.cli.auth.errors.authNotAvailable",
144
+ errorType: ErrorResponseTypes.UNAUTHORIZED,
145
+ };
146
+ }
@@ -0,0 +1,266 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { join } from "node:path";
3
+
4
+ import type { ResponseType } from "next-vibe/shared/types/response.schema";
5
+ import {
6
+ ErrorResponseTypes,
7
+ fail,
8
+ success,
9
+ } from "next-vibe/shared/types/response.schema";
10
+ import { parseError } from "next-vibe/shared/utils";
11
+
12
+ import type { EndpointLogger } from "../../shared/logger/endpoint";
13
+ import type { SessionData } from "../../shared/server-only/auth/base-auth-handler";
14
+
15
+ /**
16
+ * Session file path
17
+ * Stored in project root directory
18
+ */
19
+ const SESSION_FILE_NAME = ".vibe.session";
20
+
21
+ /**
22
+ * Get project root directory
23
+ * This is more reliable than process.cwd() which depends on where the process was started
24
+ */
25
+ function getProjectRoot(): string {
26
+ // Try environment variable first (can be set by CLI or MCP config)
27
+ if (process.env.VIBE_PROJECT_ROOT) {
28
+ return process.env.VIBE_PROJECT_ROOT;
29
+ }
30
+
31
+ // Fall back to process.cwd() - this will work when MCP server runs from project root
32
+ return process.cwd();
33
+ }
34
+
35
+ /**
36
+ * Error message patterns for file not found errors
37
+ */
38
+ const FILE_NOT_FOUND_ERROR_PATTERNS = {
39
+ ENOENT: "ENOENT",
40
+ NO_SUCH_FILE: "no such file",
41
+ } as const;
42
+
43
+ /**
44
+ * Get session file path
45
+ * Uses project root from environment variable or falls back to cwd
46
+ */
47
+ function getSessionFilePath(): string {
48
+ const projectRoot = getProjectRoot();
49
+ const sessionPath = join(projectRoot, SESSION_FILE_NAME);
50
+
51
+ return sessionPath;
52
+ }
53
+
54
+ /**
55
+ * Read session data from .vibe.session file
56
+ */
57
+ export async function readSessionFile(
58
+ logger: EndpointLogger,
59
+ ): Promise<ResponseType<SessionData>> {
60
+ try {
61
+ const sessionPath = getSessionFilePath();
62
+ const projectRoot = getProjectRoot();
63
+ const cwd = process.cwd();
64
+
65
+ // Enhanced debugging: Log current working directory and full path
66
+ logger.debug("Reading session file", {
67
+ path: sessionPath,
68
+ projectRoot,
69
+ cwd,
70
+ sessionFileName: SESSION_FILE_NAME,
71
+ vibeProjectRoot: process.env.VIBE_PROJECT_ROOT,
72
+ });
73
+
74
+ // Check if file exists before attempting to read
75
+ try {
76
+ await fs.access(sessionPath);
77
+ logger.debug("Session file exists at path", { path: sessionPath });
78
+ } catch (accessError) {
79
+ const errorMsg = parseError(accessError).message;
80
+ logger.debug("Session file does not exist at path", {
81
+ path: sessionPath,
82
+ accessError: errorMsg,
83
+ });
84
+ }
85
+
86
+ const fileContent = await fs.readFile(sessionPath, "utf-8");
87
+ const sessionData = JSON.parse(fileContent) as SessionData;
88
+
89
+ // Validate session data structure
90
+ if (
91
+ !sessionData.token ||
92
+ !sessionData.userId ||
93
+ !sessionData.leadId ||
94
+ !sessionData.expiresAt
95
+ ) {
96
+ return fail({
97
+ message:
98
+ "app.api.system.unifiedInterface.cli.vibe.errors.invalidFormat",
99
+ errorType: ErrorResponseTypes.VALIDATION_ERROR,
100
+ messageParams: { path: sessionPath },
101
+ });
102
+ }
103
+
104
+ // Check if session is expired
105
+ const expiresAt = new Date(sessionData.expiresAt);
106
+ if (expiresAt < new Date()) {
107
+ logger.debug("Session expired", { expiresAt: sessionData.expiresAt });
108
+ return fail({
109
+ message:
110
+ "app.api.system.unifiedInterface.cli.vibe.errors.sessionExpired",
111
+ errorType: ErrorResponseTypes.UNAUTHORIZED,
112
+ messageParams: { expiresAt: sessionData.expiresAt },
113
+ });
114
+ }
115
+
116
+ logger.debug("Session file read successfully", {
117
+ userId: sessionData.userId,
118
+ expiresAt: sessionData.expiresAt,
119
+ });
120
+
121
+ return success(sessionData);
122
+ } catch (error) {
123
+ const parsedError = parseError(error);
124
+
125
+ // File not found is not an error - user is not authenticated
126
+ const isFileNotFoundError =
127
+ parsedError.message.includes(FILE_NOT_FOUND_ERROR_PATTERNS.ENOENT) ||
128
+ parsedError.message.includes(FILE_NOT_FOUND_ERROR_PATTERNS.NO_SUCH_FILE);
129
+ if (isFileNotFoundError) {
130
+ // Enhanced debugging: Log path details when file not found
131
+ const debugData = {
132
+ searchedPath: getSessionFilePath(),
133
+ projectRoot: getProjectRoot(),
134
+ cwd: process.cwd(),
135
+ vibeProjectRoot: process.env.VIBE_PROJECT_ROOT,
136
+ errorMessage: parsedError.message,
137
+ };
138
+ logger.debug(
139
+ "Session file not found - user not authenticated",
140
+ debugData,
141
+ );
142
+ return fail({
143
+ message: "app.api.system.unifiedInterface.cli.vibe.errors.notFound",
144
+ errorType: ErrorResponseTypes.NOT_FOUND,
145
+ });
146
+ }
147
+
148
+ logger.error("Error reading session file", {
149
+ ...parsedError,
150
+ path: getSessionFilePath(),
151
+ projectRoot: getProjectRoot(),
152
+ cwd: process.cwd(),
153
+ vibeProjectRoot: process.env.VIBE_PROJECT_ROOT,
154
+ });
155
+ return fail({
156
+ message: "app.api.system.unifiedInterface.cli.vibe.errors.readFailed",
157
+ errorType: ErrorResponseTypes.INTERNAL_ERROR,
158
+ messageParams: { error: parsedError.message },
159
+ });
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Write session data to .vibe.session file
165
+ */
166
+ export async function writeSessionFile(
167
+ sessionData: SessionData,
168
+ logger: EndpointLogger,
169
+ ): Promise<ResponseType<void>> {
170
+ try {
171
+ const sessionPath = getSessionFilePath();
172
+ logger.debug("Writing session file", {
173
+ path: sessionPath,
174
+ userId: sessionData.userId,
175
+ });
176
+
177
+ // Validate session data
178
+ if (
179
+ !sessionData.token ||
180
+ !sessionData.userId ||
181
+ !sessionData.leadId ||
182
+ !sessionData.expiresAt
183
+ ) {
184
+ return fail({
185
+ message: "app.api.system.unifiedInterface.cli.vibe.errors.invalidData",
186
+ errorType: ErrorResponseTypes.VALIDATION_ERROR,
187
+ });
188
+ }
189
+
190
+ const fileContent = JSON.stringify(sessionData, null, 2);
191
+ await fs.writeFile(sessionPath, fileContent, "utf-8");
192
+
193
+ logger.debug("Session file written successfully", {
194
+ path: sessionPath,
195
+ userId: sessionData.userId,
196
+ });
197
+
198
+ return success();
199
+ } catch (error) {
200
+ const parsedError = parseError(error);
201
+ logger.error("Error writing session file", parsedError);
202
+ return fail({
203
+ message: "app.api.system.unifiedInterface.cli.vibe.errors.writeFailed",
204
+ errorType: ErrorResponseTypes.INTERNAL_ERROR,
205
+ messageParams: { error: parsedError.message },
206
+ });
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Delete session file
212
+ */
213
+ export async function deleteSessionFile(
214
+ logger: EndpointLogger,
215
+ ): Promise<ResponseType<void>> {
216
+ try {
217
+ const sessionPath = getSessionFilePath();
218
+ logger.debug("Deleting session file", { path: sessionPath });
219
+
220
+ await fs.unlink(sessionPath);
221
+
222
+ logger.debug("Session file deleted successfully", { path: sessionPath });
223
+ return success();
224
+ } catch (error) {
225
+ const parsedError = parseError(error);
226
+
227
+ // File not found is not an error - already logged out
228
+ const isFileNotFoundError =
229
+ parsedError.message.includes(FILE_NOT_FOUND_ERROR_PATTERNS.ENOENT) ||
230
+ parsedError.message.includes(FILE_NOT_FOUND_ERROR_PATTERNS.NO_SUCH_FILE);
231
+ if (isFileNotFoundError) {
232
+ logger.debug("Session file not found - already logged out");
233
+ return success();
234
+ }
235
+
236
+ logger.error("Error deleting session file", parsedError);
237
+ return fail({
238
+ message: "app.api.system.unifiedInterface.cli.vibe.errors.deleteFailed",
239
+ errorType: ErrorResponseTypes.INTERNAL_ERROR,
240
+ messageParams: { error: parsedError.message },
241
+ });
242
+ }
243
+ }
244
+
245
+ /**
246
+ * Check if session file exists
247
+ */
248
+ export async function sessionFileExists(
249
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
250
+ logger: EndpointLogger,
251
+ ): Promise<boolean> {
252
+ try {
253
+ const sessionPath = getSessionFilePath();
254
+ await fs.access(sessionPath);
255
+ return true;
256
+ } catch {
257
+ return false;
258
+ }
259
+ }
260
+
261
+ /**
262
+ * Get session file path for display purposes
263
+ */
264
+ export function getSessionFilePathForDisplay(): string {
265
+ return getSessionFilePath();
266
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * CLI Environment Configuration
3
+ */
4
+
5
+ import "server-only";
6
+
7
+ import { z } from "zod";
8
+
9
+ import { defineEnv } from "@/app/api/[locale]/system/unified-interface/shared/env/define-env";
10
+ import type { CountryLanguage } from "@/i18n/core/config";
11
+ import { defaultLocale } from "@/i18n/core/config";
12
+
13
+ export const { env: cliEnv } = defineEnv({
14
+ VIBE_CLI_USER_EMAIL: {
15
+ schema: z.string().email().optional(),
16
+ example: "admin@example.com",
17
+ comment: "CLI user email",
18
+ },
19
+ VIBE_CLI_LOCALE: {
20
+ schema: (z.string() as z.Schema<CountryLanguage>)
21
+ .optional()
22
+ .default(defaultLocale),
23
+ example: "en-GLOBAL",
24
+ comment: "CLI locale setting",
25
+ },
26
+ });
@@ -0,0 +1,157 @@
1
+ import { translations as setupTranslations } from "../../setup/i18n/de";
2
+ import type { translations as enTranslations } from "../en";
3
+
4
+ export const translations: typeof enTranslations = {
5
+ setup: setupTranslations,
6
+ auth: {
7
+ errors: {
8
+ userNotFound:
9
+ "CLI-Benutzer mit E-Mail {{email}} wurde nicht in der Datenbank gefunden. Bitte führen Sie zuerst 'vibe seed' aus.",
10
+ databaseError:
11
+ "Datenbankfehler beim Abrufen des CLI-Benutzers: {{error}}",
12
+ authNotAvailable: "Authentifizierung ist nicht verfügbar",
13
+ },
14
+ },
15
+ vibe: {
16
+ startingUp: "Vibe CLI wird gestartet...",
17
+ executeCommand: "Befehl wird ausgeführt",
18
+ executing: "Wird ausgeführt",
19
+ listCommands: "Alle verfügbaren Befehle auflisten",
20
+ output: "Ausgabeformat",
21
+ utils: {
22
+ debug: {
23
+ executionSummary:
24
+ "Ausführung: {{executionSeconds}}s | Overhead: {{overheadSeconds}}s | Gesamt: {{totalSeconds}}s",
25
+ },
26
+ },
27
+ help: {
28
+ title: "Vibe CLI Hilfe",
29
+ description: "Vibe CLI - API-Ausführungstool der nächsten Generation",
30
+ usage: "Verwendung: vibe <befehl> [optionen]",
31
+ commands: "Verfügbare Befehle",
32
+ options: "Optionen",
33
+ examples: "Beispiele",
34
+ userType: "Benutzertyp angeben (admin, public, etc.)",
35
+ locale: "Sprache angeben (en-GLOBAL, de-DE, pl-PL)",
36
+ verbose: "Ausführliche Ausgabe aktivieren",
37
+ dryRun: "Testlauf ohne Ausführung durchführen",
38
+ interactive: "Interaktiven Modus aktivieren",
39
+ },
40
+ errors: {
41
+ routeNotFound: "Route nicht gefunden",
42
+ executionFailed: "Ausführung fehlgeschlagen",
43
+ unknownError: "Unbekannter Fehler aufgetreten",
44
+ publicPayloadNotSupported: "Öffentliche Nutzlast nicht unterstützt",
45
+ invalidTokenPayload: "Ungültige Token-Nutzlast",
46
+ invalidToken: "Ungültiges Token",
47
+ signingFailed: "Token-Signierung fehlgeschlagen",
48
+ userNotFound: "Benutzer nicht gefunden",
49
+ authenticationFailed: "Authentifizierung fehlgeschlagen",
50
+ invalidFormat: "Ungültiges Sitzungsformat",
51
+ sessionExpired: "Sitzung abgelaufen",
52
+ notFound: "Sitzung nicht gefunden",
53
+ readFailed: "Sitzung konnte nicht gelesen werden",
54
+ invalidData: "Ungültige Sitzungsdaten",
55
+ writeFailed: "Sitzung konnte nicht geschrieben werden",
56
+ deleteFailed: "Sitzung konnte nicht gelöscht werden",
57
+ storeFailed: "Sitzung konnte nicht gespeichert werden",
58
+ clearFailed: "Sitzung konnte nicht gelöscht werden",
59
+ setLeadIdCookieFailed: "Lead-ID-Cookie konnte nicht gesetzt werden",
60
+ },
61
+ endpoints: {
62
+ endpointHandler: {
63
+ error: {
64
+ form_validation_failed: "Formularvalidierung fehlgeschlagen",
65
+ unauthorized: "Nicht autorisierter Zugriff",
66
+ errors: {
67
+ unknown_validation_error: "Unbekannter Validierungsfehler",
68
+ invalid_request_data: "Ungültige Anfragedaten",
69
+ invalid_url_parameters: "Ungültige URL-Parameter",
70
+ },
71
+ general: {
72
+ internal_server_error: "Interner Serverfehler",
73
+ },
74
+ },
75
+ },
76
+ renderers: {
77
+ cliUi: {
78
+ helpHandler: {
79
+ noDescription: "Keine Beschreibung verfügbar",
80
+ flagDataDesc: "Anfragedaten als JSON bereitstellen",
81
+ flagUserTypeDesc: "Benutzertyp angeben (admin, customer, public)",
82
+ flagLocaleDesc: "Locale angeben (en-GLOBAL, de-DE, pl-PL)",
83
+ flagOutputDesc: "Ausgabeformat (pretty, json)",
84
+ flagVerboseDesc: "Ausführliche Ausgabe aktivieren",
85
+ flagDryRunDesc: "Testlauf ohne Ausführung durchführen",
86
+ usageLabel: "Verwendung",
87
+ availableCommandsLabel: "Verfügbare Befehle",
88
+ globalOptionsLabel: "Globale Optionen",
89
+ examplesLabel: "Beispiele",
90
+ },
91
+ widgets: {
92
+ common: {
93
+ noDataAvailable: "Keine Daten verfügbar",
94
+ noIssuesFound: "Keine Probleme gefunden",
95
+ invalidDataFormat: "Ungültiges Datenformat",
96
+ info: "Info",
97
+ items: "Elemente",
98
+ andMoreItems: "und {count} weitere Elemente",
99
+ affectedFiles: "Betroffene Dateien",
100
+ summary: "Zusammenfassung",
101
+ files: "Dateien",
102
+ issues: "Probleme",
103
+ other: "Andere",
104
+ error: "Fehler",
105
+ errors: "Fehler",
106
+ warning: "Warnung",
107
+ warnings: "Warnungen",
108
+ },
109
+ },
110
+ },
111
+ },
112
+ },
113
+ interactive: {
114
+ welcome: "Willkommen im Vibe Interaktiven Modus",
115
+ goodbye: "Auf Wiedersehen!",
116
+ navigation: {
117
+ rootName: "Wurzel",
118
+ directoryIcon: "📁",
119
+ upIcon: "⬆️",
120
+ goUp: "Nach oben",
121
+ routeIcon: "🔗",
122
+ routes: "Routen",
123
+ settingsIcon: "⚙️",
124
+ settings: "Einstellungen",
125
+ exitIcon: "🚪",
126
+ exit: "Beenden",
127
+ navigate: "Navigieren",
128
+ route: "Route",
129
+ method: "Methode",
130
+ description: "Beschreibung",
131
+ noDefinition: "Keine Definition gefunden",
132
+ executionFailed: "Ausführung fehlgeschlagen",
133
+ executeAnother: "Weitere ausführen",
134
+ selectLocale: "Sprache wählen",
135
+ englishGlobal: "Englisch (Global)",
136
+ requestData: "Anfragedaten",
137
+ urlParameters: "URL-Parameter",
138
+ preview: "Vorschau",
139
+ executeWithParams: "Mit Parametern ausführen",
140
+ navigationError: "Navigationsfehler",
141
+ chooseSettingToModify: "Einstellung zum Ändern wählen",
142
+ outputFormatCurrent: "Ausgabeformat (aktuell",
143
+ verboseModeCurrent: "Ausführlicher Modus (aktuell",
144
+ localeCurrent: "Sprache (aktuell",
145
+ backToMainMenu: "Zurück zum Hauptmenü",
146
+ chooseOutputFormat: "Ausgabeformat wählen",
147
+ prettyFormatted: "Hübsch formatiert",
148
+ jsonRaw: "JSON (Roh)",
149
+ enableVerboseOutput: "Ausführliche Ausgabe aktivieren",
150
+ chooseLocale: "Sprache wählen",
151
+ german: "Deutsch",
152
+ polish: "Polnisch",
153
+ settingUpdated: "Einstellung erfolgreich aktualisiert",
154
+ },
155
+ },
156
+ },
157
+ };