@elsikora/commitizen-plugin-commitlint-ai 1.2.0 → 2.0.0-dev.2

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 (417) hide show
  1. package/README.md +256 -57
  2. package/dist/cjs/application/constant/config-file-directory.constant.d.ts +4 -0
  3. package/dist/cjs/application/constant/config-file-directory.constant.js +9 -0
  4. package/dist/cjs/application/constant/config-file-directory.constant.js.map +1 -0
  5. package/dist/cjs/application/constant/config-module-name.constant.d.ts +4 -0
  6. package/dist/cjs/application/constant/config-module-name.constant.js +9 -0
  7. package/dist/cjs/application/constant/config-module-name.constant.js.map +1 -0
  8. package/dist/cjs/application/constant/index.d.ts +2 -0
  9. package/dist/cjs/application/index.d.ts +2 -0
  10. package/dist/cjs/application/interface/cli-interface-service-select-options.interface.d.ts +21 -0
  11. package/dist/cjs/application/interface/cli-interface-service.interface.d.ts +105 -0
  12. package/dist/cjs/application/interface/command-service.interface.d.ts +19 -0
  13. package/dist/cjs/application/interface/commit-repository.interface.d.ts +32 -0
  14. package/dist/cjs/application/interface/commit-validator.interface.d.ts +29 -0
  15. package/dist/cjs/application/interface/config-service.interface.d.ts +47 -0
  16. package/dist/cjs/application/interface/config.interface.d.ts +27 -0
  17. package/dist/cjs/application/interface/file-system-service.interface.d.ts +61 -0
  18. package/dist/cjs/application/interface/index.d.ts +9 -0
  19. package/dist/cjs/application/interface/llm-service.interface.d.ts +43 -0
  20. package/dist/cjs/application/use-case/configure-llm.use-case.d.ts +39 -0
  21. package/dist/cjs/application/use-case/configure-llm.use-case.js +373 -0
  22. package/dist/cjs/application/use-case/configure-llm.use-case.js.map +1 -0
  23. package/dist/cjs/application/use-case/generate-commit-message.use-case.d.ts +18 -0
  24. package/dist/cjs/application/use-case/generate-commit-message.use-case.js +49 -0
  25. package/dist/cjs/application/use-case/generate-commit-message.use-case.js.map +1 -0
  26. package/dist/cjs/application/use-case/index.d.ts +4 -0
  27. package/dist/cjs/application/use-case/manual-commit.use-case.d.ts +16 -0
  28. package/dist/cjs/application/use-case/manual-commit.use-case.js +81 -0
  29. package/dist/cjs/application/use-case/manual-commit.use-case.js.map +1 -0
  30. package/dist/cjs/application/use-case/validate-commit-message.use-case.d.ts +26 -0
  31. package/dist/cjs/application/use-case/validate-commit-message.use-case.js +76 -0
  32. package/dist/cjs/application/use-case/validate-commit-message.use-case.js.map +1 -0
  33. package/dist/cjs/domain/constant/index.d.ts +1 -0
  34. package/dist/cjs/domain/constant/numeric.constant.d.ts +25 -0
  35. package/dist/cjs/domain/constant/numeric.constant.js +42 -0
  36. package/dist/cjs/domain/constant/numeric.constant.js.map +1 -0
  37. package/dist/cjs/domain/entity/commit-message.entity.d.ts +47 -0
  38. package/dist/cjs/domain/entity/commit-message.entity.js +71 -0
  39. package/dist/cjs/domain/entity/commit-message.entity.js.map +1 -0
  40. package/dist/cjs/domain/entity/index.d.ts +2 -0
  41. package/dist/cjs/domain/entity/llm-configuration.entity.d.ts +73 -0
  42. package/dist/cjs/domain/entity/llm-configuration.entity.js +107 -0
  43. package/dist/cjs/domain/entity/llm-configuration.entity.js.map +1 -0
  44. package/dist/cjs/domain/enum/anthropic-model.enum.d.ts +18 -0
  45. package/dist/cjs/domain/enum/anthropic-model.enum.js +26 -0
  46. package/dist/cjs/domain/enum/anthropic-model.enum.js.map +1 -0
  47. package/dist/cjs/domain/enum/aws-bedrock-model.enum.d.ts +33 -0
  48. package/dist/cjs/domain/enum/aws-bedrock-model.enum.js +47 -0
  49. package/dist/cjs/domain/enum/aws-bedrock-model.enum.js.map +1 -0
  50. package/dist/cjs/domain/enum/azure-openai-model.enum.d.ts +17 -0
  51. package/dist/cjs/domain/enum/azure-openai-model.enum.js +26 -0
  52. package/dist/cjs/domain/enum/azure-openai-model.enum.js.map +1 -0
  53. package/dist/cjs/domain/enum/commit-mode.enum.d.ts +7 -0
  54. package/dist/cjs/domain/enum/commit-mode.enum.js +11 -0
  55. package/dist/cjs/domain/enum/commit-mode.enum.js.map +1 -0
  56. package/dist/cjs/domain/enum/google-model.enum.d.ts +16 -0
  57. package/dist/cjs/domain/enum/google-model.enum.js +25 -0
  58. package/dist/cjs/domain/enum/google-model.enum.js.map +1 -0
  59. package/dist/cjs/domain/enum/index.d.ts +9 -0
  60. package/dist/cjs/domain/enum/llm-provider.enum.d.ts +11 -0
  61. package/dist/cjs/domain/enum/llm-provider.enum.js +15 -0
  62. package/dist/cjs/domain/enum/llm-provider.enum.js.map +1 -0
  63. package/dist/cjs/domain/enum/log-level.enum.d.ts +9 -0
  64. package/dist/cjs/domain/enum/log-level.enum.js +13 -0
  65. package/dist/cjs/domain/enum/log-level.enum.js.map +1 -0
  66. package/dist/cjs/domain/enum/ollama-model.enum.d.ts +24 -0
  67. package/dist/cjs/domain/enum/ollama-model.enum.js +30 -0
  68. package/dist/cjs/domain/enum/ollama-model.enum.js.map +1 -0
  69. package/dist/cjs/domain/enum/openai-model.enum.d.ts +25 -0
  70. package/dist/cjs/domain/enum/openai-model.enum.js +35 -0
  71. package/dist/cjs/domain/enum/openai-model.enum.js.map +1 -0
  72. package/dist/cjs/domain/index.d.ts +3 -0
  73. package/dist/cjs/domain/value-object/api-key.value-object.d.ts +28 -0
  74. package/dist/cjs/domain/value-object/api-key.value-object.js +51 -0
  75. package/dist/cjs/domain/value-object/api-key.value-object.js.map +1 -0
  76. package/dist/cjs/domain/value-object/commit-body.value-object.d.ts +39 -0
  77. package/dist/cjs/domain/value-object/commit-body.value-object.js +66 -0
  78. package/dist/cjs/domain/value-object/commit-body.value-object.js.map +1 -0
  79. package/dist/cjs/domain/value-object/commit-header.value-object.d.ts +35 -0
  80. package/dist/cjs/domain/value-object/commit-header.value-object.js +63 -0
  81. package/dist/cjs/domain/value-object/commit-header.value-object.js.map +1 -0
  82. package/dist/cjs/domain/value-object/index.d.ts +3 -0
  83. package/dist/cjs/index.d.ts +14 -12
  84. package/dist/cjs/index.js +85 -83
  85. package/dist/cjs/index.js.map +1 -1
  86. package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.d.ts +38 -0
  87. package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.js +207 -0
  88. package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.js.map +1 -0
  89. package/dist/cjs/infrastructure/commit-validator/index.d.ts +1 -0
  90. package/dist/cjs/infrastructure/di/container.d.ts +17 -0
  91. package/dist/cjs/infrastructure/di/container.js +76 -0
  92. package/dist/cjs/infrastructure/di/container.js.map +1 -0
  93. package/dist/cjs/infrastructure/di/index.d.ts +1 -0
  94. package/dist/cjs/infrastructure/git/git-commit.repository.d.ts +36 -0
  95. package/dist/cjs/infrastructure/git/git-commit.repository.js +78 -0
  96. package/dist/cjs/infrastructure/git/git-commit.repository.js.map +1 -0
  97. package/dist/cjs/infrastructure/git/index.d.ts +1 -0
  98. package/dist/cjs/infrastructure/index.d.ts +4 -0
  99. package/dist/cjs/infrastructure/llm/anthropic-llm.service.d.ts +39 -0
  100. package/dist/cjs/infrastructure/llm/anthropic-llm.service.js +323 -0
  101. package/dist/cjs/infrastructure/llm/anthropic-llm.service.js.map +1 -0
  102. package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.d.ts +60 -0
  103. package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.js +514 -0
  104. package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.js.map +1 -0
  105. package/dist/cjs/infrastructure/llm/azure-openai-llm.service.d.ts +45 -0
  106. package/dist/cjs/infrastructure/llm/azure-openai-llm.service.js +351 -0
  107. package/dist/cjs/infrastructure/llm/azure-openai-llm.service.js.map +1 -0
  108. package/dist/cjs/infrastructure/llm/google-llm.service.d.ts +45 -0
  109. package/dist/cjs/infrastructure/llm/google-llm.service.js +335 -0
  110. package/dist/cjs/infrastructure/llm/google-llm.service.js.map +1 -0
  111. package/dist/cjs/infrastructure/llm/index.d.ts +6 -0
  112. package/dist/cjs/infrastructure/llm/ollama-llm.service.d.ts +45 -0
  113. package/dist/cjs/infrastructure/llm/ollama-llm.service.js +387 -0
  114. package/dist/cjs/infrastructure/llm/ollama-llm.service.js.map +1 -0
  115. package/dist/cjs/infrastructure/llm/openai-llm.service.d.ts +45 -0
  116. package/dist/cjs/infrastructure/llm/openai-llm.service.js +339 -0
  117. package/dist/cjs/infrastructure/llm/openai-llm.service.js.map +1 -0
  118. package/dist/cjs/infrastructure/service/cosmic-config.service.d.ts +66 -0
  119. package/dist/cjs/infrastructure/service/cosmic-config.service.js +176 -0
  120. package/dist/cjs/infrastructure/service/cosmic-config.service.js.map +1 -0
  121. package/dist/cjs/infrastructure/service/index.d.ts +4 -0
  122. package/dist/cjs/infrastructure/service/node-command.service.d.ts +45 -0
  123. package/dist/cjs/infrastructure/service/node-command.service.js +154 -0
  124. package/dist/cjs/infrastructure/service/node-command.service.js.map +1 -0
  125. package/dist/cjs/infrastructure/service/node-file-system.service.d.ts +62 -0
  126. package/dist/cjs/infrastructure/service/node-file-system.service.js +102 -0
  127. package/dist/cjs/infrastructure/service/node-file-system.service.js.map +1 -0
  128. package/dist/cjs/infrastructure/service/prompts-cli-interface.service.d.ts +117 -0
  129. package/dist/cjs/infrastructure/service/prompts-cli-interface.service.js +318 -0
  130. package/dist/cjs/infrastructure/service/prompts-cli-interface.service.js.map +1 -0
  131. package/dist/cjs/presentation/commitizen.adapter.d.ts +28 -0
  132. package/dist/cjs/presentation/commitizen.adapter.js +304 -0
  133. package/dist/cjs/presentation/commitizen.adapter.js.map +1 -0
  134. package/dist/cjs/presentation/index.d.ts +1 -0
  135. package/dist/esm/application/constant/config-file-directory.constant.d.ts +4 -0
  136. package/dist/esm/application/constant/config-file-directory.constant.js +7 -0
  137. package/dist/esm/application/constant/config-file-directory.constant.js.map +1 -0
  138. package/dist/esm/application/constant/config-module-name.constant.d.ts +4 -0
  139. package/dist/esm/application/constant/config-module-name.constant.js +7 -0
  140. package/dist/esm/application/constant/config-module-name.constant.js.map +1 -0
  141. package/dist/esm/application/constant/index.d.ts +2 -0
  142. package/dist/esm/application/index.d.ts +2 -0
  143. package/dist/esm/application/interface/cli-interface-service-select-options.interface.d.ts +21 -0
  144. package/dist/esm/application/interface/cli-interface-service.interface.d.ts +105 -0
  145. package/dist/esm/application/interface/command-service.interface.d.ts +19 -0
  146. package/dist/esm/application/interface/commit-repository.interface.d.ts +32 -0
  147. package/dist/esm/application/interface/commit-validator.interface.d.ts +29 -0
  148. package/dist/esm/application/interface/config-service.interface.d.ts +47 -0
  149. package/dist/esm/application/interface/config.interface.d.ts +27 -0
  150. package/dist/esm/application/interface/file-system-service.interface.d.ts +61 -0
  151. package/dist/esm/application/interface/index.d.ts +9 -0
  152. package/dist/esm/application/interface/llm-service.interface.d.ts +43 -0
  153. package/dist/esm/application/use-case/configure-llm.use-case.d.ts +39 -0
  154. package/dist/esm/application/use-case/configure-llm.use-case.js +371 -0
  155. package/dist/esm/application/use-case/configure-llm.use-case.js.map +1 -0
  156. package/dist/esm/application/use-case/generate-commit-message.use-case.d.ts +18 -0
  157. package/dist/esm/application/use-case/generate-commit-message.use-case.js +47 -0
  158. package/dist/esm/application/use-case/generate-commit-message.use-case.js.map +1 -0
  159. package/dist/esm/application/use-case/index.d.ts +4 -0
  160. package/dist/esm/application/use-case/manual-commit.use-case.d.ts +16 -0
  161. package/dist/esm/application/use-case/manual-commit.use-case.js +79 -0
  162. package/dist/esm/application/use-case/manual-commit.use-case.js.map +1 -0
  163. package/dist/esm/application/use-case/validate-commit-message.use-case.d.ts +26 -0
  164. package/dist/esm/application/use-case/validate-commit-message.use-case.js +74 -0
  165. package/dist/esm/application/use-case/validate-commit-message.use-case.js.map +1 -0
  166. package/dist/esm/domain/constant/index.d.ts +1 -0
  167. package/dist/esm/domain/constant/numeric.constant.d.ts +25 -0
  168. package/dist/esm/domain/constant/numeric.constant.js +26 -0
  169. package/dist/esm/domain/constant/numeric.constant.js.map +1 -0
  170. package/dist/esm/domain/entity/commit-message.entity.d.ts +47 -0
  171. package/dist/esm/domain/entity/commit-message.entity.js +69 -0
  172. package/dist/esm/domain/entity/commit-message.entity.js.map +1 -0
  173. package/dist/esm/domain/entity/index.d.ts +2 -0
  174. package/dist/esm/domain/entity/llm-configuration.entity.d.ts +73 -0
  175. package/dist/esm/domain/entity/llm-configuration.entity.js +105 -0
  176. package/dist/esm/domain/entity/llm-configuration.entity.js.map +1 -0
  177. package/dist/esm/domain/enum/anthropic-model.enum.d.ts +18 -0
  178. package/dist/esm/domain/enum/anthropic-model.enum.js +26 -0
  179. package/dist/esm/domain/enum/anthropic-model.enum.js.map +1 -0
  180. package/dist/esm/domain/enum/aws-bedrock-model.enum.d.ts +33 -0
  181. package/dist/esm/domain/enum/aws-bedrock-model.enum.js +47 -0
  182. package/dist/esm/domain/enum/aws-bedrock-model.enum.js.map +1 -0
  183. package/dist/esm/domain/enum/azure-openai-model.enum.d.ts +17 -0
  184. package/dist/esm/domain/enum/azure-openai-model.enum.js +26 -0
  185. package/dist/esm/domain/enum/azure-openai-model.enum.js.map +1 -0
  186. package/dist/esm/domain/enum/commit-mode.enum.d.ts +7 -0
  187. package/dist/esm/domain/enum/commit-mode.enum.js +11 -0
  188. package/dist/esm/domain/enum/commit-mode.enum.js.map +1 -0
  189. package/dist/esm/domain/enum/google-model.enum.d.ts +16 -0
  190. package/dist/esm/domain/enum/google-model.enum.js +25 -0
  191. package/dist/esm/domain/enum/google-model.enum.js.map +1 -0
  192. package/dist/esm/domain/enum/index.d.ts +9 -0
  193. package/dist/esm/domain/enum/llm-provider.enum.d.ts +11 -0
  194. package/dist/esm/domain/enum/llm-provider.enum.js +15 -0
  195. package/dist/esm/domain/enum/llm-provider.enum.js.map +1 -0
  196. package/dist/esm/domain/enum/log-level.enum.d.ts +9 -0
  197. package/dist/esm/domain/enum/log-level.enum.js +13 -0
  198. package/dist/esm/domain/enum/log-level.enum.js.map +1 -0
  199. package/dist/esm/domain/enum/ollama-model.enum.d.ts +24 -0
  200. package/dist/esm/domain/enum/ollama-model.enum.js +30 -0
  201. package/dist/esm/domain/enum/ollama-model.enum.js.map +1 -0
  202. package/dist/esm/domain/enum/openai-model.enum.d.ts +25 -0
  203. package/dist/esm/domain/enum/openai-model.enum.js +35 -0
  204. package/dist/esm/domain/enum/openai-model.enum.js.map +1 -0
  205. package/dist/esm/domain/index.d.ts +3 -0
  206. package/dist/esm/domain/value-object/api-key.value-object.d.ts +28 -0
  207. package/dist/esm/domain/value-object/api-key.value-object.js +49 -0
  208. package/dist/esm/domain/value-object/api-key.value-object.js.map +1 -0
  209. package/dist/esm/domain/value-object/commit-body.value-object.d.ts +39 -0
  210. package/dist/esm/domain/value-object/commit-body.value-object.js +64 -0
  211. package/dist/esm/domain/value-object/commit-body.value-object.js.map +1 -0
  212. package/dist/esm/domain/value-object/commit-header.value-object.d.ts +35 -0
  213. package/dist/esm/domain/value-object/commit-header.value-object.js +61 -0
  214. package/dist/esm/domain/value-object/commit-header.value-object.js.map +1 -0
  215. package/dist/esm/domain/value-object/index.d.ts +3 -0
  216. package/dist/esm/index.d.ts +14 -12
  217. package/dist/esm/index.js +38 -82
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.d.ts +38 -0
  220. package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.js +205 -0
  221. package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.js.map +1 -0
  222. package/dist/esm/infrastructure/commit-validator/index.d.ts +1 -0
  223. package/dist/esm/infrastructure/di/container.d.ts +17 -0
  224. package/dist/esm/infrastructure/di/container.js +63 -0
  225. package/dist/esm/infrastructure/di/container.js.map +1 -0
  226. package/dist/esm/infrastructure/di/index.d.ts +1 -0
  227. package/dist/esm/infrastructure/git/git-commit.repository.d.ts +36 -0
  228. package/dist/esm/infrastructure/git/git-commit.repository.js +76 -0
  229. package/dist/esm/infrastructure/git/git-commit.repository.js.map +1 -0
  230. package/dist/esm/infrastructure/git/index.d.ts +1 -0
  231. package/dist/esm/infrastructure/index.d.ts +4 -0
  232. package/dist/esm/infrastructure/llm/anthropic-llm.service.d.ts +39 -0
  233. package/dist/esm/infrastructure/llm/anthropic-llm.service.js +321 -0
  234. package/dist/esm/infrastructure/llm/anthropic-llm.service.js.map +1 -0
  235. package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.d.ts +60 -0
  236. package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.js +512 -0
  237. package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.js.map +1 -0
  238. package/dist/esm/infrastructure/llm/azure-openai-llm.service.d.ts +45 -0
  239. package/dist/esm/infrastructure/llm/azure-openai-llm.service.js +349 -0
  240. package/dist/esm/infrastructure/llm/azure-openai-llm.service.js.map +1 -0
  241. package/dist/esm/infrastructure/llm/google-llm.service.d.ts +45 -0
  242. package/dist/esm/infrastructure/llm/google-llm.service.js +333 -0
  243. package/dist/esm/infrastructure/llm/google-llm.service.js.map +1 -0
  244. package/dist/esm/infrastructure/llm/index.d.ts +6 -0
  245. package/dist/esm/infrastructure/llm/ollama-llm.service.d.ts +45 -0
  246. package/dist/esm/infrastructure/llm/ollama-llm.service.js +385 -0
  247. package/dist/esm/infrastructure/llm/ollama-llm.service.js.map +1 -0
  248. package/dist/esm/infrastructure/llm/openai-llm.service.d.ts +45 -0
  249. package/dist/esm/infrastructure/llm/openai-llm.service.js +337 -0
  250. package/dist/esm/infrastructure/llm/openai-llm.service.js.map +1 -0
  251. package/dist/esm/infrastructure/service/cosmic-config.service.d.ts +66 -0
  252. package/dist/esm/infrastructure/service/cosmic-config.service.js +174 -0
  253. package/dist/esm/infrastructure/service/cosmic-config.service.js.map +1 -0
  254. package/dist/esm/infrastructure/service/index.d.ts +4 -0
  255. package/dist/esm/infrastructure/service/node-command.service.d.ts +45 -0
  256. package/dist/esm/infrastructure/service/node-command.service.js +152 -0
  257. package/dist/esm/infrastructure/service/node-command.service.js.map +1 -0
  258. package/dist/esm/infrastructure/service/node-file-system.service.d.ts +62 -0
  259. package/dist/esm/infrastructure/service/node-file-system.service.js +100 -0
  260. package/dist/esm/infrastructure/service/node-file-system.service.js.map +1 -0
  261. package/dist/esm/infrastructure/service/prompts-cli-interface.service.d.ts +117 -0
  262. package/dist/esm/infrastructure/service/prompts-cli-interface.service.js +316 -0
  263. package/dist/esm/infrastructure/service/prompts-cli-interface.service.js.map +1 -0
  264. package/dist/esm/package.json +19 -0
  265. package/dist/esm/presentation/commitizen.adapter.d.ts +28 -0
  266. package/dist/esm/presentation/commitizen.adapter.js +302 -0
  267. package/dist/esm/presentation/commitizen.adapter.js.map +1 -0
  268. package/dist/esm/presentation/index.d.ts +1 -0
  269. package/index.cjs +1 -2
  270. package/package.json +42 -25
  271. package/dist/cjs/ManualProcess.d.ts +0 -6
  272. package/dist/cjs/ManualProcess.d.ts.map +0 -1
  273. package/dist/cjs/ManualProcess.js +0 -111
  274. package/dist/cjs/ManualProcess.js.map +0 -1
  275. package/dist/cjs/Process.d.ts +0 -6
  276. package/dist/cjs/Process.d.ts.map +0 -1
  277. package/dist/cjs/Process.js +0 -176
  278. package/dist/cjs/Process.js.map +0 -1
  279. package/dist/cjs/Question.d.ts +0 -46
  280. package/dist/cjs/Question.d.ts.map +0 -1
  281. package/dist/cjs/SectionBody.d.ts +0 -4
  282. package/dist/cjs/SectionBody.d.ts.map +0 -1
  283. package/dist/cjs/SectionFooter.d.ts +0 -13
  284. package/dist/cjs/SectionFooter.d.ts.map +0 -1
  285. package/dist/cjs/SectionHeader.d.ts +0 -15
  286. package/dist/cjs/SectionHeader.d.ts.map +0 -1
  287. package/dist/cjs/index.d.ts.map +0 -1
  288. package/dist/cjs/services/commitConfirmation.d.ts +0 -3
  289. package/dist/cjs/services/commitConfirmation.d.ts.map +0 -1
  290. package/dist/cjs/services/commitConfirmation.js +0 -122
  291. package/dist/cjs/services/commitConfirmation.js.map +0 -1
  292. package/dist/cjs/services/commitlintConfig.d.ts +0 -4
  293. package/dist/cjs/services/commitlintConfig.d.ts.map +0 -1
  294. package/dist/cjs/services/commitlintConfig.js +0 -198
  295. package/dist/cjs/services/commitlintConfig.js.map +0 -1
  296. package/dist/cjs/services/commitlintValidator.d.ts +0 -26
  297. package/dist/cjs/services/commitlintValidator.d.ts.map +0 -1
  298. package/dist/cjs/services/commitlintValidator.js +0 -146
  299. package/dist/cjs/services/commitlintValidator.js.map +0 -1
  300. package/dist/cjs/services/getRuleQuestionConfig.d.ts +0 -4
  301. package/dist/cjs/services/getRuleQuestionConfig.d.ts.map +0 -1
  302. package/dist/cjs/services/llm/anthropic.d.ts +0 -3
  303. package/dist/cjs/services/llm/anthropic.d.ts.map +0 -1
  304. package/dist/cjs/services/llm/anthropic.js +0 -118
  305. package/dist/cjs/services/llm/anthropic.js.map +0 -1
  306. package/dist/cjs/services/llm/config.d.ts +0 -5
  307. package/dist/cjs/services/llm/config.d.ts.map +0 -1
  308. package/dist/cjs/services/llm/config.js +0 -181
  309. package/dist/cjs/services/llm/config.js.map +0 -1
  310. package/dist/cjs/services/llm/index.d.ts +0 -6
  311. package/dist/cjs/services/llm/index.d.ts.map +0 -1
  312. package/dist/cjs/services/llm/index.js +0 -399
  313. package/dist/cjs/services/llm/index.js.map +0 -1
  314. package/dist/cjs/services/llm/models.d.ts +0 -34
  315. package/dist/cjs/services/llm/models.d.ts.map +0 -1
  316. package/dist/cjs/services/llm/models.js +0 -65
  317. package/dist/cjs/services/llm/models.js.map +0 -1
  318. package/dist/cjs/services/llm/openai.d.ts +0 -3
  319. package/dist/cjs/services/llm/openai.d.ts.map +0 -1
  320. package/dist/cjs/services/llm/openai.js +0 -111
  321. package/dist/cjs/services/llm/openai.js.map +0 -1
  322. package/dist/cjs/services/llm/types.d.ts +0 -71
  323. package/dist/cjs/services/llm/types.d.ts.map +0 -1
  324. package/dist/cjs/store/defaultPromptConfigs.d.ts +0 -33
  325. package/dist/cjs/store/defaultPromptConfigs.d.ts.map +0 -1
  326. package/dist/cjs/store/defaultPromptConfigs.js +0 -39
  327. package/dist/cjs/store/defaultPromptConfigs.js.map +0 -1
  328. package/dist/cjs/store/prompts.d.ts +0 -6
  329. package/dist/cjs/store/prompts.d.ts.map +0 -1
  330. package/dist/cjs/store/prompts.js +0 -40
  331. package/dist/cjs/store/prompts.js.map +0 -1
  332. package/dist/cjs/store/rules.d.ts +0 -7
  333. package/dist/cjs/store/rules.d.ts.map +0 -1
  334. package/dist/cjs/types.d.ts +0 -3
  335. package/dist/cjs/types.d.ts.map +0 -1
  336. package/dist/cjs/utils/case-function.d.ts +0 -9
  337. package/dist/cjs/utils/case-function.d.ts.map +0 -1
  338. package/dist/cjs/utils/full-stop-function.d.ts +0 -9
  339. package/dist/cjs/utils/full-stop-function.d.ts.map +0 -1
  340. package/dist/cjs/utils/leading-blank-function.d.ts +0 -8
  341. package/dist/cjs/utils/leading-blank-function.d.ts.map +0 -1
  342. package/dist/cjs/utils/rules.d.ts +0 -26
  343. package/dist/cjs/utils/rules.d.ts.map +0 -1
  344. package/dist/esm/ManualProcess.d.ts +0 -6
  345. package/dist/esm/ManualProcess.d.ts.map +0 -1
  346. package/dist/esm/ManualProcess.js +0 -107
  347. package/dist/esm/ManualProcess.js.map +0 -1
  348. package/dist/esm/Process.d.ts +0 -6
  349. package/dist/esm/Process.d.ts.map +0 -1
  350. package/dist/esm/Process.js +0 -172
  351. package/dist/esm/Process.js.map +0 -1
  352. package/dist/esm/Question.d.ts +0 -46
  353. package/dist/esm/Question.d.ts.map +0 -1
  354. package/dist/esm/SectionBody.d.ts +0 -4
  355. package/dist/esm/SectionBody.d.ts.map +0 -1
  356. package/dist/esm/SectionFooter.d.ts +0 -13
  357. package/dist/esm/SectionFooter.d.ts.map +0 -1
  358. package/dist/esm/SectionHeader.d.ts +0 -15
  359. package/dist/esm/SectionHeader.d.ts.map +0 -1
  360. package/dist/esm/index.d.ts.map +0 -1
  361. package/dist/esm/services/commitConfirmation.d.ts +0 -3
  362. package/dist/esm/services/commitConfirmation.d.ts.map +0 -1
  363. package/dist/esm/services/commitConfirmation.js +0 -120
  364. package/dist/esm/services/commitConfirmation.js.map +0 -1
  365. package/dist/esm/services/commitlintConfig.d.ts +0 -4
  366. package/dist/esm/services/commitlintConfig.d.ts.map +0 -1
  367. package/dist/esm/services/commitlintConfig.js +0 -196
  368. package/dist/esm/services/commitlintConfig.js.map +0 -1
  369. package/dist/esm/services/commitlintValidator.d.ts +0 -26
  370. package/dist/esm/services/commitlintValidator.d.ts.map +0 -1
  371. package/dist/esm/services/commitlintValidator.js +0 -142
  372. package/dist/esm/services/commitlintValidator.js.map +0 -1
  373. package/dist/esm/services/getRuleQuestionConfig.d.ts +0 -4
  374. package/dist/esm/services/getRuleQuestionConfig.d.ts.map +0 -1
  375. package/dist/esm/services/llm/anthropic.d.ts +0 -3
  376. package/dist/esm/services/llm/anthropic.d.ts.map +0 -1
  377. package/dist/esm/services/llm/anthropic.js +0 -116
  378. package/dist/esm/services/llm/anthropic.js.map +0 -1
  379. package/dist/esm/services/llm/config.d.ts +0 -5
  380. package/dist/esm/services/llm/config.d.ts.map +0 -1
  381. package/dist/esm/services/llm/config.js +0 -178
  382. package/dist/esm/services/llm/config.js.map +0 -1
  383. package/dist/esm/services/llm/index.d.ts +0 -6
  384. package/dist/esm/services/llm/index.d.ts.map +0 -1
  385. package/dist/esm/services/llm/index.js +0 -394
  386. package/dist/esm/services/llm/index.js.map +0 -1
  387. package/dist/esm/services/llm/models.d.ts +0 -34
  388. package/dist/esm/services/llm/models.d.ts.map +0 -1
  389. package/dist/esm/services/llm/models.js +0 -60
  390. package/dist/esm/services/llm/models.js.map +0 -1
  391. package/dist/esm/services/llm/openai.d.ts +0 -3
  392. package/dist/esm/services/llm/openai.d.ts.map +0 -1
  393. package/dist/esm/services/llm/openai.js +0 -109
  394. package/dist/esm/services/llm/openai.js.map +0 -1
  395. package/dist/esm/services/llm/types.d.ts +0 -71
  396. package/dist/esm/services/llm/types.d.ts.map +0 -1
  397. package/dist/esm/store/defaultPromptConfigs.d.ts +0 -33
  398. package/dist/esm/store/defaultPromptConfigs.d.ts.map +0 -1
  399. package/dist/esm/store/defaultPromptConfigs.js +0 -35
  400. package/dist/esm/store/defaultPromptConfigs.js.map +0 -1
  401. package/dist/esm/store/prompts.d.ts +0 -6
  402. package/dist/esm/store/prompts.d.ts.map +0 -1
  403. package/dist/esm/store/prompts.js +0 -38
  404. package/dist/esm/store/prompts.js.map +0 -1
  405. package/dist/esm/store/rules.d.ts +0 -7
  406. package/dist/esm/store/rules.d.ts.map +0 -1
  407. package/dist/esm/types.d.ts +0 -3
  408. package/dist/esm/types.d.ts.map +0 -1
  409. package/dist/esm/utils/case-function.d.ts +0 -9
  410. package/dist/esm/utils/case-function.d.ts.map +0 -1
  411. package/dist/esm/utils/full-stop-function.d.ts +0 -9
  412. package/dist/esm/utils/full-stop-function.d.ts.map +0 -1
  413. package/dist/esm/utils/leading-blank-function.d.ts +0 -8
  414. package/dist/esm/utils/leading-blank-function.d.ts.map +0 -1
  415. package/dist/esm/utils/rules.d.ts +0 -26
  416. package/dist/esm/utils/rules.d.ts.map +0 -1
  417. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,318 @@
