@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,1084 +0,0 @@
1
- /**
2
- * Release Executor Service
3
- * Main orchestrator for the release process
4
- */
5
-
6
- import { join } from "node:path";
7
-
8
- import { confirm, select } from "@inquirer/prompts";
9
- import type { ResponseType } from "next-vibe/shared/types/response.schema";
10
- import { ErrorResponseTypes, fail, success } from "next-vibe/shared/types/response.schema";
11
-
12
- import type { CountryLanguage } from "@/i18n/core/config";
13
-
14
- import type { EndpointLogger } from "../../unified-interface/shared/logger/endpoint";
15
- import {
16
- formatConfig,
17
- formatDuration,
18
- formatError,
19
- formatHint,
20
- formatProgress,
21
- formatSection,
22
- formatSkip,
23
- formatStartup,
24
- formatSuccess,
25
- formatWarning,
26
- } from "../../unified-interface/shared/logger/formatters";
27
- import type {
28
- GitInfo,
29
- GitOpsConfig,
30
- HookContext,
31
- NotificationResult,
32
- PackageResult,
33
- PublishedPackage,
34
- ReleaseConfig,
35
- ReleaseResponseType,
36
- RequestType,
37
- Timings,
38
- } from "../definition";
39
- import { assetZipper } from "./asset-zipper";
40
- import { changelogGenerator } from "./changelog-generator";
41
- import { ciDetector } from "./ci-detector";
42
- import type { IConfigLoader } from "./config";
43
- import { MESSAGES } from "./constants";
44
- import { dependencyManager } from "./dependency-manager";
45
- import { gitService } from "./git-service";
46
- import { hookRunner } from "./hook-runner";
47
- import { notificationService } from "./notification-service";
48
- import { packageService } from "./package-service";
49
- import { publisher } from "./publisher";
50
- import { qualityRunner } from "./quality-runner";
51
- import { releaseCreator } from "./release-creator";
52
- import { snykService } from "./snyk-service";
53
- import { validationService } from "./validation";
54
- import { versionService } from "./version-service";
55
-
56
- // ============================================================================
57
- // Interface
58
- // ============================================================================
59
-
60
- export interface IReleaseExecutor {
61
- /**
62
- * Execute the release process
63
- */
64
- execute(
65
- data: RequestType,
66
- locale: CountryLanguage,
67
- logger: EndpointLogger,
68
- ): Promise<ResponseType<ReleaseResponseType>>;
69
- }
70
-
71
- // ============================================================================
72
- // Implementation
73
- // ============================================================================
74
-
75
- export class ReleaseExecutor implements IReleaseExecutor {
76
- async execute(
77
- data: RequestType,
78
- locale: CountryLanguage,
79
- logger: EndpointLogger,
80
- ): Promise<ResponseType<ReleaseResponseType>> {
81
- void locale;
82
- const startTime = Date.now();
83
- const output: string[] = [];
84
- const errors: string[] = [];
85
- const warnings: string[] = [];
86
- const packagesProcessed: PackageResult[] = [];
87
- const publishedPackages: PublishedPackage[] = [];
88
- const notificationsSent: NotificationResult[] = [];
89
- let globalGitInfo: GitInfo | undefined;
90
-
91
- // Timings tracking
92
- const timings: Timings = { total: 0 };
93
- const trackTime = (phase: keyof Omit<Timings, "total">, start: number): void => {
94
- timings[phase] = Date.now() - start;
95
- };
96
-
97
- // Detect CI environment
98
- const ciEnv = ciDetector.detect();
99
-
100
- // Declare config outside try block so it's available in catch
101
- let config: ReleaseConfig | undefined;
102
-
103
- try {
104
- output.push(MESSAGES.RELEASE_START);
105
-
106
- // Load config from file or use configObject
107
- if (data.configObject) {
108
- config = data.configObject;
109
- logger.debug("Using inline configuration");
110
- } else {
111
- // Lazy-load configLoader to avoid Turbopack warning about dynamic imports
112
- // The config module uses dynamic imports that can't be statically analyzed
113
- const { configLoader } = (await import("./config")) as {
114
- configLoader: IConfigLoader;
115
- };
116
- const configResult = await configLoader.load(logger, data.configPath);
117
- if (!configResult.success) {
118
- return fail({
119
- message: configResult.message,
120
- errorType: configResult.errorType,
121
- messageParams: configResult.messageParams,
122
- });
123
- }
124
- config = configResult.data;
125
- }
126
-
127
- // Extract runtime options - request (data) params override config file
128
- const isCI = data.ci ?? ciEnv.isCI;
129
- const isVerbose = data.verbose ?? false;
130
- const dryRun = data.dryRun ?? false;
131
- // Track if forceUpdate was explicitly set (to know if we should prompt)
132
- const forceUpdateExplicitlySet = data.forceUpdate !== undefined || false;
133
- const forceUpdate = data.forceUpdate ?? false;
134
- const skipLint = data.skipLint ?? false;
135
- const skipTypecheck = data.skipTypecheck ?? false;
136
- const skipBuild = data.skipBuild ?? false;
137
- const skipTests = data.skipTests ?? false;
138
- const skipSnyk = data.skipSnyk ?? false;
139
- const skipChangelog = data.skipChangelog ?? false;
140
- const skipGitTag = data.skipGitTag ?? false;
141
- const skipGitPush = data.skipGitPush ?? false;
142
- const targetPackage = data.targetPackage;
143
- let versionIncrement = data.versionIncrement;
144
- const prereleaseId = data.prereleaseId;
145
- const packageManager = config.packageManager ?? "bun";
146
-
147
- // Show startup banner
148
- logger.vibe(formatStartup("Release Tool", "📦"));
149
- logger.vibe("");
150
- logger.vibe(` ${formatConfig("Package Manager", packageManager)}`);
151
- logger.vibe(
152
- ` ${formatConfig("Dry Run", dryRun ? "YES" : "NO")} ${formatHint(dryRun ? "(changes won't be applied)" : "")}`,
153
- );
154
- if (ciEnv.isCI) {
155
- logger.vibe(` ${formatConfig("CI Environment", ciEnv.provider ?? "detected")}`);
156
- }
157
- logger.vibe("");
158
-
159
- // Show what will be checked/skipped
160
- logger.vibe(` ${formatConfig("Lint", skipLint ? "SKIP" : "ON")}`);
161
- logger.vibe(` ${formatConfig("Typecheck", skipTypecheck ? "SKIP" : "ON")}`);
162
- logger.vibe(` ${formatConfig("Build", skipBuild ? "SKIP" : "ON")}`);
163
- logger.vibe(` ${formatConfig("Tests", skipTests ? "SKIP" : "ON")}`);
164
- logger.vibe(` ${formatConfig("Publish", isCI ? "CI ONLY" : "SKIP")}`);
165
- logger.vibe("");
166
-
167
- if (isVerbose) {
168
- logger.debug("Verbose mode enabled");
169
- }
170
-
171
- const originalCwd = process.cwd();
172
- const mainBranch = config.branch?.main ?? "main";
173
-
174
- // Gather git info (always needed)
175
- logger.vibe(formatProgress("Fetching git information..."));
176
- globalGitInfo = gitService.getInfo(originalCwd, logger);
177
- if (globalGitInfo) {
178
- logger.debug("Git info", {
179
- branch: globalGitInfo.currentBranch,
180
- lastTag: globalGitInfo.lastTag,
181
- uncommittedChanges: globalGitInfo.hasUncommittedChanges,
182
- commitsSinceTag: globalGitInfo.commitsSinceLastTag,
183
- });
184
- }
185
-
186
- // Run basic validations (NOT branch check - that comes later before git ops)
187
- logger.vibe(formatProgress("Running validations..."));
188
- const validationResult = validationService.runBasicValidations(
189
- config,
190
- originalCwd,
191
- packageManager,
192
- logger,
193
- );
194
- if (!validationResult.success) {
195
- return fail({
196
- message: validationResult.message,
197
- errorType: validationResult.errorType,
198
- messageParams: validationResult.messageParams,
199
- });
200
- }
201
- trackTime("validation", startTime);
202
-
203
- // Ask user if they want to update dependencies (unless forceUpdate explicitly set or CI)
204
- if (!forceUpdateExplicitlySet && !isCI) {
205
- const shouldUpdate = await confirm({
206
- message: "Update dependencies before release?",
207
- default: false,
208
- });
209
-
210
- if (shouldUpdate) {
211
- logger.vibe(formatProgress("Updating dependencies..."));
212
- const pkgJsonResult = packageService.getPackageJson(originalCwd, logger);
213
- if (pkgJsonResult.success) {
214
- const updateResult = dependencyManager.updateDependencies(
215
- originalCwd,
216
- packageManager,
217
- pkgJsonResult.data,
218
- logger,
219
- dryRun,
220
- );
221
- if (updateResult.success) {
222
- logger.vibe(formatSuccess("Dependencies updated"));
223
- } else {
224
- logger.vibe(formatWarning("Failed to update dependencies, continuing..."));
225
- }
226
- }
227
- } else {
228
- logger.vibe(formatSkip("Skipping dependency update"));
229
- }
230
- }
231
-
232
- // Handle force update mode - just update deps and return
233
- if (forceUpdate) {
234
- logger.vibe(formatProgress("Force update mode: updating dependencies..."));
235
- const packages = config.packages ?? [];
236
- for (const pkg of packages) {
237
- // Skip dependency updates in CI mode
238
- if ((pkg.updateDeps === true || pkg.updateDeps === "force") && !isCI) {
239
- const cwd = join(originalCwd, pkg.directory);
240
- const pkgJsonResult = packageService.getPackageJson(cwd, logger);
241
- if (pkgJsonResult.success) {
242
- const updateResult = dependencyManager.updateDependencies(
243
- cwd,
244
- packageManager,
245
- pkgJsonResult.data,
246
- logger,
247
- dryRun,
248
- );
249
- if (!updateResult.success) {
250
- errors.push(`Failed to update ${pkgJsonResult.data.name}: ${updateResult.message}`);
251
- }
252
- }
253
- }
254
- }
255
- return success({
256
- success: errors.length === 0,
257
- output: output.join("\n"),
258
- duration: Date.now() - startTime,
259
- packagesProcessed: [],
260
- errors: errors.length > 0 ? errors : null,
261
- warnings: warnings.length > 0 ? warnings : null,
262
- publishedPackages: null,
263
- notificationsSent: null,
264
- });
265
- }
266
-
267
- // Run global pre-release hook
268
- if (config.hooks?.preRelease) {
269
- const hookResult = hookRunner.runHook(
270
- config.hooks.preRelease,
271
- originalCwd,
272
- logger,
273
- dryRun,
274
- { packageManager },
275
- );
276
- if (!hookResult.success) {
277
- const errorMsg = `Pre-release hook failed: ${hookResult.message}`;
278
- errors.push(errorMsg);
279
- // If continueOnError is false, fail the entire release
280
- if (!config.continueOnError) {
281
- return success(
282
- {
283
- success: false,
284
- output: output.join("\n"),
285
- duration: Date.now() - startTime,
286
- packagesProcessed: [],
287
- ciEnvironment: undefined,
288
- errors,
289
- warnings: warnings.length > 0 ? warnings : null,
290
- gitInfo: globalGitInfo,
291
- publishedPackages: null,
292
- timings: { total: Date.now() - startTime },
293
- notificationsSent: null,
294
- } satisfies ReleaseResponseType,
295
- { isErrorResponse: true },
296
- );
297
- }
298
- }
299
- }
300
-
301
- // Filter packages if targetPackage is specified
302
- let packages = config.packages ?? [];
303
- if (targetPackage) {
304
- packages = packages.filter(
305
- (pkg) => pkg.directory === targetPackage || pkg.directory.includes(targetPackage),
306
- );
307
- if (packages.length === 0) {
308
- return fail({
309
- message: "app.api.system.releaseTool.errors.packageNotFound",
310
- errorType: ErrorResponseTypes.NOT_FOUND,
311
- messageParams: { targetPackage },
312
- });
313
- }
314
- }
315
-
316
- // Process each package
317
- for (const pkg of packages) {
318
- const cwd = join(originalCwd, pkg.directory);
319
- const packageJsonResult = packageService.getPackageJson(cwd, logger);
320
-
321
- if (!packageJsonResult.success) {
322
- packagesProcessed.push({
323
- name: pkg.directory,
324
- directory: pkg.directory,
325
- status: "failed",
326
- message: "Failed to read package.json",
327
- });
328
- if (!config.continueOnError) {
329
- break;
330
- }
331
- continue;
332
- }
333
-
334
- const packageJson = packageJsonResult.data;
335
- logger.vibe(formatSection(`Package: ${packageJson.name}`));
336
-
337
- // Create hook context for this package
338
- const hookContext: HookContext = {
339
- packageManager,
340
- packageName: packageJson.name,
341
- version: packageJson.version,
342
- directory: pkg.directory,
343
- };
344
-
345
- // Helper to handle quality check failures
346
- let packageFailed = false;
347
- const handleFailure = (
348
- result: { success: boolean; message?: string },
349
- step: string,
350
- ): boolean => {
351
- if (!result.success) {
352
- const errorMsg = result.message ?? `${step} failed`;
353
- errors.push(`[${packageJson.name}] ${errorMsg}`);
354
- if (!config?.continueOnError) {
355
- packageFailed = true;
356
- packagesProcessed.push({
357
- name: packageJson.name,
358
- directory: pkg.directory,
359
- status: "failed",
360
- message: errorMsg,
361
- });
362
- return true; // Should stop processing
363
- }
364
- }
365
- return false; // Continue processing
366
- };
367
-
368
- // Helper to handle hook failures (same behavior as quality failures)
369
- const handleHookFailure = (hookName: string): boolean => {
370
- return handleFailure({ success: false, message: `Hook ${hookName} failed` }, "Hook");
371
- };
372
-
373
- // Install dependencies if configured
374
- if (pkg.install && !packageFailed) {
375
- if (pkg.hooks?.preInstall) {
376
- const hookResult = hookRunner.runHook(
377
- pkg.hooks.preInstall,
378
- cwd,
379
- logger,
380
- dryRun,
381
- hookContext,
382
- );
383
- if (!hookResult.success && handleHookFailure("preInstall")) {
384
- continue;
385
- }
386
- }
387
- const installCommand = typeof pkg.install === "string" ? pkg.install : undefined;
388
- const installResult = qualityRunner.runInstall(
389
- cwd,
390
- packageManager,
391
- logger,
392
- dryRun,
393
- installCommand,
394
- );
395
- if (handleFailure(installResult, "Install")) {
396
- continue;
397
- }
398
- if (pkg.hooks?.postInstall) {
399
- const hookResult = hookRunner.runHook(
400
- pkg.hooks.postInstall,
401
- cwd,
402
- logger,
403
- dryRun,
404
- hookContext,
405
- );
406
- if (!hookResult.success && handleHookFailure("postInstall")) {
407
- continue;
408
- }
409
- }
410
- }
411
-
412
- // Clean if configured
413
- if (pkg.clean && !packageFailed) {
414
- if (pkg.hooks?.preClean) {
415
- const hookResult = hookRunner.runHook(
416
- pkg.hooks.preClean,
417
- cwd,
418
- logger,
419
- dryRun,
420
- hookContext,
421
- );
422
- if (!hookResult.success && handleHookFailure("preClean")) {
423
- continue;
424
- }
425
- }
426
- const cleanCommand = typeof pkg.clean === "string" ? pkg.clean : undefined;
427
- const cleanResult = qualityRunner.runClean(
428
- cwd,
429
- packageManager,
430
- logger,
431
- dryRun,
432
- cleanCommand,
433
- );
434
- if (handleFailure(cleanResult, "Clean")) {
435
- continue;
436
- }
437
- if (pkg.hooks?.postClean) {
438
- const hookResult = hookRunner.runHook(
439
- pkg.hooks.postClean,
440
- cwd,
441
- logger,
442
- dryRun,
443
- hookContext,
444
- );
445
- if (!hookResult.success && handleHookFailure("postClean")) {
446
- continue;
447
- }
448
- }
449
- }
450
-
451
- // Note: Dependencies are only updated with --force-update flag
452
- // The check for outdated deps happens earlier and warns the user
453
-
454
- // Lint
455
- if (pkg.lint && !skipLint && !packageFailed) {
456
- if (pkg.hooks?.preLint) {
457
- const hookResult = hookRunner.runHook(
458
- pkg.hooks.preLint,
459
- cwd,
460
- logger,
461
- dryRun,
462
- hookContext,
463
- );
464
- if (!hookResult.success && handleHookFailure("preLint")) {
465
- continue;
466
- }
467
- }
468
- const lintCommand = typeof pkg.lint === "string" ? pkg.lint : undefined;
469
- const lintResult = qualityRunner.runLint(
470
- cwd,
471
- packageManager,
472
- logger,
473
- dryRun,
474
- lintCommand,
475
- );
476
- if (handleFailure(lintResult, "Lint")) {
477
- continue;
478
- }
479
- if (pkg.hooks?.postLint) {
480
- const hookResult = hookRunner.runHook(
481
- pkg.hooks.postLint,
482
- cwd,
483
- logger,
484
- dryRun,
485
- hookContext,
486
- );
487
- if (!hookResult.success && handleHookFailure("postLint")) {
488
- continue;
489
- }
490
- }
491
- }
492
-
493
- // Typecheck
494
- if (pkg.typecheck && !skipTypecheck && !packageFailed) {
495
- const typecheckCommand = typeof pkg.typecheck === "string" ? pkg.typecheck : undefined;
496
- const typecheckResult = qualityRunner.runTypecheck(
497
- cwd,
498
- packageManager,
499
- logger,
500
- dryRun,
501
- typecheckCommand,
502
- );
503
- if (handleFailure(typecheckResult, "Typecheck")) {
504
- continue;
505
- }
506
- }
507
-
508
- // Build
509
- if (pkg.build && !skipBuild && !packageFailed) {
510
- if (pkg.hooks?.preBuild) {
511
- const hookResult = hookRunner.runHook(
512
- pkg.hooks.preBuild,
513
- cwd,
514
- logger,
515
- dryRun,
516
- hookContext,
517
- );
518
- if (!hookResult.success && handleHookFailure("preBuild")) {
519
- continue;
520
- }
521
- }
522
- const buildCommand = typeof pkg.build === "string" ? pkg.build : undefined;
523
- const buildResult = qualityRunner.runBuild(
524
- cwd,
525
- packageManager,
526
- logger,
527
- dryRun,
528
- buildCommand,
529
- );
530
- if (handleFailure(buildResult, "Build")) {
531
- continue;
532
- }
533
- if (pkg.hooks?.postBuild) {
534
- const hookResult = hookRunner.runHook(
535
- pkg.hooks.postBuild,
536
- cwd,
537
- logger,
538
- dryRun,
539
- hookContext,
540
- );
541
- if (!hookResult.success && handleHookFailure("postBuild")) {
542
- continue;
543
- }
544
- }
545
- }
546
-
547
- // Tests
548
- if (pkg.test && !skipTests && !packageFailed) {
549
- if (pkg.hooks?.preTest) {
550
- const hookResult = hookRunner.runHook(
551
- pkg.hooks.preTest,
552
- cwd,
553
- logger,
554
- dryRun,
555
- hookContext,
556
- );
557
- if (!hookResult.success && handleHookFailure("preTest")) {
558
- continue;
559
- }
560
- }
561
- const testCommand = typeof pkg.test === "string" ? pkg.test : undefined;
562
- const testResult = qualityRunner.runTests(
563
- cwd,
564
- packageManager,
565
- logger,
566
- dryRun,
567
- testCommand,
568
- );
569
- if (handleFailure(testResult, "Tests")) {
570
- continue;
571
- }
572
- if (pkg.hooks?.postTest) {
573
- const hookResult = hookRunner.runHook(
574
- pkg.hooks.postTest,
575
- cwd,
576
- logger,
577
- dryRun,
578
- hookContext,
579
- );
580
- if (!hookResult.success && handleHookFailure("postTest")) {
581
- continue;
582
- }
583
- }
584
- }
585
-
586
- // Snyk
587
- if (pkg.snyk && !skipSnyk && !packageFailed) {
588
- const snykResult = isCI
589
- ? snykService.runSnykMonitor(cwd, packageJson.name, logger, dryRun)
590
- : snykService.runSnykTest(cwd, packageJson.name, logger, dryRun);
591
- if (handleFailure(snykResult, "Security scan")) {
592
- continue;
593
- }
594
- }
595
-
596
- // Skip release steps if package failed quality checks
597
- if (packageFailed) {
598
- continue;
599
- }
600
-
601
- // Handle release
602
- const releaseConfig = pkg.release;
603
- if (releaseConfig) {
604
- // Ask for version increment if not provided and not in CI
605
- if (!versionIncrement && !isCI) {
606
- versionIncrement = await select({
607
- message: "Select version increment:",
608
- choices: [
609
- { name: "Patch (0.0.X)", value: "patch" },
610
- { name: "Minor (0.X.0)", value: "minor" },
611
- { name: "Major (X.0.0)", value: "major" },
612
- ],
613
- default: "patch",
614
- });
615
- }
616
-
617
- const versionInfo = versionService.getVersionInfo(
618
- logger,
619
- pkg,
620
- packageJson,
621
- config,
622
- releaseConfig,
623
- versionIncrement,
624
- prereleaseId,
625
- );
626
-
627
- logger.debug(`Processing tag release (${versionInfo.newTag}) for ${packageJson.name}...`);
628
-
629
- // Check if tag exists
630
- const tagExists = await gitService.checkTagExists(versionInfo.newTag, logger);
631
- if (tagExists) {
632
- packagesProcessed.push({
633
- name: packageJson.name,
634
- directory: pkg.directory,
635
- version: versionInfo.newVersion,
636
- tag: versionInfo.newTag,
637
- status: "skipped",
638
- message: "Tag already exists",
639
- });
640
- continue;
641
- }
642
-
643
- // Check for new commits (only skip if we're also doing git operations)
644
- // If skipGitTag is true, allow publishing even without new commits
645
- if (!gitService.hasNewCommitsSinceTag(versionInfo.lastTag, cwd, logger) && !skipGitTag) {
646
- packagesProcessed.push({
647
- name: packageJson.name,
648
- directory: pkg.directory,
649
- version: versionInfo.newVersion,
650
- tag: versionInfo.newTag,
651
- status: "skipped",
652
- message: "No new commits since last tag",
653
- });
654
- continue;
655
- }
656
-
657
- // Run pre-release hook
658
- if (pkg.hooks?.preRelease) {
659
- const hookResult = hookRunner.runHook(
660
- pkg.hooks.preRelease,
661
- cwd,
662
- logger,
663
- dryRun,
664
- hookContext,
665
- );
666
- if (!hookResult.success && handleHookFailure("preRelease")) {
667
- continue;
668
- }
669
- }
670
-
671
- // Update version (skip in CI mode - version should already be set)
672
- if (!isCI) {
673
- const updateResult = packageService.updatePackageVersion(
674
- pkg,
675
- versionInfo.newVersion,
676
- cwd,
677
- originalCwd,
678
- logger,
679
- );
680
- if (handleFailure(updateResult, "Version update")) {
681
- continue;
682
- }
683
-
684
- // Update version in other files
685
- versionService.updateVariableStringValue(logger, versionInfo.newVersion, releaseConfig);
686
- } else {
687
- logger.vibe(formatSkip("Skipping version bump (CI mode - using existing version)"));
688
- }
689
-
690
- // Zip folders
691
- if (releaseConfig.foldersToZip) {
692
- await assetZipper.zipFolders(
693
- versionInfo.newTag,
694
- packageJson,
695
- releaseConfig.foldersToZip,
696
- logger,
697
- dryRun,
698
- );
699
- }
700
-
701
- // Run pre-publish hook
702
- if (pkg.hooks?.prePublish) {
703
- const hookResult = hookRunner.runHook(
704
- pkg.hooks.prePublish,
705
- cwd,
706
- logger,
707
- dryRun,
708
- hookContext,
709
- );
710
- if (!hookResult.success && handleHookFailure("prePublish")) {
711
- continue;
712
- }
713
- }
714
-
715
- // Generate changelog if configured
716
- if (!skipChangelog) {
717
- const changelogResult = changelogGenerator.generateChangelog(
718
- cwd,
719
- releaseConfig,
720
- versionInfo,
721
- logger,
722
- dryRun,
723
- );
724
- if (handleFailure(changelogResult, "Changelog generation")) {
725
- continue;
726
- }
727
- }
728
-
729
- // Create git tag and publish (publish only in CI, git tags can be local)
730
- if (!packageFailed) {
731
- // Branch check RIGHT BEFORE git operations (last chance to warn)
732
- const currentBranch = globalGitInfo?.currentBranch ?? gitService.getCurrentBranch();
733
- if (currentBranch && currentBranch !== mainBranch && !config.branch?.allowNonMain) {
734
- logger.vibe(
735
- formatWarning(`Releasing from '${currentBranch}' branch (not '${mainBranch}')`),
736
- );
737
- logger.vibe(
738
- formatHint("Set branch.allowNonMain: true in config to suppress this warning"),
739
- );
740
- warnings.push(`Released from ${currentBranch} instead of ${mainBranch}`);
741
- }
742
-
743
- logger.vibe(formatProgress(`Releasing ${packageJson.name}...`));
744
-
745
- // Build effective git config with request overrides
746
- let effectiveGitConfig: GitOpsConfig = {
747
- ...releaseConfig.git,
748
- skipTag: skipGitTag || releaseConfig.git?.skipTag,
749
- skipPush: skipGitPush || releaseConfig.git?.skipPush,
750
- };
751
-
752
- // Interactive git prompts (only if not CI and not explicitly skipped)
753
- if (!isCI && !dryRun) {
754
- // Check if there are uncommitted changes
755
- const hasChanges = globalGitInfo?.hasUncommittedChanges ?? false;
756
-
757
- // Ask about git commit only if there are changes
758
- if (!effectiveGitConfig.skipTag && hasChanges) {
759
- const shouldCommit = await confirm({
760
- message: `Version updated to ${versionInfo.newVersion} in package.json and release.config.ts. Commit these changes?`,
761
- default: true,
762
- });
763
-
764
- if (!shouldCommit) {
765
- logger.vibe(formatWarning("Continuing without committing version changes"));
766
- // User chose not to commit, but we continue
767
- }
768
- }
769
-
770
- // Ask about creating git tag
771
- if (!effectiveGitConfig.skipTag) {
772
- const shouldTag = await confirm({
773
- message: `Create git tag ${versionInfo.newTag}?`,
774
- default: true,
775
- });
776
-
777
- if (!shouldTag) {
778
- logger.vibe(formatSkip("Skipping git tag creation"));
779
- effectiveGitConfig.skipTag = true;
780
- effectiveGitConfig.skipPush = true;
781
- }
782
- }
783
-
784
- // Ask about pushing to remote
785
- if (!effectiveGitConfig.skipPush && !effectiveGitConfig.skipTag) {
786
- const shouldPush = await confirm({
787
- message: `Push tag ${versionInfo.newTag} to ${effectiveGitConfig.remote || "origin"}?`,
788
- default: true,
789
- });
790
-
791
- if (!shouldPush) {
792
- logger.vibe(formatSkip("Skipping git push"));
793
- effectiveGitConfig.skipPush = true;
794
- }
795
- }
796
- }
797
-
798
- // Use git service for tag creation (if not skipped)
799
- if (!effectiveGitConfig.skipTag) {
800
- const tagResult = gitService.createTag(
801
- versionInfo.newTag,
802
- cwd,
803
- logger,
804
- dryRun,
805
- effectiveGitConfig,
806
- );
807
- if (handleFailure(tagResult, "Git tag creation")) {
808
- continue;
809
- }
810
- }
811
-
812
- // Update global git info with new tag
813
- if (globalGitInfo) {
814
- globalGitInfo.newTag = versionInfo.newTag;
815
- }
816
-
817
- // NPM publish only happens in CI mode
818
- if (isCI && !dryRun) {
819
- // Run CI release command or npm publish
820
- if (releaseConfig.ciReleaseCommand) {
821
- const ciResult = publisher.runCiReleaseCommand(
822
- releaseConfig,
823
- packageJson.name,
824
- logger,
825
- dryRun,
826
- );
827
- if (handleFailure(ciResult, "CI release command")) {
828
- continue;
829
- }
830
- } else if (releaseConfig.npm?.enabled !== false) {
831
- const npmResult = publisher.publishToNpm(
832
- cwd,
833
- packageJson,
834
- releaseConfig,
835
- logger,
836
- dryRun,
837
- ciEnv,
838
- );
839
- if (handleFailure(npmResult, "NPM publish")) {
840
- continue;
841
- }
842
-
843
- // Track NPM publish
844
- if (npmResult.success && !dryRun) {
845
- publishedPackages.push({
846
- name: packageJson.name,
847
- version: versionInfo.newVersion,
848
- registry: "npm",
849
- url: `${MESSAGES.NPM_REGISTRY_URL}/${packageJson.name}`,
850
- });
851
- }
852
-
853
- // Also publish to JSR if configured
854
- const jsrResult = publisher.publishToJsr(
855
- cwd,
856
- packageJson,
857
- releaseConfig,
858
- logger,
859
- dryRun,
860
- );
861
- if (handleFailure(jsrResult, "JSR publish")) {
862
- continue;
863
- }
864
-
865
- // Track JSR publish
866
- if (jsrResult.success && releaseConfig.jsr?.enabled && !dryRun) {
867
- publishedPackages.push({
868
- name: packageJson.name,
869
- version: versionInfo.newVersion,
870
- registry: "jsr",
871
- url: `${MESSAGES.JSR_REGISTRY_URL}/@${packageJson.name}`,
872
- });
873
- }
874
- }
875
- } else if (!isCI) {
876
- logger.vibe(formatSkip("Skipping npm publish (local mode - only CI publishes)"));
877
- }
878
-
879
- // Create GitHub/GitLab release if configured
880
- const gitReleaseResult = releaseCreator.createGitRelease(
881
- cwd,
882
- releaseConfig,
883
- packageJson,
884
- versionInfo,
885
- logger,
886
- dryRun,
887
- );
888
- if (handleFailure(gitReleaseResult, "Git release creation")) {
889
- continue;
890
- }
891
- }
892
-
893
- // Run post-publish hook (errors logged but don't fail release since package already published)
894
- if (pkg.hooks?.postPublish && !packageFailed) {
895
- const hookResult = hookRunner.runHook(
896
- pkg.hooks.postPublish,
897
- cwd,
898
- logger,
899
- dryRun,
900
- hookContext,
901
- );
902
- if (!hookResult.success) {
903
- warnings.push(`[${packageJson.name}] postPublish hook failed: ${hookResult.message}`);
904
- }
905
- }
906
-
907
- // Run post-release hook (errors logged but don't fail release since package already published)
908
- if (pkg.hooks?.postRelease && !packageFailed) {
909
- const hookResult = hookRunner.runHook(
910
- pkg.hooks.postRelease,
911
- cwd,
912
- logger,
913
- dryRun,
914
- hookContext,
915
- );
916
- if (!hookResult.success) {
917
- warnings.push(`[${packageJson.name}] postRelease hook failed: ${hookResult.message}`);
918
- }
919
- }
920
-
921
- if (!packageFailed) {
922
- packagesProcessed.push({
923
- name: packageJson.name,
924
- directory: pkg.directory,
925
- version: versionInfo.newVersion,
926
- tag: versionInfo.newTag,
927
- status: "success",
928
- message: dryRun ? "Would have been released" : "Released successfully",
929
- });
930
- }
931
- } else {
932
- packagesProcessed.push({
933
- name: packageJson.name,
934
- directory: pkg.directory,
935
- status: "skipped",
936
- message: "Release disabled",
937
- });
938
- }
939
- }
940
-
941
- // Run global post-release hook only if no errors occurred
942
- // (errors logged but don't fail release since it's post-processing)
943
- const hasFailedPackages = packagesProcessed.some((p) => p.status === "failed");
944
- if (config.hooks?.postRelease && !hasFailedPackages && errors.length === 0) {
945
- const hookResult = hookRunner.runHook(
946
- config.hooks.postRelease,
947
- originalCwd,
948
- logger,
949
- dryRun,
950
- { packageManager },
951
- );
952
- if (!hookResult.success) {
953
- warnings.push(`Global postRelease hook failed: ${hookResult.message}`);
954
- }
955
- } else if (config.hooks?.postRelease && (hasFailedPackages || errors.length > 0)) {
956
- logger.vibe(formatSkip("Skipping postRelease hook due to errors"));
957
- }
958
-
959
- output.push(MESSAGES.RELEASE_COMPLETE);
960
-
961
- // Calculate total time
962
- timings.total = Date.now() - startTime;
963
-
964
- // Add summary
965
- const successCount = packagesProcessed.filter((p) => p.status === "success").length;
966
- const skipCount = packagesProcessed.filter((p) => p.status === "skipped").length;
967
- const failCount = packagesProcessed.filter((p) => p.status === "failed").length;
968
-
969
- // Show summary
970
- logger.vibe("");
971
- logger.vibe(formatSection("Summary"));
972
- if (failCount > 0) {
973
- logger.vibe(formatError(`${failCount} package(s) failed`));
974
- }
975
- if (successCount > 0) {
976
- logger.vibe(formatSuccess(`${successCount} package(s) released`));
977
- }
978
- if (skipCount > 0) {
979
- logger.vibe(formatSkip(`${skipCount} package(s) skipped`));
980
- }
981
- logger.vibe(` Total time: ${formatDuration(timings.total)}`);
982
- logger.vibe("");
983
-
984
- logger.debug(MESSAGES.SUMMARY_HEADER, {
985
- success: successCount,
986
- skipped: skipCount,
987
- failed: failCount,
988
- });
989
- logger.debug(MESSAGES.TIMING_REPORT, { ...timings });
990
-
991
- // Send notifications if configured
992
- const notifyConfig = config.notifications;
993
-
994
- if (notifyConfig?.enabled) {
995
- const notifyResult = await notificationService.sendNotification(
996
- notifyConfig,
997
- {
998
- success: errors.length === 0,
999
- packageName: packagesProcessed[0]?.name,
1000
- version: packagesProcessed[0]?.version,
1001
- duration: timings.total,
1002
- timings,
1003
- },
1004
- logger,
1005
- );
1006
- notificationsSent.push(notifyResult);
1007
- }
1008
-
1009
- // Extract only the fields expected by the response schema
1010
- const ciEnvironment = ciEnv.isCI
1011
- ? {
1012
- isCI: ciEnv.isCI as boolean,
1013
- provider: ciEnv.provider,
1014
- branch: ciEnv.branch,
1015
- commit: ciEnv.commit,
1016
- pr: ciEnv.pr,
1017
- tag: ciEnv.tag,
1018
- }
1019
- : undefined;
1020
-
1021
- const hasErrors = errors.length > 0;
1022
- return success(
1023
- {
1024
- success: !hasErrors,
1025
- output: output.join("\n"),
1026
- duration: timings.total,
1027
- packagesProcessed,
1028
- ciEnvironment,
1029
- errors: hasErrors ? errors : null,
1030
- warnings: warnings.length > 0 ? warnings : null,
1031
- gitInfo: globalGitInfo,
1032
- publishedPackages: publishedPackages.length > 0 ? publishedPackages : null,
1033
- timings,
1034
- notificationsSent: notificationsSent.length > 0 ? notificationsSent : null,
1035
- } satisfies ReleaseResponseType,
1036
- hasErrors ? { isErrorResponse: true } : undefined,
1037
- );
1038
- } catch (error) {
1039
- const errorMessage = error instanceof Error ? error.message : String(error);
1040
- errors.push(errorMessage);
1041
- output.push(MESSAGES.RELEASE_FAILED);
1042
-
1043
- // Calculate total time even on failure
1044
- timings.total = Date.now() - startTime;
1045
-
1046
- // Send failure notification if configured
1047
- const notifyConfig = config?.notifications;
1048
-
1049
- if (notifyConfig?.enabled) {
1050
- const notifyResult = await notificationService.sendNotification(
1051
- notifyConfig,
1052
- {
1053
- success: false,
1054
- error: errorMessage,
1055
- duration: timings.total,
1056
- timings,
1057
- },
1058
- logger,
1059
- );
1060
- notificationsSent.push(notifyResult);
1061
- }
1062
-
1063
- return success(
1064
- {
1065
- success: false,
1066
- output: output.join("\n"),
1067
- duration: timings.total,
1068
- packagesProcessed,
1069
- ciEnvironment: undefined,
1070
- errors,
1071
- warnings: warnings.length > 0 ? warnings : null,
1072
- gitInfo: globalGitInfo,
1073
- publishedPackages: publishedPackages.length > 0 ? publishedPackages : null,
1074
- timings,
1075
- notificationsSent: notificationsSent.length > 0 ? notificationsSent : null,
1076
- } satisfies ReleaseResponseType,
1077
- { isErrorResponse: true },
1078
- );
1079
- }
1080
- }
1081
- }
1082
-
1083
- // Singleton instance
1084
- export const releaseExecutor = new ReleaseExecutor();