@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.
- package/README.md +256 -57
- package/dist/cjs/application/constant/config-file-directory.constant.d.ts +4 -0
- package/dist/cjs/application/constant/config-file-directory.constant.js +9 -0
- package/dist/cjs/application/constant/config-file-directory.constant.js.map +1 -0
- package/dist/cjs/application/constant/config-module-name.constant.d.ts +4 -0
- package/dist/cjs/application/constant/config-module-name.constant.js +9 -0
- package/dist/cjs/application/constant/config-module-name.constant.js.map +1 -0
- package/dist/cjs/application/constant/index.d.ts +2 -0
- package/dist/cjs/application/index.d.ts +2 -0
- package/dist/cjs/application/interface/cli-interface-service-select-options.interface.d.ts +21 -0
- package/dist/cjs/application/interface/cli-interface-service.interface.d.ts +105 -0
- package/dist/cjs/application/interface/command-service.interface.d.ts +19 -0
- package/dist/cjs/application/interface/commit-repository.interface.d.ts +32 -0
- package/dist/cjs/application/interface/commit-validator.interface.d.ts +29 -0
- package/dist/cjs/application/interface/config-service.interface.d.ts +47 -0
- package/dist/cjs/application/interface/config.interface.d.ts +27 -0
- package/dist/cjs/application/interface/file-system-service.interface.d.ts +61 -0
- package/dist/cjs/application/interface/index.d.ts +9 -0
- package/dist/cjs/application/interface/llm-service.interface.d.ts +43 -0
- package/dist/cjs/application/use-case/configure-llm.use-case.d.ts +39 -0
- package/dist/cjs/application/use-case/configure-llm.use-case.js +373 -0
- package/dist/cjs/application/use-case/configure-llm.use-case.js.map +1 -0
- package/dist/cjs/application/use-case/generate-commit-message.use-case.d.ts +18 -0
- package/dist/cjs/application/use-case/generate-commit-message.use-case.js +49 -0
- package/dist/cjs/application/use-case/generate-commit-message.use-case.js.map +1 -0
- package/dist/cjs/application/use-case/index.d.ts +4 -0
- package/dist/cjs/application/use-case/manual-commit.use-case.d.ts +16 -0
- package/dist/cjs/application/use-case/manual-commit.use-case.js +81 -0
- package/dist/cjs/application/use-case/manual-commit.use-case.js.map +1 -0
- package/dist/cjs/application/use-case/validate-commit-message.use-case.d.ts +26 -0
- package/dist/cjs/application/use-case/validate-commit-message.use-case.js +76 -0
- package/dist/cjs/application/use-case/validate-commit-message.use-case.js.map +1 -0
- package/dist/cjs/domain/constant/index.d.ts +1 -0
- package/dist/cjs/domain/constant/numeric.constant.d.ts +25 -0
- package/dist/cjs/domain/constant/numeric.constant.js +42 -0
- package/dist/cjs/domain/constant/numeric.constant.js.map +1 -0
- package/dist/cjs/domain/entity/commit-message.entity.d.ts +47 -0
- package/dist/cjs/domain/entity/commit-message.entity.js +71 -0
- package/dist/cjs/domain/entity/commit-message.entity.js.map +1 -0
- package/dist/cjs/domain/entity/index.d.ts +2 -0
- package/dist/cjs/domain/entity/llm-configuration.entity.d.ts +73 -0
- package/dist/cjs/domain/entity/llm-configuration.entity.js +107 -0
- package/dist/cjs/domain/entity/llm-configuration.entity.js.map +1 -0
- package/dist/cjs/domain/enum/anthropic-model.enum.d.ts +18 -0
- package/dist/cjs/domain/enum/anthropic-model.enum.js +26 -0
- package/dist/cjs/domain/enum/anthropic-model.enum.js.map +1 -0
- package/dist/cjs/domain/enum/aws-bedrock-model.enum.d.ts +33 -0
- package/dist/cjs/domain/enum/aws-bedrock-model.enum.js +47 -0
- package/dist/cjs/domain/enum/aws-bedrock-model.enum.js.map +1 -0
- package/dist/cjs/domain/enum/azure-openai-model.enum.d.ts +17 -0
- package/dist/cjs/domain/enum/azure-openai-model.enum.js +26 -0
- package/dist/cjs/domain/enum/azure-openai-model.enum.js.map +1 -0
- package/dist/cjs/domain/enum/commit-mode.enum.d.ts +7 -0
- package/dist/cjs/domain/enum/commit-mode.enum.js +11 -0
- package/dist/cjs/domain/enum/commit-mode.enum.js.map +1 -0
- package/dist/cjs/domain/enum/google-model.enum.d.ts +16 -0
- package/dist/cjs/domain/enum/google-model.enum.js +25 -0
- package/dist/cjs/domain/enum/google-model.enum.js.map +1 -0
- package/dist/cjs/domain/enum/index.d.ts +9 -0
- package/dist/cjs/domain/enum/llm-provider.enum.d.ts +11 -0
- package/dist/cjs/domain/enum/llm-provider.enum.js +15 -0
- package/dist/cjs/domain/enum/llm-provider.enum.js.map +1 -0
- package/dist/cjs/domain/enum/log-level.enum.d.ts +9 -0
- package/dist/cjs/domain/enum/log-level.enum.js +13 -0
- package/dist/cjs/domain/enum/log-level.enum.js.map +1 -0
- package/dist/cjs/domain/enum/ollama-model.enum.d.ts +24 -0
- package/dist/cjs/domain/enum/ollama-model.enum.js +30 -0
- package/dist/cjs/domain/enum/ollama-model.enum.js.map +1 -0
- package/dist/cjs/domain/enum/openai-model.enum.d.ts +25 -0
- package/dist/cjs/domain/enum/openai-model.enum.js +35 -0
- package/dist/cjs/domain/enum/openai-model.enum.js.map +1 -0
- package/dist/cjs/domain/index.d.ts +3 -0
- package/dist/cjs/domain/value-object/api-key.value-object.d.ts +28 -0
- package/dist/cjs/domain/value-object/api-key.value-object.js +51 -0
- package/dist/cjs/domain/value-object/api-key.value-object.js.map +1 -0
- package/dist/cjs/domain/value-object/commit-body.value-object.d.ts +39 -0
- package/dist/cjs/domain/value-object/commit-body.value-object.js +66 -0
- package/dist/cjs/domain/value-object/commit-body.value-object.js.map +1 -0
- package/dist/cjs/domain/value-object/commit-header.value-object.d.ts +35 -0
- package/dist/cjs/domain/value-object/commit-header.value-object.js +63 -0
- package/dist/cjs/domain/value-object/commit-header.value-object.js.map +1 -0
- package/dist/cjs/domain/value-object/index.d.ts +3 -0
- package/dist/cjs/index.d.ts +14 -12
- package/dist/cjs/index.js +85 -83
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.d.ts +38 -0
- package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.js +207 -0
- package/dist/cjs/infrastructure/commit-validator/commitlint-validator.service.js.map +1 -0
- package/dist/cjs/infrastructure/commit-validator/index.d.ts +1 -0
- package/dist/cjs/infrastructure/di/container.d.ts +17 -0
- package/dist/cjs/infrastructure/di/container.js +76 -0
- package/dist/cjs/infrastructure/di/container.js.map +1 -0
- package/dist/cjs/infrastructure/di/index.d.ts +1 -0
- package/dist/cjs/infrastructure/git/git-commit.repository.d.ts +36 -0
- package/dist/cjs/infrastructure/git/git-commit.repository.js +78 -0
- package/dist/cjs/infrastructure/git/git-commit.repository.js.map +1 -0
- package/dist/cjs/infrastructure/git/index.d.ts +1 -0
- package/dist/cjs/infrastructure/index.d.ts +4 -0
- package/dist/cjs/infrastructure/llm/anthropic-llm.service.d.ts +39 -0
- package/dist/cjs/infrastructure/llm/anthropic-llm.service.js +323 -0
- package/dist/cjs/infrastructure/llm/anthropic-llm.service.js.map +1 -0
- package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.d.ts +60 -0
- package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.js +514 -0
- package/dist/cjs/infrastructure/llm/aws-bedrock-llm.service.js.map +1 -0
- package/dist/cjs/infrastructure/llm/azure-openai-llm.service.d.ts +45 -0
- package/dist/cjs/infrastructure/llm/azure-openai-llm.service.js +351 -0
- package/dist/cjs/infrastructure/llm/azure-openai-llm.service.js.map +1 -0
- package/dist/cjs/infrastructure/llm/google-llm.service.d.ts +45 -0
- package/dist/cjs/infrastructure/llm/google-llm.service.js +335 -0
- package/dist/cjs/infrastructure/llm/google-llm.service.js.map +1 -0
- package/dist/cjs/infrastructure/llm/index.d.ts +6 -0
- package/dist/cjs/infrastructure/llm/ollama-llm.service.d.ts +45 -0
- package/dist/cjs/infrastructure/llm/ollama-llm.service.js +387 -0
- package/dist/cjs/infrastructure/llm/ollama-llm.service.js.map +1 -0
- package/dist/cjs/infrastructure/llm/openai-llm.service.d.ts +45 -0
- package/dist/cjs/infrastructure/llm/openai-llm.service.js +339 -0
- package/dist/cjs/infrastructure/llm/openai-llm.service.js.map +1 -0
- package/dist/cjs/infrastructure/service/cosmic-config.service.d.ts +66 -0
- package/dist/cjs/infrastructure/service/cosmic-config.service.js +176 -0
- package/dist/cjs/infrastructure/service/cosmic-config.service.js.map +1 -0
- package/dist/cjs/infrastructure/service/index.d.ts +4 -0
- package/dist/cjs/infrastructure/service/node-command.service.d.ts +45 -0
- package/dist/cjs/infrastructure/service/node-command.service.js +154 -0
- package/dist/cjs/infrastructure/service/node-command.service.js.map +1 -0
- package/dist/cjs/infrastructure/service/node-file-system.service.d.ts +62 -0
- package/dist/cjs/infrastructure/service/node-file-system.service.js +102 -0
- package/dist/cjs/infrastructure/service/node-file-system.service.js.map +1 -0
- package/dist/cjs/infrastructure/service/prompts-cli-interface.service.d.ts +117 -0
- package/dist/cjs/infrastructure/service/prompts-cli-interface.service.js +318 -0
- package/dist/cjs/infrastructure/service/prompts-cli-interface.service.js.map +1 -0
- package/dist/cjs/presentation/commitizen.adapter.d.ts +28 -0
- package/dist/cjs/presentation/commitizen.adapter.js +304 -0
- package/dist/cjs/presentation/commitizen.adapter.js.map +1 -0
- package/dist/cjs/presentation/index.d.ts +1 -0
- package/dist/esm/application/constant/config-file-directory.constant.d.ts +4 -0
- package/dist/esm/application/constant/config-file-directory.constant.js +7 -0
- package/dist/esm/application/constant/config-file-directory.constant.js.map +1 -0
- package/dist/esm/application/constant/config-module-name.constant.d.ts +4 -0
- package/dist/esm/application/constant/config-module-name.constant.js +7 -0
- package/dist/esm/application/constant/config-module-name.constant.js.map +1 -0
- package/dist/esm/application/constant/index.d.ts +2 -0
- package/dist/esm/application/index.d.ts +2 -0
- package/dist/esm/application/interface/cli-interface-service-select-options.interface.d.ts +21 -0
- package/dist/esm/application/interface/cli-interface-service.interface.d.ts +105 -0
- package/dist/esm/application/interface/command-service.interface.d.ts +19 -0
- package/dist/esm/application/interface/commit-repository.interface.d.ts +32 -0
- package/dist/esm/application/interface/commit-validator.interface.d.ts +29 -0
- package/dist/esm/application/interface/config-service.interface.d.ts +47 -0
- package/dist/esm/application/interface/config.interface.d.ts +27 -0
- package/dist/esm/application/interface/file-system-service.interface.d.ts +61 -0
- package/dist/esm/application/interface/index.d.ts +9 -0
- package/dist/esm/application/interface/llm-service.interface.d.ts +43 -0
- package/dist/esm/application/use-case/configure-llm.use-case.d.ts +39 -0
- package/dist/esm/application/use-case/configure-llm.use-case.js +371 -0
- package/dist/esm/application/use-case/configure-llm.use-case.js.map +1 -0
- package/dist/esm/application/use-case/generate-commit-message.use-case.d.ts +18 -0
- package/dist/esm/application/use-case/generate-commit-message.use-case.js +47 -0
- package/dist/esm/application/use-case/generate-commit-message.use-case.js.map +1 -0
- package/dist/esm/application/use-case/index.d.ts +4 -0
- package/dist/esm/application/use-case/manual-commit.use-case.d.ts +16 -0
- package/dist/esm/application/use-case/manual-commit.use-case.js +79 -0
- package/dist/esm/application/use-case/manual-commit.use-case.js.map +1 -0
- package/dist/esm/application/use-case/validate-commit-message.use-case.d.ts +26 -0
- package/dist/esm/application/use-case/validate-commit-message.use-case.js +74 -0
- package/dist/esm/application/use-case/validate-commit-message.use-case.js.map +1 -0
- package/dist/esm/domain/constant/index.d.ts +1 -0
- package/dist/esm/domain/constant/numeric.constant.d.ts +25 -0
- package/dist/esm/domain/constant/numeric.constant.js +26 -0
- package/dist/esm/domain/constant/numeric.constant.js.map +1 -0
- package/dist/esm/domain/entity/commit-message.entity.d.ts +47 -0
- package/dist/esm/domain/entity/commit-message.entity.js +69 -0
- package/dist/esm/domain/entity/commit-message.entity.js.map +1 -0
- package/dist/esm/domain/entity/index.d.ts +2 -0
- package/dist/esm/domain/entity/llm-configuration.entity.d.ts +73 -0
- package/dist/esm/domain/entity/llm-configuration.entity.js +105 -0
- package/dist/esm/domain/entity/llm-configuration.entity.js.map +1 -0
- package/dist/esm/domain/enum/anthropic-model.enum.d.ts +18 -0
- package/dist/esm/domain/enum/anthropic-model.enum.js +26 -0
- package/dist/esm/domain/enum/anthropic-model.enum.js.map +1 -0
- package/dist/esm/domain/enum/aws-bedrock-model.enum.d.ts +33 -0
- package/dist/esm/domain/enum/aws-bedrock-model.enum.js +47 -0
- package/dist/esm/domain/enum/aws-bedrock-model.enum.js.map +1 -0
- package/dist/esm/domain/enum/azure-openai-model.enum.d.ts +17 -0
- package/dist/esm/domain/enum/azure-openai-model.enum.js +26 -0
- package/dist/esm/domain/enum/azure-openai-model.enum.js.map +1 -0
- package/dist/esm/domain/enum/commit-mode.enum.d.ts +7 -0
- package/dist/esm/domain/enum/commit-mode.enum.js +11 -0
- package/dist/esm/domain/enum/commit-mode.enum.js.map +1 -0
- package/dist/esm/domain/enum/google-model.enum.d.ts +16 -0
- package/dist/esm/domain/enum/google-model.enum.js +25 -0
- package/dist/esm/domain/enum/google-model.enum.js.map +1 -0
- package/dist/esm/domain/enum/index.d.ts +9 -0
- package/dist/esm/domain/enum/llm-provider.enum.d.ts +11 -0
- package/dist/esm/domain/enum/llm-provider.enum.js +15 -0
- package/dist/esm/domain/enum/llm-provider.enum.js.map +1 -0
- package/dist/esm/domain/enum/log-level.enum.d.ts +9 -0
- package/dist/esm/domain/enum/log-level.enum.js +13 -0
- package/dist/esm/domain/enum/log-level.enum.js.map +1 -0
- package/dist/esm/domain/enum/ollama-model.enum.d.ts +24 -0
- package/dist/esm/domain/enum/ollama-model.enum.js +30 -0
- package/dist/esm/domain/enum/ollama-model.enum.js.map +1 -0
- package/dist/esm/domain/enum/openai-model.enum.d.ts +25 -0
- package/dist/esm/domain/enum/openai-model.enum.js +35 -0
- package/dist/esm/domain/enum/openai-model.enum.js.map +1 -0
- package/dist/esm/domain/index.d.ts +3 -0
- package/dist/esm/domain/value-object/api-key.value-object.d.ts +28 -0
- package/dist/esm/domain/value-object/api-key.value-object.js +49 -0
- package/dist/esm/domain/value-object/api-key.value-object.js.map +1 -0
- package/dist/esm/domain/value-object/commit-body.value-object.d.ts +39 -0
- package/dist/esm/domain/value-object/commit-body.value-object.js +64 -0
- package/dist/esm/domain/value-object/commit-body.value-object.js.map +1 -0
- package/dist/esm/domain/value-object/commit-header.value-object.d.ts +35 -0
- package/dist/esm/domain/value-object/commit-header.value-object.js +61 -0
- package/dist/esm/domain/value-object/commit-header.value-object.js.map +1 -0
- package/dist/esm/domain/value-object/index.d.ts +3 -0
- package/dist/esm/index.d.ts +14 -12
- package/dist/esm/index.js +38 -82
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.d.ts +38 -0
- package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.js +205 -0
- package/dist/esm/infrastructure/commit-validator/commitlint-validator.service.js.map +1 -0
- package/dist/esm/infrastructure/commit-validator/index.d.ts +1 -0
- package/dist/esm/infrastructure/di/container.d.ts +17 -0
- package/dist/esm/infrastructure/di/container.js +63 -0
- package/dist/esm/infrastructure/di/container.js.map +1 -0
- package/dist/esm/infrastructure/di/index.d.ts +1 -0
- package/dist/esm/infrastructure/git/git-commit.repository.d.ts +36 -0
- package/dist/esm/infrastructure/git/git-commit.repository.js +76 -0
- package/dist/esm/infrastructure/git/git-commit.repository.js.map +1 -0
- package/dist/esm/infrastructure/git/index.d.ts +1 -0
- package/dist/esm/infrastructure/index.d.ts +4 -0
- package/dist/esm/infrastructure/llm/anthropic-llm.service.d.ts +39 -0
- package/dist/esm/infrastructure/llm/anthropic-llm.service.js +321 -0
- package/dist/esm/infrastructure/llm/anthropic-llm.service.js.map +1 -0
- package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.d.ts +60 -0
- package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.js +512 -0
- package/dist/esm/infrastructure/llm/aws-bedrock-llm.service.js.map +1 -0
- package/dist/esm/infrastructure/llm/azure-openai-llm.service.d.ts +45 -0
- package/dist/esm/infrastructure/llm/azure-openai-llm.service.js +349 -0
- package/dist/esm/infrastructure/llm/azure-openai-llm.service.js.map +1 -0
- package/dist/esm/infrastructure/llm/google-llm.service.d.ts +45 -0
- package/dist/esm/infrastructure/llm/google-llm.service.js +333 -0
- package/dist/esm/infrastructure/llm/google-llm.service.js.map +1 -0
- package/dist/esm/infrastructure/llm/index.d.ts +6 -0
- package/dist/esm/infrastructure/llm/ollama-llm.service.d.ts +45 -0
- package/dist/esm/infrastructure/llm/ollama-llm.service.js +385 -0
- package/dist/esm/infrastructure/llm/ollama-llm.service.js.map +1 -0
- package/dist/esm/infrastructure/llm/openai-llm.service.d.ts +45 -0
- package/dist/esm/infrastructure/llm/openai-llm.service.js +337 -0
- package/dist/esm/infrastructure/llm/openai-llm.service.js.map +1 -0
- package/dist/esm/infrastructure/service/cosmic-config.service.d.ts +66 -0
- package/dist/esm/infrastructure/service/cosmic-config.service.js +174 -0
- package/dist/esm/infrastructure/service/cosmic-config.service.js.map +1 -0
- package/dist/esm/infrastructure/service/index.d.ts +4 -0
- package/dist/esm/infrastructure/service/node-command.service.d.ts +45 -0
- package/dist/esm/infrastructure/service/node-command.service.js +152 -0
- package/dist/esm/infrastructure/service/node-command.service.js.map +1 -0
- package/dist/esm/infrastructure/service/node-file-system.service.d.ts +62 -0
- package/dist/esm/infrastructure/service/node-file-system.service.js +100 -0
- package/dist/esm/infrastructure/service/node-file-system.service.js.map +1 -0
- package/dist/esm/infrastructure/service/prompts-cli-interface.service.d.ts +117 -0
- package/dist/esm/infrastructure/service/prompts-cli-interface.service.js +316 -0
- package/dist/esm/infrastructure/service/prompts-cli-interface.service.js.map +1 -0
- package/dist/esm/package.json +19 -0
- package/dist/esm/presentation/commitizen.adapter.d.ts +28 -0
- package/dist/esm/presentation/commitizen.adapter.js +302 -0
- package/dist/esm/presentation/commitizen.adapter.js.map +1 -0
- package/dist/esm/presentation/index.d.ts +1 -0
- package/index.cjs +1 -2
- package/package.json +42 -25
- package/dist/cjs/ManualProcess.d.ts +0 -6
- package/dist/cjs/ManualProcess.d.ts.map +0 -1
- package/dist/cjs/ManualProcess.js +0 -111
- package/dist/cjs/ManualProcess.js.map +0 -1
- package/dist/cjs/Process.d.ts +0 -6
- package/dist/cjs/Process.d.ts.map +0 -1
- package/dist/cjs/Process.js +0 -176
- package/dist/cjs/Process.js.map +0 -1
- package/dist/cjs/Question.d.ts +0 -46
- package/dist/cjs/Question.d.ts.map +0 -1
- package/dist/cjs/SectionBody.d.ts +0 -4
- package/dist/cjs/SectionBody.d.ts.map +0 -1
- package/dist/cjs/SectionFooter.d.ts +0 -13
- package/dist/cjs/SectionFooter.d.ts.map +0 -1
- package/dist/cjs/SectionHeader.d.ts +0 -15
- package/dist/cjs/SectionHeader.d.ts.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/services/commitConfirmation.d.ts +0 -3
- package/dist/cjs/services/commitConfirmation.d.ts.map +0 -1
- package/dist/cjs/services/commitConfirmation.js +0 -122
- package/dist/cjs/services/commitConfirmation.js.map +0 -1
- package/dist/cjs/services/commitlintConfig.d.ts +0 -4
- package/dist/cjs/services/commitlintConfig.d.ts.map +0 -1
- package/dist/cjs/services/commitlintConfig.js +0 -198
- package/dist/cjs/services/commitlintConfig.js.map +0 -1
- package/dist/cjs/services/commitlintValidator.d.ts +0 -26
- package/dist/cjs/services/commitlintValidator.d.ts.map +0 -1
- package/dist/cjs/services/commitlintValidator.js +0 -146
- package/dist/cjs/services/commitlintValidator.js.map +0 -1
- package/dist/cjs/services/getRuleQuestionConfig.d.ts +0 -4
- package/dist/cjs/services/getRuleQuestionConfig.d.ts.map +0 -1
- package/dist/cjs/services/llm/anthropic.d.ts +0 -3
- package/dist/cjs/services/llm/anthropic.d.ts.map +0 -1
- package/dist/cjs/services/llm/anthropic.js +0 -118
- package/dist/cjs/services/llm/anthropic.js.map +0 -1
- package/dist/cjs/services/llm/config.d.ts +0 -5
- package/dist/cjs/services/llm/config.d.ts.map +0 -1
- package/dist/cjs/services/llm/config.js +0 -181
- package/dist/cjs/services/llm/config.js.map +0 -1
- package/dist/cjs/services/llm/index.d.ts +0 -6
- package/dist/cjs/services/llm/index.d.ts.map +0 -1
- package/dist/cjs/services/llm/index.js +0 -399
- package/dist/cjs/services/llm/index.js.map +0 -1
- package/dist/cjs/services/llm/models.d.ts +0 -34
- package/dist/cjs/services/llm/models.d.ts.map +0 -1
- package/dist/cjs/services/llm/models.js +0 -65
- package/dist/cjs/services/llm/models.js.map +0 -1
- package/dist/cjs/services/llm/openai.d.ts +0 -3
- package/dist/cjs/services/llm/openai.d.ts.map +0 -1
- package/dist/cjs/services/llm/openai.js +0 -111
- package/dist/cjs/services/llm/openai.js.map +0 -1
- package/dist/cjs/services/llm/types.d.ts +0 -71
- package/dist/cjs/services/llm/types.d.ts.map +0 -1
- package/dist/cjs/store/defaultPromptConfigs.d.ts +0 -33
- package/dist/cjs/store/defaultPromptConfigs.d.ts.map +0 -1
- package/dist/cjs/store/defaultPromptConfigs.js +0 -39
- package/dist/cjs/store/defaultPromptConfigs.js.map +0 -1
- package/dist/cjs/store/prompts.d.ts +0 -6
- package/dist/cjs/store/prompts.d.ts.map +0 -1
- package/dist/cjs/store/prompts.js +0 -40
- package/dist/cjs/store/prompts.js.map +0 -1
- package/dist/cjs/store/rules.d.ts +0 -7
- package/dist/cjs/store/rules.d.ts.map +0 -1
- package/dist/cjs/types.d.ts +0 -3
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/utils/case-function.d.ts +0 -9
- package/dist/cjs/utils/case-function.d.ts.map +0 -1
- package/dist/cjs/utils/full-stop-function.d.ts +0 -9
- package/dist/cjs/utils/full-stop-function.d.ts.map +0 -1
- package/dist/cjs/utils/leading-blank-function.d.ts +0 -8
- package/dist/cjs/utils/leading-blank-function.d.ts.map +0 -1
- package/dist/cjs/utils/rules.d.ts +0 -26
- package/dist/cjs/utils/rules.d.ts.map +0 -1
- package/dist/esm/ManualProcess.d.ts +0 -6
- package/dist/esm/ManualProcess.d.ts.map +0 -1
- package/dist/esm/ManualProcess.js +0 -107
- package/dist/esm/ManualProcess.js.map +0 -1
- package/dist/esm/Process.d.ts +0 -6
- package/dist/esm/Process.d.ts.map +0 -1
- package/dist/esm/Process.js +0 -172
- package/dist/esm/Process.js.map +0 -1
- package/dist/esm/Question.d.ts +0 -46
- package/dist/esm/Question.d.ts.map +0 -1
- package/dist/esm/SectionBody.d.ts +0 -4
- package/dist/esm/SectionBody.d.ts.map +0 -1
- package/dist/esm/SectionFooter.d.ts +0 -13
- package/dist/esm/SectionFooter.d.ts.map +0 -1
- package/dist/esm/SectionHeader.d.ts +0 -15
- package/dist/esm/SectionHeader.d.ts.map +0 -1
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/services/commitConfirmation.d.ts +0 -3
- package/dist/esm/services/commitConfirmation.d.ts.map +0 -1
- package/dist/esm/services/commitConfirmation.js +0 -120
- package/dist/esm/services/commitConfirmation.js.map +0 -1
- package/dist/esm/services/commitlintConfig.d.ts +0 -4
- package/dist/esm/services/commitlintConfig.d.ts.map +0 -1
- package/dist/esm/services/commitlintConfig.js +0 -196
- package/dist/esm/services/commitlintConfig.js.map +0 -1
- package/dist/esm/services/commitlintValidator.d.ts +0 -26
- package/dist/esm/services/commitlintValidator.d.ts.map +0 -1
- package/dist/esm/services/commitlintValidator.js +0 -142
- package/dist/esm/services/commitlintValidator.js.map +0 -1
- package/dist/esm/services/getRuleQuestionConfig.d.ts +0 -4
- package/dist/esm/services/getRuleQuestionConfig.d.ts.map +0 -1
- package/dist/esm/services/llm/anthropic.d.ts +0 -3
- package/dist/esm/services/llm/anthropic.d.ts.map +0 -1
- package/dist/esm/services/llm/anthropic.js +0 -116
- package/dist/esm/services/llm/anthropic.js.map +0 -1
- package/dist/esm/services/llm/config.d.ts +0 -5
- package/dist/esm/services/llm/config.d.ts.map +0 -1
- package/dist/esm/services/llm/config.js +0 -178
- package/dist/esm/services/llm/config.js.map +0 -1
- package/dist/esm/services/llm/index.d.ts +0 -6
- package/dist/esm/services/llm/index.d.ts.map +0 -1
- package/dist/esm/services/llm/index.js +0 -394
- package/dist/esm/services/llm/index.js.map +0 -1
- package/dist/esm/services/llm/models.d.ts +0 -34
- package/dist/esm/services/llm/models.d.ts.map +0 -1
- package/dist/esm/services/llm/models.js +0 -60
- package/dist/esm/services/llm/models.js.map +0 -1
- package/dist/esm/services/llm/openai.d.ts +0 -3
- package/dist/esm/services/llm/openai.d.ts.map +0 -1
- package/dist/esm/services/llm/openai.js +0 -109
- package/dist/esm/services/llm/openai.js.map +0 -1
- package/dist/esm/services/llm/types.d.ts +0 -71
- package/dist/esm/services/llm/types.d.ts.map +0 -1
- package/dist/esm/store/defaultPromptConfigs.d.ts +0 -33
- package/dist/esm/store/defaultPromptConfigs.d.ts.map +0 -1
- package/dist/esm/store/defaultPromptConfigs.js +0 -35
- package/dist/esm/store/defaultPromptConfigs.js.map +0 -1
- package/dist/esm/store/prompts.d.ts +0 -6
- package/dist/esm/store/prompts.d.ts.map +0 -1
- package/dist/esm/store/prompts.js +0 -38
- package/dist/esm/store/prompts.js.map +0 -1
- package/dist/esm/store/rules.d.ts +0 -7
- package/dist/esm/store/rules.d.ts.map +0 -1
- package/dist/esm/types.d.ts +0 -3
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/utils/case-function.d.ts +0 -9
- package/dist/esm/utils/case-function.d.ts.map +0 -1
- package/dist/esm/utils/full-stop-function.d.ts +0 -9
- package/dist/esm/utils/full-stop-function.d.ts.map +0 -1
- package/dist/esm/utils/leading-blank-function.d.ts +0 -8
- package/dist/esm/utils/leading-blank-function.d.ts.map +0 -1
- package/dist/esm/utils/rules.d.ts +0 -26
- package/dist/esm/utils/rules.d.ts.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,88 +1,44 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* @
|
|
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(
|
|
47
|
-
|
|
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 {
|
|
43
|
+
export { index as default, prompter };
|
|
88
44
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":[
|
|
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';
|