Actually vendor harness
This commit is contained in:
+37
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* 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));
|
||||
}
|
||||
|
||||
module.exports = { rulesFile, load, save, resolve, remember };
|
||||
Reference in New Issue
Block a user