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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/README.md +256 -57
  2. package/dist/cjs/application/constant/config-file-directory.constant.d.ts +4 -0
  3. package/dist/cjs/application/constant/config-file-directory.constant.js +9 -0
  4. package/dist/cjs/application/constant/config-file-directory.constant.js.map +1 -0
  5. package/dist/cjs/application/constant/config-module-name.constant.d.ts +4 -0
  6. package/dist/cjs/application/constant/config-module-name.constant.js +9 -0
  7. package/dist/cjs/application/constant/config-module-name.constant.js.map +1 -0
  8. package/dist/cjs/application/constant/index.d.ts +2 -0
  9. package/dist/cjs/application/index.d.ts +2 -0
  10. package/dist/cjs/application/interface/cli-interface-service-select-options.interface.d.ts +21 -0
  11. package/dist/cjs/application/interface/cli-interface-service.interface.d.ts +105 -0
  12. package/dist/cjs/application/interface/command-service.interface.d.ts +19 -0
  13. package/dist/cjs/application/interface/commit-repository.interface.d.ts +32 -0
  14. package/dist/cjs/application/interface/commit-validator.interface.d.ts +29 -0
  15. package/dist/cjs/application/interface/config-service.interface.d.ts +47 -0
  16. package/dist/cjs/application/interface/config.interface.d.ts +27 -0
  17. package/dist/cjs/application/interface/file-system-service.interface.d.ts +61 -0
  18. package/dist/cjs/application/interface/index.d.ts +9 -0
  19. package/dist/cjs/application/interface/llm-service.interface.d.ts +43 -0
  20. package/dist/cjs/application/use-case/configure-llm.use-case.d.ts +39 -0
  21. package/dist/cjs/application/use-case/configure-llm.use-case.js +373 -0
  22. package/dist/cjs/application/use-case/configure-llm.use-case.js.map +1 -0
  23. package/dist/cjs/application/use-case/generate-commit-message.use-case.d.ts +18 -0
  24. package/dist/cjs/application/use-case/generate-commit-message.use-case.js +49 -0
  25. package/dist/cjs/application/use-case/generate-commit-message.use-case.js.map +1 -0
  26. package/dist/cjs/application/use-case/index.d.ts +4 -0
  27. package/dist/cjs/application/use-case/manual-commit.use-case.d.ts +16 -0
  28. package/dist/cjs/application/use-case/manual-commit.use-case.js +81 -0
  29. package/dist/cjs/application/use-case/manual-commit.use-case.js.map +1 -0
  30. package/dist/cjs/application/use-case/validate-commit-message.use-case.d.ts +26 -0
  31. package/dist/cjs/application/use-case/validate-commit-message.use-case.js +76 -0
  32. package/dist/cjs/application/use-case/validate-commit-message.use-case.js.map +1 -0
  33. package/dist/cjs/domain/constant/index.d.ts +1 -0
  34. package/dist/cjs/domain/constant/numeric.constant.d.ts +25 -0
  35. package/dist/cjs/domain/constant/numeric.constant.js +42 -0
  36. package/dist/cjs/domain/constant/numeric.constant.js.map +1 -0
  37. package/dist/cjs/domain/entity/commit-message.entity.d.ts +47 -0
  38. package/dist/cjs/domain/entity/commit-message.entity.js +71 -0
  39. package/dist/cjs/domain/entity/commit-message.entity.js.map +1 -0
  40. package/dist/cjs/domain/entity/index.d.ts +2 -0
  41. package/dist/cjs/domain/entity/llm-configuration.entity.d.ts +73 -0
  42. package/dist/cjs/domain/entity/llm-configuration.entity.js +107 -0
  43. package/dist/cjs/domain/entity/llm-configuration.entity.js.map +1 -0
  44. package/dist/cjs/domain/enum/anthropic-model.enum.d.ts +18 -0
  45. package/dist/cjs/domain/enum/anthropic-model.enum.js +26 -0
  46. package/dist/cjs/domain/enum/anthropic-model.enum.js.map +1 -0
  47. package/dist/cjs/domain/enum/aws-bedrock-model.enum.d.ts +33 -0
  48. package/dist/cjs/domain/enum/aws-bedrock-model.enum.js +47 -0
  49. package/dist/cjs/domain/enum/aws-bedrock-model.enum.js.map +1 -0
  50. package/dist/cjs/domain/enum/azure-openai-model.enum.d.ts +17 -0
  51. package/dist/cjs/domain/enum/azure-openai-model.enum.js +26 -0
  52. package/dist/cjs/domain/enum/azure-openai-model.enum.js.map +1 -0
  53. package/dist/cjs/domain/enum/commit-mode.enum.d.ts +7 -0
  54. package/dist/cjs/domain/enum/commit-mode.enum.js +11 -0
  55. package/dist/cjs/domain/enum/commit-mode.enum.js.map +1 -0
  56. package/dist/cjs/domain/enum/google-model.enum.d.ts +16 -0
  57. package/dist/cjs/domain/enum/google-model.enum.js +25 -0
  58. package/dist/cjs/domain/enum/google-model.enum.js.map +1 -0
  59. package/dist/cjs/domain/enum/index.d.ts +9 -0
  60. package/dist/cjs/domain/enum/llm-provider.enum.d.ts +11 -0
  61. package/dist/cjs/domain/enum/llm-provider.enum.js +15 -0
  62. package/dist/cjs/domain/enum/llm-provider.enum.js.map +1 -0
  63. package/dist/cjs/domain/enum/log-level.enum.d.ts +9 -0
  64. package/dist/cjs/domain/enum/log-level.enum.js +13 -0
  65. package/dist/cjs/domain/enum/log-level.enum.js.map +1 -0
  66. package/dist/cjs/domain/enum/ollama-model.enum.d.ts +24 -0
  67. package/dist/cjs/domain/enum/ollama-model.enum.js +30 -0
  68. package/dist/cjs/domain/enum/ollama-model.enum.js.map +1 -0
  69. package/dist/cjs/domain/enum/openai-model.enum.d.ts +25 -0
  70. package/dist/cjs/domain/enum/openai-model.enum.js +35 -0
  71. package/dist/cjs/domain/enum/openai-model.enum.js.map +1 -0
  72. package/dist/cjs/domain/index.d.ts +3 -0
  73. package/dist/cjs/domain/value-object/api-key.value-object.d.ts +28 -0
  74. package/dist/cjs/domain/value-object/api-key.value-object.js +51 -0
  75. package/dist/cjs/domain/value-object/api-key.value-object.js.map +1 -0
  76. package/dist/cjs/domain/value-object/commit-body.value-object.d.ts +39 -0
  77. package/dist/cjs/domain/value-object/commit-body.value-object.js +66 -0
  78. package/dist/cjs/domain/value-object/commit-body.value-object.js.map +1 -0
  79. package/dist/cjs/domain/value-object/commit-header.value-object.d.ts +35 -0
  80. package/dist/cjs/domain/value-object/commit-header.value-object.js +63 -0
  81. package/dist/cjs/domain/value-object/commit-header.value-object.js.map +1 -0
  82. package/dist/cjs/domain/value-object/index.d.ts +3 -0
  83. package/dist/cjs/index.d.ts +14 -12
  84. package/dist/cjs/index.js +85 -83
  85. package/dist/cjs/index.js.map +1 -1
  86. package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.d.ts +38 -0
  87. package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.js +207 -0
  88. package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.js.map +1 -0
  89. package/dist/cjs/infrastructure/commit-validator/index.d.ts +1 -0
  90. package/dist/cjs/infrastructure/di/container.d.ts +17 -0
  91. package/dist/cjs/infrastructure/di/container.js +76 -0
  92. package/dist/cjs/infrastructure/di/container.js.map +1 -0
  93. package/dist/cjs/infrastructure/di/index.d.ts +1 -0
  94. package/dist/cjs/infrastructure/git/git-commit.repository.d.ts +36 -0
  95. package/dist/cjs/infrastructure/git/git-commit.repository.js +78 -0
  96. package/dist/cjs/infrastructure/git/git-commit.repository.js.map +1 -0
  97. package/dist/cjs/infrastructure/git/index.d.ts +1 -0
  98. package/dist/cjs/infrastructure/index.d.ts +4 -0
  99. package/dist/cjs/infrastructure/llm/anthropic-llm.service.d.ts +39 -0
  100. package/dist/cjs/infrastructure/llm/anthropic-llm.service.js +323 -0
  101. package/dist/cjs/infrastructure/llm/anthropic-llm.service.js.map +1 -0
  102. package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.d.ts +60 -0
  103. package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.js +514 -0
  104. package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.js.map +1 -0
  105. package/dist/cjs/infrastructure/llm/azure-openai-llm.service.d.ts +45 -0
  106. package/dist/cjs/infrastructure/llm/azure-openai-llm.service.js +351 -0
  107. package/dist/cjs/infrastructure/llm/azure-openai-llm.service.js.map +1 -0
  108. package/dist/cjs/infrastructure/llm/google-llm.service.d.ts +45 -0
  109. package/dist/cjs/infrastructure/llm/google-llm.service.js +335 -0
  110. package/dist/cjs/infrastructure/llm/google-llm.service.js.map +1 -0
  111. package/dist/cjs/infrastructure/llm/index.d.ts +6 -0
  112. package/dist/cjs/infrastructure/llm/ollama-llm.service.d.ts +45 -0
  113. package/dist/cjs/infrastructure/llm/ollama-llm.service.js +387 -0
  114. package/dist/cjs/infrastructure/llm/ollama-llm.service.js.map +1 -0
  115. package/dist/cjs/infrastructure/llm/openai-llm.service.d.ts +45 -0
  116. package/dist/cjs/infrastructure/llm/openai-llm.service.js +339 -0
  117. package/dist/cjs/infrastructure/llm/openai-llm.service.js.map +1 -0
  118. package/dist/cjs/infrastructure/service/cosmic-config.service.d.ts +66 -0
  119. package/dist/cjs/infrastructure/service/cosmic-config.service.js +176 -0
  120. package/dist/cjs/infrastructure/service/cosmic-config.service.js.map +1 -0
  121. package/dist/cjs/infrastructure/service/index.d.ts +4 -0
  122. package/dist/cjs/infrastructure/service/node-command.service.d.ts +45 -0
  123. package/dist/cjs/infrastructure/service/node-command.service.js +154 -0
  124. package/dist/cjs/infrastructure/service/node-command.service.js.map +1 -0
  125. package/dist/cjs/infrastructure/service/node-file-system.service.d.ts +62 -0
  126. package/dist/cjs/infrastructure/service/node-file-system.service.js +102 -0
  127. package/dist/cjs/infrastructure/service/node-file-system.service.js.map +1 -0
  128. package/dist/cjs/infrastructure/service/prompts-cli-interface.service.d.ts +117 -0
  129. package/dist/cjs/infrastructure/service/prompts-cli-interface.service.js +318 -0
  130. package/dist/cjs/infrastructure/service/prompts-cli-interface.service.js.map +1 -0
  131. package/dist/cjs/presentation/commitizen.adapter.d.ts +28 -0
  132. package/dist/cjs/presentation/commitizen.adapter.js +304 -0
  133. package/dist/cjs/presentation/commitizen.adapter.js.map +1 -0
  134. package/dist/cjs/presentation/index.d.ts +1 -0
  135. package/dist/esm/application/constant/config-file-directory.constant.d.ts +4 -0
  136. package/dist/esm/application/constant/config-file-directory.constant.js +7 -0
  137. package/dist/esm/application/constant/config-file-directory.constant.js.map +1 -0
  138. package/dist/esm/application/constant/config-module-name.constant.d.ts +4 -0
  139. package/dist/esm/application/constant/config-module-name.constant.js +7 -0
  140. package/dist/esm/application/constant/config-module-name.constant.js.map +1 -0
  141. package/dist/esm/application/constant/index.d.ts +2 -0
  142. package/dist/esm/application/index.d.ts +2 -0
  143. package/dist/esm/application/interface/cli-interface-service-select-options.interface.d.ts +21 -0
  144. package/dist/esm/application/interface/cli-interface-service.interface.d.ts +105 -0
  145. package/dist/esm/application/interface/command-service.interface.d.ts +19 -0
  146. package/dist/esm/application/interface/commit-repository.interface.d.ts +32 -0
  147. package/dist/esm/application/interface/commit-validator.interface.d.ts +29 -0
  148. package/dist/esm/application/interface/config-service.interface.d.ts +47 -0
  149. package/dist/esm/application/interface/config.interface.d.ts +27 -0
  150. package/dist/esm/application/interface/file-system-service.interface.d.ts +61 -0
  151. package/dist/esm/application/interface/index.d.ts +9 -0
  152. package/dist/esm/application/interface/llm-service.interface.d.ts +43 -0
  153. package/dist/esm/application/use-case/configure-llm.use-case.d.ts +39 -0
  154. package/dist/esm/application/use-case/configure-llm.use-case.js +371 -0
  155. package/dist/esm/application/use-case/configure-llm.use-case.js.map +1 -0
  156. package/dist/esm/application/use-case/generate-commit-message.use-case.d.ts +18 -0
  157. package/dist/esm/application/use-case/generate-commit-message.use-case.js +47 -0
  158. package/dist/esm/application/use-case/generate-commit-message.use-case.js.map +1 -0
  159. package/dist/esm/application/use-case/index.d.ts +4 -0
  160. package/dist/esm/application/use-case/manual-commit.use-case.d.ts +16 -0
  161. package/dist/esm/application/use-case/manual-commit.use-case.js +79 -0
  162. package/dist/esm/application/use-case/manual-commit.use-case.js.map +1 -0
  163. package/dist/esm/application/use-case/validate-commit-message.use-case.d.ts +26 -0
  164. package/dist/esm/application/use-case/validate-commit-message.use-case.js +74 -0
  165. package/dist/esm/application/use-case/validate-commit-message.use-case.js.map +1 -0
  166. package/dist/esm/domain/constant/index.d.ts +1 -0
  167. package/dist/esm/domain/constant/numeric.constant.d.ts +25 -0
  168. package/dist/esm/domain/constant/numeric.constant.js +26 -0
  169. package/dist/esm/domain/constant/numeric.constant.js.map +1 -0
  170. package/dist/esm/domain/entity/commit-message.entity.d.ts +47 -0
  171. package/dist/esm/domain/entity/commit-message.entity.js +69 -0
  172. package/dist/esm/domain/entity/commit-message.entity.js.map +1 -0
  173. package/dist/esm/domain/entity/index.d.ts +2 -0
  174. package/dist/esm/domain/entity/llm-configuration.entity.d.ts +73 -0
  175. package/dist/esm/domain/entity/llm-configuration.entity.js +105 -0
  176. package/dist/esm/domain/entity/llm-configuration.entity.js.map +1 -0
  177. package/dist/esm/domain/enum/anthropic-model.enum.d.ts +18 -0
  178. package/dist/esm/domain/enum/anthropic-model.enum.js +26 -0
  179. package/dist/esm/domain/enum/anthropic-model.enum.js.map +1 -0
  180. package/dist/esm/domain/enum/aws-bedrock-model.enum.d.ts +33 -0
  181. package/dist/esm/domain/enum/aws-bedrock-model.enum.js +47 -0
  182. package/dist/esm/domain/enum/aws-bedrock-model.enum.js.map +1 -0
  183. package/dist/esm/domain/enum/azure-openai-model.enum.d.ts +17 -0
  184. package/dist/esm/domain/enum/azure-openai-model.enum.js +26 -0
  185. package/dist/esm/domain/enum/azure-openai-model.enum.js.map +1 -0
  186. package/dist/esm/domain/enum/commit-mode.enum.d.ts +7 -0
  187. package/dist/esm/domain/enum/commit-mode.enum.js +11 -0
  188. package/dist/esm/domain/enum/commit-mode.enum.js.map +1 -0
  189. package/dist/esm/domain/enum/google-model.enum.d.ts +16 -0
  190. package/dist/esm/domain/enum/google-model.enum.js +25 -0
  191. package/dist/esm/domain/enum/google-model.enum.js.map +1 -0
  192. package/dist/esm/domain/enum/index.d.ts +9 -0
  193. package/dist/esm/domain/enum/llm-provider.enum.d.ts +11 -0
  194. package/dist/esm/domain/enum/llm-provider.enum.js +15 -0
  195. package/dist/esm/domain/enum/llm-provider.enum.js.map +1 -0
  196. package/dist/esm/domain/enum/log-level.enum.d.ts +9 -0
  197. package/dist/esm/domain/enum/log-level.enum.js +13 -0
  198. package/dist/esm/domain/enum/log-level.enum.js.map +1 -0
  199. package/dist/esm/domain/enum/ollama-model.enum.d.ts +24 -0
  200. package/dist/esm/domain/enum/ollama-model.enum.js +30 -0
  201. package/dist/esm/domain/enum/ollama-model.enum.js.map +1 -0
  202. package/dist/esm/domain/enum/openai-model.enum.d.ts +25 -0
  203. package/dist/esm/domain/enum/openai-model.enum.js +35 -0
  204. package/dist/esm/domain/enum/openai-model.enum.js.map +1 -0
  205. package/dist/esm/domain/index.d.ts +3 -0
  206. package/dist/esm/domain/value-object/api-key.value-object.d.ts +28 -0
  207. package/dist/esm/domain/value-object/api-key.value-object.js +49 -0
  208. package/dist/esm/domain/value-object/api-key.value-object.js.map +1 -0
  209. package/dist/esm/domain/value-object/commit-body.value-object.d.ts +39 -0
  210. package/dist/esm/domain/value-object/commit-body.value-object.js +64 -0
  211. package/dist/esm/domain/value-object/commit-body.value-object.js.map +1 -0
  212. package/dist/esm/domain/value-object/commit-header.value-object.d.ts +35 -0
  213. package/dist/esm/domain/value-object/commit-header.value-object.js +61 -0
  214. package/dist/esm/domain/value-object/commit-header.value-object.js.map +1 -0
  215. package/dist/esm/domain/value-object/index.d.ts +3 -0
  216. package/dist/esm/index.d.ts +14 -12
  217. package/dist/esm/index.js +38 -82
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.d.ts +38 -0
  220. package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.js +205 -0
  221. package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.js.map +1 -0
  222. package/dist/esm/infrastructure/commit-validator/index.d.ts +1 -0
  223. package/dist/esm/infrastructure/di/container.d.ts +17 -0
  224. package/dist/esm/infrastructure/di/container.js +63 -0
  225. package/dist/esm/infrastructure/di/container.js.map +1 -0
  226. package/dist/esm/infrastructure/di/index.d.ts +1 -0
  227. package/dist/esm/infrastructure/git/git-commit.repository.d.ts +36 -0
  228. package/dist/esm/infrastructure/git/git-commit.repository.js +76 -0
  229. package/dist/esm/infrastructure/git/git-commit.repository.js.map +1 -0
  230. package/dist/esm/infrastructure/git/index.d.ts +1 -0
  231. package/dist/esm/infrastructure/index.d.ts +4 -0
  232. package/dist/esm/infrastructure/llm/anthropic-llm.service.d.ts +39 -0
  233. package/dist/esm/infrastructure/llm/anthropic-llm.service.js +321 -0
  234. package/dist/esm/infrastructure/llm/anthropic-llm.service.js.map +1 -0
  235. package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.d.ts +60 -0
  236. package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.js +512 -0
  237. package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.js.map +1 -0
  238. package/dist/esm/infrastructure/llm/azure-openai-llm.service.d.ts +45 -0
  239. package/dist/esm/infrastructure/llm/azure-openai-llm.service.js +349 -0
  240. package/dist/esm/infrastructure/llm/azure-openai-llm.service.js.map +1 -0
  241. package/dist/esm/infrastructure/llm/google-llm.service.d.ts +45 -0
  242. package/dist/esm/infrastructure/llm/google-llm.service.js +333 -0
  243. package/dist/esm/infrastructure/llm/google-llm.service.js.map +1 -0
  244. package/dist/esm/infrastructure/llm/index.d.ts +6 -0
  245. package/dist/esm/infrastructure/llm/ollama-llm.service.d.ts +45 -0
  246. package/dist/esm/infrastructure/llm/ollama-llm.service.js +385 -0
  247. package/dist/esm/infrastructure/llm/ollama-llm.service.js.map +1 -0
  248. package/dist/esm/infrastructure/llm/openai-llm.service.d.ts +45 -0
  249. package/dist/esm/infrastructure/llm/openai-llm.service.js +337 -0
  250. package/dist/esm/infrastructure/llm/openai-llm.service.js.map +1 -0
  251. package/dist/esm/infrastructure/service/cosmic-config.service.d.ts +66 -0
  252. package/dist/esm/infrastructure/service/cosmic-config.service.js +174 -0
  253. package/dist/esm/infrastructure/service/cosmic-config.service.js.map +1 -0
  254. package/dist/esm/infrastructure/service/index.d.ts +4 -0
  255. package/dist/esm/infrastructure/service/node-command.service.d.ts +45 -0
  256. package/dist/esm/infrastructure/service/node-command.service.js +152 -0
  257. package/dist/esm/infrastructure/service/node-command.service.js.map +1 -0
  258. package/dist/esm/infrastructure/service/node-file-system.service.d.ts +62 -0
  259. package/dist/esm/infrastructure/service/node-file-system.service.js +100 -0
  260. package/dist/esm/infrastructure/service/node-file-system.service.js.map +1 -0
  261. package/dist/esm/infrastructure/service/prompts-cli-interface.service.d.ts +117 -0
  262. package/dist/esm/infrastructure/service/prompts-cli-interface.service.js +316 -0
  263. package/dist/esm/infrastructure/service/prompts-cli-interface.service.js.map +1 -0
  264. package/dist/esm/package.json +19 -0
  265. package/dist/esm/presentation/commitizen.adapter.d.ts +28 -0
  266. package/dist/esm/presentation/commitizen.adapter.js +302 -0
  267. package/dist/esm/presentation/commitizen.adapter.js.map +1 -0
  268. package/dist/esm/presentation/index.d.ts +1 -0
  269. package/index.cjs +1 -2
  270. package/package.json +42 -25
  271. package/dist/cjs/ManualProcess.d.ts +0 -6
  272. package/dist/cjs/ManualProcess.d.ts.map +0 -1
  273. package/dist/cjs/ManualProcess.js +0 -111
  274. package/dist/cjs/ManualProcess.js.map +0 -1
  275. package/dist/cjs/Process.d.ts +0 -6
  276. package/dist/cjs/Process.d.ts.map +0 -1
  277. package/dist/cjs/Process.js +0 -176
  278. package/dist/cjs/Process.js.map +0 -1
  279. package/dist/cjs/Question.d.ts +0 -46
  280. package/dist/cjs/Question.d.ts.map +0 -1
  281. package/dist/cjs/SectionBody.d.ts +0 -4
  282. package/dist/cjs/SectionBody.d.ts.map +0 -1
  283. package/dist/cjs/SectionFooter.d.ts +0 -13
  284. package/dist/cjs/SectionFooter.d.ts.map +0 -1
  285. package/dist/cjs/SectionHeader.d.ts +0 -15
  286. package/dist/cjs/SectionHeader.d.ts.map +0 -1
  287. package/dist/cjs/index.d.ts.map +0 -1
  288. package/dist/cjs/services/commitConfirmation.d.ts +0 -3
  289. package/dist/cjs/services/commitConfirmation.d.ts.map +0 -1
  290. package/dist/cjs/services/commitConfirmation.js +0 -122
  291. package/dist/cjs/services/commitConfirmation.js.map +0 -1
  292. package/dist/cjs/services/commitlintConfig.d.ts +0 -4
  293. package/dist/cjs/services/commitlintConfig.d.ts.map +0 -1
  294. package/dist/cjs/services/commitlintConfig.js +0 -198
  295. package/dist/cjs/services/commitlintConfig.js.map +0 -1
  296. package/dist/cjs/services/commitlintValidator.d.ts +0 -26
  297. package/dist/cjs/services/commitlintValidator.d.ts.map +0 -1
  298. package/dist/cjs/services/commitlintValidator.js +0 -146
  299. package/dist/cjs/services/commitlintValidator.js.map +0 -1
  300. package/dist/cjs/services/getRuleQuestionConfig.d.ts +0 -4
  301. package/dist/cjs/services/getRuleQuestionConfig.d.ts.map +0 -1
  302. package/dist/cjs/services/llm/anthropic.d.ts +0 -3
  303. package/dist/cjs/services/llm/anthropic.d.ts.map +0 -1
  304. package/dist/cjs/services/llm/anthropic.js +0 -118
  305. package/dist/cjs/services/llm/anthropic.js.map +0 -1
  306. package/dist/cjs/services/llm/config.d.ts +0 -5
  307. package/dist/cjs/services/llm/config.d.ts.map +0 -1
  308. package/dist/cjs/services/llm/config.js +0 -181
  309. package/dist/cjs/services/llm/config.js.map +0 -1
  310. package/dist/cjs/services/llm/index.d.ts +0 -6
  311. package/dist/cjs/services/llm/index.d.ts.map +0 -1
  312. package/dist/cjs/services/llm/index.js +0 -399
  313. package/dist/cjs/services/llm/index.js.map +0 -1
  314. package/dist/cjs/services/llm/models.d.ts +0 -34
  315. package/dist/cjs/services/llm/models.d.ts.map +0 -1
  316. package/dist/cjs/services/llm/models.js +0 -65
  317. package/dist/cjs/services/llm/models.js.map +0 -1
  318. package/dist/cjs/services/llm/openai.d.ts +0 -3
  319. package/dist/cjs/services/llm/openai.d.ts.map +0 -1
  320. package/dist/cjs/services/llm/openai.js +0 -111
  321. package/dist/cjs/services/llm/openai.js.map +0 -1
  322. package/dist/cjs/services/llm/types.d.ts +0 -71
  323. package/dist/cjs/services/llm/types.d.ts.map +0 -1
  324. package/dist/cjs/store/defaultPromptConfigs.d.ts +0 -33
  325. package/dist/cjs/store/defaultPromptConfigs.d.ts.map +0 -1
  326. package/dist/cjs/store/defaultPromptConfigs.js +0 -39
  327. package/dist/cjs/store/defaultPromptConfigs.js.map +0 -1
  328. package/dist/cjs/store/prompts.d.ts +0 -6
  329. package/dist/cjs/store/prompts.d.ts.map +0 -1
  330. package/dist/cjs/store/prompts.js +0 -40
  331. package/dist/cjs/store/prompts.js.map +0 -1
  332. package/dist/cjs/store/rules.d.ts +0 -7
  333. package/dist/cjs/store/rules.d.ts.map +0 -1
  334. package/dist/cjs/types.d.ts +0 -3
  335. package/dist/cjs/types.d.ts.map +0 -1
  336. package/dist/cjs/utils/case-function.d.ts +0 -9
  337. package/dist/cjs/utils/case-function.d.ts.map +0 -1
  338. package/dist/cjs/utils/full-stop-function.d.ts +0 -9
  339. package/dist/cjs/utils/full-stop-function.d.ts.map +0 -1
  340. package/dist/cjs/utils/leading-blank-function.d.ts +0 -8
  341. package/dist/cjs/utils/leading-blank-function.d.ts.map +0 -1
  342. package/dist/cjs/utils/rules.d.ts +0 -26
  343. package/dist/cjs/utils/rules.d.ts.map +0 -1
  344. package/dist/esm/ManualProcess.d.ts +0 -6
  345. package/dist/esm/ManualProcess.d.ts.map +0 -1
  346. package/dist/esm/ManualProcess.js +0 -107
  347. package/dist/esm/ManualProcess.js.map +0 -1
  348. package/dist/esm/Process.d.ts +0 -6
  349. package/dist/esm/Process.d.ts.map +0 -1
  350. package/dist/esm/Process.js +0 -172
  351. package/dist/esm/Process.js.map +0 -1
  352. package/dist/esm/Question.d.ts +0 -46
  353. package/dist/esm/Question.d.ts.map +0 -1
  354. package/dist/esm/SectionBody.d.ts +0 -4
  355. package/dist/esm/SectionBody.d.ts.map +0 -1
  356. package/dist/esm/SectionFooter.d.ts +0 -13
  357. package/dist/esm/SectionFooter.d.ts.map +0 -1
  358. package/dist/esm/SectionHeader.d.ts +0 -15
  359. package/dist/esm/SectionHeader.d.ts.map +0 -1
  360. package/dist/esm/index.d.ts.map +0 -1
  361. package/dist/esm/services/commitConfirmation.d.ts +0 -3
  362. package/dist/esm/services/commitConfirmation.d.ts.map +0 -1
  363. package/dist/esm/services/commitConfirmation.js +0 -120
  364. package/dist/esm/services/commitConfirmation.js.map +0 -1
  365. package/dist/esm/services/commitlintConfig.d.ts +0 -4
  366. package/dist/esm/services/commitlintConfig.d.ts.map +0 -1
  367. package/dist/esm/services/commitlintConfig.js +0 -196
  368. package/dist/esm/services/commitlintConfig.js.map +0 -1
  369. package/dist/esm/services/commitlintValidator.d.ts +0 -26
  370. package/dist/esm/services/commitlintValidator.d.ts.map +0 -1
  371. package/dist/esm/services/commitlintValidator.js +0 -142
  372. package/dist/esm/services/commitlintValidator.js.map +0 -1
  373. package/dist/esm/services/getRuleQuestionConfig.d.ts +0 -4
  374. package/dist/esm/services/getRuleQuestionConfig.d.ts.map +0 -1
  375. package/dist/esm/services/llm/anthropic.d.ts +0 -3
  376. package/dist/esm/services/llm/anthropic.d.ts.map +0 -1
  377. package/dist/esm/services/llm/anthropic.js +0 -116
  378. package/dist/esm/services/llm/anthropic.js.map +0 -1
  379. package/dist/esm/services/llm/config.d.ts +0 -5
  380. package/dist/esm/services/llm/config.d.ts.map +0 -1
  381. package/dist/esm/services/llm/config.js +0 -178
  382. package/dist/esm/services/llm/config.js.map +0 -1
  383. package/dist/esm/services/llm/index.d.ts +0 -6
  384. package/dist/esm/services/llm/index.d.ts.map +0 -1
  385. package/dist/esm/services/llm/index.js +0 -394
  386. package/dist/esm/services/llm/index.js.map +0 -1
  387. package/dist/esm/services/llm/models.d.ts +0 -34
  388. package/dist/esm/services/llm/models.d.ts.map +0 -1
  389. package/dist/esm/services/llm/models.js +0 -60
  390. package/dist/esm/services/llm/models.js.map +0 -1
  391. package/dist/esm/services/llm/openai.d.ts +0 -3
  392. package/dist/esm/services/llm/openai.d.ts.map +0 -1
  393. package/dist/esm/services/llm/openai.js +0 -109
  394. package/dist/esm/services/llm/openai.js.map +0 -1
  395. package/dist/esm/services/llm/types.d.ts +0 -71
  396. package/dist/esm/services/llm/types.d.ts.map +0 -1
  397. package/dist/esm/store/defaultPromptConfigs.d.ts +0 -33
  398. package/dist/esm/store/defaultPromptConfigs.d.ts.map +0 -1
  399. package/dist/esm/store/defaultPromptConfigs.js +0 -35
  400. package/dist/esm/store/defaultPromptConfigs.js.map +0 -1
  401. package/dist/esm/store/prompts.d.ts +0 -6
  402. package/dist/esm/store/prompts.d.ts.map +0 -1
  403. package/dist/esm/store/prompts.js +0 -38
  404. package/dist/esm/store/prompts.js.map +0 -1
  405. package/dist/esm/store/rules.d.ts +0 -7
  406. package/dist/esm/store/rules.d.ts.map +0 -1
  407. package/dist/esm/types.d.ts +0 -3
  408. package/dist/esm/types.d.ts.map +0 -1
  409. package/dist/esm/utils/case-function.d.ts +0 -9
  410. package/dist/esm/utils/case-function.d.ts.map +0 -1
  411. package/dist/esm/utils/full-stop-function.d.ts +0 -9
  412. package/dist/esm/utils/full-stop-function.d.ts.map +0 -1
  413. package/dist/esm/utils/leading-blank-function.d.ts +0 -8
  414. package/dist/esm/utils/leading-blank-function.d.ts.map +0 -1
  415. package/dist/esm/utils/rules.d.ts +0 -26
  416. package/dist/esm/utils/rules.d.ts.map +0 -1
  417. package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/esm/index.js CHANGED
