UNPKG

ai-code-writer

Version:

An AI code writer application using OpenAI APIs for audio transcription and chat completion.

74 lines (73 loc) 6.82 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const StartController_1 = __importDefault(require("../Application/StartController")); const OpenAi_1 = __importDefault(require("../Infrastructure/Conversation/ChatCompletionClient/OpenAi/OpenAi")); const OpenAiAudio_1 = __importDefault(require("../Infrastructure/AudioTransformClient/OpenAi/OpenAiAudio")); const Node_1 = __importDefault(require("../Infrastructure/AudioRecorder/Node/Node")); const Node_2 = __importDefault(require("../Infrastructure/AudioPlayer/Node/Node")); const InMemory_1 = __importDefault(require("../Infrastructure/Conversation/ConversationStorage/InMemory")); const DefinedSystemPrompt_1 = __importDefault(require("../Infrastructure/Conversation/SystemPrompt/DefinedSystemPrompt")); const NoopConversationLogger_1 = __importDefault(require("../Infrastructure/Conversation/ConversationLogger/NoopConversationLogger")); const FileSystemActionHandler_1 = __importDefault(require("../Infrastructure/FileActions/FileSystemActionHandler")); const FileCollector_1 = __importDefault(require("../Infrastructure/Conversation/FileCollector/FileCollector")); const FileActionUseCase_1 = __importDefault(require("../Core/FileActions/FileActionUseCase")); const FsDirectoryWatcher_1 = __importDefault(require("../Infrastructure/FileActions/FsDirectoryWatcher")); const openai_1 = require("openai"); const AudioUseCase_1 = __importDefault(require("../Core/Audio/AudioUseCase")); const NodeAudioRecorderConfig_1 = __importDefault(require("../Infrastructure/AudioRecorder/Node/NodeAudioRecorderConfig")); const ConversationUseCase_1 = __importDefault(require("../Core/Conversation/UseCase/ConversationUseCase")); const Config_1 = __importDefault(require("./Config")); const Logger_1 = __importDefault(require("../Infrastructure/Logger/Logger")); const FileConversationLogger_1 = __importDefault(require("../Infrastructure/Conversation/ConversationLogger/FileConversationLogger")); const ModeUseCase_1 = __importDefault(require("../Core/Conversation/ModeUseCase/ModeUseCase")); const Memory_1 = __importDefault(require("../Infrastructure/StateStorage/Memory/Memory")); const FileActionExecutor_1 = __importDefault(require("../Application/Task/FileActionExecutor")); const ToolCallConverter_1 = __importDefault(require("../Infrastructure/Conversation/ChatCompletionClient/OpenAi/ToolCallConverter")); const MessageEncoder_1 = __importDefault(require("../Infrastructure/Conversation/ChatCompletionClient/OpenAi/MessageEncoder")); const ConversationRunner_1 = __importDefault(require("../Core/Conversation/UseCase/Task/ConversationRunner")); const FileTask_1 = __importDefault(require("../Core/Conversation/UseCase/Task/FileTask")); const ConversationHandler_1 = __importDefault(require("../Application/Task/ConversationHandler")); const ActionHandler_1 = __importDefault(require("../Application/Task/ActionHandler")); const PauseHandler_1 = __importDefault(require("../Application/Task/PauseHandler")); const ExitHandler_1 = __importDefault(require("../Application/Task/ExitHandler")); const ConversationService_1 = __importDefault(require("../Core/Conversation/UseCase/ConversationService")); class GlobalContainer { constructor() { this.config = new Config_1.default(); this.openAi = new openai_1.OpenAI({ organization: this.config.openAiOrg, apiKey: this.config.apiKey }); this.conversationStorage = new InMemory_1.default(); this.systemPromptService = new DefinedSystemPrompt_1.default(); this.conversationLogger = this.config.logToFile ? new FileConversationLogger_1.default() : new NoopConversationLogger_1.default(); this.fileSystemActionHandler = new FileSystemActionHandler_1.default(new Logger_1.default()); this.fileCollectorService = new FileCollector_1.default('.', this.config.includePatterns, this.config.excludeDirs, this.config.excludeFiles); this.logger = new Logger_1.default(); this.chatClient = new OpenAi_1.default(this.openAi, this.config.openAiChatTemperature, this.logger, this.config.openAiChatModel, this.config.maxTokens, new ToolCallConverter_1.default(this.logger), new MessageEncoder_1.default()); this.audioTransformClientOpenAi = new OpenAiAudio_1.default('https://api.openai.com/v1/audio/speech', this.config.apiKey, this.openAi, this.config.openAiAudioTemperature, this.logger); this.audioRecorderConfig = new NodeAudioRecorderConfig_1.default(); this.audioRecorder = new Node_1.default(this.audioRecorderConfig); this.audioPlayer = new Node_2.default(); this.audioUseCase = new AudioUseCase_1.default(this.audioTransformClientOpenAi, this.audioRecorder, this.audioPlayer); this.fileTask = new FileTask_1.default(this.conversationLogger); this.conversationService = new ConversationService_1.default(this.conversationStorage, this.fileCollectorService, this.fileTask); this.fileActionUseCase = new FileActionUseCase_1.default(this.fileSystemActionHandler, this.conversationService); this.directoryWatcher = new FsDirectoryWatcher_1.default('.', this.config.includePatterns, this.config.excludeDirs, this.config.excludeFiles); this.stateStorage = new Memory_1.default(); this.conversationRunner = new ConversationRunner_1.default(this.chatClient, this.conversationStorage, this.conversationLogger, this.stateStorage, this.systemPromptService, this.config); this.conversationUseCase = new ConversationUseCase_1.default(this.conversationStorage, this.conversationLogger, this.systemPromptService, this.fileCollectorService, this.stateStorage, this.config, this.conversationRunner, this.fileTask); this.modeUseCase = new ModeUseCase_1.default(this.stateStorage); this.fileActionExecutor = new FileActionExecutor_1.default(this.fileActionUseCase, this.conversationUseCase); this.pauseHandler = new PauseHandler_1.default(this.audioUseCase, this.modeUseCase); this.exitHandler = new ExitHandler_1.default(); this.actionHandler = new ActionHandler_1.default(this.directoryWatcher, this.fileActionExecutor, this.modeUseCase, this.audioUseCase, this.conversationUseCase, this.pauseHandler, this.exitHandler); this.conversationHandler = new ConversationHandler_1.default(this.audioUseCase, this.conversationUseCase, this.actionHandler, this.modeUseCase); this.startController = new StartController_1.default(this.audioUseCase, this.conversationUseCase, this.directoryWatcher, this.conversationHandler, this.exitHandler, this.pauseHandler); } } const Container = new GlobalContainer(); exports.default = Container;