Files
brain/tools/observer-chain-detector.mjs
T

25 lines
910 B
JavaScript

import { readFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { dirname, join } from 'node:path';
const __dirname = dirname(fileURLToPath(import.meta.url));
const DEFAULT_MAP_PATH = join(__dirname, 'observer-chain-map.json');
/** Load the node->chains map. Throws on missing/invalid JSON (caller handles). */
export function loadChainMap(path = DEFAULT_MAP_PATH) {
const raw = JSON.parse(readFileSync(path, 'utf8'));
const map = new Map();
for (const [node, chains] of Object.entries(raw)) {
if (node === '_note') continue;
if (Array.isArray(chains) && chains.length > 0) map.set(node, chains);
}
return map;
}
/** node_chosen -> array of L-chains, or null if not in any chain. */
export function chainsFor(node, map) {
if (!node || typeof node !== 'string') return null;
const chains = map.get(node);
return chains && chains.length > 0 ? chains : null;
}