UNPKG

echonodesync

Version:

Autonomous, pluggable, secure memory bridge for agent/human/ritual ecosystems (DreamWeaver, EchoThreads, etc.)

50 lines (44 loc) 1.52 kB
// Shared helpers for MCP actions (env/secret resolution) // Used by all MCP memory actions for consistent environment discovery. const fs = require('fs'); const path = require('path'); const os = require('os'); function stripQuotes(str) { if (!str) return str; return str.replace(/^['"]+|['"]+$/g, '').trim(); } function resolveApiUrl() { if (process.env.ECHONODESYNC_API_URL) return stripQuotes(process.env.ECHONODESYNC_API_URL); const envPaths = [ path.resolve(process.cwd(), '.env'), path.resolve(os.homedir(), '.env') ]; for (const envPath of envPaths) { if (fs.existsSync(envPath)) { const lines = fs.readFileSync(envPath, 'utf8').split(/\r?\n/); for (const line of lines) { const match = line.match(/^\s*ECHONODESYNC_API_URL\s*=\s*(.+)\s*$/); if (match) return stripQuotes(match[1]); } } } return 'http://localhost:3000/api/memory'; } function resolveSecret() { if (process.env.ECHONODESYNC_SECRET) return stripQuotes(process.env.ECHONODESYNC_SECRET); const envPaths = [ path.resolve(process.cwd(), '.env'), path.resolve(os.homedir(), '.env') ]; for (const envPath of envPaths) { if (fs.existsSync(envPath)) { const lines = fs.readFileSync(envPath, 'utf8').split(/\r?\n/); for (const line of lines) { const match = line.match(/^\s*ECHONODESYNC_SECRET\s*=\s*(.+)\s*$/); if (match) return stripQuotes(match[1]); } } } return null; } module.exports = { resolveApiUrl, resolveSecret };