@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,534 @@
1
+ /**
2
+ * Schema-Driven UI Handler
3
+ * Generates CLI interfaces from Zod schemas in endpoint definitions
4
+ * Integrates with existing CLI handler system
5
+ */
6
+
7
+ import { checkbox, confirm, input, select } from "@inquirer/prompts";
8
+ import { z } from "zod";
9
+
10
+ /**
11
+ * Zod shape type for object schemas
12
+ */
13
+ interface ZodShape {
14
+ [key: string]: z.ZodTypeAny;
15
+ }
16
+
17
+ /**
18
+ * Zod check constraint
19
+ */
20
+ interface ZodCheck {
21
+ kind: string;
22
+ value?: number;
23
+ message?: string;
24
+ }
25
+
26
+ /**
27
+ * Zod with internal _def property
28
+ */
29
+ interface ZodInternal {
30
+ _def: {
31
+ innerType?: z.ZodTypeAny;
32
+ defaultValue?: () => FormFieldValue;
33
+ description?: string;
34
+ checks?: ZodCheck[];
35
+ };
36
+ }
37
+
38
+ /**
39
+ * Type guard to check if a Zod schema has internal _def property
40
+ */
41
+ function hasZodDef(schema: z.ZodTypeAny): schema is z.ZodTypeAny & ZodInternal {
42
+ return "_def" in schema && typeof schema._def === "object";
43
+ }
44
+
45
+ /**
46
+ * Valid form field value types
47
+ */
48
+ export type FormFieldValue =
49
+ | string
50
+ | number
51
+ | boolean
52
+ | string[]
53
+ | undefined
54
+ | null;
55
+
56
+ /**
57
+ * Schema field metadata for CLI rendering
58
+ */
59
+ export interface SchemaFieldMetadata {
60
+ name: string;
61
+ type: string;
62
+ required: boolean;
63
+ description?: string;
64
+ defaultValue?: FormFieldValue;
65
+ choices?: string[];
66
+ validation?: z.ZodTypeAny;
67
+ }
68
+
69
+ /**
70
+ * CLI form configuration
71
+ */
72
+ export interface CLIFormConfig {
73
+ title?: string;
74
+ description?: string;
75
+ fields: SchemaFieldMetadata[];
76
+ }
77
+
78
+ /**
79
+ * Schema-driven UI handler class
80
+ */
81
+ export class SchemaUIHandler {
82
+ /**
83
+ * Parse Zod schema into CLI field metadata
84
+ */
85
+ parseSchema(schema: z.ZodTypeAny, prefix = ""): SchemaFieldMetadata[] {
86
+ const fields: SchemaFieldMetadata[] = [];
87
+
88
+ if (schema instanceof z.ZodObject) {
89
+ const shape: ZodShape = schema.shape;
90
+
91
+ for (const key of Object.keys(shape)) {
92
+ const fieldSchema = shape[key];
93
+ if (fieldSchema && fieldSchema instanceof z.ZodType) {
94
+ const fieldName = prefix ? `${prefix}.${key}` : key;
95
+ const fieldMeta = this.parseFieldSchema(fieldName, fieldSchema);
96
+ fields.push(fieldMeta);
97
+ }
98
+ }
99
+ } else if (
100
+ schema instanceof z.ZodUndefined ||
101
+ schema instanceof z.ZodVoid
102
+ ) {
103
+ // No fields for undefined schemas
104
+ return [];
105
+ } else {
106
+ // Handle single field schemas
107
+ const fieldMeta = this.parseFieldSchema(prefix || "value", schema);
108
+ fields.push(fieldMeta);
109
+ }
110
+
111
+ return fields;
112
+ }
113
+
114
+ /**
115
+ * Parse individual field schema
116
+ */
117
+ private parseFieldSchema(
118
+ name: string,
119
+ schema: z.ZodTypeAny,
120
+ ): SchemaFieldMetadata {
121
+ let required = true;
122
+ let defaultValue: FormFieldValue = undefined;
123
+ let currentSchema = schema;
124
+
125
+ // Unwrap optional schemas
126
+ while (currentSchema instanceof z.ZodOptional && hasZodDef(currentSchema)) {
127
+ required = false;
128
+ const innerType = currentSchema._def.innerType;
129
+ if (innerType && innerType instanceof z.ZodType) {
130
+ currentSchema = innerType;
131
+ } else {
132
+ break;
133
+ }
134
+ }
135
+
136
+ // Extract default value and unwrap default schemas
137
+ if (currentSchema instanceof z.ZodDefault && hasZodDef(currentSchema)) {
138
+ const defaultFn = currentSchema._def.defaultValue;
139
+ if (typeof defaultFn === "function") {
140
+ const value = defaultFn();
141
+ if (
142
+ typeof value === "string" ||
143
+ typeof value === "number" ||
144
+ typeof value === "boolean" ||
145
+ value === null ||
146
+ value === undefined ||
147
+ (Array.isArray(value) && value.every((v) => typeof v === "string"))
148
+ ) {
149
+ defaultValue = value;
150
+ }
151
+ }
152
+ const innerType = currentSchema._def.innerType;
153
+ if (innerType) {
154
+ currentSchema = innerType;
155
+ }
156
+ required = false;
157
+ }
158
+
159
+ const fieldType = this.getFieldType(currentSchema);
160
+ const choices = this.getFieldChoices(currentSchema);
161
+
162
+ // For number fields, use coercion schema for validation
163
+ let validationSchema: z.ZodTypeAny = currentSchema;
164
+ if (currentSchema instanceof z.ZodNumber) {
165
+ let numberSchema = z.coerce.number();
166
+ // Copy constraints from original schema if possible
167
+ if (hasZodDef(currentSchema)) {
168
+ const checks = (currentSchema._def as ZodInternal["_def"]).checks;
169
+ if (Array.isArray(checks)) {
170
+ for (const check of checks) {
171
+ if (check && typeof check === "object" && "kind" in check) {
172
+ const checkKind = check.kind;
173
+ const checkValue = check.value;
174
+ if (checkKind === "min" && typeof checkValue === "number") {
175
+ numberSchema = numberSchema.min(checkValue);
176
+ } else if (
177
+ checkKind === "max" &&
178
+ typeof checkValue === "number"
179
+ ) {
180
+ numberSchema = numberSchema.max(checkValue);
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ validationSchema = numberSchema;
187
+ }
188
+
189
+ return {
190
+ name,
191
+ type: fieldType,
192
+ required,
193
+ defaultValue,
194
+ choices,
195
+ validation: validationSchema,
196
+ description: this.getFieldDescription(currentSchema),
197
+ };
198
+ }
199
+
200
+ /**
201
+ * Get field type for CLI rendering
202
+ */
203
+ private getFieldType(schema: z.ZodTypeAny): string {
204
+ if (schema instanceof z.ZodString) {
205
+ return "input";
206
+ }
207
+ if (schema instanceof z.ZodNumber) {
208
+ return "number";
209
+ }
210
+ if (schema instanceof z.ZodBoolean) {
211
+ return "confirm";
212
+ }
213
+ if (schema instanceof z.ZodEnum) {
214
+ return "list";
215
+ }
216
+ if (schema instanceof z.ZodArray) {
217
+ return "checkbox";
218
+ } // Multi-select for arrays
219
+ if (schema instanceof z.ZodObject) {
220
+ return "object";
221
+ }
222
+ if (schema instanceof z.ZodDate) {
223
+ return "input";
224
+ } // Date as string input
225
+
226
+ return "input"; // Default to text input
227
+ }
228
+
229
+ /**
230
+ * Get field choices for enum/select fields
231
+ */
232
+ private getFieldChoices(schema: z.ZodTypeAny): string[] | undefined {
233
+ if (schema instanceof z.ZodEnum) {
234
+ const options = schema.options;
235
+ if (Array.isArray(options)) {
236
+ return options.filter((opt): opt is string => typeof opt === "string");
237
+ }
238
+ }
239
+
240
+ return undefined;
241
+ }
242
+
243
+ /**
244
+ * Get field description from schema
245
+ */
246
+ private getFieldDescription(schema: z.ZodTypeAny): string | undefined {
247
+ // Try to get description from schema._def.description
248
+ if (hasZodDef(schema) && "description" in schema._def) {
249
+ const desc = schema._def.description;
250
+ if (typeof desc === "string") {
251
+ return desc;
252
+ }
253
+ }
254
+
255
+ return undefined;
256
+ }
257
+
258
+ /**
259
+ * Generate CLI form from schema
260
+ */
261
+ async generateForm(
262
+ config: CLIFormConfig,
263
+ ): Promise<Record<string, FormFieldValue>> {
264
+ if (config.title) {
265
+ // eslint-disable-next-line i18next/no-literal-string
266
+ process.stdout.write(`\n📋 ${config.title}\n`);
267
+ }
268
+
269
+ if (config.description) {
270
+ // eslint-disable-next-line i18next/no-literal-string
271
+ process.stdout.write(` ${config.description}\n\n`);
272
+ }
273
+
274
+ if (config.fields.length === 0) {
275
+ // eslint-disable-next-line i18next/no-literal-string
276
+ process.stdout.write(" No input required.\n\n");
277
+ return {};
278
+ }
279
+
280
+ interface InquirerAnswer {
281
+ [key: string]: FormFieldValue;
282
+ }
283
+
284
+ const answers: InquirerAnswer = {};
285
+
286
+ for (const field of config.fields) {
287
+ const message = this.formatFieldMessage(field);
288
+ let value: FormFieldValue;
289
+
290
+ // Use appropriate prompt function based on field type
291
+ if (field.type === "confirm") {
292
+ value = await confirm({
293
+ message,
294
+ default: field.defaultValue as boolean | undefined,
295
+ });
296
+ } else if (field.type === "list" && field.choices) {
297
+ value = await select({
298
+ message,
299
+ choices: field.choices.map((choice) => ({
300
+ name: choice,
301
+ value: choice,
302
+ })),
303
+ default: field.defaultValue ? String(field.defaultValue) : undefined,
304
+ });
305
+ } else if (field.type === "checkbox" && field.choices) {
306
+ value = await checkbox({
307
+ message,
308
+ choices: field.choices.map((choice) => ({
309
+ name: choice,
310
+ value: choice,
311
+ })),
312
+ });
313
+ } else if (field.type === "number") {
314
+ const inputValue = await input({
315
+ message,
316
+ default: field.defaultValue?.toString(),
317
+ validate: field.validation
318
+ ? (inputStr): string | boolean => {
319
+ // First check if it's a valid number format
320
+ const trimmed = inputStr.trim();
321
+ if (trimmed === "" && !field.required) {
322
+ return true; // Allow empty for optional fields
323
+ }
324
+ const num = parseFloat(trimmed);
325
+ if (isNaN(num)) {
326
+ return "Please enter a valid number";
327
+ }
328
+ // Validate the parsed NUMBER against the schema
329
+ const validationResult = this.validateField(
330
+ num,
331
+ field.validation!,
332
+ );
333
+ return validationResult;
334
+ }
335
+ : (inputStr): string | boolean => {
336
+ const trimmed = inputStr.trim();
337
+ if (trimmed === "" && !field.required) {
338
+ return true;
339
+ }
340
+ const num = parseFloat(trimmed);
341
+ if (isNaN(num)) {
342
+ return "Please enter a valid number";
343
+ }
344
+ return true;
345
+ },
346
+ });
347
+ const num = parseFloat(inputValue);
348
+ value = isNaN(num) ? undefined : num;
349
+ } else {
350
+ // Default to input for string fields
351
+ value = await input({
352
+ message,
353
+ default: field.defaultValue?.toString(),
354
+ validate: field.validation
355
+ ? (inputStr): string | boolean =>
356
+ this.validateField(inputStr, field.validation!)
357
+ : undefined,
358
+ });
359
+ }
360
+
361
+ if (value !== undefined) {
362
+ answers[field.name] = value;
363
+ }
364
+ }
365
+
366
+ return this.processAnswers(answers, config.fields);
367
+ }
368
+
369
+ /**
370
+ * Format field message for CLI prompt
371
+ */
372
+ private formatFieldMessage(field: SchemaFieldMetadata): string {
373
+ let message = field.name;
374
+
375
+ if (field.description) {
376
+ // eslint-disable-next-line i18next/no-literal-string
377
+ message += ` (${field.description})`;
378
+ }
379
+
380
+ if (field.required) {
381
+ message += " *";
382
+ }
383
+
384
+ return message;
385
+ }
386
+
387
+ /**
388
+ * Validate field input against Zod schema
389
+ */
390
+ private validateField(
391
+ input: FormFieldValue,
392
+ schema: z.ZodTypeAny,
393
+ ): boolean | string {
394
+ try {
395
+ schema.parse(input);
396
+ return true;
397
+ } catch (error) {
398
+ if (error instanceof z.ZodError) {
399
+ const issues = error.issues;
400
+ if (Array.isArray(issues) && issues.length > 0) {
401
+ const firstIssue = issues[0];
402
+ if (firstIssue && typeof firstIssue.message === "string") {
403
+ return firstIssue.message;
404
+ }
405
+ }
406
+ // eslint-disable-next-line i18next/no-literal-string
407
+ return "Invalid input";
408
+ }
409
+ // eslint-disable-next-line i18next/no-literal-string
410
+ return "Validation failed";
411
+ }
412
+ }
413
+
414
+ /**
415
+ * Process form answers and convert types
416
+ */
417
+ private processAnswers(
418
+ answers: Record<string, FormFieldValue>,
419
+ fields: SchemaFieldMetadata[],
420
+ ): Record<string, FormFieldValue> {
421
+ const processed: Record<string, FormFieldValue> = {};
422
+
423
+ for (const field of fields) {
424
+ const value = answers[field.name];
425
+
426
+ if (value !== undefined && value !== null && value !== "") {
427
+ processed[field.name] = this.convertFieldValue(value, field);
428
+ } else if (field.required) {
429
+ // This shouldn't happen due to validation, but handle it by returning empty object
430
+ // Since this is internal utility code, we'll let the caller handle validation
431
+
432
+ processed[field.name] = undefined;
433
+ }
434
+ }
435
+
436
+ return processed;
437
+ }
438
+
439
+ /**
440
+ * Convert field value to appropriate type based on Zod schema
441
+ */
442
+ private convertFieldValue(
443
+ value: FormFieldValue,
444
+ field: SchemaFieldMetadata,
445
+ ): FormFieldValue {
446
+ // Use the validation schema to determine the actual type
447
+ if (field.validation) {
448
+ let schema = field.validation;
449
+
450
+ // Unwrap optional and default schemas to get to the core type
451
+ while (
452
+ schema instanceof z.ZodOptional ||
453
+ schema instanceof z.ZodDefault
454
+ ) {
455
+ if (hasZodDef(schema)) {
456
+ const innerType = schema._def.innerType;
457
+ if (innerType) {
458
+ schema = innerType;
459
+ } else {
460
+ break;
461
+ }
462
+ } else {
463
+ break;
464
+ }
465
+ }
466
+
467
+ // Check if schema is a ZodNumber
468
+ if (schema instanceof z.ZodNumber) {
469
+ if (typeof value === "number") {
470
+ return value;
471
+ }
472
+ if (typeof value === "string") {
473
+ const parsed = parseFloat(value);
474
+ return isNaN(parsed) ? undefined : parsed;
475
+ }
476
+ return undefined;
477
+ }
478
+
479
+ // Check if schema is a ZodBoolean
480
+ if (schema instanceof z.ZodBoolean) {
481
+ return Boolean(value);
482
+ }
483
+
484
+ // Check if schema is a ZodArray
485
+ if (schema instanceof z.ZodArray && Array.isArray(value)) {
486
+ return value.filter((item): item is string => typeof item === "string");
487
+ }
488
+ }
489
+
490
+ // Fallback to field type
491
+ if (field.type === "number") {
492
+ if (typeof value === "number") {
493
+ return value;
494
+ }
495
+ if (typeof value === "string") {
496
+ const parsed = parseFloat(value);
497
+ return isNaN(parsed) ? undefined : parsed;
498
+ }
499
+ return undefined;
500
+ }
501
+
502
+ if (field.type === "confirm") {
503
+ return Boolean(value);
504
+ }
505
+
506
+ if (field.type === "checkbox" && Array.isArray(value)) {
507
+ return value.filter((item): item is string => typeof item === "string");
508
+ }
509
+
510
+ // Handle string fields
511
+ if (typeof value === "string") {
512
+ return value;
513
+ }
514
+
515
+ // Handle boolean values
516
+ if (typeof value === "boolean") {
517
+ return value;
518
+ }
519
+
520
+ // Handle null/undefined
521
+ if (value === null) {
522
+ return null;
523
+ }
524
+
525
+ if (value === undefined) {
526
+ return undefined;
527
+ }
528
+
529
+ // Fallback for any other type
530
+ return undefined;
531
+ }
532
+ }
533
+
534
+ export const schemaUIHandler = new SchemaUIHandler();
@@ -0,0 +1,42 @@
1
+ import { translations as cliTranslations } from "../../cli/i18n/de";
2
+ import { translations as mcpTranslations } from "../../mcp/i18n/de";
3
+ import type { translations as enTranslations } from "../en";
4
+
5
+ export const translations: typeof enTranslations = {
6
+ cli: cliTranslations,
7
+ mcp: mcpTranslations,
8
+ shared: {
9
+ permissions: {
10
+ publicUsersCannotAccess:
11
+ "Öffentliche Benutzer können nicht auf diesen authentifizierten Endpunkt zugreifen",
12
+ insufficientPermissions:
13
+ "Unzureichende Berechtigungen für den Zugriff auf diesen Endpunkt",
14
+ errors: {
15
+ platformAccessDenied:
16
+ "Zugriff verweigert für {{platform}} Plattform: {{reason}}",
17
+ insufficientRoles:
18
+ "Unzureichende Rollen. Benutzer hat: {{userRoles}}. Erforderlich: {{requiredRoles}}",
19
+ definitionError: "Endpunkt-Definitionsfehler: {{error}}",
20
+ },
21
+ },
22
+ endpoints: {
23
+ definition: {
24
+ loader: {
25
+ errors: {
26
+ endpointNotFound: "Endpunkt '{{identifier}}' nicht gefunden",
27
+ loadFailed:
28
+ "Fehler beim Laden des Endpunkts '{{identifier}}': {{error}}",
29
+ batchLoadFailed:
30
+ "Batch-Laden fehlgeschlagen: {{failedCount}} von {{totalCount}} Endpunkten fehlgeschlagen",
31
+ },
32
+ },
33
+ },
34
+ },
35
+ },
36
+ widgets: {
37
+ chart: {
38
+ noDataAvailable: "Keine Daten verfügbar",
39
+ noDataToDisplay: "Keine Daten zum Anzeigen",
40
+ },
41
+ },
42
+ };
@@ -0,0 +1,40 @@
1
+ import { translations as cliTranslations } from "../../cli/i18n/en";
2
+ import { translations as mcpTranslations } from "../../mcp/i18n/en";
3
+
4
+ export const translations = {
5
+ cli: cliTranslations,
6
+ mcp: mcpTranslations,
7
+ shared: {
8
+ permissions: {
9
+ publicUsersCannotAccess:
10
+ "Public users cannot access this authenticated endpoint",
11
+ insufficientPermissions:
12
+ "Insufficient permissions to access this endpoint",
13
+ errors: {
14
+ platformAccessDenied:
15
+ "Access denied for {{platform}} platform: {{reason}}",
16
+ insufficientRoles:
17
+ "Insufficient roles. User has: {{userRoles}}. Required: {{requiredRoles}}",
18
+ definitionError: "Endpoint definition error: {{error}}",
19
+ },
20
+ },
21
+ endpoints: {
22
+ definition: {
23
+ loader: {
24
+ errors: {
25
+ endpointNotFound: "Endpoint '{{identifier}}' not found",
26
+ loadFailed: "Failed to load endpoint '{{identifier}}': {{error}}",
27
+ batchLoadFailed:
28
+ "Batch load failed: {{failedCount}} of {{totalCount}} endpoints failed",
29
+ },
30
+ },
31
+ },
32
+ },
33
+ },
34
+ widgets: {
35
+ chart: {
36
+ noDataAvailable: "No data available",
37
+ noDataToDisplay: "No data to display",
38
+ },
39
+ },
40
+ };
@@ -0,0 +1,43 @@
1
+ import { translations as cliTranslations } from "../../cli/i18n/pl";
2
+ import { translations as mcpTranslations } from "../../mcp/i18n/pl";
3
+ import type { translations as enTranslations } from "../en";
4
+
5
+ export const translations: typeof enTranslations = {
6
+ cli: cliTranslations,
7
+ mcp: mcpTranslations,
8
+ shared: {
9
+ permissions: {
10
+ publicUsersCannotAccess:
11
+ "Użytkownicy publiczni nie mogą uzyskać dostępu do tego uwierzytelnionego punktu końcowego",
12
+ insufficientPermissions:
13
+ "Niewystarczające uprawnienia do dostępu do tego punktu końcowego",
14
+ errors: {
15
+ platformAccessDenied:
16
+ "Odmowa dostępu dla platformy {{platform}}: {{reason}}",
17
+ insufficientRoles:
18
+ "Niewystarczające role. Użytkownik ma: {{userRoles}}. Wymagane: {{requiredRoles}}",
19
+ definitionError: "Błąd definicji punktu końcowego: {{error}}",
20
+ },
21
+ },
22
+ endpoints: {
23
+ definition: {
24
+ loader: {
25
+ errors: {
26
+ endpointNotFound:
27
+ "Punkt końcowy '{{identifier}}' nie został znaleziony",
28
+ loadFailed:
29
+ "Nie udało się załadować punktu końcowego '{{identifier}}': {{error}}",
30
+ batchLoadFailed:
31
+ "Ładowanie wsadowe nie powiodło się: {{failedCount}} z {{totalCount}} punktów końcowych nie powiodło się",
32
+ },
33
+ },
34
+ },
35
+ },
36
+ },
37
+ widgets: {
38
+ chart: {
39
+ noDataAvailable: "Brak dostępnych danych",
40
+ noDataToDisplay: "Brak danych do wyświetlenia",
41
+ },
42
+ },
43
+ };