@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
JavaScript
/**
* 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),
});
}
}