UNPKG

organ-ai-zer

Version:

AI-powered file organizer CLI tool

58 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Conversation = void 0; const conversation_context_1 = require("./conversation-context"); /** * Generic AI Conversation */ class Conversation { constructor(aiProvider, subject, config = {}) { this.aiProvider = aiProvider; this.context = new conversation_context_1.ConversationContext(subject, config); } async continueWithPrompt(analysisRequest) { if (this.context.getState() !== 'active') { throw new Error(`Cannot send message in ${this.context.getState()} state`); } if (this.context.getTurnCount() >= this.context.getConfig().maxTurns) { this.context.setState('failed'); throw new Error('Maximum conversation turns exceeded'); } this.context.addUserMessage(analysisRequest.prompt); this.context.incrementTurnCount(); try { if (!analysisRequest.schema) { throw new Error('Analysis request must include a schema'); } const response = await this.aiProvider.generateResponse(this.context, analysisRequest.schema); const aiResponse = response.reasoning || 'No response generated'; this.context.addAssistantMessage(aiResponse); return response; } catch (error) { this.context.setState('failed'); throw new Error(`Conversation failed: ${error}`); } } reset(keepSystemPrompt = true) { const systemMessages = keepSystemPrompt ? this.context.getMessages().filter(msg => msg.role === 'system') : []; this.context.setMessages(systemMessages); this.context.resetTurnCount(); this.context.setState('active'); } complete() { this.context.setState('complete'); } pause() { this.context.setState('paused'); } resume() { if (this.context.getState() !== 'paused') { throw new Error('Cannot resume conversation that is not paused'); } this.context.setState('active'); } } exports.Conversation = Conversation; //# sourceMappingURL=conversation.js.map