/** * Persist allow/deny patterns next to agent sessions. */ const path = require('path'); const fs = require('fs'); const { ensureAgentRoot, ensureDir } = require('../lib/paths.js'); const rules = require('./perm-rules.js'); function rulesFile() { return path.join(ensureDir(ensureAgentRoot()), 'permission-rules.json'); } function load() { try { const raw = JSON.parse(fs.readFileSync(rulesFile(), 'utf8')); return Array.isArray(raw) ? raw : []; } catch (_) { return []; } } function save(list) { const next = Array.isArray(list) ? list : []; fs.writeFileSync(rulesFile(), JSON.stringify(next, null, 2)); return next; } function resolve(tool, args) { return rules.resolve(load(), tool, args); } function remember(tool, args, decision) { return save(rules.addRule(load(), tool, args, decision)); } function rememberAlways(tool) { const args = String(tool) === 'run_terminal_cmd' ? { command: '*' } : { path: '*' }; return remember(tool, args, 'allow'); } module.exports = { rulesFile, load, save, resolve, remember, rememberAlways };