@elsikora/commitizen-plugin-commitlint-ai
Version:
AI-powered Commitizen adapter with Commitlint integration
77 lines (73 loc) • 5.3 kB
JavaScript
'use strict';
var cladi = require('@elsikora/cladi');
var configureLlm_useCase = require('../../application/use-case/configure-llm.use-case.js');
var generateCommitMessage_useCase = require('../../application/use-case/generate-commit-message.use-case.js');
var manualCommit_useCase = require('../../application/use-case/manual-commit.use-case.js');
var validateCommitMessage_useCase = require('../../application/use-case/validate-commit-message.use-case.js');
var commitlintValidator_service = require('../commit-validator/commitlint-validator.service.js');
var gitCommit_repository = require('../git/git-commit.repository.js');
var anthropicLlm_service = require('../llm/anthropic-llm.service.js');
var awsBedrockLlm_service = require('../llm/aws-bedrock-llm.service.js');
var azureOpenaiLlm_service = require('../llm/azure-openai-llm.service.js');
var googleLlm_service = require('../llm/google-llm.service.js');
var ollamaLlm_service = require('../llm/ollama-llm.service.js');
var openaiLlm_service = require('../llm/openai-llm.service.js');
var cosmicConfig_service = require('../service/cosmic-config.service.js');
var nodeCommand_service = require('../service/node-command.service.js');
var nodeFileSystem_service = require('../service/node-file-system.service.js');
var promptsCliInterface_service = require('../service/prompts-cli-interface.service.js');
// Service tokens
const FileSystemServiceToken = Symbol("FileSystemService");
const CliInterfaceServiceToken = Symbol("CliInterfaceService");
const CommandServiceToken = Symbol("CommandService");
const ConfigServiceToken = Symbol("ConfigService");
const CommitValidatorToken = Symbol("CommitValidator");
const CommitRepositoryToken = Symbol("CommitRepository");
const LLMServicesToken = Symbol("LLMServices");
// Use case tokens
const GenerateCommitMessageUseCaseToken = Symbol("GenerateCommitMessageUseCase");
const ValidateCommitMessageUseCaseToken = Symbol("ValidateCommitMessageUseCase");
const ConfigureLLMUseCaseToken = Symbol("ConfigureLLMUseCase");
const ManualCommitUseCaseToken = Symbol("ManualCommitUseCase");
/**
* Create and configure the application DI container
* @returns {IContainer} The configured DI container
*/
function createAppContainer() {
const container = cladi.createContainer({});
// Register infrastructure services
container.register(FileSystemServiceToken, new nodeFileSystem_service.NodeFileSystemService());
container.register(CliInterfaceServiceToken, new promptsCliInterface_service.PromptsCliInterface());
const cliInterface = container.get(CliInterfaceServiceToken) ?? new promptsCliInterface_service.PromptsCliInterface();
const fileSystem = container.get(FileSystemServiceToken) ?? new nodeFileSystem_service.NodeFileSystemService();
container.register(ConfigServiceToken, new cosmicConfig_service.CosmicConfigService(fileSystem));
container.register(CommandServiceToken, new nodeCommand_service.NodeCommandService(cliInterface));
const commandService = container.get(CommandServiceToken) ?? new nodeCommand_service.NodeCommandService(cliInterface);
container.register(CommitRepositoryToken, new gitCommit_repository.GitCommitRepository(commandService));
// Register LLM services
const llmServices = [new openaiLlm_service.OpenAILlmService(), new anthropicLlm_service.AnthropicLlmService(), new googleLlm_service.GoogleLlmService(), new azureOpenaiLlm_service.AzureOpenAILlmService(), new awsBedrockLlm_service.AWSBedrockLlmService(), new ollamaLlm_service.OllamaLlmService()];
container.register(LLMServicesToken, llmServices);
// Register commit validator with LLM services
container.register(CommitValidatorToken, new commitlintValidator_service.CommitlintValidatorService(llmServices));
const validator = container.get(CommitValidatorToken) ?? new commitlintValidator_service.CommitlintValidatorService([]);
const configService = container.get(ConfigServiceToken) ?? new cosmicConfig_service.CosmicConfigService(fileSystem);
// Register use cases
container.register(ConfigureLLMUseCaseToken, new configureLlm_useCase.ConfigureLLMUseCase(configService, cliInterface));
container.register(GenerateCommitMessageUseCaseToken, new generateCommitMessage_useCase.GenerateCommitMessageUseCase(llmServices));
container.register(ValidateCommitMessageUseCaseToken, new validateCommitMessage_useCase.ValidateCommitMessageUseCase(validator));
container.register(ManualCommitUseCaseToken, new manualCommit_useCase.ManualCommitUseCase(cliInterface));
return container;
}
exports.CliInterfaceServiceToken = CliInterfaceServiceToken;
exports.CommandServiceToken = CommandServiceToken;
exports.CommitRepositoryToken = CommitRepositoryToken;
exports.CommitValidatorToken = CommitValidatorToken;
exports.ConfigServiceToken = ConfigServiceToken;
exports.ConfigureLLMUseCaseToken = ConfigureLLMUseCaseToken;
exports.FileSystemServiceToken = FileSystemServiceToken;
exports.GenerateCommitMessageUseCaseToken = GenerateCommitMessageUseCaseToken;
exports.LLMServicesToken = LLMServicesToken;
exports.ManualCommitUseCaseToken = ManualCommitUseCaseToken;
exports.ValidateCommitMessageUseCaseToken = ValidateCommitMessageUseCaseToken;
exports.createAppContainer = createAppContainer;
//# sourceMappingURL=container.js.map