openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
46 lines (45 loc) • 1.56 kB
JavaScript
import { n as isCwdBoundHashedArgPattern } from "./exec-command-resolution-B6e6Gzk8.js";
import { f as updateExecApprovalsSync } from "./exec-approvals-store-DBR0neS0.js";
//#region src/infra/exec-approvals-generated-migration.ts
function isObsoleteGeneratedEntry(entry) {
const pattern = entry.pattern.trim();
return entry.source === "allow-always" && !pattern.startsWith("=command:") && !pattern.startsWith("=node-command:") && !isCwdBoundHashedArgPattern(entry.argPattern);
}
function countObsoleteGeneratedExecApprovals(file) {
return Object.values(file.agents ?? {}).reduce((count, agent) => count + (agent.allowlist ?? []).filter(isObsoleteGeneratedEntry).length, 0);
}
function removeObsoleteGeneratedExecApprovals(file) {
let removed = 0;
const agents = Object.fromEntries(Object.entries(file.agents ?? {}).map(([agentId, agent]) => {
const allowlist = (agent.allowlist ?? []).filter((entry) => {
if (!isObsoleteGeneratedEntry(entry)) return true;
removed += 1;
return false;
});
return [agentId, {
...agent,
allowlist
}];
}));
return removed === 0 ? {
file,
removed
} : {
file: {
...file,
agents
},
removed
};
}
function repairObsoleteGeneratedExecApprovals() {
let removed = 0;
updateExecApprovalsSync({ update: (file) => {
const result = removeObsoleteGeneratedExecApprovals(file);
removed = result.removed;
return result.removed > 0 ? result.file : null;
} });
return removed;
}
//#endregion
export { repairObsoleteGeneratedExecApprovals as n, countObsoleteGeneratedExecApprovals as t };