@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
50 lines (49 loc) • 2.03 kB
JavaScript
import { createRequire } from "node:module";
import { logger } from "../utils/logger.js";
// Lazy require so importing NeuroLink core does not fail when the optional
// peer @juspay/hippocampus is not installed. The package was previously a
// hard runtime dependency, but Hippocampus declares a peer on
// @juspay/neurolink which made pnpm pull a registry NeuroLink that
// transitively required @ai-sdk/google + @ai-sdk/google-vertex into the
// production graph. Making memory optional breaks that cycle while keeping
// the same runtime behavior whenever the package is installed.
const lazyRequire = createRequire(import.meta.url);
let cachedModule;
function loadHippocampusModule() {
if (cachedModule !== undefined) {
return cachedModule;
}
try {
cachedModule = lazyRequire("@juspay/hippocampus");
return cachedModule;
}
catch (error) {
cachedModule = null;
logger.debug("[memoryInitializer] @juspay/hippocampus is not installed; memory features disabled.", {
error: error instanceof Error ? error.message : String(error),
});
return null;
}
}
export function initializeHippocampus(config) {
const mod = loadHippocampusModule();
if (!mod) {
logger.warn("[memoryInitializer] Memory configuration provided but @juspay/hippocampus is not installed. Run `pnpm add @juspay/hippocampus` (or your package manager equivalent) to enable memory.");
return null;
}
try {
const instance = new mod.Hippocampus(config);
logger.info("[memoryInitializer] Memory initialized successfully", {
storageType: config.storage?.type || "sqlite",
maxWords: config.maxWords || 50,
hasCustomPrompt: !!config.prompt,
});
return instance;
}
catch (error) {
logger.warn("[memoryInitializer] Failed to initialize memory; disabling", {
error: error instanceof Error ? error.message : String(error),
});
return null;
}
}