UNPKG

@elsikora/commitizen-plugin-commitlint-ai

Version:
77 lines (73 loc) 5.3 kB
'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