echonodesync
Version:
Autonomous, pluggable, secure memory bridge for agent/human/ritual ecosystems (DreamWeaver, EchoThreads, etc.)
25 lines (22 loc) • 989 B
JavaScript
// MCP action: scanKeys
// Usage: await scanKeysAction({ pattern, regex, limit, plain })
// Extracted from scanKeys.js for agent-accessible invocation
const fetch = require('node-fetch');
const { resolveApiUrl, resolveSecret } = require('./shared');
async function scanKeysAction({ pattern, regex, limit, plain }) {
const BASE_URL = resolveApiUrl().replace(/\/memory$/, '/scan');
const SECRET = resolveSecret();
const url = new URL(BASE_URL);
if (pattern) url.searchParams.set('pattern', pattern);
if (regex) url.searchParams.set('regex', regex);
if (limit) url.searchParams.set('limit', limit);
const headers = {};
if (SECRET) headers['Authorization'] = `Bearer ${SECRET}`;
const res = await fetch(url.toString(), { headers });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
// Optionally flatten/group for plain output
if (plain) return data.flat ? data.flat() : data;
return data;
}
module.exports = { scanKeysAction };