@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,581 @@
1
+ /**
2
+ * Core Endpoint Type Definitions
3
+ *
4
+ * Clean, DRY endpoint system with complete type inference from the 6 core types.
5
+ * No legacy compatibility - this is the single source of truth.
6
+ *
7
+ * Features:
8
+ * - Complete type inference from Zod schemas
9
+ * - Zero any/unknown types
10
+ * - Strict field enforcement
11
+ * - Production-ready error handling
12
+ * - Support for all 5 interfaces
13
+ */
14
+
15
+ import type { z } from "zod";
16
+
17
+ import { generateSchemaForUsage as generateSchemaFromUtils } from "@/app/api/[locale]/system/unified-interface/shared/field/utils";
18
+ import type {
19
+ ExamplesList,
20
+ ExtractInput,
21
+ ExtractOutput,
22
+ InferSchemaFromField,
23
+ LifecycleActions,
24
+ UnifiedField,
25
+ } from "@/app/api/[locale]/system/unified-interface/shared/types/endpoint";
26
+ import type {
27
+ EndpointErrorTypes,
28
+ Methods,
29
+ } from "@/app/api/[locale]/system/unified-interface/shared/types/enums";
30
+ import { FieldUsage } from "@/app/api/[locale]/system/unified-interface/shared/types/enums";
31
+ import {
32
+ UserRole,
33
+ type UserRoleValue,
34
+ } from "@/app/api/[locale]/user/user-roles/enum";
35
+ import type { CountryLanguage } from "@/i18n/core/config";
36
+ import type { TranslatedKeyType } from "@/i18n/core/scoped-translation";
37
+ import { simpleT } from "@/i18n/core/shared";
38
+ import type { TParams, TranslationKey } from "@/i18n/core/static-types";
39
+
40
+ // Extract schema type directly from field, bypassing complex field structure
41
+ type ExtractSchemaType<F> = F extends { schema: z.ZodType<infer T> }
42
+ ? T
43
+ : never;
44
+
45
+ /**
46
+ * Options for read (GET) operations at the endpoint level
47
+ * These options will be merged with hook-provided options (hook options take priority)
48
+ */
49
+ export interface EndpointReadOptions<TRequest, TUrlVariables> {
50
+ /** Form options for query forms (filtering, search, etc.) */
51
+ formOptions?: {
52
+ defaultValues?: Partial<TRequest>;
53
+ persistForm?: boolean;
54
+ persistenceKey?: string;
55
+ autoSubmit?: boolean;
56
+ debounceMs?: number;
57
+ };
58
+ /** Query options for data fetching */
59
+ queryOptions?: {
60
+ enabled?: boolean;
61
+ staleTime?: number;
62
+ cacheTime?: number;
63
+ refetchOnWindowFocus?: boolean;
64
+ disableLocalCache?: boolean;
65
+ cacheDuration?: number;
66
+ deduplicateRequests?: boolean;
67
+ refreshDelay?: number;
68
+ forceRefresh?: boolean;
69
+ backgroundRefresh?: boolean;
70
+ };
71
+ /** URL path parameters for the read endpoint */
72
+ urlPathParams?: TUrlVariables;
73
+ /** Initial state for the form */
74
+ initialState?: Partial<TRequest>;
75
+ }
76
+
77
+ /**
78
+ * Options for create/update (POST/PUT/PATCH) operations at the endpoint level
79
+ * These options will be merged with hook-provided options (hook options take priority)
80
+ */
81
+ export interface EndpointCreateOptions<TRequest, TUrlVariables> {
82
+ /** Form options for mutation forms */
83
+ formOptions?: {
84
+ defaultValues?: Partial<TRequest>;
85
+ persistForm?: boolean;
86
+ persistenceKey?: string;
87
+ };
88
+ /** Mutation options for create/update operations */
89
+ mutationOptions?: {
90
+ invalidateQueries?: string[];
91
+ };
92
+ /** URL path parameters for the create endpoint */
93
+ urlPathParams?: TUrlVariables;
94
+ /** Data to auto-prefill the form with */
95
+ autoPrefillData?: Partial<TRequest>;
96
+ /** Initial state for the form */
97
+ initialState?: Partial<TRequest>;
98
+ }
99
+
100
+ /**
101
+ * Options for delete (DELETE) operations at the endpoint level
102
+ * These options will be merged with hook-provided options (hook options take priority)
103
+ */
104
+ export interface EndpointDeleteOptions<TUrlVariables> {
105
+ /** Mutation options for delete operations */
106
+ mutationOptions?: {
107
+ invalidateQueries?: string[];
108
+ };
109
+ /** URL path parameters for the delete endpoint */
110
+ urlPathParams?: TUrlVariables;
111
+ }
112
+
113
+ /**
114
+ * Core endpoint definition with complete type inference from TFields:
115
+ * All Input/Output types are automatically inferred from the unified field structure:
116
+ * - TRequestInput/Output: Inferred from fields with FieldUsage.RequestData
117
+ * - TResponseInput/Output: Inferred from fields with FieldUsage.Response
118
+ * - TUrlVariablesInput/Output: Inferred from fields with FieldUsage.RequestUrlParams
119
+ *
120
+ * Features:
121
+ * - Zero any/unknown types - all types are properly inferred from TFields
122
+ * - Strict field enforcement - missing required fields cause TypeScript errors
123
+ * - Complete type safety with proper error handling
124
+ * - Support for all 5 consumption interfaces
125
+ * - Simplified type parameters - only 4 core types needed
126
+ * - Optional scoped translation keys - use TScopedTranslationKey to restrict translation keys to a specific scope
127
+ *
128
+ */
129
+ export interface ApiEndpoint<
130
+ TExampleKey extends string,
131
+ TMethod extends Methods,
132
+ TUserRoleValue extends readonly UserRoleValue[],
133
+ TScopedTranslationKey extends string = TranslationKey,
134
+ TFields extends UnifiedField<string, z.ZodTypeAny> = UnifiedField<
135
+ TScopedTranslationKey,
136
+ z.ZodTypeAny
137
+ >,
138
+ > {
139
+ // Core endpoint metadata - all required for type safety
140
+ readonly method: TMethod;
141
+ readonly path: readonly string[];
142
+ readonly allowedRoles: TUserRoleValue;
143
+
144
+ // Translation keys use NoInfer to ensure they don't contribute to TScopedTranslationKey inference
145
+ // This makes errors appear on the specific property with the invalid key
146
+ readonly title: NoInfer<TScopedTranslationKey>;
147
+ readonly description: NoInfer<TScopedTranslationKey>;
148
+ readonly category: NoInfer<TScopedTranslationKey>;
149
+ readonly tags: readonly NoInfer<TScopedTranslationKey>[];
150
+
151
+ /**
152
+ * Scoped translation function for this endpoint
153
+ * Required on endpoint instances, but can be auto-generated by createEndpoint
154
+ */
155
+ readonly scopedTranslation?: {
156
+ readonly ScopedTranslationKey: TScopedTranslationKey;
157
+ readonly scopedT: (locale: CountryLanguage) => {
158
+ t(key: TScopedTranslationKey, params?: TParams): TranslatedKeyType;
159
+ };
160
+ };
161
+
162
+ readonly debug?: boolean;
163
+ readonly aliases?: readonly string[];
164
+ readonly cli?: {
165
+ // TODO: use keyof TRequestInput, TResponseInput, TUrlVariablesInput
166
+ firstCliArgKey?: string;
167
+ };
168
+
169
+ /**
170
+ * Credit cost for this endpoint (0 = free, undefined = free)
171
+ */
172
+ readonly credits?: number;
173
+ /** Icon identifier */
174
+ readonly icon: string;
175
+
176
+ // Unified fields for schema generation
177
+ readonly fields: TFields;
178
+
179
+ lifecycle?: LifecycleActions;
180
+
181
+ readonly examples: (ExtractInput<
182
+ InferSchemaFromField<TFields, FieldUsage.RequestData>
183
+ > extends undefined
184
+ ? { requests?: undefined }
185
+ : ExtractInput<
186
+ InferSchemaFromField<TFields, FieldUsage.RequestData>
187
+ > extends never
188
+ ? {
189
+ requests?: undefined;
190
+ }
191
+ : {
192
+ requests: ExamplesList<
193
+ ExtractInput<InferSchemaFromField<TFields, FieldUsage.RequestData>>,
194
+ TExampleKey
195
+ >;
196
+ }) &
197
+ (ExtractInput<
198
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
199
+ > extends undefined
200
+ ? { urlPathParams?: undefined }
201
+ : ExtractInput<
202
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
203
+ > extends never
204
+ ? {
205
+ urlPathParams?: undefined;
206
+ }
207
+ : {
208
+ urlPathParams: ExamplesList<
209
+ ExtractInput<
210
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
211
+ >,
212
+ TExampleKey
213
+ >;
214
+ }) &
215
+ (ExtractInput<
216
+ InferSchemaFromField<TFields, FieldUsage.Response>
217
+ > extends undefined
218
+ ? { responses?: undefined }
219
+ : ExtractInput<
220
+ InferSchemaFromField<TFields, FieldUsage.Response>
221
+ > extends never
222
+ ? {
223
+ responses?: undefined;
224
+ }
225
+ : {
226
+ responses: ExamplesList<
227
+ ExtractInput<InferSchemaFromField<TFields, FieldUsage.Response>>,
228
+ TExampleKey
229
+ >;
230
+ });
231
+
232
+ // Additional configuration - optional
233
+ // readonly config: EndpointConfig;
234
+
235
+ // Error handling configuration - NoInfer ensures errors appear on specific invalid keys
236
+ readonly errorTypes: Record<
237
+ EndpointErrorTypes,
238
+ {
239
+ title: NoInfer<TScopedTranslationKey>;
240
+ description: NoInfer<TScopedTranslationKey>;
241
+ }
242
+ >;
243
+
244
+ // Success handling configuration - NoInfer ensures errors appear on specific invalid keys
245
+ readonly successTypes: {
246
+ title: NoInfer<TScopedTranslationKey>;
247
+ description: NoInfer<TScopedTranslationKey>;
248
+ };
249
+
250
+ // Method-specific options that will be merged with hook-provided options
251
+ // Hook options take priority over endpoint options
252
+ readonly options?: TMethod extends Methods.GET
253
+ ? EndpointReadOptions<
254
+ ExtractOutput<InferSchemaFromField<TFields, FieldUsage.RequestData>>,
255
+ ExtractOutput<
256
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
257
+ >
258
+ >
259
+ : TMethod extends Methods.POST | Methods.PUT | Methods.PATCH
260
+ ? EndpointCreateOptions<
261
+ ExtractOutput<InferSchemaFromField<TFields, FieldUsage.RequestData>>,
262
+ ExtractOutput<
263
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
264
+ >
265
+ >
266
+ : TMethod extends Methods.DELETE
267
+ ? EndpointDeleteOptions<
268
+ ExtractOutput<
269
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
270
+ >
271
+ >
272
+ : never;
273
+ }
274
+
275
+ // --- COMPILE-TIME TYPE INFERENCE FROM UNIFIED FIELDS ---
276
+ // Ergonomic system that prevents requestData + requestUrlPathParams conflicts
277
+
278
+ // Extract core properties from UnifiedField - handle all the extra properties
279
+ export type ExtractFieldCore<F> = F extends {
280
+ type: "primitive";
281
+ schema: infer Schema;
282
+ usage: infer Usage;
283
+ }
284
+ ? { type: "primitive"; schema: Schema; usage: Usage }
285
+ : F extends { type: "object"; children: infer Children }
286
+ ? { type: "object"; children: Children }
287
+ : F extends { type: "array"; child: infer Child; usage: infer Usage }
288
+ ? { type: "array"; child: Child; usage: Usage }
289
+ : never;
290
+
291
+ // --- MAINTAINABLE SUB-TYPES FOR FIELD INFERENCE ---
292
+
293
+ // Extract field core structure
294
+ type FieldCore<F> = ExtractFieldCore<F>;
295
+
296
+ // Usage checking helpers
297
+ type HasResponseUsage<U> = U extends { response: true } ? true : false;
298
+ type HasRequestDataUsage<U> = U extends { request: "data" } ? true : false;
299
+ type HasRequestUrlParamsUsage<U> = U extends { request: "urlPathParams" }
300
+ ? true
301
+ : false;
302
+
303
+ // Direct field type inference that forces evaluation
304
+ export type InferFieldType<F, Usage extends FieldUsage> =
305
+ FieldCore<F> extends { type: "primitive"; usage: infer U }
306
+ ? Usage extends FieldUsage.Response
307
+ ? HasResponseUsage<U> extends true
308
+ ? ExtractSchemaType<F>
309
+ : never
310
+ : Usage extends FieldUsage.RequestData
311
+ ? HasRequestDataUsage<U> extends true
312
+ ? ExtractSchemaType<F>
313
+ : never
314
+ : Usage extends FieldUsage.RequestUrlParams
315
+ ? HasRequestUrlParamsUsage<U> extends true
316
+ ? ExtractSchemaType<F>
317
+ : never
318
+ : never
319
+ : FieldCore<F> extends { type: "object"; children: infer C }
320
+ ? InferObjectType<C, Usage>
321
+ : FieldCore<F> extends {
322
+ type: "array";
323
+ child: infer Child;
324
+ usage: infer U;
325
+ }
326
+ ? Usage extends FieldUsage.Response
327
+ ? HasResponseUsage<U> extends true
328
+ ? Array<InferFieldType<Child, Usage>>
329
+ : never
330
+ : Usage extends FieldUsage.RequestData
331
+ ? HasRequestDataUsage<U> extends true
332
+ ? Array<InferFieldType<Child, Usage>>
333
+ : never
334
+ : Usage extends FieldUsage.RequestUrlParams
335
+ ? HasRequestUrlParamsUsage<U> extends true
336
+ ? Array<InferFieldType<Child, Usage>>
337
+ : never
338
+ : never
339
+ : never;
340
+
341
+ // Fixed object type inference - filter out never fields and remove readonly
342
+ // Uses flexible constraint that accepts both readonly and mutable properties
343
+ type InferObjectType<C, Usage extends FieldUsage> =
344
+ C extends Record<string, UnifiedField<string, z.ZodTypeAny>>
345
+ ? {
346
+ -readonly [K in keyof C as InferFieldType<C[K], Usage> extends never
347
+ ? never
348
+ : K]: InferFieldType<C[K], Usage>;
349
+ }
350
+ : never;
351
+
352
+ // --- SCHEMA GENERATION FROM UNIFIED FIELDS ---
353
+ // Use the proper generateSchemaForUsage function from utils
354
+ const generateSchemaForUsage = generateSchemaFromUtils;
355
+
356
+ function generateRequestDataSchema<F>(
357
+ field: F,
358
+ ): InferSchemaFromField<F, FieldUsage.RequestData> {
359
+ return generateSchemaForUsage<F, FieldUsage.RequestData>(
360
+ field,
361
+ FieldUsage.RequestData,
362
+ );
363
+ }
364
+
365
+ function generateRequestUrlSchema<F>(
366
+ field: F,
367
+ ): InferSchemaFromField<F, FieldUsage.RequestUrlParams> {
368
+ return generateSchemaForUsage<F, FieldUsage.RequestUrlParams>(
369
+ field,
370
+ FieldUsage.RequestUrlParams,
371
+ );
372
+ }
373
+
374
+ function generateResponseSchema<F>(
375
+ field: F,
376
+ ): InferSchemaFromField<F, FieldUsage.Response> {
377
+ return generateSchemaForUsage<F, FieldUsage.Response>(
378
+ field,
379
+ FieldUsage.Response,
380
+ );
381
+ }
382
+
383
+ export type CreateApiEndpoint<
384
+ TExampleKey extends string,
385
+ TMethod extends Methods,
386
+ TUserRoleValue extends readonly UserRoleValue[],
387
+ TScopedTranslationKey extends string,
388
+ TFields extends UnifiedField<string, z.ZodTypeAny>,
389
+ RequestInput = ExtractInput<
390
+ InferSchemaFromField<TFields, FieldUsage.RequestData>
391
+ >,
392
+ RequestOutput = ExtractOutput<
393
+ InferSchemaFromField<TFields, FieldUsage.RequestData>
394
+ >,
395
+ ResponseInput = ExtractInput<
396
+ InferSchemaFromField<TFields, FieldUsage.Response>
397
+ >,
398
+ ResponseOutput = ExtractOutput<
399
+ InferSchemaFromField<TFields, FieldUsage.Response>
400
+ >,
401
+ UrlVariablesInput = ExtractInput<
402
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
403
+ >,
404
+ UrlVariablesOutput = ExtractOutput<
405
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
406
+ >,
407
+ > = ApiEndpoint<
408
+ TExampleKey,
409
+ TMethod,
410
+ TUserRoleValue,
411
+ TScopedTranslationKey,
412
+ TFields
413
+ > & {
414
+ readonly scopedTranslation: {
415
+ readonly ScopedTranslationKey: TScopedTranslationKey;
416
+ readonly scopedT: (locale: CountryLanguage) => {
417
+ t(key: TScopedTranslationKey, params?: TParams): TranslatedKeyType;
418
+ };
419
+ };
420
+ readonly requestSchema: InferSchemaFromField<TFields, FieldUsage.RequestData>;
421
+ readonly requestUrlPathParamsSchema: InferSchemaFromField<
422
+ TFields,
423
+ FieldUsage.RequestUrlParams
424
+ >;
425
+ readonly responseSchema: InferSchemaFromField<TFields, FieldUsage.Response>;
426
+
427
+ readonly requiresAuthentication: () => boolean;
428
+
429
+ readonly types: {
430
+ RequestInput: RequestInput;
431
+ RequestOutput: RequestOutput;
432
+ ResponseInput: ResponseInput;
433
+ ResponseOutput: ResponseOutput;
434
+ UrlVariablesInput: UrlVariablesInput;
435
+ UrlVariablesOutput: UrlVariablesOutput;
436
+ Fields: TFields;
437
+ ExampleKey: TExampleKey;
438
+ Method: TMethod;
439
+ UserRoleValue: TUserRoleValue;
440
+ ScopedTranslationKey: TScopedTranslationKey;
441
+ };
442
+ };
443
+ /**
444
+ * Return type for createEndpoint with full type inference from fields
445
+ */
446
+ export type CreateEndpointReturnInMethod<
447
+ TExampleKey extends string,
448
+ TMethod extends Methods,
449
+ TUserRoleValue extends readonly UserRoleValue[],
450
+ TScopedTranslationKey extends string,
451
+ TFields extends UnifiedField<string, z.ZodTypeAny>,
452
+ > = {
453
+ readonly [KMethod in TMethod]: CreateApiEndpoint<
454
+ TExampleKey,
455
+ KMethod,
456
+ TUserRoleValue,
457
+ TScopedTranslationKey,
458
+ TFields
459
+ >;
460
+ };
461
+
462
+ /**
463
+ * Create an endpoint definition with perfect type inference from unified fields
464
+ * Returns both legacy format and new destructured format for maximum compatibility
465
+ *
466
+ * Translation key inference:
467
+ * - TScopedTranslationKey is inferred from scopedTranslation.ScopedTranslationKey when provided
468
+ * - Defaults to TranslationKey (global keys) when scopedTranslation is not provided
469
+ */
470
+ export function createEndpoint<
471
+ const TExampleKey extends string,
472
+ const TMethod extends Methods,
473
+ const TUserRoleValue extends readonly UserRoleValue[],
474
+ const TScopedTranslationKey extends string = TranslationKey,
475
+ TFields extends UnifiedField<string, z.ZodTypeAny> = UnifiedField<
476
+ TScopedTranslationKey,
477
+ z.ZodTypeAny
478
+ >,
479
+ >(
480
+ config: ApiEndpoint<
481
+ TExampleKey,
482
+ TMethod,
483
+ TUserRoleValue,
484
+ TScopedTranslationKey,
485
+ TFields
486
+ >,
487
+ ): CreateEndpointReturnInMethod<
488
+ TExampleKey,
489
+ TMethod,
490
+ TUserRoleValue,
491
+ TScopedTranslationKey,
492
+ TFields
493
+ > {
494
+ // Generate schemas from unified fields
495
+ const fields = config.fields;
496
+ const requestSchema = generateRequestDataSchema(fields);
497
+ const responseSchema = generateResponseSchema(fields);
498
+ const requestUrlSchema = generateRequestUrlSchema(fields);
499
+
500
+ function requiresAuthentication(): boolean {
501
+ // Endpoint requires authentication if PUBLIC role is NOT in the allowed roles
502
+ return !config.allowedRoles.includes(UserRole.PUBLIC);
503
+ }
504
+
505
+ // Default scopedTranslation when none provided - uses global TranslationKey with simpleT
506
+ const defaultScopedTranslation = {
507
+ ScopedTranslationKey: undefined as unknown as TScopedTranslationKey,
508
+ scopedT: (locale: CountryLanguage) => ({
509
+ t: (key: TScopedTranslationKey, params?: TParams) =>
510
+ simpleT(locale).t(key as TranslationKey, params) as TranslatedKeyType,
511
+ }),
512
+ };
513
+
514
+ // Create endpoint with proper type inference - preserve actual schema types for input/output differentiation
515
+ const endpointDefinition: CreateApiEndpoint<
516
+ TExampleKey,
517
+ TMethod,
518
+ TUserRoleValue,
519
+ TScopedTranslationKey,
520
+ TFields
521
+ > = {
522
+ method: config.method,
523
+ path: config.path,
524
+ title: config.title,
525
+ description: config.description,
526
+ category: config.category,
527
+ tags: config.tags,
528
+ fields: fields as typeof config.fields,
529
+ allowedRoles: config.allowedRoles,
530
+ examples: config.examples,
531
+ errorTypes: config.errorTypes,
532
+ successTypes: config.successTypes,
533
+ scopedTranslation: config.scopedTranslation ?? defaultScopedTranslation,
534
+ debug: config.debug,
535
+ aliases: config.aliases,
536
+ cli: config.cli,
537
+ credits: config.credits,
538
+ icon: config.icon,
539
+ options: config.options,
540
+ requestSchema,
541
+ responseSchema,
542
+ requestUrlPathParamsSchema: requestUrlSchema,
543
+ requiresAuthentication,
544
+ types: {
545
+ RequestInput: undefined! as ExtractInput<
546
+ InferSchemaFromField<TFields, FieldUsage.RequestData>
547
+ >,
548
+ RequestOutput: undefined! as ExtractOutput<
549
+ InferSchemaFromField<TFields, FieldUsage.RequestData>
550
+ >,
551
+ ResponseInput: undefined! as ExtractInput<
552
+ InferSchemaFromField<TFields, FieldUsage.Response>
553
+ >,
554
+ ResponseOutput: undefined! as ExtractOutput<
555
+ InferSchemaFromField<TFields, FieldUsage.Response>
556
+ >,
557
+ UrlVariablesInput: undefined! as ExtractInput<
558
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
559
+ >,
560
+ UrlVariablesOutput: undefined! as ExtractOutput<
561
+ InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
562
+ >,
563
+ Fields: undefined! as TFields,
564
+ ExampleKey: undefined! as TExampleKey,
565
+ Method: undefined! as TMethod,
566
+ UserRoleValue: undefined! as TUserRoleValue,
567
+ ScopedTranslationKey: undefined! as TScopedTranslationKey,
568
+ },
569
+ };
570
+
571
+ // Return the method-keyed object with proper type inference
572
+ return {
573
+ [config.method]: endpointDefinition,
574
+ } as CreateEndpointReturnInMethod<
575
+ TExampleKey,
576
+ TMethod,
577
+ TUserRoleValue,
578
+ TScopedTranslationKey,
579
+ TFields
580
+ >;
581
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Endpoint to Metadata Converter
3
+ * Shared conversion logic for all platforms
4
+ * Eliminates duplication across MCP, AI, CLI converters
5
+ * Pure logic - no server dependencies
6
+ */
7
+
8
+ import { z } from "zod";
9
+
10
+ /**
11
+ * Convert Zod schema to JSON Schema
12
+ * z.toJSONSchema automatically handles transforms and refinements
13
+ * Post-processes to make fields with defaults optional (not required)
14
+ */
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ export function zodSchemaToJsonSchema(schema: z.ZodTypeAny): any {
17
+ try {
18
+ // z.toJSONSchema automatically strips transforms and refinements
19
+ // No manual stripping needed
20
+ const jsonSchema = z.toJSONSchema(schema, {
21
+ target: "draft-7",
22
+ });
23
+
24
+ // Post-process: Remove fields with default values from required array
25
+ // Fields with defaults should be optional in tool schemas
26
+ if (
27
+ jsonSchema &&
28
+ typeof jsonSchema === "object" &&
29
+ jsonSchema.type === "object" &&
30
+ Array.isArray(jsonSchema.required) &&
31
+ jsonSchema.properties &&
32
+ typeof jsonSchema.properties === "object"
33
+ ) {
34
+ jsonSchema.required = jsonSchema.required.filter((fieldName: string) => {
35
+ const field = jsonSchema.properties[fieldName];
36
+ // Keep field as required only if it doesn't have a default value
37
+ return !field || !("default" in field);
38
+ });
39
+
40
+ // Remove required array if it's empty
41
+ if (jsonSchema.required.length === 0) {
42
+ delete jsonSchema.required;
43
+ }
44
+ }
45
+
46
+ return jsonSchema;
47
+ } catch {
48
+ return {
49
+ type: "object",
50
+ };
51
+ }
52
+ }