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