@@ -1,88 +1,44 @@
1
- import { existsSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import load from '@commitlint/load';
4
- import chalk from 'chalk';
5
- import { config } from 'dotenv';
6
- import inquirer from 'inquirer';
7
- import Process from './Process.js';
8
- import './services/llm/index.js';
9
- import { getLLMConfig, setLLMConfig } from './services/llm/config.js';
1
+ import { createAppContainer } from './infrastructure/di/container.js';
2
+ import { CommitizenAdapter } from './presentation/commitizen.adapter.js';
3
+ import 'dotenv/config';
4
+ export { ConfigureLLMUseCase } from './application/use-case/configure-llm.use-case.js';
5
+ export { GenerateCommitMessageUseCase } from './application/use-case/generate-commit-message.use-case.js';
6
+ export { ManualCommitUseCase } from './application/use-case/manual-commit.use-case.js';
7
+ export { ValidateCommitMessageUseCase } from './application/use-case/validate-commit-message.use-case.js';
8
+ export { CommitMessage } from './domain/entity/commit-message.entity.js';
9
+ export { LLMConfiguration } from './domain/entity/llm-configuration.entity.js';
10
+ export { EAnthropicModel } from './domain/enum/anthropic-model.enum.js';
11
+ export { EAWSBedrockModel } from './domain/enum/aws-bedrock-model.enum.js';
12
+ export { EAzureOpenAIModel } from './domain/enum/azure-openai-model.enum.js';
13
+ export { ECommitMode } from './domain/enum/commit-mode.enum.js';
14
+ export { EGoogleModel } from './domain/enum/google-model.enum.js';
15
+ export { ELLMProvider } from './domain/enum/llm-provider.enum.js';
16
+ export { ELogLevel } from './domain/enum/log-level.enum.js';
17
+ export { EOllamaModel } from './domain/enum/ollama-model.enum.js';
18
+ export { EOpenAIModel } from './domain/enum/openai-model.enum.js';
19
+ export { ApiKey } from './domain/value-object/api-key.value-object.js';
20
+ export { CommitBody } from './domain/value-object/commit-body.value-object.js';
21
+ export { CommitHeader } from './domain/value-object/commit-header.value-object.js';
10
22
 
11
- // Load environment variables from .env file
12
- try {
13
- config();
14
- }
15
- catch {
16
- // Silently continue if .env file is not found or cannot be loaded
17
- }
18
- // Check what commit mode to use based on config, environment variable, and fallback file
19
- const getCommitMode = () => {
20
- try {
21
- // First check environment variable (highest priority)
22
- // Next check for manual flag file
23
- if (existsSync(join("./.elsikora", "manual"))) {
24
- return "manual";
25
- }
26
- // Finally check config file
27
- const config = getLLMConfig();
28
- if (config?.mode && // Validation is now done in config.ts to avoid duplicate messages
29
- (config.mode === "auto" || config.mode === "manual")) {
30
- return config.mode;
31
- }
32
- // Default to auto if not specified
33
- return "auto";
34
- }
35
- catch {
36
- // In case of any errors, default to auto
37
- return "auto";
38
- }
39
- };
23
+ // Initialize the DI container
24
+ createAppContainer();
25
+ // Create adapter instance
26
+ const adapter = new CommitizenAdapter();
40
27
  /**
41
- * Entry point for commitizen
42
- * @param inquirerIns instance passed by commitizen, unused
43
- * @param commit callback to execute with complete commit message
44
- * @return {void}
28
+ * Commitizen adapter entry point
29
+ * This function is called by Commitizen when running `git cz`
30
+ * It delegates to the CommitizenAdapter to handle the interactive commit process
31
+ * @param {unknown} inquirerInstance - The inquirer instance provided by Commitizen
32
+ * @param {(message: string) => void} commit - Callback function to execute the commit with the generated message
33
+ * @returns {Promise<void>} Promise that resolves when the commit process is complete
45
34
  */
46
- async function prompter(inquirerIns, commit) {
47
- // eslint-disable-next-line @elsikora-typescript/typedef
48
- await load().then(async ({ prompt = {}, rules }) => {
49
- // Use process (AI mode) unless manual mode is enabled
50
- const commitMode = getCommitMode();
51
- if (commitMode === "manual") {
52
- const { useExisting } = await inquirer.prompt([
53
- {
54
- // eslint-disable-next-line @elsikora-typescript/naming-convention
55
- default: true,
56
- message: `Use manual configuration?`,
57
- name: "useExisting",
58
- type: "confirm",
59
- },
60
- ]);
61
- if (useExisting) {
62
- console.log(chalk.blue("Using manual commit mode..."));
63
- // Import manualProcess dynamically to avoid loading AI deps when not needed
64
- // eslint-disable-next-line @elsikora-typescript/typedef
65
- await import('./ManualProcess.js').then(async ({ default: manualProcess }) => {
66
- await manualProcess(rules, prompt, inquirerIns).then(commit);
67
- });
68
- }
69
- else {
70
- console.log(chalk.blue("Using AI-powered commit mode..."));
71
- // eslint-disable-next-line @elsikora/typescript/no-non-null-assertion
72
- const oldConfig = getLLMConfig();
73
- setLLMConfig({
74
- ...oldConfig,
75
- mode: "auto",
76
- });
77
- await Process(rules, prompt, inquirerIns).then(commit);
78
- }
79
- }
80
- else {
81
- console.log(chalk.blue("Using AI-powered commit mode..."));
82
- await Process(rules, prompt, inquirerIns).then(commit);
83
- }
84
- });
35
+ async function prompter(inquirerInstance, commit) {
36
+ return adapter.prompter(inquirerInstance, commit);
85
37
  }
38
+ // Export the prompter function for Commitizen
39
+ var index = {
40
+ prompter,
41
+ };
86
42
 
87
- export { getLLMConfig, prompter, setLLMConfig };
43
+ export { index as default, prompter };
88
44
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":["loadDotEnvironment","process"],"mappings":";;;;;;;;;;AAeA;AACA,IAAI;AACH,IAAAA,MAAkB,EAAE;AACrB;AAAE,MAAM;;AAER;AASA;AACA,MAAM,aAAa,GAAG,MAAiB;AACtC,IAAA,IAAI;;;QAIH,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,EAAE;AAC9C,YAAA,OAAO,QAAQ;;;AAIhB,QAAA,MAAM,MAAM,GAAmD,YAAY,EAAE;AAE7E,QAAA,IACC,MAAM,EAAE,IAAI;AACZ,aAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EACnD;YACD,OAAO,MAAM,CAAC,IAAI;;;AAInB,QAAA,OAAO,MAAM;;AACZ,IAAA,MAAM;;AAEP,QAAA,OAAO,MAAM;;AAEf,CAAC;AAED;;;;;AAKG;AACI,eAAe,QAAQ,CAC7B,WAEC,EACD,MAAc,EAAA;;AAGd,IAAA,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,KAAI;;AAElD,QAAA,MAAM,UAAU,GAAsB,aAAa,EAAE;AAErD,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;YAC5B,MAAM,EAAE,WAAW,EAAE,GAAQ,MAAM,QAAQ,CAAC,MAAM,CAAC;AAClD,gBAAA;;AAEC,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,OAAO,EAAE,CAA2B,yBAAA,CAAA;AACpC,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,IAAI,EAAE,SAAS;AACf,iBAAA;AACD,aAAA,CAAC;YAEF,IAAI,WAAW,EAAE;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;;;AAGtD,gBAAA,MAAM,OAAO,oBAAoB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAI;AAC5E,oBAAA,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D,iBAAC,CAAC;;iBACI;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;;AAE1D,gBAAA,MAAM,SAAS,GAAc,YAAY,EAAG;AAC5C,gBAAA,YAAY,CAAC;AACZ,oBAAA,GAAG,SAAS;AACZ,oBAAA,IAAI,EAAE,MAAM;AACZ,iBAAA,CAAC;AACF,gBAAA,MAAMC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;aAEjD;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAC1D,YAAA,MAAMA,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;AAExD,KAAC,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAKA;AACA,kBAAkB,EAAE;AAEpB;AACA,MAAM,OAAO,GAAsB,IAAI,iBAAiB,EAAE;AAE1D;;;;;;;AAOG;AACI,eAAe,QAAQ,CAAC,gBAAyB,EAAE,MAAiC,EAAA;IAC1F,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAClD;AAEA;AACA,YAAe;IACd,QAAQ;CACR;;;;"}
@@ -0,0 +1,38 @@
1
+ import type { ICommitValidationResult, ICommitValidator } from '../../application/interface/commit-validator.interface';
2
+ import type { ILlmPromptContext, ILlmService } from '../../application/interface/llm-service.interface';
3
+ import type { CommitMessage } from '../../domain/entity/commit-message.entity';
4
+ import type { LLMConfiguration } from '../../domain/entity/llm-configuration.entity';
5
+ /**
6
+ * Commitlint implementation of the commit validator
7
+ */
8
+ export declare class CommitlintValidatorService implements ICommitValidator {
9
+ private readonly LLM_SERVICES?;
10
+ private llmConfiguration?;
11
+ constructor(llmServices?: Array<ILlmService>);
12
+ /**
13
+ * Attempt to fix a commit message based on validation errors
14
+ * @param {CommitMessage} message - The commit message to fix
15
+ * @param {ICommitValidationResult} validationResult - The validation result containing errors
16
+ * @param {ILlmPromptContext} context - Optional original context for LLM-based fixing
17
+ * @returns {Promise<CommitMessage | null>} Promise resolving to the fixed commit message or null if unfixable
18
+ */
19
+ fix(message: CommitMessage, validationResult: ICommitValidationResult, context?: ILlmPromptContext): Promise<CommitMessage | null>;
20
+ /**
21
+ * Set the LLM configuration for this validator
22
+ * @param {LLMConfiguration} configuration - The LLM configuration to set
23
+ */
24
+ setLLMConfiguration(configuration: LLMConfiguration): void;
25
+ /**
26
+ * Validate a commit message using commitlint
27
+ * @param {CommitMessage} message - The commit message to validate
28
+ * @returns {Promise<ICommitValidationResult>} Promise resolving to the validation result
29
+ */
30
+ validate(message: CommitMessage): Promise<ICommitValidationResult>;
31
+ /**
32
+ * Wrap text to ensure no line exceeds the specified length
33
+ * @param {string | undefined} text - The text to wrap
34
+ * @param {number} maxLength - Maximum line length
35
+ * @returns {string | undefined} The wrapped text
36
+ */
37
+ private wrapText;
38
+ }
@@ -0,0 +1,205 @@
1
+ import lint from '@commitlint/lint';
2
+ import load from '@commitlint/load';
3
+ import { ELLIPSIS_LENGTH } from '../../domain/constant/numeric.constant.js';
4
+ import { CommitBody } from '../../domain/value-object/commit-body.value-object.js';
5
+ import { CommitHeader } from '../../domain/value-object/commit-header.value-object.js';
6
+
7
+ /**
8
+ * Commitlint implementation of the commit validator
9
+ */
10
+ class CommitlintValidatorService {
11
+ LLM_SERVICES;
12
+ llmConfiguration;
13
+ constructor(llmServices) {
14
+ this.LLM_SERVICES = llmServices;
15
+ }
16
+ /**
17
+ * Attempt to fix a commit message based on validation errors
18
+ * @param {CommitMessage} message - The commit message to fix
19
+ * @param {ICommitValidationResult} validationResult - The validation result containing errors
20
+ * @param {ILlmPromptContext} context - Optional original context for LLM-based fixing
21
+ * @returns {Promise<CommitMessage | null>} Promise resolving to the fixed commit message or null if unfixable
22
+ */
23
+ async fix(message, validationResult, context) {
24
+ if (!validationResult.errors || validationResult.errors.length === 0) {
25
+ return message;
26
+ }
27
+ // If we have context and LLM services, use LLM to regenerate
28
+ if (context && this.LLM_SERVICES && this.llmConfiguration) {
29
+ const service = this.LLM_SERVICES.find((s) => {
30
+ const config = this.llmConfiguration;
31
+ return config ? s.supports(config) : false;
32
+ });
33
+ if (service) {
34
+ process.stdout.write("Using LLM to intelligently fix validation errors...\n");
35
+ try {
36
+ // Create a minimal context for fixing - no need to send diff again
37
+ const fixContext = {
38
+ body: context.body,
39
+ // Explicitly exclude diff and files
40
+ diff: undefined,
41
+ files: undefined,
42
+ rules: {
43
+ ...(typeof context.rules === "object" && !Array.isArray(context.rules) ? context.rules : {}),
44
+ instructions: "Fix the commit message to comply with the validation rules. Do not change the meaning or content, only fix the format to pass validation.",
45
+ previousAttempt: message.toString(),
46
+ validationErrors: validationResult.errors,
47
+ },
48
+ scopeDescription: context.scopeDescription,
49
+ subject: context.subject,
50
+ typeDescription: context.typeDescription,
51
+ typeDescriptions: context.typeDescriptions,
52
+ typeEnum: context.typeEnum,
53
+ };
54
+ // Generate a new commit message with the minimal context
55
+ const fixedMessage = await service.generateCommitMessage(fixContext, this.llmConfiguration);
56
+ // Validate the new message
57
+ const fixedValidation = await this.validate(fixedMessage);
58
+ if (fixedValidation.isValid) {
59
+ process.stdout.write("LLM fix successful!\n");
60
+ return fixedMessage;
61
+ }
62
+ else {
63
+ process.stdout.write("LLM fix still has validation errors, falling back to simple fixes\n");
64
+ }
65
+ }
66
+ catch (error) {
67
+ process.stderr.write(`Failed to fix commit message with LLM: ${error instanceof Error ? error.message : String(error)}\n`);
68
+ // Fall through to simple fixes
69
+ }
70
+ }
71
+ }
72
+ process.stdout.write("Attempting simple rule-based fixes...\n");
73
+ // Fallback to simple fixes
74
+ let fixedMessage = message;
75
+ // Try to fix common errors
76
+ for (const error of validationResult.errors) {
77
+ if (error.includes("subject may not be empty")) {
78
+ // Can't fix empty subject
79
+ return null;
80
+ }
81
+ if (error.includes("type may not be empty")) {
82
+ // Can't fix empty type
83
+ return null;
84
+ }
85
+ // Fix subject case issues
86
+ if (error.includes("subject must not be sentence-case")) {
87
+ const header = fixedMessage.getHeader();
88
+ const subject = header.getSubject();
89
+ const fixedSubject = subject.charAt(0).toLowerCase() + subject.slice(1);
90
+ const newHeader = new CommitHeader(header.getType(), fixedSubject, header.getScope());
91
+ fixedMessage = fixedMessage.withHeader(newHeader);
92
+ }
93
+ // Fix subject trailing period
94
+ if (error.includes("subject may not end with period")) {
95
+ const header = fixedMessage.getHeader();
96
+ const subject = header.getSubject();
97
+ const fixedSubject = subject.replace(/\.$/, "");
98
+ const newHeader = new CommitHeader(header.getType(), fixedSubject, header.getScope());
99
+ fixedMessage = fixedMessage.withHeader(newHeader);
100
+ }
101
+ // Fix header max length
102
+ if (error.includes("header must not be longer than")) {
103
+ const maxLengthNumbers = error.match(/\d+/g) ?? [];
104
+ if (maxLengthNumbers.length > 0 && maxLengthNumbers[0]) {
105
+ const maxLength = Number.parseInt(maxLengthNumbers[0], 10);
106
+ const header = fixedMessage.getHeader();
107
+ const currentLength = header.toString().length;
108
+ if (currentLength > maxLength) {
109
+ // Try to shorten the subject
110
+ const overhead = currentLength - maxLength;
111
+ const subject = header.getSubject();
112
+ const shortenedSubject = subject.slice(0, Math.max(0, subject.length - overhead - ELLIPSIS_LENGTH)) + "...";
113
+ const newHeader = new CommitHeader(header.getType(), shortenedSubject, header.getScope());
114
+ fixedMessage = fixedMessage.withHeader(newHeader);
115
+ }
116
+ }
117
+ }
118
+ // Fix body/footer line length
119
+ if (error.includes("footer's lines must not be longer than") || error.includes("body's lines must not be longer than")) {
120
+ const maxLengthNumbers = error.match(/\d+/g) ?? [];
121
+ if (maxLengthNumbers.length > 0 && maxLengthNumbers[0]) {
122
+ const maxLength = Number.parseInt(maxLengthNumbers[0], 10);
123
+ const body = fixedMessage.getBody();
124
+ // Wrap body lines
125
+ const wrappedBody = this.wrapText(body.getContent(), maxLength);
126
+ const wrappedBreaking = this.wrapText(body.getBreakingChange(), maxLength);
127
+ const newBody = new CommitBody(wrappedBody, wrappedBreaking);
128
+ fixedMessage = fixedMessage.withBody(newBody);
129
+ }
130
+ }
131
+ }
132
+ // Validate the fixed message
133
+ const fixedValidation = await this.validate(fixedMessage);
134
+ if (fixedValidation.isValid) {
135
+ process.stdout.write("Simple fixes successful!\n");
136
+ return fixedMessage;
137
+ }
138
+ // If still invalid, return null
139
+ process.stdout.write("Simple fixes failed to resolve all validation errors\n");
140
+ return null;
141
+ }
142
+ /**
143
+ * Set the LLM configuration for this validator
144
+ * @param {LLMConfiguration} configuration - The LLM configuration to set
145
+ */
146
+ setLLMConfiguration(configuration) {
147
+ this.llmConfiguration = configuration;
148
+ }
149
+ /**
150
+ * Validate a commit message using commitlint
151
+ * @param {CommitMessage} message - The commit message to validate
152
+ * @returns {Promise<ICommitValidationResult>} Promise resolving to the validation result
153
+ */
154
+ async validate(message) {
155
+ const loadResult = await load();
156
+ const { rules = {} } = loadResult;
157
+ const result = await lint(message.toString(), rules);
158
+ return {
159
+ errors: result.errors.map((error) => error.message),
160
+ isValid: result.valid,
161
+ warnings: result.warnings.map((warning) => warning.message),
162
+ };
163
+ }
164
+ /**
165
+ * Wrap text to ensure no line exceeds the specified length
166
+ * @param {string | undefined} text - The text to wrap
167
+ * @param {number} maxLength - Maximum line length
168
+ * @returns {string | undefined} The wrapped text
169
+ */
170
+ wrapText(text, maxLength) {
171
+ if (!text) {
172
+ return text;
173
+ }
174
+ const lines = text.split("\n");
175
+ const wrappedLines = [];
176
+ for (const line of lines) {
177
+ if (line.length <= maxLength) {
178
+ wrappedLines.push(line);
179
+ }
180
+ else {
181
+ // Simple word wrap
182
+ const words = line.split(" ");
183
+ let currentLine = "";
184
+ for (const word of words) {
185
+ if (currentLine.length + word.length + 1 <= maxLength) {
186
+ currentLine += (currentLine ? " " : "") + word;
187
+ }
188
+ else {
189
+ if (currentLine) {
190
+ wrappedLines.push(currentLine);
191
+ }
192
+ currentLine = word;
193
+ }
194
+ }
195
+ if (currentLine) {
196
+ wrappedLines.push(currentLine);
197
+ }
198
+ }
199
+ }
200
+ return wrappedLines.join("\n");
201
+ }
202
+ }
203
+
204
+ export { CommitlintValidatorService };
205
+ //# sourceMappingURL=commitlint-validator.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitlint-validator.service.js","sources":["../../../../../src/infrastructure/commit-validator/commitlint-validator.service.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './commitlint-validator.service';
@@ -0,0 +1,17 @@
1
+ import type { IContainer } from "@elsikora/cladi";
2
+ export declare const FileSystemServiceToken: symbol;
3
+ export declare const CliInterfaceServiceToken: symbol;
4
+ export declare const CommandServiceToken: symbol;
5
+ export declare const ConfigServiceToken: symbol;
6
+ export declare const CommitValidatorToken: symbol;
7
+ export declare const CommitRepositoryToken: symbol;
8
+ export declare const LLMServicesToken: symbol;
9
+ export declare const GenerateCommitMessageUseCaseToken: symbol;
10
+ export declare const ValidateCommitMessageUseCaseToken: symbol;
11
+ export declare const ConfigureLLMUseCaseToken: symbol;
12
+ export declare const ManualCommitUseCaseToken: symbol;
13
+ /**
14
+ * Create and configure the application DI container
15
+ * @returns {IContainer} The configured DI container
16
+ */
17
+ export declare function createAppContainer(): IContainer;
@@ -0,0 +1,63 @@
1
+ import { createContainer } from '@elsikora/cladi';
2
+ import { ConfigureLLMUseCase } from '../../application/use-case/configure-llm.use-case.js';
3
+ import { GenerateCommitMessageUseCase } from '../../application/use-case/generate-commit-message.use-case.js';
4
+ import { ManualCommitUseCase } from '../../application/use-case/manual-commit.use-case.js';
5
+ import { ValidateCommitMessageUseCase } from '../../application/use-case/validate-commit-message.use-case.js';
6
+ import { CommitlintValidatorService } from '../commit-validator/commitlint-validator.service.js';
7
+ import { GitCommitRepository } from '../git/git-commit.repository.js';
8
+ import { AnthropicLlmService } from '../llm/anthropic-llm.service.js';
9
+ import { AWSBedrockLlmService } from '../llm/aws-bedrock-llm.service.js';
10
+ import { AzureOpenAILlmService } from '../llm/azure-openai-llm.service.js';
11
+ import { GoogleLlmService } from '../llm/google-llm.service.js';
12
+ import { OllamaLlmService } from '../llm/ollama-llm.service.js';
13
+ import { OpenAILlmService } from '../llm/openai-llm.service.js';
14
+ import { CosmicConfigService } from '../service/cosmic-config.service.js';
15
+ import { NodeCommandService } from '../service/node-command.service.js';
16
+ import { NodeFileSystemService } from '../service/node-file-system.service.js';
17
+ import { PromptsCliInterface } from '../service/prompts-cli-interface.service.js';
18
+
19
+ // Service tokens
20
+ const FileSystemServiceToken = Symbol("FileSystemService");
21
+ const CliInterfaceServiceToken = Symbol("CliInterfaceService");
22
+ const CommandServiceToken = Symbol("CommandService");
23
+ const ConfigServiceToken = Symbol("ConfigService");
24
+ const CommitValidatorToken = Symbol("CommitValidator");
25
+ const CommitRepositoryToken = Symbol("CommitRepository");
26
+ const LLMServicesToken = Symbol("LLMServices");
27
+ // Use case tokens
28
+ const GenerateCommitMessageUseCaseToken = Symbol("GenerateCommitMessageUseCase");
29
+ const ValidateCommitMessageUseCaseToken = Symbol("ValidateCommitMessageUseCase");
30
+ const ConfigureLLMUseCaseToken = Symbol("ConfigureLLMUseCase");
31
+ const ManualCommitUseCaseToken = Symbol("ManualCommitUseCase");
32
+ /**
33
+ * Create and configure the application DI container
34
+ * @returns {IContainer} The configured DI container
35
+ */
36
+ function createAppContainer() {
37
+ const container = createContainer({});
38
+ // Register infrastructure services
39
+ container.register(FileSystemServiceToken, new NodeFileSystemService());
40
+ container.register(CliInterfaceServiceToken, new PromptsCliInterface());
41
+ const cliInterface = container.get(CliInterfaceServiceToken) ?? new PromptsCliInterface();
42
+ const fileSystem = container.get(FileSystemServiceToken) ?? new NodeFileSystemService();
43
+ container.register(ConfigServiceToken, new CosmicConfigService(fileSystem));
44
+ container.register(CommandServiceToken, new NodeCommandService(cliInterface));
45
+ const commandService = container.get(CommandServiceToken) ?? new NodeCommandService(cliInterface);
46
+ container.register(CommitRepositoryToken, new GitCommitRepository(commandService));
47
+ // Register LLM services
48
+ const llmServices = [new OpenAILlmService(), new AnthropicLlmService(), new GoogleLlmService(), new AzureOpenAILlmService(), new AWSBedrockLlmService(), new OllamaLlmService()];
49
+ container.register(LLMServicesToken, llmServices);
50
+ // Register commit validator with LLM services
51
+ container.register(CommitValidatorToken, new CommitlintValidatorService(llmServices));
52
+ const validator = container.get(CommitValidatorToken) ?? new CommitlintValidatorService([]);
53
+ const configService = container.get(ConfigServiceToken) ?? new CosmicConfigService(fileSystem);
54
+ // Register use cases
55
+ container.register(ConfigureLLMUseCaseToken, new ConfigureLLMUseCase(configService, cliInterface));
56
+ container.register(GenerateCommitMessageUseCaseToken, new GenerateCommitMessageUseCase(llmServices));
57
+ container.register(ValidateCommitMessageUseCaseToken, new ValidateCommitMessageUseCase(validator));
58
+ container.register(ManualCommitUseCaseToken, new ManualCommitUseCase(cliInterface));
59
+ return container;
60
+ }
61
+
62
+ export { CliInterfaceServiceToken, CommandServiceToken, CommitRepositoryToken, CommitValidatorToken, ConfigServiceToken, ConfigureLLMUseCaseToken, FileSystemServiceToken, GenerateCommitMessageUseCaseToken, LLMServicesToken, ManualCommitUseCaseToken, ValidateCommitMessageUseCaseToken, createAppContainer };
63
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sources":["../../../../../src/infrastructure/di/container.ts"],"sourcesContent":[null],"names":["ConfigureLLMUseCaseImpl","GenerateCommitMessageUseCaseImpl","ValidateCommitMessageUseCaseImpl","ManualCommitUseCaseImpl"],"mappings":";;;;;;;;;;;;;;;;;;AA4BA;MACa,sBAAsB,GAAW,MAAM,CAAC,mBAAmB;MAC3D,wBAAwB,GAAW,MAAM,CAAC,qBAAqB;MAC/D,mBAAmB,GAAW,MAAM,CAAC,gBAAgB;MACrD,kBAAkB,GAAW,MAAM,CAAC,eAAe;MACnD,oBAAoB,GAAW,MAAM,CAAC,iBAAiB;MACvD,qBAAqB,GAAW,MAAM,CAAC,kBAAkB;MACzD,gBAAgB,GAAW,MAAM,CAAC,aAAa;AAE5D;MACa,iCAAiC,GAAW,MAAM,CAAC,8BAA8B;MACjF,iCAAiC,GAAW,MAAM,CAAC,8BAA8B;MACjF,wBAAwB,GAAW,MAAM,CAAC,qBAAqB;MAC/D,wBAAwB,GAAW,MAAM,CAAC,qBAAqB;AAE5E;;;AAGG;SACa,kBAAkB,GAAA;AACjC,IAAA,MAAM,SAAS,GAAe,eAAe,CAAC,EAAE,CAAC;;IAGjD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,qBAAqB,EAAE,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAI,mBAAmB,EAAE,CAAC;AAEvE,IAAA,MAAM,YAAY,GAAyB,SAAS,CAAC,GAAG,CAAuB,wBAAwB,CAAC,IAAI,IAAI,mBAAmB,EAAE;AACrI,IAAA,MAAM,UAAU,GAAuB,SAAS,CAAC,GAAG,CAAqB,sBAAsB,CAAC,IAAI,IAAI,qBAAqB,EAAE;IAE/H,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC3E,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAE7E,IAAA,MAAM,cAAc,GAAoB,SAAS,CAAC,GAAG,CAAkB,mBAAmB,CAAC,IAAI,IAAI,kBAAkB,CAAC,YAAY,CAAC;IAEnI,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,mBAAmB,CAAC,cAAc,CAAC,CAAC;;IAGlF,MAAM,WAAW,GAAuB,CAAC,IAAI,gBAAgB,EAAE,EAAE,IAAI,mBAAmB,EAAE,EAAE,IAAI,gBAAgB,EAAE,EAAE,IAAI,qBAAqB,EAAE,EAAE,IAAI,oBAAoB,EAAE,EAAE,IAAI,gBAAgB,EAAE,CAAC;AACpM,IAAA,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC;;IAGjD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,0BAA0B,CAAC,WAAW,CAAC,CAAC;AAErF,IAAA,MAAM,SAAS,GAAqB,SAAS,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,IAAI,0BAA0B,CAAC,EAAE,CAAC;AAC/H,IAAA,MAAM,aAAa,GAAmB,SAAS,CAAC,GAAG,CAAiB,kBAAkB,CAAC,IAAI,IAAI,mBAAmB,CAAC,UAAU,CAAC;;AAG9H,IAAA,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAIA,mBAAuB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACtG,SAAS,CAAC,QAAQ,CAAC,iCAAiC,EAAE,IAAIC,4BAAgC,CAAC,WAAW,CAAC,CAAC;IACxG,SAAS,CAAC,QAAQ,CAAC,iCAAiC,EAAE,IAAIC,4BAAgC,CAAC,SAAS,CAAC,CAAC;IACtG,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAIC,mBAAuB,CAAC,YAAY,CAAC,CAAC;AAEvF,IAAA,OAAO,SAAS;AACjB;;;;"}
@@ -0,0 +1 @@
1
+ export * from './container';
@@ -0,0 +1,36 @@
1
+ import type { ICommandService } from '../../application/interface/command-service.interface';
2
+ import type { ICommitRepository } from '../../application/interface/commit-repository.interface';
3
+ import type { CommitMessage } from '../../domain/entity/commit-message.entity';
4
+ /**
5
+ * Git implementation of the commit repository
6
+ */
7
+ export declare class GitCommitRepository implements ICommitRepository {
8
+ private readonly COMMAND_SERVICE;
9
+ constructor(commandService: ICommandService);
10
+ /**
11
+ * Create a commit with the given message
12
+ * @param {CommitMessage} message - The commit message
13
+ * @returns {Promise<void>} Promise that resolves when the commit is created
14
+ */
15
+ commit(message: CommitMessage): Promise<void>;
16
+ /**
17
+ * Get the current branch name
18
+ * @returns {Promise<string>} Promise resolving to the current branch name
19
+ */
20
+ getCurrentBranch(): Promise<string>;
21
+ /**
22
+ * Get the staged diff
23
+ * @returns {Promise<string>} Promise resolving to the staged diff
24
+ */
25
+ getStagedDiff(): Promise<string>;
26
+ /**
27
+ * Get the list of staged files
28
+ * @returns {Promise<Array<string>>} Promise resolving to array of staged file paths
29
+ */
30
+ getStagedFiles(): Promise<Array<string>>;
31
+ /**
32
+ * Check if there are staged changes
33
+ * @returns {Promise<boolean>} Promise resolving to true if there are staged changes
34
+ */
35
+ hasStagedChanges(): Promise<boolean>;
36
+ }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Git implementation of the commit repository
3
+ */
4
+ class GitCommitRepository {
5
+ COMMAND_SERVICE;
6
+ constructor(commandService) {
7
+ this.COMMAND_SERVICE = commandService;
8
+ }
9
+ /**
10
+ * Create a commit with the given message
11
+ * @param {CommitMessage} message - The commit message
12
+ * @returns {Promise<void>} Promise that resolves when the commit is created
13
+ */
14
+ async commit(message) {
15
+ // Escape the commit message for shell
16
+ const escapedMessage = message.toString().replaceAll("'", String.raw `'\''`);
17
+ // Execute git commit
18
+ await this.COMMAND_SERVICE.execute(`git commit -m '${escapedMessage}'`);
19
+ }
20
+ /**
21
+ * Get the current branch name
22
+ * @returns {Promise<string>} Promise resolving to the current branch name
23
+ */
24
+ async getCurrentBranch() {
25
+ const branch = await this.COMMAND_SERVICE.executeWithOutput("git rev-parse --abbrev-ref HEAD");
26
+ return branch || "main";
27
+ }
28
+ /**
29
+ * Get the staged diff
30
+ * @returns {Promise<string>} Promise resolving to the staged diff
31
+ */
32
+ async getStagedDiff() {
33
+ try {
34
+ // Get a compact diff suitable for LLM context
35
+ const diff = await this.COMMAND_SERVICE.executeWithOutput("git diff --cached --stat -p --no-color");
36
+ // Limit diff size to avoid token limits
37
+ const maxLength = 3000;
38
+ if (diff.length > maxLength) {
39
+ return diff.slice(0, Math.max(0, maxLength)) + "\n... (truncated)";
40
+ }
41
+ return diff;
42
+ }
43
+ catch {
44
+ return "";
45
+ }
46
+ }
47
+ /**
48
+ * Get the list of staged files
49
+ * @returns {Promise<Array<string>>} Promise resolving to array of staged file paths
50
+ */
51
+ async getStagedFiles() {
52
+ try {
53
+ const output = await this.COMMAND_SERVICE.executeWithOutput("git diff --cached --name-only");
54
+ return output.split("\n").filter((file) => file.trim().length > 0);
55
+ }
56
+ catch {
57
+ return [];
58
+ }
59
+ }
60
+ /**
61
+ * Check if there are staged changes
62
+ * @returns {Promise<boolean>} Promise resolving to true if there are staged changes
63
+ */
64
+ async hasStagedChanges() {
65
+ try {
66
+ const output = await this.COMMAND_SERVICE.executeWithOutput("git diff --cached --name-only");
67
+ return output.length > 0;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ }
73
+ }
74
+
75
+ export { GitCommitRepository };
76
+ //# sourceMappingURL=git-commit.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-commit.repository.js","sources":["../../../../../src/infrastructure/git/git-commit.repository.ts"],"sourcesContent":[null],"names":[],"mappings":"AAIA;;AAEG;MACU,mBAAmB,CAAA;AACd,IAAA,eAAe;AAEhC,IAAA,WAAA,CAAY,cAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;;AAGtC;;;;AAIG;IACH,MAAM,MAAM,CAAC,OAAsB,EAAA;;AAElC,QAAA,MAAM,cAAc,GAAW,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAA,CAAA,IAAA,CAAM,CAAC;;QAGnF,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAkB,eAAA,EAAA,cAAc,CAAG,CAAA,CAAA,CAAC;;AAGxE;;;AAGG;AACH,IAAA,MAAM,gBAAgB,GAAA;QACrB,MAAM,MAAM,GAAW,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iCAAiC,CAAC;QAEtG,OAAO,MAAM,IAAI,MAAM;;AAGxB;;;AAGG;AACH,IAAA,MAAM,aAAa,GAAA;AAClB,QAAA,IAAI;;YAEH,MAAM,IAAI,GAAW,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,wCAAwC,CAAC;;YAE3G,MAAM,SAAS,GAAW,IAAI;AAE9B,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE;AAC5B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,mBAAmB;;AAGnE,YAAA,OAAO,IAAI;;AACV,QAAA,MAAM;AACP,YAAA,OAAO,EAAE;;;AAIX;;;AAGG;AACH,IAAA,MAAM,cAAc,GAAA;AACnB,QAAA,IAAI;YACH,MAAM,MAAM,GAAW,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,+BAA+B,CAAC;YAEpG,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;;AACzE,QAAA,MAAM;AACP,YAAA,OAAO,EAAE;;;AAIX;;;AAGG;AACH,IAAA,MAAM,gBAAgB,GAAA;AACrB,QAAA,IAAI;YACH,MAAM,MAAM,GAAW,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,+BAA+B,CAAC;AAEpG,YAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC;;AACvB,QAAA,MAAM;AACP,YAAA,OAAO,KAAK;;;AAGd;;;;"}
@@ -0,0 +1 @@
1
+ export * from './git-commit.repository';
@@ -0,0 +1,4 @@
1
+ export * from './commit-validator/index';
2
+ export * from './git/index';
3
+ export * from './llm/index';
4
+ export * from './service/index';