import fs from 'fs'; import path from 'path'; export interface ActionDefinition { template: string; params?: string[]; } export interface ActionCatalog { _comment?: string; _version?: string; _targetGroup?: string; actions: Record; } const CATALOG_PATH = path.join(__dirname, 'catalog.json'); let cachedCatalog: ActionCatalog | null = null; export function loadActionCatalog(forceReload = false): ActionCatalog { if (cachedCatalog && !forceReload) { return cachedCatalog; } const raw = fs.readFileSync(CATALOG_PATH, 'utf-8'); cachedCatalog = JSON.parse(raw); return cachedCatalog!; } export function getAction(actionKey: string): ActionDefinition | undefined { const catalog = loadActionCatalog(); return catalog.actions[actionKey]; }