import { readFileSync, writeFileSync } from "node:fs"; export type RuleStore = Record; // "router:key" → prompt file path const _G = globalThis as Record; const RULES_KEY = "_prismFacetRules"; const RULES_PATH_KEY = "_prismFacetRulesPath"; function getRules(): RuleStore { if (!_G[RULES_KEY] || typeof _G[RULES_KEY] !== "object") { _G[RULES_KEY] = {}; } return _G[RULES_KEY] as RuleStore; } function getRulesPath(): string { return (_G[RULES_PATH_KEY] as string) || ""; } function save(): void { const p = getRulesPath(); if (!p) return; writeFileSync(p, JSON.stringify(getRules(), null, 2) + "\n", "utf8"); } export function initRuleStore(filePath: string): void { _G[RULES_PATH_KEY] = filePath; try { const raw = readFileSync(filePath, "utf8"); _G[RULES_KEY] = JSON.parse(raw) as RuleStore; } catch { _G[RULES_KEY] = {}; } } export function addRule(router: string, key: string, promptFile: string): void { getRules()[`${router}:${key}`] = promptFile; save(); } export function removeRule(router: string, key: string): boolean { const rules = getRules(); const ruleKey = `${router}:${key}`; if (!(ruleKey in rules)) return false; delete rules[ruleKey]; save(); return true; } export function getRule(router: string, key: string): string | undefined { return getRules()[`${router}:${key}`]; } export function listRules(): Record { return { ...getRules() }; }