@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,324 @@
1
+ import OpenAI from 'openai';
2
+ import { OPENAI_TEMPERATURE, OPENAI_MAX_TOKENS, RULE_CONFIG_LENGTH, VALIDATION_LEVEL_DISABLED, RULE_VALUE_INDEX, MIN_RULE_LENGTH, VALIDATION_LEVEL_ERROR } from '../../domain/constant/numeric.constant.js';
3
+ import { CommitMessage } from '../../domain/entity/commit-message.entity.js';
4
+ import { EOpenAIModel } from '../../domain/enum/openai-model.enum.js';
5
+ import { CommitBody } from '../../domain/value-object/commit-body.value-object.js';
6
+ import { CommitHeader } from '../../domain/value-object/commit-header.value-object.js';
7
+
8
+ /**
9
+ * OpenAI implementation of the LLM service
10
+ */
11
+ class OpenAILlmService {
12
+ /**
13
+ * Generate a commit message using OpenAI
14
+ * @param context - The context for generating the commit message
15
+ * @param configuration - The LLM configuration
16
+ * @returns Promise resolving to the generated commit message
17
+ */
18
+ async generateCommitMessage(context, configuration) {
19
+ const openai = new OpenAI({
20
+ apiKey: configuration.getApiKey().getValue(),
21
+ });
22
+ const systemPrompt = this.buildSystemPrompt(context);
23
+ const userPrompt = this.buildUserPrompt(context);
24
+ const response = await openai.chat.completions.create({
25
+ max_tokens: OPENAI_MAX_TOKENS,
26
+ messages: [
27
+ { content: systemPrompt, role: "system" },
28
+ { content: userPrompt, role: "user" },
29
+ ],
30
+ model: configuration.getModel() ?? EOpenAIModel.GPT_4O,
31
+ temperature: OPENAI_TEMPERATURE,
32
+ });
33
+ const content = response.choices[0]?.message?.content;
34
+ if (!content) {
35
+ throw new Error("No response from OpenAI");
36
+ }
37
+ return this.parseCommitMessage(content);
38
+ }
39
+ /**
40
+ * Check if the service supports the given configuration
41
+ * @param configuration - The LLM configuration to check
42
+ * @returns True if the service supports the configuration
43
+ */
44
+ supports(configuration) {
45
+ return configuration.getProvider() === "openai";
46
+ }
47
+ /**
48
+ * Build the system prompt for OpenAI
49
+ * @param context - The prompt context
50
+ * @returns The system prompt
51
+ */
52
+ buildSystemPrompt(context) {
53
+ let prompt = "";
54
+ // Check if this is a fix operation
55
+ const isFixing = !!(context.rules && typeof context.rules === "object" && !Array.isArray(context.rules) && context.rules.validationErrors && context.rules.previousAttempt && context.diff === undefined);
56
+ if (isFixing) {
57
+ prompt = "You are a helpful assistant that fixes commit messages to comply with validation rules. You should maintain the original meaning and content while fixing only the format issues.\n\n";
58
+ }
59
+ else {
60
+ prompt = "You are a helpful assistant that generates conventional commit messages based on the provided context and rules.\n\n";
61
+ }
62
+ // Add validation error context if present
63
+ if (context.rules?.validationErrors && Array.isArray(context.rules.validationErrors)) {
64
+ prompt += "IMPORTANT: The previous commit message had validation errors that must be fixed:\n";
65
+ for (const error of context.rules.validationErrors) {
66
+ prompt += `- ${error}\n`;
67
+ }
68
+ prompt += "\nMake sure the new commit message fixes all these errors.\n\n";
69
+ }
70
+ // Add all commitlint rules
71
+ if (context.rules && typeof context.rules === "object" && !Array.isArray(context.rules)) {
72
+ const formattedRules = this.formatCommitlintRules(context.rules);
73
+ if (formattedRules) {
74
+ prompt += "Commit message rules:\n" + formattedRules + "\n\n";
75
+ }
76
+ }
77
+ if (context.typeEnum && context.typeEnum.length > 0) {
78
+ prompt += `Available commit types: ${context.typeEnum.join(", ")}\n`;
79
+ }
80
+ if (context.typeDescriptions) {
81
+ prompt += "\nType descriptions:\n";
82
+ for (const [type, desc] of Object.entries(context.typeDescriptions)) {
83
+ const emoji = desc.emoji ? ` ${desc.emoji}` : "";
84
+ prompt += `- ${type}: ${desc.description}${emoji}\n`;
85
+ }
86
+ }
87
+ if (context.subject.maxLength) {
88
+ prompt += `\nSubject must be at most ${context.subject.maxLength} characters.`;
89
+ }
90
+ if (context.subject.minLength) {
91
+ prompt += `\nSubject must be at least ${context.subject.minLength} characters.`;
92
+ }
93
+ // Extract body/footer line length rules
94
+ let bodyMaxLength;
95
+ let footerMaxLength;
96
+ if (context.rules && typeof context.rules === "object" && !Array.isArray(context.rules)) {
97
+ // Extract body-max-line-length
98
+ const bodyRule = context.rules["body-max-line-length"];
99
+ if (Array.isArray(bodyRule) && bodyRule.length >= RULE_CONFIG_LENGTH && bodyRule[0] > VALIDATION_LEVEL_DISABLED && typeof bodyRule[RULE_VALUE_INDEX] === "number") {
100
+ bodyMaxLength = bodyRule[RULE_VALUE_INDEX];
101
+ }
102
+ // Extract footer-max-line-length
103
+ const footerRule = context.rules["footer-max-line-length"];
104
+ if (Array.isArray(footerRule) && footerRule.length >= RULE_CONFIG_LENGTH && footerRule[0] > VALIDATION_LEVEL_DISABLED && typeof footerRule[RULE_VALUE_INDEX] === "number") {
105
+ footerMaxLength = footerRule[RULE_VALUE_INDEX];
106
+ }
107
+ }
108
+ // Add body formatting rules if line length rules exist
109
+ if (bodyMaxLength || footerMaxLength) {
110
+ prompt += "\n\nIMPORTANT: Body formatting rules:";
111
+ prompt += "\n- The 'body' field in the JSON corresponds to the commit message body/footer";
112
+ if (bodyMaxLength) {
113
+ prompt += `\n- Each line in the body must be wrapped to not exceed ${bodyMaxLength} characters`;
114
+ }
115
+ if (footerMaxLength) {
116
+ prompt += `\n- Footer lines must be wrapped to not exceed ${footerMaxLength} characters`;
117
+ }
118
+ prompt += "\n- The 'breaking' field also follows the same line length rules";
119
+ prompt += "\n- Use line breaks (\\n) to wrap long lines";
120
+ prompt += "\n- Empty lines between paragraphs are allowed";
121
+ }
122
+ prompt += "\n\nGenerate a commit message in the following JSON format:\n";
123
+ prompt += '{\n "type": "commit type",\n "scope": "optional scope",\n "subject": "commit subject",\n "body": "optional body",\n "breaking": "optional breaking change description"\n}';
124
+ prompt += "\n\nIMPORTANT: Respond ONLY with the JSON object. Do not include markdown code blocks, explanations, or any other text. Just the raw JSON.";
125
+ prompt += "\n\nIMPORTANT: Follow ALL the rules listed above. The commit message MUST pass validation.";
126
+ return prompt;
127
+ }
128
+ /**
129
+ * Build the user prompt for OpenAI
130
+ * @param context - The prompt context
131
+ * @returns The user prompt
132
+ */
133
+ buildUserPrompt(context) {
134
+ let prompt = "";
135
+ // Check if this is a fix operation
136
+ const isFixing = !!(context.rules && typeof context.rules === "object" && !Array.isArray(context.rules) && context.rules.validationErrors && context.rules.previousAttempt && context.diff === undefined);
137
+ if (isFixing) {
138
+ prompt = "Fix the following commit message to comply with the validation rules:\n\n";
139
+ // Include previous attempt
140
+ if (context.rules?.previousAttempt && typeof context.rules.previousAttempt === "string") {
141
+ prompt += `Commit message to fix:\n${context.rules.previousAttempt}\n\n`;
142
+ }
143
+ }
144
+ else {
145
+ prompt = "Generate a commit message for the following changes:\n\n";
146
+ // Include previous attempt if this is a retry with diff
147
+ if (context.rules?.previousAttempt && typeof context.rules.previousAttempt === "string") {
148
+ prompt += `Previous attempt (with errors):\n${context.rules.previousAttempt}\n\n`;
149
+ }
150
+ if (context.diff) {
151
+ prompt += `Diff:\n${context.diff}\n\n`;
152
+ }
153
+ if (context.files) {
154
+ prompt += `Files changed:\n${context.files}\n\n`;
155
+ }
156
+ }
157
+ if (context.rules && typeof context.rules === "object" && !Array.isArray(context.rules) && context.rules.instructions && typeof context.rules.instructions === "string") {
158
+ prompt += `${context.rules.instructions}\n\n`;
159
+ }
160
+ if (isFixing) {
161
+ prompt += "Please fix the commit message to pass validation while keeping the same meaning and content.";
162
+ }
163
+ else {
164
+ prompt += "Please generate an appropriate commit message following the conventional commit format.";
165
+ }
166
+ return prompt;
167
+ }
168
+ /**
169
+ * Format commitlint rules into human-readable instructions
170
+ * @param rules - The commitlint rules object
171
+ * @returns Formatted rules as string
172
+ */
173
+ formatCommitlintRules(rules) {
174
+ const formattedRules = [];
175
+ for (const [ruleName, ruleConfig] of Object.entries(rules)) {
176
+ if (!Array.isArray(ruleConfig) || ruleConfig.length < MIN_RULE_LENGTH)
177
+ continue;
178
+ const [level, condition, value] = ruleConfig;
179
+ if (level === VALIDATION_LEVEL_DISABLED)
180
+ continue; // Skip disabled rules
181
+ const isError = level === VALIDATION_LEVEL_ERROR;
182
+ const prefix = isError ? "MUST" : "SHOULD";
183
+ const conditionString = String(condition);
184
+ switch (ruleName) {
185
+ case "body-max-line-length": {
186
+ if (typeof value === "number") {
187
+ formattedRules.push(`Body lines ${prefix} be at most ${value} characters (wrap long lines with line breaks)`);
188
+ }
189
+ break;
190
+ }
191
+ case "footer-max-line-length": {
192
+ if (typeof value === "number") {
193
+ formattedRules.push(`Footer lines ${prefix} be at most ${value} characters (Note: the 'body' field is treated as footer, wrap long lines)`);
194
+ }
195
+ break;
196
+ }
197
+ case "header-max-length": {
198
+ if (typeof value === "number") {
199
+ formattedRules.push(`Header (type(scope): subject) ${prefix} be at most ${value} characters`);
200
+ }
201
+ break;
202
+ }
203
+ case "scope-case": {
204
+ if (Array.isArray(value)) {
205
+ formattedRules.push(`Scope ${prefix} be in ${value.join(" or ")} case`);
206
+ }
207
+ break;
208
+ }
209
+ case "scope-enum": {
210
+ if (conditionString === "always" && Array.isArray(value)) {
211
+ formattedRules.push(`Scope ${prefix} be one of: ${value.join(", ")}`);
212
+ }
213
+ break;
214
+ }
215
+ case "subject-case": {
216
+ if (Array.isArray(value)) {
217
+ formattedRules.push(`Subject ${prefix} be in ${value.join(" or ")} case`);
218
+ }
219
+ break;
220
+ }
221
+ case "subject-empty": {
222
+ formattedRules.push(`Subject ${prefix} ${conditionString === "never" ? "not be empty" : "be empty"}`);
223
+ break;
224
+ }
225
+ case "subject-full-stop": {
226
+ formattedRules.push(`Subject ${prefix} ${conditionString === "never" ? "not end with a period" : "end with a period"}`);
227
+ break;
228
+ }
229
+ case "subject-max-length": {
230
+ if (typeof value === "number") {
231
+ formattedRules.push(`Subject ${prefix} be at most ${value} characters`);
232
+ }
233
+ break;
234
+ }
235
+ case "subject-min-length": {
236
+ if (typeof value === "number") {
237
+ formattedRules.push(`Subject ${prefix} be at least ${value} characters`);
238
+ }
239
+ break;
240
+ }
241
+ case "type-case": {
242
+ if (Array.isArray(value)) {
243
+ formattedRules.push(`Type ${prefix} be in ${value.join(" or ")} case`);
244
+ }
245
+ break;
246
+ }
247
+ case "type-enum": {
248
+ if (conditionString === "always" && Array.isArray(value)) {
249
+ formattedRules.push(`Type ${prefix} be one of: ${value.join(", ")}`);
250
+ }
251
+ break;
252
+ }
253
+ default: {
254
+ // Handle other rules generically
255
+ if (condition && value !== undefined) {
256
+ formattedRules.push(`${ruleName}: ${conditionString} ${JSON.stringify(value)}`);
257
+ }
258
+ }
259
+ }
260
+ }
261
+ return formattedRules.join("\n");
262
+ }
263
+ /**
264
+ * Parse the commit message from the LLM response
265
+ * @param content - The response content
266
+ * @returns The parsed commit message
267
+ */
268
+ parseCommitMessage(content) {
269
+ try {
270
+ // Clean up the content - remove markdown code blocks if present
271
+ let cleanContent = content.trim();
272
+ // Remove markdown code blocks with more specific pattern - fixed regex
273
+ cleanContent = cleanContent.replace(/^```(?:json)?\s*/i, "").replace(/```$/m, "");
274
+ // Try to extract JSON if it's wrapped in other text - use safer approach
275
+ const firstBrace = cleanContent.indexOf("{");
276
+ const lastBrace = cleanContent.lastIndexOf("}");
277
+ if (firstBrace !== -1 && lastBrace !== -1 && lastBrace > firstBrace) {
278
+ cleanContent = cleanContent.slice(firstBrace, lastBrace + 1);
279
+ }
280
+ const parsed = JSON.parse(cleanContent);
281
+ // Validate required fields
282
+ if (!parsed.type || !parsed.subject) {
283
+ throw new Error("Missing required fields: type and subject");
284
+ }
285
+ const header = new CommitHeader(parsed.type, parsed.subject, parsed.scope);
286
+ // Strip "BREAKING CHANGE:" prefix if included in the breaking field
287
+ let breakingChange = parsed.breaking;
288
+ if (breakingChange?.startsWith("BREAKING CHANGE:")) {
289
+ breakingChange = breakingChange.slice("BREAKING CHANGE:".length).trim();
290
+ }
291
+ const body = new CommitBody(parsed.body, breakingChange);
292
+ return new CommitMessage(header, body);
293
+ }
294
+ catch {
295
+ // Fallback: try to parse as plain text
296
+ const lines = content.trim().split("\n");
297
+ const headerLine = lines[0];
298
+ // Parse header: type(scope): subject
299
+ const headerMatch = /^(\w+)(?:\(([^)]+)\))?: (.+)$/.exec(headerLine);
300
+ if (!headerMatch) {
301
+ throw new Error(`Invalid commit message format. Could not parse: "${headerLine}"`);
302
+ }
303
+ const [, type, scope, subject] = headerMatch;
304
+ const header = new CommitHeader(type, subject, scope);
305
+ // Parse body and breaking changes
306
+ let bodyContent = "";
307
+ let breakingChange;
308
+ for (let index = 1; index < lines.length; index++) {
309
+ const line = lines[index];
310
+ if (line.startsWith("BREAKING CHANGE:")) {
311
+ breakingChange = line.slice("BREAKING CHANGE:".length).trim();
312
+ }
313
+ else if (line.trim()) {
314
+ bodyContent += line + "\n";
315
+ }
316
+ }
317
+ const body = new CommitBody(bodyContent.trim() || undefined, breakingChange);
318
+ return new CommitMessage(header, body);
319
+ }
320
+ }
321
+ }
322
+
323
+ export { OpenAILlmService };
324
+ //# sourceMappingURL=openai-llm.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-llm.service.js","sources":["../../../../../src/infrastructure/llm/openai-llm.service.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { IConfigService } from "../../application/interface/config-service.interface.js";
2
+ import type { IConfig } from "../../application/interface/config.interface.js";
3
+ import type { IFileSystemService } from "../../application/interface/file-system-service.interface.js";
4
+ /**
5
+ * Implementation of ConfigService that uses cosmiconfig for configuration management.
6
+ * Cosmiconfig searches for configuration in standard locations and formats.
7
+ */
8
+ export declare class CosmicConfigService implements IConfigService {
9
+ /** File system service for file operations */
10
+ readonly FILE_SYSTEM_SERVICE: IFileSystemService;
11
+ private cachedConfig;
12
+ private readonly EXPLORER;
13
+ /**
14
+ * Initializes a new instance of the CosmicConfigService.
15
+ * @param fileSystemService
16
+ */
17
+ constructor(fileSystemService: IFileSystemService);
18
+ /**
19
+ * Clears all caches.
20
+ */
21
+ clearCaches(): void;
22
+ /**
23
+ * Checks if the configuration exists.
24
+ * @returns Promise resolving to true if the configuration exists, false otherwise
25
+ */
26
+ exists(): Promise<boolean>;
27
+ /**
28
+ * Retrieves the current configuration.
29
+ * @returns Promise resolving to the configuration object
30
+ */
31
+ get(): Promise<IConfig>;
32
+ /**
33
+ * Gets a specific property from the configuration.
34
+ * @param property - The property key to retrieve
35
+ * @returns Promise resolving to the value of the specified property
36
+ */
37
+ getProperty<K extends keyof IConfig>(property: K): Promise<IConfig[K]>;
38
+ /**
39
+ * Merges partial configuration with the existing configuration.
40
+ * @param partial - Partial configuration to merge
41
+ * @returns Promise that resolves when the merged configuration is saved
42
+ */
43
+ merge(partial: Partial<IConfig>): Promise<void>;
44
+ /**
45
+ * Saves the entire configuration.
46
+ * @param config - The complete configuration to save
47
+ * @returns Promise that resolves when the configuration is saved
48
+ */
49
+ set(config: IConfig): Promise<void>;
50
+ /**
51
+ * Sets a specific property in the configuration.
52
+ * @param property - The property key to set
53
+ * @param value - The value to assign to the property
54
+ * @returns Promise that resolves when the updated configuration is saved
55
+ */
56
+ setProperty<K extends keyof IConfig>(property: K, value: IConfig[K]): Promise<void>;
57
+ /**
58
+ * Writes configuration to a file.
59
+ * @param filepath - Path to write the configuration to
60
+ * @param config - Configuration to write
61
+ * @returns Promise that resolves when the file is written
62
+ */
63
+ private writeFile;
64
+ }
65
+ //# sourceMappingURL=cosmic-config.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmic-config.service.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/service/cosmic-config.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAC9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AASvG;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACzD,8CAA8C;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;IAEjD,OAAO,CAAC,YAAY,CAAwB;IAE5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C;;;OAGG;gBACS,iBAAiB,EAAE,kBAAkB;IAuBjD;;OAEG;IACI,WAAW,IAAI,IAAI;IAK1B;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMvC;;;OAGG;IACU,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBpC;;;;OAIG;IACU,WAAW,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAMnF;;;;OAIG;IACU,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D;;;;OAIG;IACU,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhD;;;;;OAKG;IACU,WAAW,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhG;;;;;OAKG;YACW,SAAS;CAsDvB"}
@@ -0,0 +1,172 @@
1
+ import { cosmiconfig } from 'cosmiconfig';
2
+ import { stringify } from 'javascript-stringify';
3
+ import yaml from 'yaml';
4
+ import { CONFIG_FILE_DIRECTORY } from '../../application/constant/config-file-directory.constant.js';
5
+ import { CONFIG_MODULE_NAME } from '../../application/constant/config-module-name.constant.js';
6
+
7
+ /**
8
+ * Implementation of ConfigService that uses cosmiconfig for configuration management.
9
+ * Cosmiconfig searches for configuration in standard locations and formats.
10
+ */
11
+ class CosmicConfigService {
12
+ /** File system service for file operations */
13
+ FILE_SYSTEM_SERVICE;
14
+ cachedConfig = null;
15
+ EXPLORER;
16
+ /**
17
+ * Initializes a new instance of the CosmicConfigService.
18
+ * @param fileSystemService
19
+ */
20
+ constructor(fileSystemService) {
21
+ this.FILE_SYSTEM_SERVICE = fileSystemService;
22
+ this.EXPLORER = cosmiconfig(CONFIG_MODULE_NAME, {
23
+ packageProp: `${CONFIG_FILE_DIRECTORY.replace(".", "")}.${CONFIG_MODULE_NAME}`,
24
+ searchPlaces: [
25
+ "package.json",
26
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc`,
27
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc.json`,
28
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc.yaml`,
29
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc.yml`,
30
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc.js`,
31
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc.ts`,
32
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc.mjs`,
33
+ `${CONFIG_FILE_DIRECTORY}/.${CONFIG_MODULE_NAME}rc.cjs`,
34
+ `${CONFIG_FILE_DIRECTORY}/${CONFIG_MODULE_NAME}.config.js`,
35
+ `${CONFIG_FILE_DIRECTORY}/${CONFIG_MODULE_NAME}.config.ts`,
36
+ `${CONFIG_FILE_DIRECTORY}/${CONFIG_MODULE_NAME}.config.mjs`,
37
+ `${CONFIG_FILE_DIRECTORY}/${CONFIG_MODULE_NAME}.config.cjs`,
38
+ ],
39
+ });
40
+ }
41
+ /**
42
+ * Clears all caches.
43
+ */
44
+ clearCaches() {
45
+ this.cachedConfig = null;
46
+ this.EXPLORER.clearCaches();
47
+ }
48
+ /**
49
+ * Checks if the configuration exists.
50
+ * @returns Promise resolving to true if the configuration exists, false otherwise
51
+ */
52
+ async exists() {
53
+ const result = await this.EXPLORER.search();
54
+ return result !== null && !result.isEmpty;
55
+ }
56
+ /**
57
+ * Retrieves the current configuration.
58
+ * @returns Promise resolving to the configuration object
59
+ */
60
+ async get() {
61
+ if (this.cachedConfig) {
62
+ return this.cachedConfig;
63
+ }
64
+ const result = await this.EXPLORER.search();
65
+ if (result?.config) {
66
+ this.cachedConfig = result.config;
67
+ return this.cachedConfig;
68
+ }
69
+ return {};
70
+ }
71
+ /**
72
+ * Gets a specific property from the configuration.
73
+ * @param property - The property key to retrieve
74
+ * @returns Promise resolving to the value of the specified property
75
+ */
76
+ async getProperty(property) {
77
+ const config = await this.get();
78
+ return config[property];
79
+ }
80
+ /**
81
+ * Merges partial configuration with the existing configuration.
82
+ * @param partial - Partial configuration to merge
83
+ * @returns Promise that resolves when the merged configuration is saved
84
+ */
85
+ async merge(partial) {
86
+ try {
87
+ const config = await this.get();
88
+ const merged = { ...config, ...partial };
89
+ await this.set(merged);
90
+ }
91
+ catch (error) {
92
+ console.error("Error merging config:", error);
93
+ await this.set(partial);
94
+ }
95
+ }
96
+ /**
97
+ * Saves the entire configuration.
98
+ * @param config - The complete configuration to save
99
+ * @returns Promise that resolves when the configuration is saved
100
+ */
101
+ async set(config) {
102
+ try {
103
+ const result = await this.EXPLORER.search();
104
+ const filePath = result?.filepath ?? `${CONFIG_FILE_DIRECTORY}/${CONFIG_MODULE_NAME}.config.js`;
105
+ await this.writeFile(filePath, config);
106
+ this.cachedConfig = config;
107
+ this.EXPLORER.clearSearchCache();
108
+ }
109
+ catch (error) {
110
+ console.error("Error saving configuration:", error);
111
+ throw error;
112
+ }
113
+ }
114
+ /**
115
+ * Sets a specific property in the configuration.
116
+ * @param property - The property key to set
117
+ * @param value - The value to assign to the property
118
+ * @returns Promise that resolves when the updated configuration is saved
119
+ */
120
+ async setProperty(property, value) {
121
+ const config = await this.get();
122
+ config[property] = value;
123
+ await this.set(config);
124
+ }
125
+ /**
126
+ * Writes configuration to a file.
127
+ * @param filepath - Path to write the configuration to
128
+ * @param config - Configuration to write
129
+ * @returns Promise that resolves when the file is written
130
+ */
131
+ async writeFile(filepath, config) {
132
+ const extension = this.FILE_SYSTEM_SERVICE.getExtensionFromFilePath(filepath);
133
+ let content;
134
+ switch (extension) {
135
+ case ".cjs": {
136
+ content = `module.exports = ${String(stringify(config, null, 2))};`;
137
+ break;
138
+ }
139
+ case ".js": {
140
+ content = `export default ${String(stringify(config, null, 2))};`;
141
+ break;
142
+ }
143
+ case ".json": {
144
+ content = String(stringify(config, null, 2));
145
+ break;
146
+ }
147
+ case ".mjs": {
148
+ content = `export default ${String(stringify(config, null, 2))};`;
149
+ break;
150
+ }
151
+ case ".yaml": {
152
+ content = yaml.stringify(config);
153
+ break;
154
+ }
155
+ case ".yml": {
156
+ content = yaml.stringify(config);
157
+ break;
158
+ }
159
+ default: {
160
+ content = JSON.stringify(config, null, 2);
161
+ }
162
+ }
163
+ const directoryName = this.FILE_SYSTEM_SERVICE.getDirectoryNameFromFilePath(filepath);
164
+ if (!(await this.FILE_SYSTEM_SERVICE.isPathExists(directoryName))) {
165
+ await this.FILE_SYSTEM_SERVICE.createDirectory(directoryName, { isRecursive: true });
166
+ }
167
+ await this.FILE_SYSTEM_SERVICE.writeFile(filepath, content, "utf8");
168
+ }
169
+ }
170
+
171
+ export { CosmicConfigService };
172
+ //# sourceMappingURL=cosmic-config.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmic-config.service.js","sources":["../../../../../src/infrastructure/service/cosmic-config.service.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./cosmic-config.service.js";
2
+ export * from "./node-command.service.js";
3
+ export * from "./node-file-system.service.js";
4
+ export * from "./prompts-cli-interface.service.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/service/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { ICliInterfaceService } from "../../application/interface/cli-interface-service.interface.js";
2
+ import type { ICommandService } from "../../application/interface/command-service.interface.js";
3
+ /**
4
+ * Implementation of the command service using Node.js child_process.
5
+ * Provides functionality to execute shell commands.
6
+ */
7
+ export declare class NodeCommandService implements ICommandService {
8
+ /** CLI interface service for user interaction */
9
+ readonly CLI_INTERFACE_SERVICE: ICliInterfaceService;
10
+ /**
11
+ * Promisified version of the exec function from child_process.
12
+ * Allows for async/await usage of command execution.
13
+ */
14
+ private readonly EXEC_ASYNC;
15
+ constructor(cliInterfaceService: ICliInterfaceService);
16
+ /**
17
+ * Executes a shell command.
18
+ * @param command - The shell command to execute
19
+ * @returns Promise that resolves when the command completes successfully
20
+ * @throws Will throw an error if the command execution fails, except for npm install which offers retry options
21
+ */
22
+ execute(command: string): Promise<void>;
23
+ /**
24
+ * Execute a command and return its output
25
+ * @param command - The command to execute
26
+ * @returns Promise that resolves to the command output
27
+ */
28
+ executeWithOutput(command: string): Promise<string>;
29
+ /**
30
+ * Formate and parse npm error to readable format
31
+ * @param command - The original npm command that failed
32
+ * @param error - Error npm object
33
+ * @returns void
34
+ */
35
+ private formatAndParseNpmError;
36
+ /**
37
+ * Handles npm install command failures by offering retry options to the user.
38
+ * @param originalCommand - The original npm command that failed
39
+ * @returns Promise that resolves when the chosen action completes
40
+ * @throws Will throw an error if the user chooses to cancel or if retried command still fails
41
+ */
42
+ private handleNpmInstallFailure;
43
+ }
44
+ //# sourceMappingURL=node-command.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-command.service.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/service/node-command.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAC;AAC3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAgBhG;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACzD,iDAAiD;IACjD,QAAQ,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;IAErD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuF;gBAEtG,mBAAmB,EAAE,oBAAoB;IAIrD;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzD;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAmD9B;;;;;OAKG;YACW,uBAAuB;CAuCrC"}