1
+ 'use strict';
2
+
3
+ var chalk = require('chalk');
4
+ var ora = require('ora');
5
+ var prompts = require('prompts');
6
+
7
+ /**
8
+ * Implementation of the CLI interface service using the prompts library.
9
+ * Provides methods for interacting with the user through the command line.
10
+ */
11
+ class PromptsCliInterface {
12
+ /** Reference to the active spinner instance */
13
+ // @ts-ignore
14
+ spinner;
15
+ /**
16
+ * Initializes a new instance of the PromptsCliInterface.
17
+ * Sets up the spinner for providing visual feedback during operations.
18
+ */
19
+ constructor() {
20
+ this.spinner = ora();
21
+ }
22
+ /**
23
+ * Clears the console screen.
24
+ */
25
+ clear() {
26
+ process.stdout.write("\u001Bc");
27
+ }
28
+ /**
29
+ * Displays a confirmation prompt to the user.
30
+ * @param {string} message - The message to display to the user
31
+ * @param {boolean} isConfirmedByDefault - The default value for the confirmation, defaults to false
32
+ * @returns {Promise<boolean>} Promise that resolves to the user's response (true for confirmed, false for declined)
33
+ */
34
+ async confirm(message, isConfirmedByDefault = false) {
35
+ try {
36
+ const response = await prompts({
37
+ active: "Yes",
38
+ inactive: "No",
39
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
40
+ initial: isConfirmedByDefault,
41
+ message,
42
+ name: "value",
43
+ type: "toggle",
44
+ });
45
+ if (response.value === undefined) {
46
+ this.error("Operation cancelled by user");
47
+ process.exit(0);
48
+ }
49
+ return response.value;
50
+ }
51
+ catch {
52
+ this.error("Operation cancelled by user");
53
+ process.exit(0);
54
+ }
55
+ }
56
+ /**
57
+ * Displays an error message to the user.
58
+ * @param {string} message - The error message to display
59
+ */
60
+ error(message) {
61
+ process.stderr.write(`${chalk.red(message)}\n`);
62
+ }
63
+ /**
64
+ * Displays a grouped multi-select prompt to the user.
65
+ * @param {string} message - The message to display to the user
66
+ * @param {Record<string, Array<ICliInterfaceServiceSelectOptions>>} options - Record of groups and their options
67
+ * @param {boolean} isRequired - Whether a selection is required, defaults to false
68
+ * @param {Array<string>} initialValues - Initial selected values
69
+ * @returns {Promise<Array<T>>} Promise that resolves to an array of selected values
70
+ * @template T - The type of the selected values
71
+ */
72
+ async groupMultiselect(message, options, isRequired = false, initialValues) {
73
+ // Convert options to a flat array with group prefixes
74
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
75
+ const choices = [];
76
+ for (const [group, groupOptions] of Object.entries(options)) {
77
+ for (const opt of groupOptions) {
78
+ choices.push({
79
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
80
+ selected: initialValues?.includes(opt.value) ?? false,
81
+ title: `${group}: ${opt.label}`,
82
+ value: opt.value,
83
+ });
84
+ }
85
+ }
86
+ try {
87
+ const response = await prompts({
88
+ choices,
89
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
90
+ instructions: false,
91
+ message: `${message} (space to select)`,
92
+ min: isRequired ? 1 : undefined,
93
+ name: "values",
94
+ type: "multiselect",
95
+ });
96
+ if (response.values === undefined) {
97
+ this.error("Operation cancelled by user");
98
+ process.exit(0);
99
+ }
100
+ return response.values;
101
+ }
102
+ catch {
103
+ this.error("Operation cancelled by user");
104
+ process.exit(0);
105
+ }
106
+ }
107
+ /**
108
+ * Handles and displays an error message with additional error details.
109
+ * @param {string} message - The error message to display
110
+ * @param {unknown} error - The error object or details
111
+ */
112
+ handleError(message, error) {
113
+ process.stderr.write(`${chalk.red(message)}\n`);
114
+ process.stderr.write(`${String(error)}\n`);
115
+ }
116
+ /**
117
+ * Displays an informational message to the user.
118
+ * @param {string} message - The info message to display
119
+ */
120
+ info(message) {
121
+ process.stdout.write(`${chalk.blue(message)}\n`);
122
+ }
123
+ /**
124
+ * Displays a standard message to the user.
125
+ * @param {string} message - The message to display
126
+ */
127
+ log(message) {
128
+ process.stdout.write(`${message}\n`);
129
+ }
130
+ /**
131
+ * Displays a multi-select prompt to the user.
132
+ * @param {string} message - The message to display to the user
133
+ * @param {Array<ICliInterfaceServiceSelectOptions>} options - Array of options to select from
134
+ * @param {boolean} isRequired - Whether a selection is required, defaults to false
135
+ * @param {Array<string>} initialValues - Initial selected values
136
+ * @returns {Promise<Array<T>>} Promise that resolves to an array of selected values
137
+ * @template T - The type of the selected values
138
+ */
139
+ async multiselect(message, options, isRequired = false, initialValues) {
140
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
141
+ const choices = options.map((opt) => ({
142
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
143
+ selected: initialValues?.includes(opt.value) ?? false,
144
+ title: opt.label,
145
+ value: opt.value,
146
+ }));
147
+ try {
148
+ const response = await prompts({
149
+ choices,
150
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
151
+ instructions: false,
152
+ message: `${message} (space to select)`,
153
+ min: isRequired ? 1 : undefined,
154
+ name: "values",
155
+ type: "multiselect",
156
+ });
157
+ if (response.values === undefined) {
158
+ this.error("Operation cancelled by user");
159
+ process.exit(0);
160
+ }
161
+ return response.values;
162
+ }
163
+ catch {
164
+ this.error("Operation cancelled by user");
165
+ process.exit(0);
166
+ }
167
+ }
168
+ /**
169
+ * Displays a note to the user with a title and message.
170
+ * @param {string} title - The title of the note
171
+ * @param {string} message - The message content of the note
172
+ */
173
+ note(title, message) {
174
+ const lines = message.split("\n");
175
+ // eslint-disable-next-line @elsikora/typescript/no-magic-numbers
176
+ const width = Math.max(title.length, ...lines.map((line) => line.length)) + 4; // Add padding
177
+ const top = `┌${"─".repeat(width)}┐`;
178
+ const bottom = `└${"─".repeat(width)}┘`;
179
+ // Create middle lines with padding
180
+ // eslint-disable-next-line @elsikora/typescript/no-magic-numbers
181
+ const paddedTitle = ` ${title.padEnd(width - 2)} `;
182
+ // eslint-disable-next-line @elsikora/typescript/no-magic-numbers
183
+ const paddedLines = lines.map((line) => ` ${line.padEnd(width - 2)} `);
184
+ // Log the note box with styling
185
+ process.stdout.write(`${chalk.dim(top)}\n`);
186
+ process.stdout.write(`${chalk.dim("│") + chalk.bold(paddedTitle) + chalk.dim("│")}\n`);
187
+ if (lines.length > 0) {
188
+ // Add a separator line
189
+ const separator = `├${"─".repeat(width)}┤`;
190
+ process.stdout.write(`${chalk.dim(separator)}\n`);
191
+ // Add message content
192
+ for (const line of paddedLines) {
193
+ process.stdout.write(`${chalk.dim("│") + chalk.dim(line) + chalk.dim("│")}\n`);
194
+ }
195
+ }
196
+ process.stdout.write(`${chalk.dim(bottom)}\n`);
197
+ }
198
+ /**
199
+ * Displays a single select prompt to the user.
200
+ * @param {string} message - The message to display to the user
201
+ * @param {Array<ICliInterfaceServiceSelectOptions>} options - Array of options to select from
202
+ * @param {string} initialValue - Initial selected value
203
+ * @returns {Promise<T>} Promise that resolves to the selected value
204
+ * @template T - The type of the selected value
205
+ */
206
+ async select(message, options, initialValue) {
207
+ const choices = options.map((opt) => ({
208
+ title: opt.label,
209
+ value: opt.value,
210
+ }));
211
+ const initialIndex = initialValue ? choices.findIndex((choice) => choice.value === initialValue) : undefined;
212
+ try {
213
+ const response = await prompts({
214
+ choices,
215
+ initial: initialIndex === -1 ? 0 : initialIndex,
216
+ message,
217
+ name: "value",
218
+ type: "select",
219
+ });
220
+ if (response.value === undefined) {
221
+ this.error("Operation cancelled by user");
222
+ process.exit(0);
223
+ }
224
+ return response.value;
225
+ }
226
+ catch {
227
+ this.error("Operation cancelled by user");
228
+ process.exit(0);
229
+ }
230
+ }
231
+ /**
232
+ * Starts a spinner with the specified message.
233
+ * Stops any existing spinner first.
234
+ * @param {string} message - The message to display while the spinner is active
235
+ */
236
+ startSpinner(message) {
237
+ this.spinner.stop();
238
+ this.spinner = ora(message).start();
239
+ }
240
+ /**
241
+ * Stops the current spinner with an optional completion message.
242
+ * @param {string} message - Optional message to display when the spinner stops
243
+ */
244
+ stopSpinner(message) {
245
+ this.spinner.stop();
246
+ if (message) {
247
+ process.stdout.write(`${message}\n`);
248
+ }
249
+ }
250
+ /**
251
+ * Displays a success message to the user.
252
+ * @param {string} message - The success message to display
253
+ */
254
+ success(message) {
255
+ process.stdout.write(`${chalk.green(message)}\n`);
256
+ }
257
+ /**
258
+ * Displays a text input prompt to the user.
259
+ * @param {string} message - The message to display to the user
260
+ * @param {string} _placeholder - Optional placeholder text for the input field (unused)
261
+ * @param {string} initialValue - Optional initial value for the input field
262
+ * @param {(value: string) => Error | string | undefined} validate - Optional validation function for the input
263
+ * @returns {Promise<string>} Promise that resolves to the user's input text
264
+ */
265
+ async text(message, _placeholder, initialValue, validate) {
266
+ // Convert the validate function to match prompts' expected format
267
+ const promptsValidate = validate
268
+ ? // eslint-disable-next-line @elsikora/typescript/explicit-function-return-type
269
+ (value) => {
270
+ const result = validate(value);
271
+ if (result === undefined)
272
+ return true;
273
+ if (typeof result === "string")
274
+ return result;
275
+ if (result instanceof Error)
276
+ return result.message;
277
+ return "Invalid input";
278
+ }
279
+ : undefined;
280
+ try {
281
+ const response = await prompts({
282
+ initial: initialValue,
283
+ message,
284
+ name: "value",
285
+ type: "text",
286
+ validate: promptsValidate,
287
+ });
288
+ if (response.value === undefined) {
289
+ this.error("Operation cancelled by user");
290
+ process.exit(0);
291
+ }
292
+ return response.value;
293
+ }
294
+ catch {
295
+ this.error("Operation cancelled by user");
296
+ process.exit(0);
297
+ }
298
+ }
299
+ /**
300
+ * Update the spinner message without stopping it.
301
+ * @param {string} message - The new message to display
302
+ */
303
+ updateSpinner(message) {
304
+ if (this.spinner?.isSpinning) {
305
+ this.spinner.text = message;
306
+ }
307
+ }
308
+ /**
309
+ * Displays a warning message to the user.
310
+ * @param {string} message - The warning message to display
311
+ */
312
+ warn(message) {
313
+ process.stdout.write(`${chalk.yellow(message)}\n`);
314
+ }
315
+ }
316
+
317
+ exports.PromptsCliInterface = PromptsCliInterface;
318
+ //# sourceMappingURL=prompts-cli-interface.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts-cli-interface.service.js","sources":["../../../../../src/infrastructure/service/prompts-cli-interface.service.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ type TCommit = (message: string) => void;
2
+ /**
3
+ * Main adapter for Commitizen integration
4
+ */
5
+ export declare class CommitizenAdapter {
6
+ private readonly CONTAINER;
7
+ constructor();
8
+ /**
9
+ * Main entry point for commitizen
10
+ * @param {unknown} _inquirerIns - Instance passed by commitizen (unused in our implementation)
11
+ * @param {TCommit} commit - Callback to execute with complete commit message
12
+ */
13
+ prompter(_inquirerIns: unknown, commit: TCommit): Promise<void>;
14
+ /**
15
+ * Extract LLM prompt context from commitlint rules and prompts
16
+ * @param {QualifiedRules} rules - The commitlint rules
17
+ * @param {UserPromptConfig} prompts - The user prompt configuration
18
+ * @returns {ILlmPromptContext} The extracted LLM prompt context
19
+ */
20
+ private extractLlmPromptContext;
21
+ /**
22
+ * Get API key prompt information based on provider
23
+ * @param {string} provider - The LLM provider name
24
+ * @returns {{ hint: string; prompt: string }} The hint and prompt text for API key input
25
+ */
26
+ private getApiKeyPromptInfo;
27
+ }
28
+ export {};
@@ -0,0 +1,304 @@
1
+ 'use strict';
2
+
3
+ var load = require('@commitlint/load');
4
+ var numeric_constant = require('../domain/constant/numeric.constant.js');
5
+ var llmConfiguration_entity = require('../domain/entity/llm-configuration.entity.js');
6
+ var commitMode_enum = require('../domain/enum/commit-mode.enum.js');
7
+ var apiKey_valueObject = require('../domain/value-object/api-key.value-object.js');
8
+ var commitlintValidator_service = require('../infrastructure/commit-validator/commitlint-validator.service.js');
9
+ var container = require('../infrastructure/di/container.js');
10
+
11
+ // Type constants
12
+ const TYPE_ENUM_INDEX = 2;
13
+ /**
14
+ * Main adapter for Commitizen integration
15
+ */
16
+ class CommitizenAdapter {
17
+ CONTAINER;
18
+ constructor() {
19
+ this.CONTAINER = container.createAppContainer();
20
+ }
21
+ /**
22
+ * Main entry point for commitizen
23
+ * @param {unknown} _inquirerIns - Instance passed by commitizen (unused in our implementation)
24
+ * @param {TCommit} commit - Callback to execute with complete commit message
25
+ */
26
+ async prompter(_inquirerIns, commit) {
27
+ const loadResult = await load();
28
+ const { prompt = {}, rules } = loadResult;
29
+ try {
30
+ // Get use cases from container
31
+ const configureLLMUseCase = this.CONTAINER.get(container.ConfigureLLMUseCaseToken);
32
+ const generateCommitUseCase = this.CONTAINER.get(container.GenerateCommitMessageUseCaseToken);
33
+ const validateCommitUseCase = this.CONTAINER.get(container.ValidateCommitMessageUseCaseToken);
34
+ const manualCommitUseCase = this.CONTAINER.get(container.ManualCommitUseCaseToken);
35
+ const cliInterface = this.CONTAINER.get(container.CliInterfaceServiceToken);
36
+ const commitRepository = this.CONTAINER.get(container.CommitRepositoryToken);
37
+ const configService = this.CONTAINER.get(container.ConfigServiceToken);
38
+ if (!configureLLMUseCase || !generateCommitUseCase || !validateCommitUseCase || !manualCommitUseCase || !cliInterface || !commitRepository || !configService) {
39
+ throw new Error("Failed to initialize required services");
40
+ }
41
+ // Extract context from commitlint config
42
+ const promptContext = this.extractLlmPromptContext(rules, prompt);
43
+ // Add git diff and files to context for AI mode
44
+ const [diff, files] = await Promise.all([commitRepository.getStagedDiff(), commitRepository.getStagedFiles()]);
45
+ promptContext.diff = diff;
46
+ promptContext.files = files.join("\n");
47
+ // Get or configure LLM
48
+ let llmConfig = await configureLLMUseCase.getCurrentConfiguration();
49
+ const isConfigExists = await configService.exists();
50
+ if (isConfigExists) {
51
+ // Configuration exists - load it first to show details
52
+ const config = await configService.get();
53
+ // Ask if they want to use existing configuration
54
+ const modeInfo = config.mode === commitMode_enum.ECommitMode.AUTO ? `${config.mode} mode, ${config.provider} provider` : `${config.mode} mode`;
55
+ const isUseExisting = await cliInterface.confirm(`Found existing configuration (${modeInfo}). Use it?`, true);
56
+ if (!isUseExisting) {
57
+ cliInterface.info("Let's reconfigure...");
58
+ llmConfig = await configureLLMUseCase.configureInteractively();
59
+ // Check if we need to prompt for API key after configuration
60
+ if (llmConfig.isAutoMode() && llmConfig.getApiKey().getValue() === "will-prompt-on-use") {
61
+ // Ask for API key
62
+ const { hint, prompt } = this.getApiKeyPromptInfo(llmConfig.getProvider());
63
+ const credentialValue = await cliInterface.text(prompt, hint, "", (value) => {
64
+ if (!value || value.trim().length === 0) {
65
+ return "API key is required";
66
+ }
67
+ // eslint-disable-next-line @elsikora/sonar/no-redundant-jump
68
+ return;
69
+ });
70
+ // Create new configuration with the provided API key
71
+ llmConfig = new llmConfiguration_entity.LLMConfiguration(llmConfig.getProvider(), new apiKey_valueObject.ApiKey(credentialValue), llmConfig.getMode(), llmConfig.getModel(), llmConfig.getMaxRetries(), llmConfig.getValidationMaxRetries());
72
+ }
73
+ }
74
+ else if (config.mode === commitMode_enum.ECommitMode.AUTO && !llmConfig) {
75
+ // User wants to use existing config but API key is missing
76
+ const environmentVariableNames = {
77
+ anthropic: "ANTHROPIC_API_KEY",
78
+ "aws-bedrock": "AWS_BEDROCK_API_KEY",
79
+ "azure-openai": "AZURE_OPENAI_API_KEY",
80
+ google: "GOOGLE_API_KEY",
81
+ ollama: "OLLAMA_API_KEY",
82
+ openai: "OPENAI_API_KEY",
83
+ };
84
+ const environmentVariableName = environmentVariableNames[config.provider] ?? "";
85
+ cliInterface.warn(`API key not found in ${environmentVariableName} environment variable.`);
86
+ // Ask for API key
87
+ const { hint, prompt } = this.getApiKeyPromptInfo(config.provider);
88
+ const credentialValue = await cliInterface.text(prompt, hint, "", (value) => {
89
+ if (!value || value.trim().length === 0) {
90
+ return "API key is required";
91
+ }
92
+ // eslint-disable-next-line @elsikora/sonar/no-redundant-jump
93
+ return;
94
+ });
95
+ // Create new configuration with the provided API key
96
+ const maxRetries = config.maxRetries ?? numeric_constant.DEFAULT_MAX_RETRIES;
97
+ const validationMaxRetries = config.validationMaxRetries ?? numeric_constant.DEFAULT_VALIDATION_MAX_RETRIES;
98
+ llmConfig = new llmConfiguration_entity.LLMConfiguration(config.provider, new apiKey_valueObject.ApiKey(credentialValue), config.mode, config.model, maxRetries, validationMaxRetries);
99
+ }
100
+ }
101
+ else {
102
+ // No configuration at all
103
+ cliInterface.info("No configuration found. Let's set it up!");
104
+ llmConfig = await configureLLMUseCase.configureInteractively();
105
+ // Check if we need to prompt for API key after configuration
106
+ if (llmConfig.isAutoMode() && llmConfig.getApiKey().getValue() === "will-prompt-on-use") {
107
+ // Ask for API key
108
+ const { hint, prompt } = this.getApiKeyPromptInfo(llmConfig.getProvider());
109
+ const credentialValue = await cliInterface.text(prompt, hint, "", (value) => {
110
+ if (!value || value.trim().length === 0) {
111
+ return "API key is required";
112
+ }
113
+ // eslint-disable-next-line @elsikora/sonar/no-redundant-jump
114
+ return;
115
+ });
116
+ // Create new configuration with the provided API key
117
+ llmConfig = new llmConfiguration_entity.LLMConfiguration(llmConfig.getProvider(), new apiKey_valueObject.ApiKey(credentialValue), llmConfig.getMode(), llmConfig.getModel(), llmConfig.getMaxRetries(), llmConfig.getValidationMaxRetries());
118
+ }
119
+ }
120
+ // Configuration should exist at this point
121
+ if (!llmConfig) {
122
+ throw new Error("Failed to configure LLM settings");
123
+ }
124
+ // Check commit mode
125
+ if (llmConfig.isManualMode()) {
126
+ cliInterface.info("Using manual commit mode...");
127
+ const commitMessage = await manualCommitUseCase.execute(promptContext);
128
+ commit(commitMessage.toString());
129
+ return;
130
+ }
131
+ // Auto mode - set LLM configuration on validator if it supports it
132
+ const validator = this.CONTAINER.get(container.CommitValidatorToken) ?? {};
133
+ if (validator instanceof commitlintValidator_service.CommitlintValidatorService) {
134
+ validator.setLLMConfiguration(llmConfig);
135
+ }
136
+ // Auto mode - generate with AI
137
+ cliInterface.info("Using AI-powered commit mode...");
138
+ try {
139
+ // Generate commit message
140
+ cliInterface.startSpinner("Generating commit message with AI...");
141
+ let generatedMessage;
142
+ try {
143
+ generatedMessage = await generateCommitUseCase.execute(promptContext, llmConfig, (attempt, maxRetries, error) => {
144
+ cliInterface.updateSpinner(`Generating commit message with AI... (Attempt ${attempt}/${maxRetries} failed: ${error.message})`);
145
+ });
146
+ }
147
+ catch (genError) {
148
+ cliInterface.stopSpinner();
149
+ throw genError;
150
+ }
151
+ cliInterface.stopSpinner();
152
+ cliInterface.success("AI generated initial commit message");
153
+ // Validate and fix if needed
154
+ cliInterface.startSpinner("Validating commit message format...");
155
+ // Track validation attempts
156
+ let lastValidationAttempt = 0;
157
+ const originalValidate = validateCommitUseCase.validate.bind(validateCommitUseCase);
158
+ validateCommitUseCase.validate = async (message) => {
159
+ lastValidationAttempt++;
160
+ if (lastValidationAttempt > 1) {
161
+ cliInterface.updateSpinner(`Validating commit message format... (attempt ${lastValidationAttempt})`);
162
+ }
163
+ return originalValidate(message);
164
+ };
165
+ const validatedMessage = await validateCommitUseCase.execute(generatedMessage, true, llmConfig.getValidationMaxRetries(), promptContext);
166
+ cliInterface.stopSpinner();
167
+ // Restore original validate method
168
+ validateCommitUseCase.validate = originalValidate;
169
+ if (!validatedMessage) {
170
+ cliInterface.warn("Could not generate a valid commit message. Switching to manual mode...");
171
+ const commitMessage = await manualCommitUseCase.execute(promptContext);
172
+ commit(commitMessage.toString());
173
+ return;
174
+ }
175
+ // Show the generated message
176
+ cliInterface.success("AI generated commit message successfully!");
177
+ cliInterface.note("Generated commit message:", validatedMessage.toString());
178
+ // Ask for confirmation
179
+ const isConfirmed = await cliInterface.confirm("Do you want to proceed with this commit message?", true);
180
+ if (isConfirmed) {
181
+ commit(validatedMessage.toString());
182
+ }
183
+ else {
184
+ cliInterface.info("Switching to manual mode to edit the message...");
185
+ const commitMessage = await manualCommitUseCase.execute(promptContext);
186
+ commit(commitMessage.toString());
187
+ }
188
+ }
189
+ catch (error) {
190
+ // Check if it's a retry exhaustion error
191
+ if (error instanceof Error && error.message.includes("Failed to generate commit message after")) {
192
+ cliInterface.error(error.message);
193
+ }
194
+ else {
195
+ cliInterface.handleError("Error generating commit with AI:", error);
196
+ }
197
+ cliInterface.warn("Falling back to manual commit entry...");
198
+ const commitMessage = await manualCommitUseCase.execute(promptContext);
199
+ commit(commitMessage.toString());
200
+ }
201
+ }
202
+ catch (error) {
203
+ if (error instanceof Error && error.message === "User canceled the commit") {
204
+ throw error;
205
+ }
206
+ console.error("Error in commitizen adapter:", error);
207
+ throw error;
208
+ }
209
+ }
210
+ /**
211
+ * Extract LLM prompt context from commitlint rules and prompts
212
+ * @param {QualifiedRules} rules - The commitlint rules
213
+ * @param {UserPromptConfig} prompts - The user prompt configuration
214
+ * @returns {ILlmPromptContext} The extracted LLM prompt context
215
+ */
216
+ extractLlmPromptContext(rules, prompts) {
217
+ const context = {
218
+ rules: rules, // Pass all commitlint rules to the LLM
219
+ subject: {},
220
+ };
221
+ // Extract type information
222
+ if (rules["type-enum"]) {
223
+ const types = rules["type-enum"][TYPE_ENUM_INDEX];
224
+ if (Array.isArray(types)) {
225
+ context.typeEnum = types;
226
+ }
227
+ }
228
+ // Extract type descriptions from prompts
229
+ if (prompts.questions?.type?.enum) {
230
+ context.typeDescriptions = {};
231
+ for (const [key, value] of Object.entries(prompts.questions.type.enum)) {
232
+ if (typeof value === "object" && value && "description" in value && typeof value.description === "string") {
233
+ const enumValue = value;
234
+ context.typeDescriptions[key] = {
235
+ description: enumValue.description,
236
+ emoji: enumValue.emoji,
237
+ };
238
+ }
239
+ }
240
+ }
241
+ // Extract subject rules
242
+ if (rules["subject-max-length"]) {
243
+ const maxLength = rules["subject-max-length"][TYPE_ENUM_INDEX];
244
+ if (typeof maxLength === "number") {
245
+ context.subject.maxLength = maxLength;
246
+ }
247
+ }
248
+ if (rules["subject-min-length"]) {
249
+ const minLength = rules["subject-min-length"][TYPE_ENUM_INDEX];
250
+ if (typeof minLength === "number") {
251
+ context.subject.minLength = minLength;
252
+ }
253
+ }
254
+ // Add descriptions from prompts
255
+ if (prompts.questions?.type?.description) {
256
+ context.typeDescription = prompts.questions.type.description;
257
+ }
258
+ if (prompts.questions?.scope?.description) {
259
+ context.scopeDescription = prompts.questions.scope.description;
260
+ }
261
+ if (prompts.questions?.subject?.description) {
262
+ context.subject.description = prompts.questions.subject.description;
263
+ }
264
+ if (prompts.questions?.body?.description) {
265
+ context.body = {
266
+ description: prompts.questions.body.description,
267
+ };
268
+ }
269
+ return context;
270
+ }
271
+ /**
272
+ * Get API key prompt information based on provider
273
+ * @param {string} provider - The LLM provider name
274
+ * @returns {{ hint: string; prompt: string }} The hint and prompt text for API key input
275
+ */
276
+ getApiKeyPromptInfo(provider) {
277
+ switch (provider) {
278
+ case "anthropic": {
279
+ return { hint: "sk-ant-...", prompt: "Enter your Anthropic API key for this session:" };
280
+ }
281
+ case "aws-bedrock": {
282
+ return { hint: "us-east-1|AKIA...|secret...", prompt: "Enter your AWS Bedrock credentials (region|access-key-id|secret-access-key):" };
283
+ }
284
+ case "azure-openai": {
285
+ return { hint: "https://your.openai.azure.com|key|deployment", prompt: "Enter your Azure OpenAI credentials (endpoint|api-key|deployment-name):" };
286
+ }
287
+ case "google": {
288
+ return { hint: "AIza...", prompt: "Enter your Google API key for this session:" };
289
+ }
290
+ case "ollama": {
291
+ return { hint: "localhost:11434", prompt: "Enter your Ollama host (host:port or host:port|custom-model):" };
292
+ }
293
+ case "openai": {
294
+ return { hint: "sk-...", prompt: "Enter your OpenAI API key for this session:" };
295
+ }
296
+ default: {
297
+ return { hint: "", prompt: "Enter your API key for this session:" };
298
+ }
299
+ }
300
+ }
301
+ }
302
+
303
+ exports.CommitizenAdapter = CommitizenAdapter;
304
+ //# sourceMappingURL=commitizen.adapter.js.map