@next-vibe/checker 1.0.52 → 3.0.0

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 (430) hide show
  1. package/LICENSE +669 -5
  2. package/README.md +179 -200
  3. package/check.config.ts +85 -16
  4. package/generated/alias-map.ts +30 -0
  5. package/generated/endpoint.ts +75 -0
  6. package/{src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts → oxlint-plugins/i18n.ts} +45 -9
  7. package/{src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts → oxlint-plugins/jsx-capitalization.ts} +84 -17
  8. package/{src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts → oxlint-plugins/restricted-syntax.ts} +40 -14
  9. package/package.json +28 -132
  10. package/.dist/LICENSE +0 -674
  11. package/.dist/README.md +0 -257
  12. package/.dist/bin/vibe-runtime.js +0 -58166
  13. package/.dist/bin/vibe-runtime.js.map +0 -451
  14. package/.dist/oxlint-plugins/i18n.js +0 -381
  15. package/.dist/oxlint-plugins/jsx-capitalization.js +0 -436
  16. package/.dist/oxlint-plugins/restricted-syntax.js +0 -409
  17. package/src/app/api/[locale]/LICENSE +0 -674
  18. package/src/app/api/[locale]/i18n/de/index.ts +0 -15
  19. package/src/app/api/[locale]/i18n/en/index.ts +0 -14
  20. package/src/app/api/[locale]/i18n/pl/index.ts +0 -13
  21. package/src/app/api/[locale]/shared/i18n/de/index.ts +0 -85
  22. package/src/app/api/[locale]/shared/i18n/en/index.ts +0 -83
  23. package/src/app/api/[locale]/shared/i18n/pl/index.ts +0 -85
  24. package/src/app/api/[locale]/shared/stats-filtering.ts +0 -174
  25. package/src/app/api/[locale]/shared/types/common.schema.ts +0 -55
  26. package/src/app/api/[locale]/shared/types/response.schema.ts +0 -411
  27. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +0 -315
  28. package/src/app/api/[locale]/shared/types/utils.ts +0 -187
  29. package/src/app/api/[locale]/shared/utils/base64.ts +0 -46
  30. package/src/app/api/[locale]/shared/utils/env-util.ts +0 -36
  31. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +0 -21
  32. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +0 -19
  33. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +0 -21
  34. package/src/app/api/[locale]/shared/utils/index.ts +0 -11
  35. package/src/app/api/[locale]/shared/utils/object-path.ts +0 -41
  36. package/src/app/api/[locale]/shared/utils/object.test.ts +0 -82
  37. package/src/app/api/[locale]/shared/utils/object.ts +0 -73
  38. package/src/app/api/[locale]/shared/utils/parse-error.ts +0 -134
  39. package/src/app/api/[locale]/shared/utils/parse-json.ts +0 -62
  40. package/src/app/api/[locale]/shared/utils/time.ts +0 -46
  41. package/src/app/api/[locale]/shared/utils/validation.ts +0 -117
  42. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +0 -115
  43. package/src/app/api/[locale]/system/builder/definition.ts +0 -1750
  44. package/src/app/api/[locale]/system/builder/enum.ts +0 -78
  45. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +0 -645
  46. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +0 -653
  47. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +0 -643
  48. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +0 -178
  49. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +0 -538
  50. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +0 -250
  51. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +0 -170
  52. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +0 -146
  53. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +0 -97
  54. package/src/app/api/[locale]/system/builder/repository/constants.ts +0 -125
  55. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +0 -67
  56. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +0 -90
  57. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +0 -75
  58. package/src/app/api/[locale]/system/builder/repository/index.ts +0 -2
  59. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +0 -143
  60. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +0 -104
  61. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +0 -79
  62. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +0 -109
  63. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +0 -277
  64. package/src/app/api/[locale]/system/builder/route.ts +0 -21
  65. package/src/app/api/[locale]/system/builder/test-files/file1.ts +0 -2
  66. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +0 -10
  67. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +0 -16
  68. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +0 -2
  69. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +0 -38
  70. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +0 -8
  71. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +0 -24
  72. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +0 -6
  73. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +0 -18
  74. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +0 -7
  75. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +0 -27
  76. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +0 -19
  77. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +0 -1
  78. package/src/app/api/[locale]/system/builder/test-files/test3.css +0 -1
  79. package/src/app/api/[locale]/system/check/config/create/definition.ts +0 -266
  80. package/src/app/api/[locale]/system/check/config/create/i18n/de/index.ts +0 -151
  81. package/src/app/api/[locale]/system/check/config/create/i18n/en/index.ts +0 -146
  82. package/src/app/api/[locale]/system/check/config/create/i18n/pl/index.ts +0 -148
  83. package/src/app/api/[locale]/system/check/config/create/repository.ts +0 -269
  84. package/src/app/api/[locale]/system/check/config/create/route.ts +0 -21
  85. package/src/app/api/[locale]/system/check/config/repository.ts +0 -846
  86. package/src/app/api/[locale]/system/check/config/shared.ts +0 -364
  87. package/src/app/api/[locale]/system/check/config/types.ts +0 -610
  88. package/src/app/api/[locale]/system/check/config/utils.ts +0 -155
  89. package/src/app/api/[locale]/system/check/i18n/de/index.ts +0 -19
  90. package/src/app/api/[locale]/system/check/i18n/en/index.ts +0 -18
  91. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +0 -19
  92. package/src/app/api/[locale]/system/check/lint/definition.ts +0 -383
  93. package/src/app/api/[locale]/system/check/lint/enum.ts +0 -34
  94. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +0 -160
  95. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +0 -158
  96. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +0 -160
  97. package/src/app/api/[locale]/system/check/lint/repository.ts +0 -844
  98. package/src/app/api/[locale]/system/check/lint/route.ts +0 -21
  99. package/src/app/api/[locale]/system/check/oxlint/README.md +0 -190
  100. package/src/app/api/[locale]/system/check/oxlint/definition.ts +0 -375
  101. package/src/app/api/[locale]/system/check/oxlint/enum.ts +0 -34
  102. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +0 -166
  103. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +0 -164
  104. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +0 -166
  105. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +0 -269
  106. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +0 -74
  107. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +0 -283
  108. package/src/app/api/[locale]/system/check/oxlint/repository.ts +0 -553
  109. package/src/app/api/[locale]/system/check/oxlint/route.ts +0 -21
  110. package/src/app/api/[locale]/system/check/oxlint/types.ts +0 -191
  111. package/src/app/api/[locale]/system/check/test-project/.vscode/settings.json +0 -48
  112. package/src/app/api/[locale]/system/check/test-project/bun.lock +0 -640
  113. package/src/app/api/[locale]/system/check/test-project/check.config.ts +0 -955
  114. package/src/app/api/[locale]/system/check/test-project/package.json +0 -17
  115. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +0 -6
  116. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +0 -18
  117. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +0 -107
  118. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +0 -37
  119. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +0 -135
  120. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +0 -113
  121. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +0 -127
  122. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +0 -92
  123. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +0 -73
  124. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +0 -95
  125. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +0 -61
  126. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +0 -78
  127. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +0 -27
  128. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +0 -22
  129. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +0 -1
  130. package/src/app/api/[locale]/system/check/typecheck/definition.ts +0 -328
  131. package/src/app/api/[locale]/system/check/typecheck/enum.ts +0 -34
  132. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +0 -148
  133. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +0 -145
  134. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +0 -148
  135. package/src/app/api/[locale]/system/check/typecheck/repository.ts +0 -863
  136. package/src/app/api/[locale]/system/check/typecheck/route.ts +0 -21
  137. package/src/app/api/[locale]/system/check/typecheck/utils.ts +0 -160
  138. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +0 -448
  139. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +0 -63
  140. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +0 -164
  141. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +0 -161
  142. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +0 -163
  143. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +0 -516
  144. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +0 -1010
  145. package/src/app/api/[locale]/system/check/vibe-check/route.ts +0 -21
  146. package/src/app/api/[locale]/system/generated/endpoint.ts +0 -274
  147. package/src/app/api/[locale]/system/generated/endpoints.ts +0 -138
  148. package/src/app/api/[locale]/system/generated/route-handlers.ts +0 -213
  149. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +0 -167
  150. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +0 -48
  151. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +0 -48
  152. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +0 -50
  153. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +0 -286
  154. package/src/app/api/[locale]/system/generators/endpoint/route.ts +0 -18
  155. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +0 -246
  156. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +0 -54
  157. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +0 -52
  158. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +0 -54
  159. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +0 -425
  160. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +0 -368
  161. package/src/app/api/[locale]/system/generators/endpoints/route.ts +0 -17
  162. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +0 -166
  163. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +0 -71
  164. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +0 -69
  165. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +0 -71
  166. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +0 -279
  167. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +0 -18
  168. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +0 -327
  169. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +0 -96
  170. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +0 -94
  171. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +0 -96
  172. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +0 -240
  173. package/src/app/api/[locale]/system/generators/generate-all/route.ts +0 -19
  174. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +0 -15
  175. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +0 -14
  176. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +0 -15
  177. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +0 -178
  178. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +0 -48
  179. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +0 -48
  180. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +0 -50
  181. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +0 -267
  182. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +0 -14
  183. package/src/app/api/[locale]/system/generators/shared/utils.ts +0 -215
  184. package/src/app/api/[locale]/system/help/definition.ts +0 -433
  185. package/src/app/api/[locale]/system/help/i18n/de/index.ts +0 -263
  186. package/src/app/api/[locale]/system/help/i18n/en/index.ts +0 -259
  187. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +0 -262
  188. package/src/app/api/[locale]/system/help/interactive/definition.ts +0 -122
  189. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +0 -21
  190. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +0 -19
  191. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +0 -21
  192. package/src/app/api/[locale]/system/help/interactive/repository.ts +0 -1131
  193. package/src/app/api/[locale]/system/help/interactive/route.ts +0 -43
  194. package/src/app/api/[locale]/system/help/list/definition.ts +0 -362
  195. package/src/app/api/[locale]/system/help/list/repository.ts +0 -99
  196. package/src/app/api/[locale]/system/help/list/route.ts +0 -21
  197. package/src/app/api/[locale]/system/help/repository.ts +0 -238
  198. package/src/app/api/[locale]/system/help/route.ts +0 -16
  199. package/src/app/api/[locale]/system/i18n/de/index.ts +0 -67
  200. package/src/app/api/[locale]/system/i18n/en/index.ts +0 -66
  201. package/src/app/api/[locale]/system/i18n/pl/index.ts +0 -67
  202. package/src/app/api/[locale]/system/release-tool/definition.ts +0 -2925
  203. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +0 -782
  204. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +0 -779
  205. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +0 -781
  206. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +0 -122
  207. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +0 -205
  208. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +0 -540
  209. package/src/app/api/[locale]/system/release-tool/repository/config.ts +0 -106
  210. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +0 -406
  211. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +0 -496
  212. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +0 -378
  213. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +0 -96
  214. package/src/app/api/[locale]/system/release-tool/repository/index.ts +0 -1
  215. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +0 -575
  216. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +0 -150
  217. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +0 -241
  218. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +0 -413
  219. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +0 -283
  220. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +0 -1084
  221. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +0 -132
  222. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +0 -603
  223. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +0 -265
  224. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +0 -275
  225. package/src/app/api/[locale]/system/release-tool/route.ts +0 -21
  226. package/src/app/api/[locale]/system/unified-interface/README.md +0 -328
  227. package/src/app/api/[locale]/system/unified-interface/cli/README.md +0 -349
  228. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +0 -82
  229. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +0 -120
  230. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +0 -244
  231. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +0 -24
  232. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +0 -159
  233. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +0 -158
  234. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +0 -159
  235. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +0 -573
  236. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +0 -128
  237. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +0 -155
  238. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +0 -423
  239. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +0 -252
  240. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +0 -901
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +0 -12
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +0 -11
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +0 -12
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +0 -235
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +0 -54
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +0 -52
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +0 -54
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +0 -444
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +0 -25
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +0 -159
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +0 -61
  252. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +0 -59
  253. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +0 -61
  254. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +0 -181
  255. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +0 -22
  256. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +0 -164
  257. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +0 -54
  258. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +0 -52
  259. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +0 -54
  260. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +0 -195
  261. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +0 -24
  262. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +0 -180
  263. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +0 -54
  264. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +0 -52
  265. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +0 -54
  266. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +0 -105
  267. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +0 -22
  268. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +0 -264
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +0 -246
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +0 -305
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +0 -116
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +0 -67
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +0 -65
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +0 -67
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +0 -70
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +0 -37
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +0 -52
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +0 -285
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +0 -71
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +0 -281
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +0 -83
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +0 -175
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +0 -61
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +0 -518
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +0 -75
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +0 -357
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +0 -93
  288. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +0 -49
  289. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +0 -63
  290. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +0 -667
  291. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +0 -78
  292. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +0 -99
  293. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +0 -54
  294. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +0 -46
  295. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +0 -123
  296. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +0 -269
  297. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +0 -114
  298. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +0 -138
  299. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +0 -59
  300. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +0 -76
  301. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +0 -37
  302. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +0 -403
  303. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +0 -504
  304. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +0 -39
  305. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +0 -37
  306. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +0 -39
  307. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +0 -114
  308. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +0 -136
  309. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +0 -180
  310. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +0 -178
  311. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +0 -180
  312. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +0 -305
  313. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +0 -124
  314. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +0 -44
  315. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +0 -14
  316. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +0 -291
  317. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +0 -155
  318. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +0 -191
  319. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +0 -247
  320. package/src/app/api/[locale]/system/unified-interface/react/icons.tsx +0 -346
  321. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +0 -1413
  322. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +0 -525
  323. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +0 -52
  324. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +0 -144
  325. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +0 -262
  326. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +0 -656
  327. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +0 -220
  328. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +0 -313
  329. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +0 -182
  330. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +0 -173
  331. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +0 -58
  332. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +0 -45
  333. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +0 -43
  334. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +0 -58
  335. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +0 -107
  336. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +0 -336
  337. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +0 -385
  338. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +0 -1827
  339. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +0 -108
  340. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +0 -288
  341. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +0 -114
  342. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +0 -155
  343. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +0 -85
  344. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +0 -167
  345. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +0 -82
  346. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +0 -34
  347. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +0 -1
  348. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +0 -284
  349. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +0 -1101
  350. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +0 -383
  351. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +0 -34
  352. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +0 -76
  353. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +0 -72
  354. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +0 -27
  355. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +0 -80
  356. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +0 -225
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +0 -251
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +0 -1060
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +0 -70
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +0 -75
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +0 -69
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +0 -86
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +0 -283
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +0 -190
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +0 -114
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +0 -71
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +0 -228
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +0 -119
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +0 -367
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +0 -81
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +0 -71
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +0 -79
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +0 -426
  374. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +0 -38
  375. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +0 -112
  376. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +0 -110
  377. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +0 -66
  378. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +0 -79
  379. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +0 -159
  380. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +0 -225
  381. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +0 -85
  382. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +0 -63
  383. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +0 -73
  384. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +0 -96
  385. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +0 -57
  386. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +0 -236
  387. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +0 -120
  388. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +0 -414
  389. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +0 -37
  390. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +0 -427
  391. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +0 -204
  392. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +0 -199
  393. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +0 -203
  394. package/src/app/api/[locale]/user/auth/types.ts +0 -45
  395. package/src/app/api/[locale]/user/enum.ts +0 -64
  396. package/src/app/api/[locale]/user/i18n/de/index.ts +0 -75
  397. package/src/app/api/[locale]/user/i18n/en/index.ts +0 -74
  398. package/src/app/api/[locale]/user/i18n/pl/index.ts +0 -75
  399. package/src/app/api/[locale]/user/types.ts +0 -111
  400. package/src/app/api/[locale]/user/user-roles/enum.ts +0 -103
  401. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +0 -85
  402. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +0 -83
  403. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +0 -85
  404. package/src/app/api/[locale]/user/user-roles/types.ts +0 -32
  405. package/src/app/api/i18n/de/index.ts +0 -6
  406. package/src/app/api/i18n/en/index.ts +0 -5
  407. package/src/app/api/i18n/pl/index.ts +0 -5
  408. package/src/app/i18n/de/index.ts +0 -18
  409. package/src/app/i18n/en/index.ts +0 -18
  410. package/src/app/i18n/pl/index.ts +0 -17
  411. package/src/config/constants.ts +0 -8
  412. package/src/config/debug.ts +0 -30
  413. package/src/config/env-client.ts +0 -57
  414. package/src/config/env.ts +0 -56
  415. package/src/config/i18n/de/index.ts +0 -3
  416. package/src/config/i18n/en/index.ts +0 -51
  417. package/src/config/i18n/pl/index.ts +0 -3
  418. package/src/i18n/core/config.ts +0 -225
  419. package/src/i18n/core/language-utils.ts +0 -226
  420. package/src/i18n/core/localization-utils.ts +0 -394
  421. package/src/i18n/core/scoped-translation.ts +0 -104
  422. package/src/i18n/core/shared-component.tsx +0 -28
  423. package/src/i18n/core/shared-translation-utils.ts +0 -97
  424. package/src/i18n/core/shared.ts +0 -44
  425. package/src/i18n/core/static-types.ts +0 -64
  426. package/src/i18n/core/translation-utils.ts +0 -186
  427. package/src/i18n/de/index.ts +0 -8
  428. package/src/i18n/en/index.ts +0 -7
  429. package/src/i18n/index.ts +0 -100
  430. package/src/i18n/pl/index.ts +0 -7
