UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and

78 lines (77 loc) 2.72 kB
/** * Conversation Memory Utilities * Handles configuration merging and conversation memory operations */ import { getConversationMemoryDefaults } from "../config/conversationMemoryConfig.js"; import { logger } from "./logger.js"; /** * Apply conversation memory defaults to user configuration * Merges user config with environment variables and default values */ export function applyConversationMemoryDefaults(userConfig) { const defaults = getConversationMemoryDefaults(); return { enabled: userConfig?.enabled ?? defaults.enabled, maxSessions: userConfig?.maxSessions ?? defaults.maxSessions, maxTurnsPerSession: userConfig?.maxTurnsPerSession ?? defaults.maxTurnsPerSession, }; } /** * Get conversation history as message array (PREFERRED METHOD) * Returns proper message array format for AI providers */ export async function getConversationMessages(conversationMemory, options) { if (!conversationMemory || !options.context) { return []; } const sessionId = options.context?.sessionId; if (typeof sessionId !== "string" || !sessionId) { return []; } try { const messages = conversationMemory.buildContextMessages(sessionId); logger.debug("Conversation messages retrieved", { sessionId, messageCount: messages.length, }); return messages; } catch (error) { logger.warn("Failed to get conversation messages", { sessionId, error: error instanceof Error ? error.message : String(error), }); return []; } } /** * Store conversation turn for future context * Saves user messages and AI responses for conversation memory */ export async function storeConversationTurn(conversationMemory, originalOptions, result) { if (!conversationMemory || !originalOptions.context) { return; } const context = originalOptions.context; const sessionId = context.sessionId; const userId = typeof context.userId === "string" ? context.userId : undefined; if (typeof sessionId !== "string" || !sessionId) { return; } try { await conversationMemory.storeConversationTurn(sessionId, userId, originalOptions.prompt || "", result.content); logger.debug("Conversation turn stored", { sessionId, userId, promptLength: originalOptions.prompt?.length || 0, responseLength: result.content.length, }); } catch (error) { logger.warn("Failed to store conversation turn", { sessionId, userId, error: error instanceof Error ? error.message : String(error), }); } }