@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,328 @@
1
+ # Unified UI System
2
+
3
+ > **Part of NextVibe Framework** (GPL-3.0) - Located in `src/app/api/[locale]/system/unified-interface/`
4
+
5
+ **One Definition, All Platforms**
6
+
7
+ ## What Is This?
8
+
9
+ The Unified UI System lets you write **one endpoint definition** and automatically get:
10
+
11
+ - ✅ **AI Tools** - Your AI assistant can call your APIs
12
+ - ✅ **CLI Commands** - Run from terminal with `vibe command-name`
13
+ - ✅ **MCP Tools** - Works in Claude Desktop, Cline, and other MCP clients
14
+ - ✅ **React Hooks** - Type-safe hooks for your web app
15
+ - ✅ **React Native** - Same hooks work on mobile
16
+ - ✅ **Widget-Based UI** - Results render beautifully everywhere
17
+
18
+ ## Why Use This?
19
+
20
+ **Before**: Write separate code for AI tools, CLI, web UI, mobile UI
21
+ **After**: Write one `definition.ts` file, get everything automatically
22
+
23
+ **Benefits**:
24
+
25
+ - 🚀 **10x Faster Development** - One definition instead of 5+ implementations
26
+ - 🔒 **Type-Safe** - Full TypeScript inference everywhere
27
+ - 🎨 **Beautiful UI** - Automatic widget-based rendering
28
+ - 🔐 **Secure** - Permission system built-in
29
+ - 💰 **Cost Tracking** - Credit system integrated
30
+ - 🌍 **i18n Ready** - Multi-language support
31
+
32
+ ## Quick Example
33
+
34
+ ### 1. Write One Definition
35
+
36
+ ```typescript
37
+ // definition.ts
38
+ const { POST } = createEndpoint({
39
+ method: Methods.POST,
40
+ path: ["user", "create"],
41
+ credits: 0, // Free operation
42
+
43
+ fields: objectField(
44
+ { type: WidgetType.CONTAINER },
45
+ { request: "data", response: true },
46
+ {
47
+ email: requestDataField({ type: WidgetType.TEXT }, z.string().email()),
48
+ name: requestDataField({ type: WidgetType.TEXT }, z.string().min(1)),
49
+ },
50
+ ),
51
+ });
52
+ ```
53
+
54
+ ### 2. Use Everywhere Automatically
55
+
56
+ **Terminal (CLI)**:
57
+
58
+ ```bash
59
+ vibe create-user --email=john@example.com --name="John Doe"
60
+ ```
61
+
62
+ **AI Chat**:
63
+
64
+ ```
65
+ User: "Create a user account for john@example.com named John Doe"
66
+ AI: *calls create-user tool automatically*
67
+ ```
68
+
69
+ **Claude Desktop (MCP)**:
70
+
71
+ ```json
72
+ {
73
+ "mcpServers": {
74
+ "Vibe": { "command": "npx", "args": ["vibe", "mcp"] }
75
+ }
76
+ }
77
+ ```
78
+
79
+ **React App**:
80
+
81
+ ```typescript
82
+ const { mutate } = useEndpoint(definition);
83
+ mutate({ email: "john@example.com", name: "John Doe" });
84
+ ```
85
+
86
+ **React Native App**:
87
+
88
+ ```typescript
89
+ // Same hook works on mobile!
90
+ const { mutate } = useEndpoint(definition);
91
+ ```
92
+
93
+ ## How It Works
94
+
95
+ ```
96
+ ┌─────────────────────────────────────────┐
97
+ │ definition.ts │
98
+ │ • Method, path, fields │
99
+ │ • Widget types for UI │
100
+ │ • Permissions & credits │
101
+ └─────────────────────────────────────────┘
102
+
103
+ ┌─────────────┼─────────────┬─────────────┐
104
+ ▼ ▼ ▼ ▼
105
+ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
106
+ │ AI │ │ CLI │ │ MCP │ │ React │
107
+ │ Tool │ │Command │ │ Tool │ │ Hook │
108
+ └────────┘ └────────┘ └────────┘ └────────┘
109
+ ```
110
+
111
+ ## Widget System
112
+
113
+ Define how data should be displayed:
114
+
115
+ ```typescript
116
+ // Text display
117
+ {
118
+ type: WidgetType.TEXT;
119
+ }
120
+
121
+ // Clickable link
122
+ {
123
+ type: WidgetType.LINK;
124
+ }
125
+
126
+ // Data table with sorting
127
+ {
128
+ type: WidgetType.DATA_TABLE;
129
+ }
130
+
131
+ // Card grid
132
+ {
133
+ type: WidgetType.DATA_CARDS;
134
+ }
135
+
136
+ // Search results
137
+ {
138
+ type: WidgetType.LINK_LIST;
139
+ }
140
+
141
+ // Code with syntax highlighting
142
+ {
143
+ type: WidgetType.CODE_OUTPUT;
144
+ }
145
+
146
+ // Markdown content
147
+ {
148
+ type: WidgetType.MARKDOWN;
149
+ }
150
+ ```
151
+
152
+ Results automatically render beautifully in:
153
+
154
+ - AI chat interface
155
+ - CLI terminal (colored output)
156
+ - React components
157
+ - React Native apps
158
+
159
+ ## Permission System
160
+
161
+ Control who can access your endpoints:
162
+
163
+ ```typescript
164
+ allowedRoles: [UserRole.ADMIN]; // Only admins
165
+ allowedRoles: [UserRole.CUSTOMER]; // Authenticated users
166
+ allowedRoles: [UserRole.PUBLIC]; // Everyone
167
+ allowedRoles: [UserRole.CLI_OFF]; // Disable CLI access
168
+ allowedRoles: [UserRole.AI_TOOL_OFF]; // Disable AI access
169
+ ```
170
+
171
+ Permissions enforced automatically everywhere.
172
+
173
+ ## Credit System
174
+
175
+ Set credit costs for your endpoints:
176
+
177
+ ```typescript
178
+ credits: 0; // Free
179
+ credits: 0.65; // Web search (calculated from FEATURE_COSTS)
180
+ credits: 0.52; // Text-to-speech per 1000 chars (calculated)
181
+ credits: 10; // Expensive (e.g., GPT-4 message)
182
+ ```
183
+
184
+ Credits automatically:
185
+
186
+ - Checked before execution
187
+ - Deducted after success
188
+ - Logged in database
189
+ - Displayed in UI
190
+
191
+ ## Type Safety
192
+
193
+ Full TypeScript inference everywhere:
194
+
195
+ ```typescript
196
+ // Types automatically inferred from definition
197
+ export type RequestInput = typeof POST.types.RequestInput;
198
+ export type ResponseOutput = typeof POST.types.ResponseOutput;
199
+
200
+ // Use in your code with full autocomplete
201
+ const result: ResponseOutput = await endpoint.mutate(input);
202
+ ```
203
+
204
+ ## i18n Support
205
+
206
+ All user-facing text uses translation keys:
207
+
208
+ ```typescript
209
+ title: "app.api.user.create.post.title";
210
+ description: "app.api.user.create.post.description";
211
+ ```
212
+
213
+ Automatically translated in:
214
+
215
+ - AI tool descriptions
216
+ - CLI help text
217
+ - MCP tool descriptions
218
+ - React UI labels
219
+ - Error messages
220
+
221
+ ## Real-World Example: Web Search
222
+
223
+ ```typescript
224
+ // brave-search/definition.ts
225
+ const { GET } = createEndpoint({
226
+ method: Methods.GET,
227
+ path: ["agent", "web", "brave-search"],
228
+ credits: FEATURE_COSTS.BRAVE_SEARCH, // 0.65 credits per search
229
+
230
+ aiTool: {
231
+ displayName: "Search the Web",
232
+ icon: "search",
233
+ instructions: "Use this to find current information online",
234
+ },
235
+
236
+ fields: objectField(
237
+ { type: WidgetType.CONTAINER },
238
+ { request: "urlPathParams", response: true },
239
+ {
240
+ query: requestUrlParamField({ type: WidgetType.TEXT }, z.string().min(1)),
241
+ results: responseArrayField(
242
+ { type: WidgetType.LINK_LIST }, // Renders as clickable links!
243
+ objectField(
244
+ { type: WidgetType.LINK_CARD },
245
+ { response: true },
246
+ {
247
+ title: responseField({ type: WidgetType.TEXT }, z.string()),
248
+ url: responseField({ type: WidgetType.LINK }, z.string()),
249
+ snippet: responseField({ type: WidgetType.MARKDOWN }, z.string()),
250
+ },
251
+ ),
252
+ ),
253
+ },
254
+ ),
255
+ });
256
+ ```
257
+
258
+ **Result**: AI can search the web, and results display as beautiful, clickable link cards in the chat interface!
259
+
260
+ ## Best Practices
261
+
262
+ ### For Developers
263
+
264
+ 1. **Choose Appropriate Widget Types**
265
+ - Match widget to data type
266
+ - Use LINK for URLs
267
+ - Use DATA_TABLE for tabular data
268
+ - Use MARKDOWN for rich text
269
+
270
+ 2. **Set Reasonable Credit Costs**
271
+ - Free for simple operations
272
+ - 1-5 credits for API calls
273
+ - 10+ credits for expensive operations
274
+
275
+ 3. **Write Clear AI Instructions**
276
+ - Tell AI when to use your tool
277
+ - Provide examples
278
+ - Explain parameters
279
+
280
+ 4. **Use Semantic Aliases**
281
+ - Multiple ways to call same command
282
+ - User-friendly names
283
+ - Namespace related commands
284
+
285
+ 5. **Handle Errors Gracefully**
286
+ - Return clear error messages
287
+ - Suggest fixes
288
+ - Log for debugging
289
+
290
+ ## Troubleshooting
291
+
292
+ **Tool not showing in AI chat**:
293
+
294
+ - Check `allowedRoles` includes user's role
295
+ - Verify `aiTool` metadata is defined
296
+ - Check user has enough credits
297
+
298
+ **CLI command not found**:
299
+
300
+ - Check `aliases` are defined
301
+ - Run `vibe list` to see all commands
302
+ - Verify permissions
303
+
304
+ **Widget not rendering**:
305
+
306
+ - Check widget type is registered
307
+ - Verify data structure matches widget
308
+ - Check browser console for errors
309
+
310
+ **Type errors**:
311
+
312
+ - Run `npx vibe check` to validate
313
+ - Check Zod schemas match data
314
+ - Verify imports are correct
315
+
316
+ ## Learn More
317
+
318
+ - **PLAN.md** - Implementation roadmap for contributors
319
+ - **shared/widgets/** - Widget component documentation
320
+ - **ai-tool/** - AI tool system details
321
+ - **cli/** - CLI system details
322
+ - **mcp/** - MCP integration details
323
+
324
+ ---
325
+
326
+ **Status**: Production Ready
327
+ **Version**: 1.0.0
328
+ **Last Updated**: 2025-01-30
@@ -0,0 +1,349 @@
1
+ # CLI System
2
+
3
+ **Command-line interface for all API endpoints**
4
+
5
+ ## Overview
6
+
7
+ The CLI System automatically converts your API endpoints into terminal commands. Uses the same endpoint registry as AI tools and MCP.
8
+
9
+ ## Quick Start
10
+
11
+ ```bash
12
+ # Install globally
13
+ npm install -g vibe
14
+
15
+ # Or use npx
16
+ npx vibe <command>
17
+
18
+ # Run a command
19
+ vibe create-user --email=john@example.com --name="John Doe"
20
+
21
+ # Use aliases
22
+ vibe user:new --email=john@example.com
23
+ vibe signup --email=john@example.com
24
+ ```
25
+
26
+ ## How It Works
27
+
28
+ ```
29
+ 1. Discovery
30
+ └─> Scans definition.ts files
31
+ └─> Extracts CLI metadata (aliases, params)
32
+
33
+ 2. Command Registration
34
+ └─> Registers commands with Commander.js
35
+ └─> Maps aliases to endpoints
36
+
37
+ 3. Execution
38
+ └─> Parses CLI arguments
39
+ └─> Validates parameters
40
+ └─> Calls endpoint via route handler
41
+ └─> Formats output (pretty or JSON)
42
+ ```
43
+
44
+ ## Command Naming
45
+
46
+ Commands use path segments or aliases:
47
+
48
+ ```
49
+ API Path: /user/create
50
+ Command: vibe core:user:create
51
+
52
+ Aliases: ["create-user", "user:new", "signup"]
53
+ Commands: vibe create-user
54
+ vibe user:new
55
+ vibe signup
56
+ ```
57
+
58
+ ## Defining CLI Metadata
59
+
60
+ ```typescript
61
+ // definition.ts
62
+ const { POST } = createEndpoint({
63
+ method: Methods.POST,
64
+ path: ["user", "create"],
65
+ aliases: ["create-user", "user:new", "signup"],
66
+
67
+ cli: {
68
+ firstCliArgument: "email", // First positional arg
69
+ examples: [
70
+ {
71
+ command: "create-user john@example.com --name='John Doe'",
72
+ description: "Create a user with email and name",
73
+ },
74
+ ],
75
+ },
76
+
77
+ // ... rest of definition
78
+ });
79
+ ```
80
+
81
+ ## CLI Arguments
82
+
83
+ ### Positional Arguments
84
+
85
+ ```bash
86
+ # First argument is email (defined by firstCliArgument)
87
+ vibe create-user john@example.com --name="John Doe"
88
+ ```
89
+
90
+ ### Named Arguments
91
+
92
+ ```bash
93
+ # All fields can be named arguments
94
+ vibe create-user --email=john@example.com --name="John Doe"
95
+ ```
96
+
97
+ ### Boolean Flags
98
+
99
+ ```bash
100
+ # Boolean fields become flags
101
+ vibe migrate --force
102
+ vibe migrate --no-force
103
+ ```
104
+
105
+ ### Arrays
106
+
107
+ ```bash
108
+ # Arrays use comma-separated values
109
+ vibe send-email --to=john@example.com,jane@example.com
110
+ ```
111
+
112
+ ### JSON Objects
113
+
114
+ ```bash
115
+ # Complex objects use JSON
116
+ vibe create-user --metadata='{"source":"cli","version":"1.0"}'
117
+ ```
118
+
119
+ ## Output Formats
120
+
121
+ ### Pretty (Default)
122
+
123
+ ```bash
124
+ vibe create-user --email=john@example.com
125
+
126
+ ✓ User created successfully
127
+ ID: 550e8400-e29b-41d4-a716-446655440000
128
+ Email: john@example.com
129
+ Name: John Doe
130
+ Created: 2024-01-15 10:30:00
131
+ ```
132
+
133
+ ### JSON
134
+
135
+ ```bash
136
+ vibe create-user --email=john@example.com --output=json
137
+
138
+ {
139
+ "success": true,
140
+ "data": {
141
+ "id": "550e8400-e29b-41d4-a716-446655440000",
142
+ "email": "john@example.com",
143
+ "name": "John Doe",
144
+ "createdAt": "2024-01-15T10:30:00Z"
145
+ }
146
+ }
147
+ ```
148
+
149
+ ## Authentication
150
+
151
+ CLI authentication flow:
152
+
153
+ 1. Check `.vibe.session` file (from login/signup)
154
+ 2. If no session, check `VIBE_CLI_USER_EMAIL` env var and authenticate from DB
155
+ 3. If `VIBE_CLI_USER_EMAIL` is empty, create public user with new lead
156
+ 4. If email is set but user not found in DB, return error
157
+
158
+ ```bash
159
+ # Use authenticated user from DB
160
+ export VIBE_CLI_USER_EMAIL=admin@example.com
161
+ vibe create-user --email=john@example.com
162
+
163
+ # Use public user (no env var set)
164
+ unset VIBE_CLI_USER_EMAIL
165
+ vibe create-user --email=john@example.com
166
+ ```
167
+
168
+ ## Permission System
169
+
170
+ Commands respect endpoint permissions:
171
+
172
+ ```typescript
173
+ // definition.ts
174
+ allowedRoles: [UserRole.ADMIN, UserRole.CLI_OFF];
175
+
176
+ // user must have ADMIN; disabled for CLI
177
+ ```
178
+
179
+ Special role `WEB_OFF` and `AI_TOOL_OFF` for CLI-only operations:
180
+
181
+ - Database migrations
182
+ - System maintenance
183
+ - Dangerous operations
184
+
185
+ ## Built-in Commands
186
+
187
+ ### Help
188
+
189
+ ```bash
190
+ # List all commands
191
+ vibe --help
192
+
193
+ # Command-specific help
194
+ vibe create-user --help
195
+ ```
196
+
197
+ ### Version
198
+
199
+ ```bash
200
+ vibe --version
201
+ ```
202
+
203
+ ### Setup
204
+
205
+ ```bash
206
+ # Install CLI globally
207
+ vibe setup:install
208
+
209
+ # Check installation
210
+ vibe setup:status
211
+
212
+ # Update CLI
213
+ vibe setup:update
214
+
215
+ # Uninstall CLI
216
+ vibe setup:uninstall
217
+ ```
218
+
219
+ ### Vibe Check
220
+
221
+ ```bash
222
+ # Check all files
223
+ vibe check
224
+
225
+ # Check specific path
226
+ vibe check src/app/api/[locale]/user
227
+
228
+ # Lint only
229
+ vibe lint
230
+
231
+ # Type check only
232
+ vibe typecheck
233
+ ```
234
+
235
+ ## Configuration
236
+
237
+ ```typescript
238
+ // config/platform-config.ts
239
+ export const CLI_CONFIG: PlatformConfig = {
240
+ platform: Platform.CLI,
241
+ rootDir: "src/app/api/[locale]",
242
+ excludePaths: [], // CLI can access everything
243
+ cache: {
244
+ enabled: true,
245
+ ttl: 10 * 60 * 1000, // 10 minutes
246
+ },
247
+ rateLimit: {
248
+ enabled: false, // No rate limiting for CLI
249
+ },
250
+ };
251
+ ```
252
+
253
+ ## Best Practices
254
+
255
+ ### 1. Use Semantic Aliases
256
+
257
+ ```typescript
258
+ aliases: [
259
+ "create-user", // Imperative
260
+ "user:new", // Namespaced
261
+ "signup", // User-facing term
262
+ ];
263
+ ```
264
+
265
+ ### 2. Define First Argument
266
+
267
+ ```typescript
268
+ cli: {
269
+ firstCliArgument: "email", // Most common argument
270
+ }
271
+ ```
272
+
273
+ ### 3. Provide Examples
274
+
275
+ ```typescript
276
+ cli: {
277
+ examples: [
278
+ {
279
+ command: "create-user john@example.com --name='John Doe'",
280
+ description: "Create a user with email and name",
281
+ },
282
+ {
283
+ command: "create-user --email=john@example.com --role=ADMIN",
284
+ description: "Create an admin user",
285
+ },
286
+ ],
287
+ }
288
+ ```
289
+
290
+ ### 4. Handle Errors Gracefully
291
+
292
+ ```typescript
293
+ errorTypes: {
294
+ [EndpointErrorTypes.VALIDATION_FAILED]: {
295
+ title: "Invalid input",
296
+ description: "Please check that email is valid and name is not empty"
297
+ }
298
+ }
299
+ ```
300
+
301
+ ## Scripting
302
+
303
+ CLI is perfect for automation:
304
+
305
+ ```bash
306
+ #!/bin/bash
307
+
308
+ # Create multiple users
309
+ for email in john@example.com jane@example.com; do
310
+ vibe create-user --email=$email --name="Test User"
311
+ done
312
+
313
+ # Check status
314
+ if vibe db:ping --output=json | jq -r '.success' | grep -q 'true'; then
315
+ echo "Database is healthy"
316
+ else
317
+ echo "Database is down"
318
+ exit 1
319
+ fi
320
+ ```
321
+
322
+ ## Troubleshooting
323
+
324
+ **"Command not found: vibe"**
325
+
326
+ ```bash
327
+ npm install -g vibe
328
+ # or use npx
329
+ npx vibe <command>
330
+ ```
331
+
332
+ **"Permission denied"**
333
+
334
+ - Check CLI user's role in database
335
+ - Verify endpoint's allowedRoles
336
+ - Use correct VIBE_CLI_USER_EMAIL
337
+
338
+ **"Invalid arguments"**
339
+
340
+ - Check command help: `vibe <command> --help`
341
+ - Verify argument names match definition
342
+ - Use quotes for strings with spaces
343
+
344
+ ## Related
345
+
346
+ - [Main README](../README.md)
347
+ - [Shared README](../shared/README.md)
348
+ - [AI Tool README](../ai-tool/README.md)
349
+ - [MCP README](../mcp/README.md)