@@ -1,656 +0,0 @@
1
- /**
2
- * Permissions Registry
3
- * Single source for ALL permission and access control logic
4
- * Consolidates platform access, user role checks, and endpoint filtering
5
- * Used by all adapters (definitions, definition, route-execution)
6
- */
7
-
8
- import type { ResponseType } from "next-vibe/shared/types/response.schema";
9
- import { ErrorResponseTypes } from "next-vibe/shared/types/response.schema";
10
-
11
- import type { JwtPayloadType } from "@/app/api/[locale]/user/auth/types";
12
- import {
13
- filterPlatformMarkers,
14
- filterUserPermissionRoles,
15
- PlatformMarker,
16
- type PlatformMarkerValue,
17
- UserPermissionRole,
18
- type UserPermissionRoleValue,
19
- UserRole,
20
- type UserRoleValue,
21
- } from "@/app/api/[locale]/user/user-roles/enum";
22
- import { envClient } from "@/config/env-client";
23
-
24
- import type { EndpointLogger } from "../../logger/endpoint";
25
- import type { CreateApiEndpointAny } from "../../types/endpoint";
26
- import { Platform } from "../../types/platform";
27
- import type { InferJwtPayloadTypeFromRoles } from "../route/handler";
28
-
29
- /**
30
- * Platform access check result
31
- */
32
- interface PlatformAccessResult {
33
- allowed: boolean;
34
- reason?: string;
35
- blockedByRole?: UserRoleValue;
36
- }
37
-
38
- /**
39
- * User role check result
40
- */
41
- interface UserRoleCheckResult {
42
- allowed: boolean;
43
- reason?: string;
44
- userRoles?: readonly (typeof UserPermissionRoleValue)[];
45
- requiredRoles?: readonly (typeof UserPermissionRoleValue)[];
46
- }
47
-
48
- /**
49
- * Interface for Permissions Registry
50
- * Public API - only methods that should be called from outside
51
- */
52
- interface IPermissionsRegistry {
53
- // === Access Control ===
54
- /**
55
- * Validate endpoint access - consolidated platform and permission checking
56
- * Returns ResponseType with detailed error information
57
- * Used by handler.ts and loader.ts for consistent access validation
58
- */
59
- validateEndpointAccess(
60
- endpoint: CreateApiEndpointAny,
61
- user: JwtPayloadType,
62
- platform: Platform,
63
- ): ResponseType<true>;
64
-
65
- // === Endpoint Discovery & Filtering ===
66
- /**
67
- * Check if endpoint is accessible on platform (used by definitions registry)
68
- */
69
- checkPlatformAccess(
70
- allowedRoles: readonly UserRoleValue[],
71
- platform: Platform,
72
- ): PlatformAccessResult;
73
-
74
- /**
75
- * Filter endpoints by user permissions (used by definitions, MCP, AI)
76
- * Requires logger to fetch user roles from DB (not from JWT/cookies)
77
- */
78
- filterEndpointsByPermissions(
79
- endpoints: CreateApiEndpointAny[],
80
- user: JwtPayloadType,
81
- platform: Platform,
82
- logger: EndpointLogger,
83
- ): CreateApiEndpointAny[];
84
-
85
- /**
86
- * Get endpoint count by category for user (used by definitions registry)
87
- */
88
- getEndpointCountByCategory(
89
- endpoints: CreateApiEndpointAny[],
90
- user: JwtPayloadType,
91
- platform: Platform,
92
- logger: EndpointLogger,
93
- ): Record<string, number>;
94
- }
95
-
96
- /**
97
- * Permissions Registry Class
98
- * Consolidates ALL permission, authentication, and validation logic
99
- */
100
- class PermissionsRegistry implements IPermissionsRegistry {
101
- /**
102
- * Check if endpoint is accessible on the given platform
103
- * Enforces _OFF platform markers for platform exclusion
104
- */
105
- checkPlatformAccess(
106
- allowedRoles: readonly UserRoleValue[],
107
- platform: Platform,
108
- ): PlatformAccessResult {
109
- const platformMarkers = filterPlatformMarkers(allowedRoles);
110
-
111
- // Check production environment restrictions
112
- if (
113
- envClient.NODE_ENV === "production" &&
114
- platformMarkers.includes(PlatformMarker.PRODUCTION_OFF)
115
- ) {
116
- return {
117
- allowed: false,
118
- reason: "Endpoint is disabled in production environment",
119
- blockedByRole: PlatformMarker.PRODUCTION_OFF,
120
- };
121
- }
122
-
123
- // Check platform-specific _OFF restrictions
124
- const platformStr = String(platform).toLowerCase();
125
-
126
- switch (platformStr) {
127
- case "cli":
128
- if (platformMarkers.includes(PlatformMarker.CLI_OFF)) {
129
- return {
130
- allowed: false,
131
- reason: `Endpoint is not accessible via ${platformStr.toUpperCase()} platform`,
132
- blockedByRole: PlatformMarker.CLI_OFF,
133
- };
134
- }
135
- break;
136
-
137
- case "mcp":
138
- if (
139
- platformMarkers.includes(PlatformMarker.MCP_OFF) ||
140
- platformMarkers.includes(PlatformMarker.CLI_OFF)
141
- ) {
142
- return {
143
- allowed: false,
144
- reason: `Endpoint is not accessible via ${platformStr.toUpperCase()} platform`,
145
- blockedByRole: PlatformMarker.MCP_OFF,
146
- };
147
- }
148
- break;
149
-
150
- case "cli-package":
151
- // CLI_PACKAGE can only access endpoints with CLI_AUTH_BYPASS marker
152
- // This restricts npm package users to unauthenticated endpoints only
153
- if (platformMarkers.includes(PlatformMarker.CLI_OFF)) {
154
- return {
155
- allowed: false,
156
- reason: "Endpoint is not accessible via CLI_PACKAGE platform",
157
- blockedByRole: PlatformMarker.CLI_OFF,
158
- };
159
- }
160
- if (!platformMarkers.includes(PlatformMarker.CLI_AUTH_BYPASS)) {
161
- return {
162
- allowed: false,
163
- reason: "Endpoint requires authentication which is not available in CLI_PACKAGE mode",
164
- blockedByRole: PlatformMarker.CLI_AUTH_BYPASS,
165
- };
166
- }
167
- break;
168
-
169
- case "ai":
170
- if (platformMarkers.includes(PlatformMarker.AI_TOOL_OFF)) {
171
- return {
172
- allowed: false,
173
- reason: "Endpoint is not accessible via AI tools",
174
- blockedByRole: PlatformMarker.AI_TOOL_OFF,
175
- };
176
- }
177
- break;
178
-
179
- case "web":
180
- case "next":
181
- case "trpc":
182
- if (platformMarkers.includes(PlatformMarker.WEB_OFF)) {
183
- return {
184
- allowed: false,
185
- reason: "Endpoint is not accessible via Web platform",
186
- blockedByRole: PlatformMarker.WEB_OFF,
187
- };
188
- }
189
- break;
190
-
191
- case "mobile":
192
- case "native":
193
- // Mobile follows web rules for now
194
- if (platformMarkers.includes(PlatformMarker.WEB_OFF)) {
195
- return {
196
- allowed: false,
197
- reason: "Endpoint is not accessible via Mobile platform",
198
- blockedByRole: PlatformMarker.WEB_OFF,
199
- };
200
- }
201
- break;
202
- }
203
-
204
- return { allowed: true };
205
- }
206
-
207
- /**
208
- * Check if user has required permission roles for the endpoint
209
- */
210
- checkUserRoles(
211
- user: InferJwtPayloadTypeFromRoles<readonly UserRoleValue[]>,
212
- permissionRoles: readonly (typeof UserPermissionRoleValue)[],
213
- userRoles: (typeof UserPermissionRoleValue)[],
214
- ): UserRoleCheckResult {
215
- // If no permission roles defined, endpoint is open to all
216
- if (permissionRoles.length === 0) {
217
- return { allowed: true };
218
- }
219
-
220
- // Check if PUBLIC is allowed (anyone can access)
221
- if (permissionRoles.includes(UserPermissionRole.PUBLIC)) {
222
- return { allowed: true };
223
- }
224
-
225
- // For public users (not authenticated), check if PUBLIC is allowed
226
- if (user.isPublic) {
227
- return {
228
- allowed: false,
229
- reason: "Authentication required - endpoint does not allow public access",
230
- userRoles: [],
231
- requiredRoles: permissionRoles,
232
- };
233
- }
234
-
235
- // Check if user has any of the required roles
236
- const hasRequiredRole = permissionRoles.some((requiredRole) =>
237
- userRoles.includes(requiredRole),
238
- );
239
-
240
- if (!hasRequiredRole) {
241
- return {
242
- allowed: false,
243
- reason: "User does not have required role for this endpoint",
244
- userRoles,
245
- requiredRoles: permissionRoles,
246
- };
247
- }
248
-
249
- return {
250
- allowed: true,
251
- userRoles,
252
- requiredRoles: permissionRoles,
253
- };
254
- }
255
-
256
- /**
257
- * Full access check combining platform and user role checks (PRIVATE - used internally)
258
- */
259
- private async checkFullAccess(
260
- allowedRoles: readonly UserRoleValue[],
261
- platform: Platform | string,
262
- user: InferJwtPayloadTypeFromRoles<readonly UserRoleValue[]>,
263
- userRoles: (typeof UserPermissionRoleValue)[],
264
- logger: EndpointLogger,
265
- ): Promise<ResponseType<true>> {
266
- // Separate concerns: filter platform markers and permission roles
267
- const platformMarkers = filterPlatformMarkers(allowedRoles);
268
- const permissionRoles = filterUserPermissionRoles(allowedRoles);
269
-
270
- logger.debug("Access check - separated concerns", {
271
- platformMarkers,
272
- permissionRoles,
273
- platform,
274
- });
275
-
276
- // 1. Check platform access first
277
- const platformAccess = this.checkPlatformAccess(allowedRoles, platform as Platform);
278
- if (!platformAccess.allowed) {
279
- logger.warn("Platform access denied", {
280
- platform,
281
- reason: platformAccess.reason,
282
- blockedByRole: platformAccess.blockedByRole,
283
- });
284
-
285
- return {
286
- success: false,
287
- message: "app.api.system.unifiedInterface.shared.permissions.errors.platformAccessDenied",
288
- errorType: ErrorResponseTypes.FORBIDDEN,
289
- messageParams: {
290
- platform: String(platform),
291
- reason: platformAccess.reason || "Platform not allowed",
292
- },
293
- };
294
- }
295
-
296
- // 2. Check if CLI auth bypass is allowed (skip role check if true)
297
- if (this.allowsCliAuthBypass(platformMarkers)) {
298
- logger.debug("CLI auth bypass enabled for endpoint", {
299
- userId: user.isPublic ? "public" : user.id,
300
- platformMarkers,
301
- });
302
- return { success: true, data: true };
303
- }
304
-
305
- // 3. Check user role permissions
306
- const roleAccess = this.checkUserRoles(user, permissionRoles, userRoles);
307
- if (!roleAccess.allowed) {
308
- logger.warn("User role access denied", {
309
- userId: user.isPublic ? "public" : user.id,
310
- reason: roleAccess.reason,
311
- userRoles: roleAccess.userRoles ? (roleAccess.userRoles as string[]).join(", ") : undefined,
312
- requiredRoles: roleAccess.requiredRoles
313
- ? (roleAccess.requiredRoles as string[]).join(", ")
314
- : undefined,
315
- });
316
-
317
- return {
318
- success: false,
319
- message: "app.api.system.unifiedInterface.shared.permissions.errors.insufficientRoles",
320
- errorType: ErrorResponseTypes.FORBIDDEN,
321
- messageParams: {
322
- userRoles: (roleAccess.userRoles || []).join(", ") || "none",
323
- requiredRoles: (roleAccess.requiredRoles || []).join(", "),
324
- },
325
- };
326
- }
327
-
328
- return { success: true, data: true };
329
- }
330
-
331
- /**
332
- * Validate endpoint access - consolidated platform and permission checking
333
- * Returns ResponseType with detailed error information
334
- * Used by handler.ts and loader.ts for consistent access validation
335
- */
336
- validateEndpointAccess(
337
- endpoint: CreateApiEndpointAny,
338
- user: JwtPayloadType,
339
- platform: Platform,
340
- ): ResponseType<true> {
341
- // Safety check: if allowedRoles is undefined or not an array, deny access
342
- if (!endpoint.allowedRoles || !Array.isArray(endpoint.allowedRoles)) {
343
- return {
344
- success: false,
345
- message: "app.api.system.unifiedInterface.shared.permissions.errors.definitionError",
346
- errorType: ErrorResponseTypes.INTERNAL_ERROR,
347
- messageParams: {
348
- error: "Endpoint allowedRoles is not properly configured",
349
- },
350
- };
351
- }
352
-
353
- // 1. Check platform access first
354
- const platformAccess = this.checkPlatformAccess(endpoint.allowedRoles, platform);
355
- if (!platformAccess.allowed) {
356
- return {
357
- success: false,
358
- message: "app.api.system.unifiedInterface.shared.permissions.errors.platformAccessDenied",
359
- errorType: ErrorResponseTypes.FORBIDDEN,
360
- messageParams: {
361
- platform: String(platform),
362
- reason: platformAccess.reason || "Platform not allowed",
363
- },
364
- };
365
- }
366
-
367
- // 2. Check user permissions
368
- const hasPermission = this.hasEndpointPermission(endpoint, user, platform);
369
- if (!hasPermission) {
370
- return {
371
- success: false,
372
- message: "app.api.system.unifiedInterface.shared.permissions.errors.insufficientRoles",
373
- errorType: ErrorResponseTypes.FORBIDDEN,
374
- messageParams: {
375
- userId: user.isPublic ? "public" : user.id,
376
- requiredRoles: endpoint.allowedRoles.join(", "),
377
- userRoles: user.roles?.join(", ") || "none",
378
- },
379
- };
380
- }
381
-
382
- return {
383
- success: true,
384
- data: true,
385
- };
386
- }
387
-
388
- /**
389
- * Check if user has permission for endpoint on specific platform
390
- * Uses OPT-OUT logic:
391
- * - Endpoint is accessible by default if user has the required role
392
- * - Endpoint can opt-out of specific platforms using CLI_OFF, AI_TOOL_OFF, WEB_OFF
393
- */
394
- private hasEndpointPermission(
395
- endpoint: CreateApiEndpointAny,
396
- user: JwtPayloadType,
397
- platform: Platform,
398
- ): boolean {
399
- // Safety check: if allowedRoles is undefined or not an array, deny access
400
- if (!endpoint.allowedRoles || !Array.isArray(endpoint.allowedRoles)) {
401
- return false;
402
- }
403
-
404
- // Check platform opt-out first
405
- if (this.isEndpointOptedOutOfPlatform(endpoint, platform)) {
406
- return false;
407
- }
408
-
409
- // Check for CLI auth bypass - if enabled, allow access without role check
410
- const platformMarkers = filterPlatformMarkers(endpoint.allowedRoles);
411
- if (this.allowsCliAuthBypass(platformMarkers)) {
412
- return true;
413
- }
414
-
415
- // Filter out opt-out roles from allowed roles for permission check
416
- const effectiveAllowedRoles = endpoint.allowedRoles.filter(
417
- (role: UserRoleValue[number]) => !this.isOptOutRole(role),
418
- );
419
-
420
- // Extract user permission roles from effective allowed roles
421
- const permissionRoles = filterUserPermissionRoles(effectiveAllowedRoles);
422
-
423
- // Special handling for PUBLIC role
424
- // PUBLIC role is exclusive to public/unauthenticated users (user.isPublic === true)
425
- // Public users have empty roles array, so we check isPublic flag instead
426
- if (user.isPublic && permissionRoles.includes(UserPermissionRole.PUBLIC)) {
427
- return true;
428
- }
429
-
430
- // Check if user has any of the required roles
431
- // User roles come from JWT payload which was populated from DB during login/signup
432
- const userRoles = user.roles || [];
433
-
434
- const hasRequiredRole = effectiveAllowedRoles.some((requiredRole) =>
435
- userRoles.includes(requiredRole),
436
- );
437
-
438
- return hasRequiredRole;
439
- }
440
-
441
- /**
442
- * Filter endpoints by user permissions
443
- * Requires logger to fetch user roles from DB (not from JWT/cookies)
444
- * Note: Currently uses JWT-based permission check, but logger is required
445
- * for future enhancement to fetch roles from DB
446
- */
447
- filterEndpointsByPermissions(
448
- endpoints: CreateApiEndpointAny[],
449
- user: JwtPayloadType,
450
- platform: Platform,
451
- logger: EndpointLogger,
452
- ): CreateApiEndpointAny[] {
453
- logger.debug("[Permissions Registry] Filtering endpoints by permissions", {
454
- totalEndpoints: endpoints.length,
455
- platform,
456
- isPublic: user.isPublic,
457
- });
458
-
459
- const filtered = endpoints.filter((endpoint) =>
460
- this.hasEndpointPermission(endpoint, user, platform),
461
- );
462
-
463
- logger.debug("[Permissions Registry] Filtered endpoints", {
464
- totalEndpoints: endpoints.length,
465
- filteredEndpoints: filtered.length,
466
- });
467
-
468
- return filtered;
469
- }
470
-
471
- /**
472
- * Get available endpoints count by category for user
473
- */
474
- getEndpointCountByCategory(
475
- endpoints: CreateApiEndpointAny[],
476
- user: JwtPayloadType,
477
- platform: Platform = Platform.AI,
478
- logger: EndpointLogger,
479
- ): Record<string, number> {
480
- const filtered = this.filterEndpointsByPermissions(endpoints, user, platform, logger);
481
- const counts: Record<string, number> = {};
482
-
483
- for (const endpoint of filtered) {
484
- const category = endpoint.category;
485
- if (category) {
486
- counts[category] = (counts[category] || 0) + 1;
487
- }
488
- }
489
-
490
- return counts;
491
- }
492
-
493
- /**
494
- * Get available endpoints count by role (PRIVATE - used internally)
495
- */
496
- private getEndpointCountByRole(endpoints: CreateApiEndpointAny[]): Record<string, number> {
497
- const counts: Record<string, number> = {};
498
-
499
- for (const endpoint of endpoints) {
500
- // Safety check: skip if allowedRoles is undefined or not an array
501
- if (!endpoint?.allowedRoles || !Array.isArray(endpoint.allowedRoles)) {
502
- continue;
503
- }
504
-
505
- for (const role of endpoint.allowedRoles) {
506
- // Only count actual user roles, not opt-out roles
507
- const roleValue = role as UserRoleValue[number];
508
- if (!this.isOptOutRole(roleValue)) {
509
- counts[roleValue] = (counts[roleValue] || 0) + 1;
510
- }
511
- }
512
- }
513
-
514
- return counts;
515
- }
516
-
517
- /**
518
- * Check if endpoint allows CLI auth bypass (PRIVATE - used internally)
519
- */
520
- private allowsCliAuthBypass(platformMarkers: readonly (typeof PlatformMarkerValue)[]): boolean {
521
- return platformMarkers.includes(PlatformMarker.CLI_AUTH_BYPASS);
522
- }
523
-
524
- /**
525
- * Get role priority for permission hierarchy (PRIVATE - used internally)
526
- */
527
- private getRolePriority(role: typeof UserPermissionRoleValue): number {
528
- const priorities: Record<typeof UserPermissionRoleValue, number> = {
529
- [UserPermissionRole.PUBLIC]: 0,
530
- [UserPermissionRole.CUSTOMER]: 5,
531
- [UserPermissionRole.PARTNER_EMPLOYEE]: 20,
532
- [UserPermissionRole.PARTNER_ADMIN]: 50,
533
- [UserPermissionRole.ADMIN]: 100,
534
- };
535
-
536
- return priorities[role];
537
- }
538
-
539
- /**
540
- * Check if role A can access role B's resources (PRIVATE - used internally)
541
- */
542
- private canAccessRole(
543
- userRole: typeof UserPermissionRoleValue,
544
- requiredRole: typeof UserPermissionRoleValue,
545
- ): boolean {
546
- // Opt-out roles can't be used for access checks
547
- if (this.isOptOutRole(requiredRole)) {
548
- return false;
549
- }
550
- const userPriority = this.getRolePriority(userRole);
551
- const requiredPriority = this.getRolePriority(requiredRole);
552
- return userPriority >= requiredPriority;
553
- }
554
-
555
- /**
556
- * Check if user can execute batch operations (PRIVATE - used internally)
557
- */
558
- private canExecuteBatchOperations(user: JwtPayloadType): boolean {
559
- return !user.isPublic;
560
- }
561
-
562
- /**
563
- * Get maximum tools per message for user (PRIVATE - used internally)
564
- */
565
- private getMaxToolsPerMessage(user: JwtPayloadType): number {
566
- if (user.isPublic) {
567
- return 3; // Limited for public users
568
- }
569
-
570
- return 10; // Default max tools per request for authenticated users
571
- }
572
-
573
- /**
574
- * Get platforms endpoint is available on (PRIVATE - used internally)
575
- */
576
- private getAvailablePlatforms(endpoint: CreateApiEndpointAny): Platform[] {
577
- const platforms: Platform[] = [];
578
-
579
- // Safety check
580
- if (!endpoint?.allowedRoles || !Array.isArray(endpoint.allowedRoles)) {
581
- return platforms;
582
- }
583
-
584
- if (!endpoint.allowedRoles.includes(UserRole.CLI_OFF)) {
585
- platforms.push(Platform.CLI);
586
- // CLI_PACKAGE only available for endpoints with CLI_AUTH_BYPASS
587
- // (unauthenticated endpoints that don't require local auth)
588
- if (endpoint.allowedRoles.includes(PlatformMarker.CLI_AUTH_BYPASS)) {
589
- platforms.push(Platform.CLI_PACKAGE);
590
- }
591
- }
592
- if (!endpoint.allowedRoles.includes(UserRole.AI_TOOL_OFF)) {
593
- platforms.push(Platform.AI);
594
- }
595
- if (!endpoint.allowedRoles.includes(UserRole.WEB_OFF)) {
596
- // WEB_OFF disables all web platforms (TRPC, NEXT_PAGE, NEXT_API)
597
- platforms.push(Platform.TRPC);
598
- platforms.push(Platform.NEXT_PAGE);
599
- platforms.push(Platform.NEXT_API);
600
- }
601
-
602
- return platforms;
603
- }
604
-
605
- /**
606
- * Check if endpoint is opted out of specific platform
607
- */
608
- private isEndpointOptedOutOfPlatform(
609
- endpoint: CreateApiEndpointAny,
610
- platform: Platform,
611
- ): boolean {
612
- // Safety check
613
- if (!endpoint?.allowedRoles || !Array.isArray(endpoint.allowedRoles)) {
614
- return false;
615
- }
616
-
617
- // Check if endpoint is disabled in production environment
618
- if (
619
- process.env.NODE_ENV === "production" &&
620
- endpoint.allowedRoles.includes(UserRole.PRODUCTION_OFF)
621
- ) {
622
- return true;
623
- }
624
-
625
- // Normalize platform to lowercase string
626
- const platformStr = String(platform).toLowerCase();
627
-
628
- switch (platformStr) {
629
- case "cli":
630
- return endpoint.allowedRoles.includes(UserRole.CLI_OFF);
631
- case "ai":
632
- return endpoint.allowedRoles.includes(UserRole.AI_TOOL_OFF);
633
- case "web":
634
- return endpoint.allowedRoles.includes(UserRole.WEB_OFF);
635
- default:
636
- return false;
637
- }
638
- }
639
-
640
- /**
641
- * Check if role is an opt-out role
642
- */
643
- private isOptOutRole(role: UserRoleValue[number]): boolean {
644
- return (
645
- role === UserRole.CLI_OFF ||
646
- role === UserRole.AI_TOOL_OFF ||
647
- role === UserRole.WEB_OFF ||
648
- role === UserRole.PRODUCTION_OFF
649
- );
650
- }
651
- }
652
-
653
- /**
654
- * Singleton instance
655
- */
656
- export const permissionsRegistry = new PermissionsRegistry();