@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,371 @@
1
+ import { DEFAULT_MAX_RETRIES, DEFAULT_VALIDATION_MAX_RETRIES, MIN_RETRY_COUNT, MAX_RETRY_COUNT } from '../../domain/constant/numeric.constant.js';
2
+ import { LLMConfiguration } from '../../domain/entity/llm-configuration.entity.js';
3
+ import { EAnthropicModel } from '../../domain/enum/anthropic-model.enum.js';
4
+ import { EAWSBedrockModel } from '../../domain/enum/aws-bedrock-model.enum.js';
5
+ import { EAzureOpenAIModel } from '../../domain/enum/azure-openai-model.enum.js';
6
+ import { ECommitMode } from '../../domain/enum/commit-mode.enum.js';
7
+ import { EGoogleModel } from '../../domain/enum/google-model.enum.js';
8
+ import { ELLMProvider } from '../../domain/enum/llm-provider.enum.js';
9
+ import { EOllamaModel } from '../../domain/enum/ollama-model.enum.js';
10
+ import { EOpenAIModel } from '../../domain/enum/openai-model.enum.js';
11
+ import { ApiKey } from '../../domain/value-object/api-key.value-object.js';
12
+
13
+ /**
14
+ * Use case for configuring LLM settings
15
+ */
16
+ class ConfigureLLMUseCase {
17
+ CLI_INTERFACE;
18
+ CONFIG_SERVICE;
19
+ constructor(configService, cliInterface) {
20
+ this.CONFIG_SERVICE = configService;
21
+ this.CLI_INTERFACE = cliInterface;
22
+ }
23
+ /**
24
+ * Configure LLM settings interactively
25
+ * @returns {Promise<LLMConfiguration>} Promise resolving to the new configuration
26
+ */
27
+ async configureInteractively() {
28
+ // First, select mode
29
+ const mode = await this.CLI_INTERFACE.select("Select commit mode:", [
30
+ { label: "Auto (AI-powered)", value: ECommitMode.AUTO },
31
+ { label: "Manual", value: ECommitMode.MANUAL },
32
+ ], ECommitMode.AUTO);
33
+ // If manual mode, create a minimal configuration
34
+ if (mode === ECommitMode.MANUAL) {
35
+ // Create configuration with dummy values for manual mode
36
+ const configuration = new LLMConfiguration("openai", // Default provider (won't be used)
37
+ new ApiKey("manual-mode"), // Dummy API key
38
+ mode, undefined, // No model needed for manual mode
39
+ DEFAULT_MAX_RETRIES, // Default max retries
40
+ DEFAULT_VALIDATION_MAX_RETRIES);
41
+ // Save configuration
42
+ await this.saveConfiguration(configuration);
43
+ return configuration;
44
+ }
45
+ // Auto mode - ask for LLM details
46
+ this.CLI_INTERFACE.info("Setting up AI-powered commit mode...");
47
+ // Select provider
48
+ const provider = await this.CLI_INTERFACE.select("Select your LLM provider:", [
49
+ { label: "OpenAI (GPT-4, GPT-3.5)", value: ELLMProvider.OPENAI },
50
+ { label: "Anthropic (Claude)", value: ELLMProvider.ANTHROPIC },
51
+ { label: "Google (Gemini)", value: ELLMProvider.GOOGLE },
52
+ { label: "Azure OpenAI", value: ELLMProvider.AZURE_OPENAI },
53
+ { label: "AWS Bedrock", value: ELLMProvider.AWS_BEDROCK },
54
+ { label: "Ollama (Local)", value: ELLMProvider.OLLAMA },
55
+ ]);
56
+ // Select model based on provider
57
+ let model;
58
+ switch (provider) {
59
+ case ELLMProvider.ANTHROPIC: {
60
+ model = await this.CLI_INTERFACE.select("Select Anthropic model:", [
61
+ { label: "Claude Opus 4 (Latest 2025, most capable)", value: EAnthropicModel.CLAUDE_OPUS_4 },
62
+ { label: "Claude Sonnet 4 (Latest 2025, high-performance)", value: EAnthropicModel.CLAUDE_SONNET_4 },
63
+ { label: "Claude 3.7 Sonnet (Extended thinking)", value: EAnthropicModel.CLAUDE_3_7_SONNET },
64
+ { label: "Claude 3.5 Sonnet (Previous flagship)", value: EAnthropicModel.CLAUDE_3_5_SONNET },
65
+ { label: "Claude 3.5 Haiku (Fastest)", value: EAnthropicModel.CLAUDE_3_5_HAIKU },
66
+ { label: "Claude 3 Opus (Complex tasks)", value: EAnthropicModel.CLAUDE_3_OPUS },
67
+ ], EAnthropicModel.CLAUDE_SONNET_4);
68
+ break;
69
+ }
70
+ case ELLMProvider.AWS_BEDROCK: {
71
+ model = await this.CLI_INTERFACE.select("Select AWS Bedrock model:", [
72
+ { label: "Claude Opus 4 (Latest 2025, most capable)", value: EAWSBedrockModel.CLAUDE_OPUS_4 },
73
+ { label: "Claude Sonnet 4 (Latest 2025, balanced performance)", value: EAWSBedrockModel.CLAUDE_SONNET_4 },
74
+ { label: "Claude 3.5 Sonnet v2 (Previous flagship)", value: EAWSBedrockModel.CLAUDE_3_5_SONNET_V2 },
75
+ { label: "Claude 3.5 Haiku (Fast)", value: EAWSBedrockModel.CLAUDE_3_5_HAIKU },
76
+ { label: "Claude 3.5 Sonnet", value: EAWSBedrockModel.CLAUDE_3_5_SONNET },
77
+ { label: "Amazon Nova Pro (Latest Amazon model)", value: EAWSBedrockModel.NOVA_PRO },
78
+ { label: "DeepSeek R1 (Advanced reasoning)", value: EAWSBedrockModel.DEEPSEEK_R1 },
79
+ { label: "Llama 3.2 90B (Open source)", value: EAWSBedrockModel.LLAMA_3_2_90B },
80
+ { label: "Mistral Large (Latest)", value: EAWSBedrockModel.MISTRAL_LARGE_2_24_11 },
81
+ ], EAWSBedrockModel.CLAUDE_SONNET_4);
82
+ break;
83
+ }
84
+ case ELLMProvider.AZURE_OPENAI: {
85
+ model = await this.CLI_INTERFACE.select("Select Azure OpenAI model:", [
86
+ { label: "GPT-4.1 Turbo (Latest 2025, most capable)", value: EAzureOpenAIModel.GPT_4_1_TURBO_2024_12_17 },
87
+ { label: "GPT-4.1 Preview (Latest preview)", value: EAzureOpenAIModel.GPT_4_1_PREVIEW_2024_12_17 },
88
+ { label: "GPT-4.1 Mini (Fast 4.1 model)", value: EAzureOpenAIModel.GPT_4_1_MINI_2024_12_17 },
89
+ { label: "GPT-4o 2024-11 (Enhanced creative)", value: EAzureOpenAIModel.GPT_4O_2024_11_20 },
90
+ { label: "GPT-4o Mini", value: EAzureOpenAIModel.GPT_4O_MINI_2024_07_18 },
91
+ { label: "GPT-4 Turbo", value: EAzureOpenAIModel.GPT_4_TURBO },
92
+ { label: "GPT-3.5 Turbo", value: EAzureOpenAIModel.GPT_35_TURBO },
93
+ { label: "O3 (Enhanced reasoning)", value: EAzureOpenAIModel.O3_2024_12_17 },
94
+ { label: "O4 Mini (Fast reasoning)", value: EAzureOpenAIModel.O4_MINI_2024_12_17 },
95
+ ], EAzureOpenAIModel.GPT_4_1_TURBO_2024_12_17);
96
+ break;
97
+ }
98
+ case ELLMProvider.GOOGLE: {
99
+ model = await this.CLI_INTERFACE.select("Select Google model:", [
100
+ { label: "Gemini 2.5 Pro (Latest 2025, most capable)", value: EGoogleModel.GEMINI_2_5_PRO },
101
+ { label: "Gemini 2.5 Flash (Latest 2025, fast)", value: EGoogleModel.GEMINI_2_5_FLASH },
102
+ { label: "Gemini 2.0 Flash (Experimental)", value: EGoogleModel.GEMINI_2_0_FLASH_EXP },
103
+ { label: "Gemini 1.5 Pro (Stable, capable)", value: EGoogleModel.GEMINI_1_5_PRO },
104
+ { label: "Gemini 1.5 Flash (Fast, stable)", value: EGoogleModel.GEMINI_1_5_FLASH },
105
+ { label: "Gemini 1.5 Flash 8B (Lightweight)", value: EGoogleModel.GEMINI_1_5_FLASH_8B },
106
+ { label: "Gemini 1.0 Pro", value: EGoogleModel.GEMINI_1_0_PRO },
107
+ { label: "Gemma 3 27B (Most capable open model)", value: EGoogleModel.GEMMA_3_27B },
108
+ { label: "Gemma 3 12B (Strong language model)", value: EGoogleModel.GEMMA_3_12B },
109
+ { label: "Gemma 3 4B (Balanced, multimodal)", value: EGoogleModel.GEMMA_3_4B },
110
+ { label: "Gemma 3 1B (Lightweight)", value: EGoogleModel.GEMMA_3_1B },
111
+ ], EGoogleModel.GEMINI_2_5_FLASH);
112
+ break;
113
+ }
114
+ case ELLMProvider.OLLAMA: {
115
+ model = await this.CLI_INTERFACE.select("Select Ollama model:", [
116
+ { label: "Llama 3.2 (Latest)", value: EOllamaModel.LLAMA3_2 },
117
+ { label: "Llama 3.1", value: EOllamaModel.LLAMA3_1 },
118
+ { label: "Llama 3", value: EOllamaModel.LLAMA3 },
119
+ { label: "Mistral", value: EOllamaModel.MISTRAL },
120
+ { label: "CodeLlama", value: EOllamaModel.CODELLAMA },
121
+ { label: "DeepSeek Coder", value: EOllamaModel.DEEPSEEK_CODER },
122
+ { label: "Custom Model", value: EOllamaModel.CUSTOM },
123
+ ], EOllamaModel.LLAMA3_2);
124
+ break;
125
+ }
126
+ case ELLMProvider.OPENAI: {
127
+ model = await this.CLI_INTERFACE.select("Select OpenAI model:", [
128
+ { label: "GPT-4.1 (Latest 2025, most capable)", value: EOpenAIModel.GPT_4_1 },
129
+ { label: "GPT-4.1 Nano (Fastest 4.1 model)", value: EOpenAIModel.GPT_4_1_NANO },
130
+ { label: "GPT-4.1 Mini", value: EOpenAIModel.GPT_4_1_MINI },
131
+ { label: "GPT-4o (Latest, enhanced creative writing)", value: EOpenAIModel.GPT_4O },
132
+ { label: "GPT-4o Mini (Faster, cheaper)", value: EOpenAIModel.GPT_4O_MINI },
133
+ { label: "GPT-4 Turbo", value: EOpenAIModel.GPT_4_TURBO },
134
+ { label: "GPT-4 (Original)", value: EOpenAIModel.GPT_4 },
135
+ { label: "GPT-3.5 Turbo (Fastest, cheapest)", value: EOpenAIModel.GPT_35_TURBO },
136
+ { label: "O1 (Enhanced reasoning)", value: EOpenAIModel.O1 },
137
+ { label: "O1 Mini (Fast reasoning)", value: EOpenAIModel.O1_MINI },
138
+ ], EOpenAIModel.GPT_4O);
139
+ break;
140
+ }
141
+ default: {
142
+ // This ensures exhaustiveness - TypeScript will error if a case is missing
143
+ const exhaustiveCheck = provider;
144
+ throw new Error(`Unsupported provider: ${String(exhaustiveCheck)}`);
145
+ }
146
+ }
147
+ // Get API key
148
+ let credentialValue;
149
+ // Check environment variables first
150
+ const environmentVariableNames = {
151
+ anthropic: "ANTHROPIC_API_KEY",
152
+ "aws-bedrock": "AWS_BEDROCK_API_KEY",
153
+ "azure-openai": "AZURE_OPENAI_API_KEY",
154
+ google: "GOOGLE_API_KEY",
155
+ ollama: "OLLAMA_API_KEY",
156
+ openai: "OPENAI_API_KEY",
157
+ };
158
+ const environmentVariableName = environmentVariableNames[provider] ?? "";
159
+ const environmentApiKey = process.env[environmentVariableName];
160
+ if (environmentApiKey && environmentApiKey.trim().length > 0) {
161
+ this.CLI_INTERFACE.success(`Found API key in environment variable: ${environmentVariableName}`);
162
+ credentialValue = environmentApiKey;
163
+ }
164
+ else {
165
+ // Inform user about environment variable and format requirements
166
+ let keyFormatInfo = "";
167
+ switch (provider) {
168
+ case ELLMProvider.ANTHROPIC: {
169
+ // Standard API key format - no special format info needed
170
+ // keyFormatInfo is already initialized as empty string
171
+ break;
172
+ }
173
+ case ELLMProvider.AWS_BEDROCK: {
174
+ keyFormatInfo = " (format: region|access-key-id|secret-access-key)";
175
+ break;
176
+ }
177
+ case ELLMProvider.AZURE_OPENAI: {
178
+ keyFormatInfo = " (format: endpoint|api-key|deployment-name)";
179
+ break;
180
+ }
181
+ case ELLMProvider.GOOGLE: {
182
+ // Standard API key format - no special format info needed
183
+ // keyFormatInfo is already initialized as empty string
184
+ break;
185
+ }
186
+ case ELLMProvider.OLLAMA: {
187
+ keyFormatInfo = " (format: host:port or host:port|custom-model)";
188
+ break;
189
+ }
190
+ case ELLMProvider.OPENAI: {
191
+ // Standard API key format - no special format info needed
192
+ // keyFormatInfo is already initialized as empty string
193
+ break;
194
+ }
195
+ default: {
196
+ // This ensures exhaustiveness - TypeScript will error if a case is missing
197
+ const exhaustiveCheck = provider;
198
+ throw new Error(`Unsupported provider: ${String(exhaustiveCheck)}`);
199
+ }
200
+ }
201
+ this.CLI_INTERFACE.info(`API key will be read from ${environmentVariableName} environment variable${keyFormatInfo} or prompted each time.`);
202
+ // Use dummy value for configuration
203
+ credentialValue = "will-prompt-on-use";
204
+ }
205
+ // Ask for retry configuration (advanced settings)
206
+ const shouldConfigureAdvanced = await this.CLI_INTERFACE.confirm("Would you like to configure advanced settings (retry counts)?", false);
207
+ let maxRetries = DEFAULT_MAX_RETRIES;
208
+ let validationMaxRetries = DEFAULT_VALIDATION_MAX_RETRIES;
209
+ if (shouldConfigureAdvanced) {
210
+ const retriesString = await this.CLI_INTERFACE.text("Max retries for AI generation (default: 3):", "3", "3", (value) => {
211
+ const parsedNumber = Number.parseInt(value, 10);
212
+ if (Number.isNaN(parsedNumber) || parsedNumber < MIN_RETRY_COUNT || parsedNumber > MAX_RETRY_COUNT) {
213
+ return "Please enter a number between 1 and 10";
214
+ }
215
+ // eslint-disable-next-line @elsikora/sonar/no-redundant-jump
216
+ return;
217
+ });
218
+ maxRetries = Number.parseInt(retriesString, 10);
219
+ const validationRetriesString = await this.CLI_INTERFACE.text("Max retries for validation fixes (default: 3):", "3", "3", (value) => {
220
+ const parsedNumber = Number.parseInt(value, 10);
221
+ if (Number.isNaN(parsedNumber) || parsedNumber < MIN_RETRY_COUNT || parsedNumber > MAX_RETRY_COUNT) {
222
+ return "Please enter a number between 1 and 10";
223
+ }
224
+ // eslint-disable-next-line @elsikora/sonar/no-redundant-jump
225
+ return;
226
+ });
227
+ validationMaxRetries = Number.parseInt(validationRetriesString, 10);
228
+ }
229
+ // Create configuration
230
+ // Create configuration - will save without API key
231
+ const configuration = new LLMConfiguration(provider, new ApiKey(credentialValue), mode, model, maxRetries, validationMaxRetries);
232
+ // Save configuration (without API key)
233
+ await this.saveConfiguration(configuration);
234
+ this.CLI_INTERFACE.success("Configuration saved successfully!");
235
+ // If we have an environment API key, return config with it
236
+ // Otherwise, return config with dummy key (will prompt later)
237
+ return configuration;
238
+ }
239
+ /**
240
+ * Get the current LLM configuration
241
+ * @returns {Promise<LLMConfiguration | null>} Promise resolving to the current configuration or null if not configured
242
+ */
243
+ async getCurrentConfiguration() {
244
+ const config = await this.CONFIG_SERVICE.get();
245
+ if (!config.provider || !config.mode) {
246
+ return null;
247
+ }
248
+ // Add backward compatibility - set default retry values if missing
249
+ let isConfigUpdated = false;
250
+ if (config.maxRetries === undefined) {
251
+ config.maxRetries = DEFAULT_MAX_RETRIES;
252
+ isConfigUpdated = true;
253
+ }
254
+ if (config.validationMaxRetries === undefined) {
255
+ config.validationMaxRetries = DEFAULT_VALIDATION_MAX_RETRIES;
256
+ isConfigUpdated = true;
257
+ }
258
+ // Save updated config if we added defaults
259
+ if (isConfigUpdated) {
260
+ await this.CONFIG_SERVICE.set(config);
261
+ }
262
+ // Migrate deprecated models
263
+ let migratedModel = config.model;
264
+ if (migratedModel) {
265
+ // Map old models to new ones
266
+ const modelMigrations = {
267
+ // Anthropic migrations
268
+ "claude-2.0": EAnthropicModel.CLAUDE_3_5_SONNET,
269
+ "claude-2.1": EAnthropicModel.CLAUDE_3_5_SONNET,
270
+ "claude-3-5-haiku-20241022": EAnthropicModel.CLAUDE_3_5_HAIKU,
271
+ "claude-3-5-sonnet-20241022": EAnthropicModel.CLAUDE_3_5_SONNET,
272
+ "claude-3-haiku-20240307": EAnthropicModel.CLAUDE_3_5_HAIKU,
273
+ "claude-3-sonnet-20240229": EAnthropicModel.CLAUDE_3_5_SONNET,
274
+ // OpenAI migrations (upgrade old GPT-4 references)
275
+ "gpt-3.5-turbo": EOpenAIModel.GPT_35_TURBO,
276
+ "gpt-4": EOpenAIModel.GPT_4,
277
+ "gpt-4-0125-preview": EOpenAIModel.GPT_4_TURBO,
278
+ "gpt-4-0613": EOpenAIModel.GPT_4,
279
+ "gpt-4-1106-preview": EOpenAIModel.GPT_4_TURBO,
280
+ "gpt-4-32k": EOpenAIModel.GPT_4_32K,
281
+ "gpt-4-32k-0613": EOpenAIModel.GPT_4_32K,
282
+ "gpt-4o": EOpenAIModel.GPT_4O_MAY,
283
+ "gpt-4o-2024-05-13": EOpenAIModel.GPT_4O_MAY,
284
+ "gpt-4o-2024-08-06": EOpenAIModel.GPT_4O_AUGUST,
285
+ "gpt-4o-mini": EOpenAIModel.GPT_4O_MINI,
286
+ };
287
+ if (modelMigrations[migratedModel]) {
288
+ const oldModel = migratedModel;
289
+ migratedModel = modelMigrations[migratedModel];
290
+ // Save the migrated configuration
291
+ await this.CONFIG_SERVICE.setProperty("model", migratedModel);
292
+ this.CLI_INTERFACE.warn(`Migrated deprecated model ${oldModel} to ${migratedModel}`);
293
+ }
294
+ }
295
+ // For manual mode, return configuration with dummy API key
296
+ if (config.mode === ECommitMode.MANUAL) {
297
+ return new LLMConfiguration(config.provider, new ApiKey("manual-mode"), config.mode, migratedModel, config.maxRetries ?? DEFAULT_MAX_RETRIES, config.validationMaxRetries ?? DEFAULT_VALIDATION_MAX_RETRIES);
298
+ }
299
+ // For auto mode, check environment variables
300
+ const environmentVariableNames = {
301
+ anthropic: "ANTHROPIC_API_KEY",
302
+ "aws-bedrock": "AWS_BEDROCK_API_KEY",
303
+ "azure-openai": "AZURE_OPENAI_API_KEY",
304
+ google: "GOOGLE_API_KEY",
305
+ ollama: "OLLAMA_API_KEY",
306
+ openai: "OPENAI_API_KEY",
307
+ };
308
+ const environmentVariableName = environmentVariableNames[config.provider] ?? "";
309
+ const environmentApiKey = process.env[environmentVariableName];
310
+ // If no API key in environment, return null (will prompt later)
311
+ if (!environmentApiKey || environmentApiKey.trim().length === 0) {
312
+ return null;
313
+ }
314
+ return new LLMConfiguration(config.provider, new ApiKey(environmentApiKey), config.mode, migratedModel, config.maxRetries ?? DEFAULT_MAX_RETRIES, config.validationMaxRetries ?? DEFAULT_VALIDATION_MAX_RETRIES);
315
+ }
316
+ /**
317
+ * Check if the current configuration needs LLM details
318
+ * @returns {Promise<boolean>} Promise resolving to true if LLM details are needed
319
+ */
320
+ async needsLLMDetails() {
321
+ const config = await this.CONFIG_SERVICE.get();
322
+ if (!config.mode || config.mode === ECommitMode.MANUAL) {
323
+ return false;
324
+ }
325
+ // For auto mode, check if API key is in environment
326
+ const environmentVariableNames = {
327
+ anthropic: "ANTHROPIC_API_KEY",
328
+ "aws-bedrock": "AWS_BEDROCK_API_KEY",
329
+ "azure-openai": "AZURE_OPENAI_API_KEY",
330
+ google: "GOOGLE_API_KEY",
331
+ ollama: "OLLAMA_API_KEY",
332
+ openai: "OPENAI_API_KEY",
333
+ };
334
+ const environmentVariableName = environmentVariableNames[config.provider] ?? "";
335
+ const environmentApiKey = process.env[environmentVariableName];
336
+ // Need details if no API key in environment
337
+ return !environmentApiKey || environmentApiKey.trim().length === 0;
338
+ }
339
+ /**
340
+ * Save LLM configuration
341
+ * @param {LLMConfiguration} configuration - The configuration to save
342
+ * @returns {Promise<void>} Promise that resolves when configuration is saved
343
+ */
344
+ async saveConfiguration(configuration) {
345
+ const config = {
346
+ maxRetries: configuration.getMaxRetries(),
347
+ mode: configuration.getMode(),
348
+ model: configuration.getModel(),
349
+ provider: configuration.getProvider(),
350
+ validationMaxRetries: configuration.getValidationMaxRetries(),
351
+ };
352
+ await this.CONFIG_SERVICE.set(config);
353
+ }
354
+ /**
355
+ * Update the commit mode
356
+ * @param {ECommitMode} mode - The new commit mode
357
+ * @returns {Promise<LLMConfiguration | null>} Promise resolving to the updated configuration
358
+ */
359
+ async updateMode(mode) {
360
+ const current = await this.getCurrentConfiguration();
361
+ if (!current) {
362
+ return null;
363
+ }
364
+ const updated = current.withMode(mode);
365
+ await this.saveConfiguration(updated);
366
+ return updated;
367
+ }
368
+ }
369
+
370
+ export { ConfigureLLMUseCase };
371
+ //# sourceMappingURL=configure-llm.use-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-llm.use-case.js","sources":["../../../../../src/application/use-case/configure-llm.use-case.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { CommitMessage } from '../../domain/entity/commit-message.entity';
2
+ import type { LLMConfiguration } from '../../domain/entity/llm-configuration.entity';
3
+ import type { ILlmPromptContext, ILlmService } from '../interface/llm-service.interface';
4
+ /**
5
+ * Use case for generating commit messages
6
+ */
7
+ export declare class GenerateCommitMessageUseCase {
8
+ private readonly LLM_SERVICES;
9
+ constructor(llmServices: Array<ILlmService>);
10
+ /**
11
+ * Execute the commit message generation
12
+ * @param {ILlmPromptContext} context - The context for generating the commit message
13
+ * @param {LLMConfiguration} configuration - The LLM configuration
14
+ * @param {(attempt: number, maxRetries: number, error: Error) => void} onRetry - Callback function called on retry attempts
15
+ * @returns {Promise<CommitMessage>} Promise resolving to the generated commit message
16
+ */
17
+ execute(context: ILlmPromptContext, configuration: LLMConfiguration, onRetry?: (attempt: number, maxRetries: number, error: Error) => void): Promise<CommitMessage>;
18
+ }
@@ -0,0 +1,47 @@
1
+ import { RETRY_DELAY_MS } from '../../domain/constant/numeric.constant.js';
2
+
3
+ /**
4
+ * Use case for generating commit messages
5
+ */
6
+ class GenerateCommitMessageUseCase {
7
+ LLM_SERVICES;
8
+ constructor(llmServices) {
9
+ this.LLM_SERVICES = llmServices;
10
+ }
11
+ /**
12
+ * Execute the commit message generation
13
+ * @param {ILlmPromptContext} context - The context for generating the commit message
14
+ * @param {LLMConfiguration} configuration - The LLM configuration
15
+ * @param {(attempt: number, maxRetries: number, error: Error) => void} onRetry - Callback function called on retry attempts
16
+ * @returns {Promise<CommitMessage>} Promise resolving to the generated commit message
17
+ */
18
+ async execute(context, configuration, onRetry) {
19
+ const service = this.LLM_SERVICES.find((s) => s.supports(configuration));
20
+ if (!service) {
21
+ throw new Error(`No LLM service found for provider: ${configuration.getProvider()}`);
22
+ }
23
+ const maxRetries = configuration.getMaxRetries();
24
+ // Try to generate with retries
25
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
26
+ try {
27
+ return await service.generateCommitMessage(context, configuration);
28
+ }
29
+ catch (error) {
30
+ if (attempt === maxRetries) {
31
+ throw new Error(`Failed to generate commit message after ${maxRetries} attempts: ${error instanceof Error ? error.message : String(error)}`);
32
+ }
33
+ // Notify about retry
34
+ if (onRetry) {
35
+ onRetry(attempt, maxRetries, error);
36
+ }
37
+ // Wait before retrying
38
+ await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS));
39
+ }
40
+ }
41
+ // This should never be reached due to the throw in the loop
42
+ throw new Error(`Failed to generate commit message after ${maxRetries} attempts`);
43
+ }
44
+ }
45
+
46
+ export { GenerateCommitMessageUseCase };
47
+ //# sourceMappingURL=generate-commit-message.use-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-commit-message.use-case.js","sources":["../../../../../src/application/use-case/generate-commit-message.use-case.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAMA;;AAEG;MACU,4BAA4B,CAAA;AACvB,IAAA,YAAY;AAE7B,IAAA,WAAA,CAAY,WAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;;AAGhC;;;;;;AAMG;AACH,IAAA,MAAM,OAAO,CAAC,OAA0B,EAAE,aAA+B,EAAE,OAAqE,EAAA;QAC/I,MAAM,OAAO,GAA4B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAc,KAAK,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE9G,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,CAAsC,mCAAA,EAAA,aAAa,CAAC,WAAW,EAAE,CAAE,CAAA,CAAC;;AAGrF,QAAA,MAAM,UAAU,GAAW,aAAa,CAAC,aAAa,EAAE;;AAGxD,QAAA,KAAK,IAAI,OAAO,GAAW,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE;AAC/D,YAAA,IAAI;gBACH,OAAO,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,aAAa,CAAC;;YACjE,OAAO,KAAK,EAAE;AACf,gBAAA,IAAI,OAAO,KAAK,UAAU,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,CAA2C,wCAAA,EAAA,UAAU,cAAc,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;;;gBAI7I,IAAI,OAAO,EAAE;AACZ,oBAAA,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAc,CAAC;;;AAI7C,gBAAA,MAAM,IAAI,OAAO,CAAO,CAAC,OAAmB,KAAK,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;;;;AAKvF,QAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,CAAA,SAAA,CAAW,CAAC;;AAElF;;;;"}
@@ -0,0 +1,4 @@
1
+ export * from './configure-llm.use-case';
2
+ export * from './generate-commit-message.use-case';
3
+ export * from './manual-commit.use-case';
4
+ export * from './validate-commit-message.use-case';
@@ -0,0 +1,16 @@
1
+ import type { ICliInterfaceService } from '../interface/cli-interface-service.interface';
2
+ import type { ILlmPromptContext } from '../interface/llm-service.interface';
3
+ import { CommitMessage } from '../../domain/entity/commit-message.entity';
4
+ /**
5
+ * Use case for manual commit message creation
6
+ */
7
+ export declare class ManualCommitUseCase {
8
+ private readonly CLI_INTERFACE;
9
+ constructor(cliInterface: ICliInterfaceService);
10
+ /**
11
+ * Execute the manual commit creation process
12
+ * @param {ILlmPromptContext} context - The context for the commit
13
+ * @returns {Promise<CommitMessage>} Promise resolving to the commit message
14
+ */
15
+ execute(context: ILlmPromptContext): Promise<CommitMessage>;
16
+ }
@@ -0,0 +1,79 @@
1
+ import { CommitMessage } from '../../domain/entity/commit-message.entity.js';
2
+ import { CommitBody } from '../../domain/value-object/commit-body.value-object.js';
3
+ import { CommitHeader } from '../../domain/value-object/commit-header.value-object.js';
4
+
5
+ /**
6
+ * Use case for manual commit message creation
7
+ */
8
+ class ManualCommitUseCase {
9
+ CLI_INTERFACE;
10
+ constructor(cliInterface) {
11
+ this.CLI_INTERFACE = cliInterface;
12
+ }
13
+ /**
14
+ * Execute the manual commit creation process
15
+ * @param {ILlmPromptContext} context - The context for the commit
16
+ * @returns {Promise<CommitMessage>} Promise resolving to the commit message
17
+ */
18
+ async execute(context) {
19
+ // Build type options from context
20
+ const typeOptions = [];
21
+ if (context.typeDescriptions) {
22
+ for (const [type, desc] of Object.entries(context.typeDescriptions)) {
23
+ const emoji = desc.emoji ?? "";
24
+ const cleanDesc = desc.description.replace(/\.$/, "");
25
+ const emojiSuffix = emoji ? ` ${emoji}` : "";
26
+ typeOptions.push({
27
+ label: `${type}: ${cleanDesc}${emojiSuffix}`,
28
+ value: type,
29
+ });
30
+ }
31
+ }
32
+ else if (context.typeEnum) {
33
+ for (const type of context.typeEnum) {
34
+ typeOptions.push({ label: type, value: type });
35
+ }
36
+ }
37
+ const type = await this.CLI_INTERFACE.select("Select commit type:", typeOptions);
38
+ // Get scope if applicable
39
+ const scope = await this.CLI_INTERFACE.text("Enter scope (optional):", "", "");
40
+ // Get subject
41
+ const subject = await this.CLI_INTERFACE.text("Enter commit subject:", "", "", (value) => {
42
+ if (!value.trim()) {
43
+ return "Subject is required";
44
+ }
45
+ if (context.subject.minLength && value.length < context.subject.minLength) {
46
+ return `Subject must be at least ${context.subject.minLength} characters`;
47
+ }
48
+ if (context.subject.maxLength && value.length > context.subject.maxLength) {
49
+ return `Subject must be at most ${context.subject.maxLength} characters`;
50
+ }
51
+ // eslint-disable-next-line @elsikora/sonar/no-redundant-jump
52
+ return;
53
+ });
54
+ // Get body
55
+ const body = await this.CLI_INTERFACE.text("Enter commit body (optional):", "", "");
56
+ // Get breaking change
57
+ const hasBreakingChange = await this.CLI_INTERFACE.confirm("Is this a breaking change?", false);
58
+ let breakingChange;
59
+ if (hasBreakingChange) {
60
+ breakingChange = await this.CLI_INTERFACE.text("Describe the breaking change:", "", "");
61
+ }
62
+ // Create commit message
63
+ const header = new CommitHeader(type, subject, scope);
64
+ const commitBody = new CommitBody(body, breakingChange);
65
+ const commitMessage = new CommitMessage(header, commitBody);
66
+ // Ask for confirmation
67
+ this.CLI_INTERFACE.log("\nCommit message preview:");
68
+ this.CLI_INTERFACE.log(commitMessage.toString());
69
+ const isConfirmed = await this.CLI_INTERFACE.confirm("\nUse this commit message?", true);
70
+ if (!isConfirmed) {
71
+ // Recursively call to edit
72
+ return this.execute(context);
73
+ }
74
+ return commitMessage;
75
+ }
76
+ }
77
+
78
+ export { ManualCommitUseCase };
79
+ //# sourceMappingURL=manual-commit.use-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual-commit.use-case.js","sources":["../../../../../src/application/use-case/manual-commit.use-case.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { CommitMessage } from '../../domain/entity/commit-message.entity';
2
+ import type { ICommitValidationResult, ICommitValidator } from '../interface/commit-validator.interface';
3
+ import type { ILlmPromptContext } from '../interface/llm-service.interface';
4
+ /**
5
+ * Use case for validating and fixing commit messages
6
+ */
7
+ export declare class ValidateCommitMessageUseCase {
8
+ private readonly DEFAULT_MAX_RETRIES;
9
+ private readonly VALIDATOR;
10
+ constructor(validator: ICommitValidator, defaultMaxRetries?: number);
11
+ /**
12
+ * Execute the validation use case
13
+ * @param {CommitMessage} message - The commit message to validate
14
+ * @param {boolean} shouldAttemptFix - Whether to attempt fixing validation errors
15
+ * @param {number | undefined} maxRetries - Maximum number of retry attempts (optional, defaults to DEFAULT_MAX_RETRIES)
16
+ * @param {ILlmPromptContext} context - The LLM prompt context
17
+ * @returns {Promise<CommitMessage | null>} Promise resolving to the validated message or null if validation fails
18
+ */
19
+ execute(message: CommitMessage, shouldAttemptFix?: boolean, maxRetries?: number, context?: ILlmPromptContext): Promise<CommitMessage | null>;
20
+ /**
21
+ * Validate a commit message
22
+ * @param {CommitMessage} message - The commit message to validate
23
+ * @returns {Promise<ICommitValidationResult>} Promise resolving to the validation result
24
+ */
25
+ validate(message: CommitMessage): Promise<ICommitValidationResult>;
26
+ }