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