@next-vibe/checker 1.0.11 → 1.0.13

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 (400) hide show
  1. package/.dist/bin/vibe-runtime.js +26 -22
  2. package/.dist/bin/vibe-runtime.js.map +5 -5
  3. package/.dist/oxlint-plugins/i18n.js +4 -0
  4. package/.dist/oxlint-plugins/i18n.js.map +1 -0
  5. package/.dist/oxlint-plugins/jsx-capitalization.js +4 -0
  6. package/.dist/oxlint-plugins/jsx-capitalization.js.map +1 -0
  7. package/.dist/oxlint-plugins/restricted-syntax.js +4 -0
  8. package/.dist/oxlint-plugins/restricted-syntax.js.map +1 -0
  9. package/check.config.ts +4 -12
  10. package/package.json +2 -9
  11. package/src/app/api/[locale]/LICENSE +674 -0
  12. package/src/app/api/[locale]/i18n/de/index.ts +13 -0
  13. package/src/app/api/[locale]/i18n/en/index.ts +12 -0
  14. package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
  15. package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
  16. package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
  17. package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
  18. package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
  19. package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
  20. package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
  21. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
  22. package/src/app/api/[locale]/shared/types/utils.ts +190 -0
  23. package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
  24. package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
  25. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
  26. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
  27. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
  28. package/src/app/api/[locale]/shared/utils/index.ts +11 -0
  29. package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
  30. package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
  31. package/src/app/api/[locale]/shared/utils/object.ts +75 -0
  32. package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
  33. package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
  34. package/src/app/api/[locale]/shared/utils/time.ts +53 -0
  35. package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
  36. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
  37. package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
  38. package/src/app/api/[locale]/system/builder/enum.ts +78 -0
  39. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
  40. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
  41. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
  42. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
  43. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
  44. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
  45. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
  46. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
  47. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
  48. package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
  49. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
  50. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
  51. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
  52. package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
  53. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
  54. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
  55. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
  56. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
  57. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
  58. package/src/app/api/[locale]/system/builder/route.ts +21 -0
  59. package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
  60. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
  61. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
  62. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
  63. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
  64. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
  65. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
  66. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
  67. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
  68. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
  69. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
  70. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
  71. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
  72. package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
  73. package/src/app/api/[locale]/system/check/config/repository.ts +886 -0
  74. package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
  75. package/src/app/api/[locale]/system/check/config/types.ts +616 -0
  76. package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
  77. package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
  78. package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
  79. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
  80. package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
  81. package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
  82. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
  83. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
  84. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
  85. package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
  86. package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
  87. package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
  88. package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
  89. package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
  90. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
  91. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
  92. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
  93. package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
  94. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
  95. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
  96. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
  97. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
  98. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
  99. package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
  100. package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
  101. package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
  102. package/src/app/api/[locale]/system/check/test-project/bun.lock +532 -0
  103. package/src/app/api/[locale]/system/check/test-project/check.config.ts +981 -0
  104. package/src/app/api/[locale]/system/check/test-project/package.json +12 -0
  105. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
  106. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
  107. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
  108. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
  109. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
  110. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
  111. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
  112. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
  113. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
  114. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
  115. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
  116. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
  117. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
  118. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +34 -0
  119. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
  120. package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
  121. package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
  122. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
  123. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
  124. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
  125. package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
  126. package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
  127. package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
  128. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
  129. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
  130. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
  131. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
  132. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
  133. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
  134. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
  135. package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
  136. package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
  137. package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
  138. package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
  139. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
  140. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
  141. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
  142. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
  143. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
  144. package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
  145. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
  146. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
  147. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
  148. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
  149. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
  150. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
  151. package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
  152. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
  153. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
  154. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
  155. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
  156. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
  157. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
  158. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
  159. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
  160. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
  161. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
  162. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
  163. package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
  164. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
  165. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
  166. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
  167. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
  168. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
  169. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
  170. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
  171. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
  172. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
  173. package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
  174. package/src/app/api/[locale]/system/help/definition.ts +445 -0
  175. package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
  176. package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
  177. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
  178. package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
  179. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
  180. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
  181. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
  182. package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
  183. package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
  184. package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
  185. package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
  186. package/src/app/api/[locale]/system/help/list/route.ts +21 -0
  187. package/src/app/api/[locale]/system/help/repository.ts +212 -0
  188. package/src/app/api/[locale]/system/help/route.ts +16 -0
  189. package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
  190. package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
  191. package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
  192. package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
  193. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
  194. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
  195. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
  196. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
  197. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
  198. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
  199. package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
  200. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
  201. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
  202. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
  203. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
  204. package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
  205. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
  206. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
  207. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
  208. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
  209. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
  210. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
  211. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
  212. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
  213. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
  214. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
  215. package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
  216. package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
  217. package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
  218. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
  219. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
  220. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
  221. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
  222. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
  223. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
  224. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
  225. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
  226. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
  227. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
  228. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
  229. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
  230. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
  231. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
  232. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
  233. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
  234. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
  235. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
  236. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
  237. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
  238. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
  239. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
  240. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
  252. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
  253. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
  254. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
  255. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
  256. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
  257. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
  258. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
  259. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
  260. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
  261. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
  262. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
  263. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
  264. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
  265. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
  266. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
  267. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
  268. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
  288. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
  289. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
  290. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
  291. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
  292. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
  293. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
  294. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
  295. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
  296. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
  297. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
  298. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
  299. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
  300. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
  301. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
  302. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
  303. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
  304. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
  305. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
  306. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
  307. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
  308. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
  309. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
  310. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
  311. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
  312. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
  313. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
  314. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
  315. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
  316. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
  317. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
  318. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
  319. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
  320. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
  321. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
  322. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
  323. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
  324. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
  325. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
  326. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
  327. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
  328. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
  329. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
  330. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
  331. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
  332. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
  333. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
  334. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
  335. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
  336. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
  337. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
  338. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
  339. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
  340. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
  341. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
  342. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
  343. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
  344. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
  345. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
  346. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
  347. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
  348. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
  349. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
  350. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
  351. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
  352. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
  353. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
  354. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
  355. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
  356. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
  374. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
  375. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
  376. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
  377. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
  378. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
  379. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
  380. package/src/app/api/[locale]/user/auth/enum.ts +16 -0
  381. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
  382. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
  383. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
  384. package/src/app/api/[locale]/user/auth/types.ts +110 -0
  385. package/src/app/api/[locale]/user/enum.ts +64 -0
  386. package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
  387. package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
  388. package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
  389. package/src/app/api/[locale]/user/types.ts +118 -0
  390. package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
  391. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
  392. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
  393. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
  394. package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
  395. package/src/app/api/i18n/de/index.ts +6 -0
  396. package/src/app/api/i18n/en/index.ts +5 -0
  397. package/src/app/api/i18n/pl/index.ts +5 -0
  398. package/src/app/i18n/de/index.ts +6 -0
  399. package/src/app/i18n/en/index.ts +5 -0
  400. package/src/app/i18n/pl/index.ts +5 -0
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Route Handlers Generator Repository
3
+ * Generates route-handlers.ts with dynamic imports and flat path structure
4
+ */
5
+
6
+ import "server-only";
7
+
8
+ import { join } from "node:path";
9
+
10
+ import type { ResponseType as BaseResponseType } from "next-vibe/shared/types/response.schema";
11
+ import {
12
+ ErrorResponseTypes,
13
+ fail,
14
+ success,
15
+ } from "next-vibe/shared/types/response.schema";
16
+ import { parseError } from "next-vibe/shared/utils/parse-error";
17
+
18
+ import type { EndpointLogger } from "@/app/api/[locale]/system/unified-interface/shared/logger/endpoint";
19
+ import {
20
+ formatCount,
21
+ formatDuration,
22
+ formatGenerator,
23
+ } from "@/app/api/[locale]/system/unified-interface/shared/logger/formatters";
24
+ import type { ApiSection } from "@/app/api/[locale]/system/unified-interface/shared/types/endpoint";
25
+ import { PATH_SEPARATOR } from "@/app/api/[locale]/system/unified-interface/shared/utils/path";
26
+
27
+ import {
28
+ extractPathKey,
29
+ findFilesRecursively,
30
+ generateAbsoluteImportPath,
31
+ generateFileHeader,
32
+ writeGeneratedFile,
33
+ } from "../shared/utils";
34
+
35
+ // Type definitions
36
+ interface RouteHandlersRequestType {
37
+ outputFile: string;
38
+ dryRun: boolean;
39
+ }
40
+
41
+ interface RouteHandlersResponseType {
42
+ success: boolean;
43
+ message: string;
44
+ routesFound: number;
45
+ duration: number;
46
+ outputFile?: string;
47
+ }
48
+
49
+ /**
50
+ * Route Handlers Generator Repository Interface
51
+ */
52
+ interface RouteHandlersGeneratorRepository {
53
+ generateRouteHandlers(
54
+ data: RouteHandlersRequestType,
55
+ logger: EndpointLogger,
56
+ ): Promise<BaseResponseType<RouteHandlersResponseType>>;
57
+ }
58
+
59
+ /**
60
+ * Route Handlers Generator Repository Implementation
61
+ */
62
+ class RouteHandlersGeneratorRepositoryImpl implements RouteHandlersGeneratorRepository {
63
+ async generateRouteHandlers(
64
+ data: RouteHandlersRequestType,
65
+ logger: EndpointLogger,
66
+ ): Promise<BaseResponseType<RouteHandlersResponseType>> {
67
+ const startTime = Date.now();
68
+
69
+ try {
70
+ const outputFile = data.outputFile;
71
+ logger.debug("Starting route handlers generation", {
72
+ outputFile,
73
+ });
74
+
75
+ // Discover route files
76
+ // eslint-disable-next-line i18next/no-literal-string
77
+ const apiCorePath = ["src", "app", "api", "[locale]"];
78
+ const startDir = join(process.cwd(), ...apiCorePath);
79
+
80
+ logger.debug("Discovering route files");
81
+ const routeFiles = findFilesRecursively(startDir, "route.ts");
82
+
83
+ logger.debug(`Found ${routeFiles.length} route files`);
84
+
85
+ // Generate content
86
+ const content = await this.generateContent(routeFiles);
87
+
88
+ // Write file
89
+ await writeGeneratedFile(outputFile, content, data.dryRun);
90
+
91
+ const duration = Date.now() - startTime;
92
+
93
+ logger.info(
94
+ formatGenerator(
95
+ `Generated route handlers file with ${formatCount(routeFiles.length, "route")} in ${formatDuration(duration)}`,
96
+ "🔗",
97
+ ),
98
+ );
99
+
100
+ return success({
101
+ success: true,
102
+ message: "app.api.system.generators.endpoints.success.generated",
103
+ routesFound: routeFiles.length,
104
+ duration,
105
+ outputFile: data.dryRun ? undefined : outputFile,
106
+ });
107
+ } catch (error) {
108
+ const duration = Date.now() - startTime;
109
+ logger.error("Route handlers generation failed", {
110
+ error: parseError(error),
111
+ duration,
112
+ });
113
+
114
+ return fail({
115
+ message: "app.api.system.generators.endpoints.post.errors.server.title",
116
+ errorType: ErrorResponseTypes.INTERNAL_ERROR,
117
+ messageParams: {
118
+ duration,
119
+ },
120
+ });
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Extract HTTP methods from definition file (async)
126
+ * We extract from definition instead of route because route files have server-only dependencies
127
+ */
128
+ private async extractMethodsFromDefinition(
129
+ routeFile: string,
130
+ ): Promise<string[]> {
131
+ const definitionPath = routeFile.replace("/route.ts", "/definition.ts");
132
+ try {
133
+ const definition = (await import(definitionPath)) as {
134
+ default?: ApiSection;
135
+ };
136
+ const defaultExport = definition.default;
137
+
138
+ if (!defaultExport) {
139
+ return [];
140
+ }
141
+
142
+ // Get all HTTP methods from the definition
143
+ const methods = Object.keys(defaultExport).filter((key) =>
144
+ ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"].includes(
145
+ key,
146
+ ),
147
+ );
148
+ return methods;
149
+ } catch {
150
+ return [];
151
+ }
152
+ }
153
+
154
+ /**
155
+ * Extract aliases from definition file (async)
156
+ */
157
+ private async extractAliasesFromDefinition(
158
+ routeFile: string,
159
+ ): Promise<Array<{ alias: string; method: string }>> {
160
+ const definitionPath = routeFile.replace("/route.ts", "/definition.ts");
161
+ try {
162
+ const definition = (await import(definitionPath)) as {
163
+ default?: Record<string, { aliases?: string[] }>;
164
+ };
165
+ const defaultExport = definition.default;
166
+
167
+ if (!defaultExport) {
168
+ return [];
169
+ }
170
+
171
+ const aliasesWithMethods: Array<{ alias: string; method: string }> = [];
172
+
173
+ // Get aliases from each method
174
+ for (const method of Object.keys(defaultExport)) {
175
+ const methodDef = defaultExport[method];
176
+ if (methodDef?.aliases && Array.isArray(methodDef.aliases)) {
177
+ for (const alias of methodDef.aliases) {
178
+ aliasesWithMethods.push({ alias, method });
179
+ }
180
+ }
181
+ }
182
+
183
+ return aliasesWithMethods;
184
+ } catch {
185
+ // Definition file doesn't exist or can't be loaded
186
+ }
187
+ return [];
188
+ }
189
+
190
+ /**
191
+ * Generate route handlers content with dynamic imports and real aliases from definitions
192
+ * Main paths include method suffix (e.g., "core/agent/ai-stream/POST")
193
+ * Aliases also include method from their definition
194
+ */
195
+ private async generateContent(routeFiles: string[]): Promise<string> {
196
+ const pathMap: Record<string, { importPath: string; method: string }> = {};
197
+ const allPaths: string[] = [];
198
+
199
+ // Build path map with method suffixes and aliases (deduplicate)
200
+ for (const routeFile of routeFiles) {
201
+ const { path } = extractPathKey(routeFile);
202
+ const importPath = generateAbsoluteImportPath(routeFile, "route");
203
+
204
+ // Get methods for this route from definition file
205
+ const methods = await this.extractMethodsFromDefinition(routeFile);
206
+
207
+ // Add main path with method suffix for each method (e.g., "v1_core_agent_ai-stream_POST")
208
+ for (const method of methods) {
209
+ const pathWithMethod = `${path}${PATH_SEPARATOR}${method}`;
210
+ if (!pathMap[pathWithMethod]) {
211
+ pathMap[pathWithMethod] = { importPath, method };
212
+ allPaths.push(pathWithMethod);
213
+ }
214
+ }
215
+
216
+ // Extract and add real aliases from definition file (with their method)
217
+ const definitionAliases =
218
+ await this.extractAliasesFromDefinition(routeFile);
219
+ for (const { alias, method } of definitionAliases) {
220
+ // Only add if not already present (first wins)
221
+ if (!pathMap[alias]) {
222
+ pathMap[alias] = { importPath, method };
223
+ allPaths.push(alias);
224
+ }
225
+ }
226
+ }
227
+
228
+ // Sort paths for consistent output
229
+ allPaths.sort();
230
+
231
+ // Generate getRouteHandler function cases with type-safe loading
232
+ const cases: string[] = [];
233
+ for (const path of allPaths) {
234
+ const { importPath } = pathMap[path];
235
+ // Return the handler - all handlers conform to GenericHandlerBase structurally
236
+ // The type assertion is safe because all handlers accept the same props shape
237
+ // eslint-disable-next-line i18next/no-literal-string
238
+ cases.push(` case "${path}":
239
+ return (await import("${importPath}")).tools.${pathMap[path].method} as GenericHandlerBase;`);
240
+ }
241
+
242
+ // eslint-disable-next-line i18next/no-literal-string
243
+ const autoGenTitle = "AUTO-GENERATED FILE - DO NOT EDIT";
244
+ const generatorName = "generators/route-handlers";
245
+ const header = generateFileHeader(autoGenTitle, generatorName, {
246
+ "Routes found": routeFiles.length,
247
+ "Total paths (with aliases)": allPaths.length,
248
+ });
249
+
250
+ // eslint-disable-next-line i18next/no-literal-string
251
+ return `${header}
252
+
253
+ import type { GenericHandlerBase } from "../unified-interface/shared/endpoints/route/handler";
254
+
255
+ /* eslint-disable prettier/prettier */
256
+ /* eslint-disable i18next/no-literal-string */
257
+
258
+ /**
259
+ * Dynamically import route handler by path
260
+ * @param path - The route path (e.g., "core/agent/chat/threads")
261
+ * @returns The route module or null if not found
262
+ */
263
+ export async function getRouteHandler(
264
+ path: string,
265
+ ): Promise<GenericHandlerBase | null> {
266
+ switch (path) {
267
+ ${cases.join("\n")}
268
+ default:
269
+ return null;
270
+ }
271
+ }
272
+ `;
273
+ }
274
+ }
275
+
276
+ export const routeHandlersGeneratorRepository =
277
+ new RouteHandlersGeneratorRepositoryImpl();
@@ -0,0 +1,17 @@
1
+ import { endpointsHandler } from "@/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi";
2
+ import { Methods } from "@/app/api/[locale]/system/unified-interface/shared/types/enums";
3
+
4
+ import definitions from "./definition";
5
+ import { routeHandlersGeneratorRepository } from "./repository";
6
+
7
+ export const { POST, tools } = endpointsHandler({
8
+ endpoint: definitions,
9
+ [Methods.POST]: {
10
+ handler: async (props) => {
11
+ return await routeHandlersGeneratorRepository.generateRouteHandlers(
12
+ props.data,
13
+ props.logger,
14
+ );
15
+ },
16
+ },
17
+ });
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Shared Generator Utilities
3
+ * Simple utilities for all generators
4
+ */
5
+
6
+ import "server-only";
7
+
8
+ import { existsSync, mkdirSync, readdirSync } from "node:fs";
9
+ import { writeFile } from "node:fs/promises";
10
+ import { dirname, join, relative } from "node:path";
11
+
12
+ import { PATH_SEPARATOR } from "@/app/api/[locale]/system/unified-interface/shared/utils/path";
13
+
14
+ /**
15
+ * Default directories to exclude from scanning
16
+ */
17
+ export const DEFAULT_EXCLUDE_DIRS = [
18
+ "node_modules",
19
+ ".git",
20
+ ".next",
21
+ "dist",
22
+ ".dist",
23
+ "generated",
24
+ ];
25
+
26
+ /**
27
+ * Recursively find files with specific filename in a directory
28
+ */
29
+ export function findFilesRecursively(
30
+ dir: string,
31
+ targetFilename: string,
32
+ excludeDirs: string[] = DEFAULT_EXCLUDE_DIRS,
33
+ ): string[] {
34
+ const results: string[] = [];
35
+
36
+ if (!existsSync(dir)) {
37
+ return results;
38
+ }
39
+
40
+ const entries = readdirSync(dir, { withFileTypes: true });
41
+
42
+ for (const entry of entries) {
43
+ const fullPath = join(dir, entry.name);
44
+
45
+ // Skip excluded directories
46
+ if (entry.isDirectory() && excludeDirs.includes(entry.name)) {
47
+ continue;
48
+ }
49
+
50
+ if (entry.isDirectory()) {
51
+ // Recursively search subdirectories
52
+ results.push(
53
+ ...findFilesRecursively(fullPath, targetFilename, excludeDirs),
54
+ );
55
+ } else if (entry.isFile() && entry.name === targetFilename) {
56
+ // Found a matching file
57
+ results.push(fullPath);
58
+ }
59
+ }
60
+
61
+ return results;
62
+ }
63
+
64
+ /**
65
+ * Get relative import path from source file to output file
66
+ */
67
+ export function getRelativeImportPath(
68
+ sourceFile: string,
69
+ outputFile: string,
70
+ ): string {
71
+ const outputDir = dirname(outputFile);
72
+ let relativePath = relative(outputDir, sourceFile);
73
+
74
+ // Remove .ts extension and normalize path separators
75
+ relativePath = relativePath.replace(/\.ts$/, "").replaceAll("\\", "/");
76
+
77
+ // Ensure it starts with ./ or ../
78
+ if (!relativePath.startsWith(".")) {
79
+ relativePath = `./${relativePath}`;
80
+ }
81
+
82
+ return relativePath;
83
+ }
84
+
85
+ /**
86
+ * Extract nested path segments from a file path
87
+ * Example: src/app/api/[locale]/agent/chat/characters/definition.ts
88
+ * Returns: ["agent", "chat", "characters"]
89
+ */
90
+ export function extractNestedPath(
91
+ filePath: string,
92
+ startMarker = "[locale]",
93
+ endMarker?: string,
94
+ ): string[] {
95
+ const pathParts = filePath.split("/");
96
+
97
+ const startIndex = pathParts.findIndex((p) => p === startMarker);
98
+ if (startIndex === -1) {
99
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Build-time generator that throws for invalid configuration at startup
100
+ throw new Error(`Could not find ${startMarker} in path: ${filePath}`);
101
+ }
102
+
103
+ // If no end marker provided, auto-detect definition.ts or route.ts
104
+ let actualEndMarker = endMarker;
105
+ if (!actualEndMarker) {
106
+ if (pathParts.includes("definition.ts")) {
107
+ actualEndMarker = "definition.ts";
108
+ } else if (pathParts.includes("route.ts")) {
109
+ actualEndMarker = "route.ts";
110
+ } else {
111
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Build-time generator that throws for invalid configuration at startup
112
+ throw new Error(
113
+ `Could not auto-detect end marker (definition.ts or route.ts) in path: ${filePath}`,
114
+ );
115
+ }
116
+ }
117
+
118
+ const endIndex = pathParts.findIndex((p) => p === actualEndMarker);
119
+ if (endIndex === -1) {
120
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Build-time generator that throws for invalid configuration at startup
121
+ throw new Error(`Could not find ${actualEndMarker} in path: ${filePath}`);
122
+ }
123
+
124
+ // Extract path segments between locale and the target file
125
+ // Skip the [locale] marker itself, start from the next segment
126
+ return pathParts.slice(startIndex + 1, endIndex);
127
+ }
128
+
129
+ /**
130
+ * Extract module name from file path
131
+ * Example: .../core/leads/seeds.ts -> "leads"
132
+ * Example: .../core/emails/smtp-client/seeds.ts -> "smtp-client"
133
+ */
134
+ export function extractModuleName(
135
+ filePath: string,
136
+ coreMarker = "core",
137
+ ): string {
138
+ const pathParts = filePath.split("/");
139
+ const coreIndex = pathParts.findIndex((p) => p === coreMarker);
140
+
141
+ if (coreIndex === -1 || coreIndex >= pathParts.length - 1) {
142
+ return pathParts.at(-2) || "unknown";
143
+ }
144
+
145
+ const moduleParts = pathParts.slice(coreIndex + 1, pathParts.length - 1);
146
+ return moduleParts.at(-1) || moduleParts.join("-");
147
+ }
148
+
149
+ /**
150
+ * Write generated content to file
151
+ */
152
+ export async function writeGeneratedFile(
153
+ filePath: string,
154
+ content: string,
155
+ dryRun = false,
156
+ ): Promise<void> {
157
+ if (dryRun) {
158
+ return;
159
+ }
160
+
161
+ const outputDir = dirname(filePath);
162
+ if (!existsSync(outputDir)) {
163
+ mkdirSync(outputDir, { recursive: true });
164
+ }
165
+
166
+ await writeFile(filePath, content, "utf8");
167
+ }
168
+
169
+ /**
170
+ * Generate standard file header
171
+ */
172
+ export function generateFileHeader(
173
+ title: string,
174
+ generatedBy: string,
175
+ additionalInfo?: Record<string, string | number>,
176
+ ): string {
177
+ const lines = ["/**"];
178
+ lines.push(` * ${title}`);
179
+ lines.push(` * Generated by ${generatedBy}`);
180
+
181
+ if (additionalInfo) {
182
+ lines.push(" *");
183
+ for (const [key, value] of Object.entries(additionalInfo)) {
184
+ lines.push(` * ${key}: ${value}`);
185
+ }
186
+ }
187
+
188
+ lines.push(" */");
189
+
190
+ return lines.join("\n");
191
+ }
192
+
193
+ /**
194
+ * Sanitize a path segment to remove invalid characters for tool names
195
+ * Removes square brackets from dynamic routes like [id]
196
+ * This must match the sanitization in endpointToToolName to ensure consistency
197
+ */
198
+ function sanitizePathSegment(segment: string): string {
199
+ // Remove square brackets to handle dynamic routes like [id]
200
+ // Example: "[id]" becomes "id", "[threadId]" becomes "threadId"
201
+ return segment.replaceAll(/\[|\]/g, "");
202
+ }
203
+
204
+ /**
205
+ * Extract path from definition file for flat structure
206
+ * Returns path only - no duplicate parameter format aliases
207
+ * Real aliases come from definition files, not parameter format variations
208
+ * Uses PATH_SEPARATOR constant for consistency
209
+ * Sanitizes path segments to match endpointToToolName behavior
210
+ */
211
+ export function extractPathKey(
212
+ filePath: string,
213
+ startMarker = "[locale]",
214
+ ): { path: string } {
215
+ const nestedPath = extractNestedPath(filePath, startMarker);
216
+ // Sanitize each segment to remove brackets from dynamic routes
217
+ const sanitizedPath = nestedPath.map(sanitizePathSegment);
218
+ const path = sanitizedPath.join(PATH_SEPARATOR);
219
+ return { path };
220
+ }
221
+
222
+ /**
223
+ * Generate absolute import path for definition or route file
224
+ * nestedPath extracts segments after [locale], which we then append to the base path
225
+ */
226
+ export function generateAbsoluteImportPath(
227
+ filePath: string,
228
+ fileType: "definition" | "route",
229
+ ): string {
230
+ const nestedPath = extractNestedPath(filePath);
231
+ const pathStr = nestedPath.join("/");
232
+ return `@/app/api/[locale]/${pathStr}/${fileType}`;
233
+ }