UNPKG

ai-code-writer

Version:

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

60 lines (59 loc) 3.09 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ConversationRequest_1 = __importDefault(require("../ConversationRequest")); const ConversationResponse_1 = __importDefault(require("../ConversationResponse")); const StateResponse_1 = __importDefault(require("../Response/StateResponse")); class ConversationHandler { constructor(audioUseCase, gptConversationUseCase, actionHandler, modeUseCase) { this.audioUseCase = audioUseCase; this.gptConversationUseCase = gptConversationUseCase; this.actionHandler = actionHandler; this.modeUseCase = modeUseCase; } runConversation(response) { return __awaiter(this, void 0, void 0, function* () { const conversationRequest = new ConversationRequest_1.default(); conversationRequest.transcription = response.transcription; console.log('Starte KI Anfrage...'); yield this.gptConversationUseCase.addUserMessageToConversation(conversationRequest); yield this.completeConversation(); }); } completeConversation() { return __awaiter(this, void 0, void 0, function* () { let conversationResponse; do { conversationResponse = new ConversationResponse_1.default(); yield this.gptConversationUseCase.continueConversation(conversationResponse); console.log('KI Antwort:', conversationResponse.result.content); yield Promise.all([ this.actionHandler.executeActions(conversationResponse), this.playAnswer(conversationResponse.result.content) ]); } while (conversationResponse.conversationComplete == false); }); } playAnswer(content) { return __awaiter(this, void 0, void 0, function* () { const pauseState = new StateResponse_1.default(); this.modeUseCase.getState(pauseState); if (pauseState.isSuspended || content == '') return; const answerAudio = yield this.audioUseCase.transformTextToAudio(content); yield this.audioUseCase.playAudio(answerAudio); }); } } exports.default = ConversationHandler;