@elsikora/commitizen-plugin-commitlint-ai 1.1.0 → 2.0.0-dev.1

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