feat(permission): integrate auto-review and hard guards

This commit is contained in:
云服务部-叶林立
2026-09-02 15:34:29 +08:00
parent a4807dde67
commit 180da95ab7
79 changed files with 4263 additions and 9203 deletions
@@ -327,4 +327,32 @@ describe("PermissionResolver", () => {
expect(result).toEqual(["issue-1"]);
});
});
describe("hard-guard precedence", () => {
it("returns a hard deny before ordinary policy or session rules can allow it", () => {
const ordinary = makePermissionManager();
const hardGuard = makePermissionManager();
vi.mocked(hardGuard.check).mockReturnValue({
state: "deny",
toolName: "read",
source: "special",
origin: "global",
matchedPattern: "~/.ssh/**",
});
vi.mocked(hardGuard.getToolPermission).mockReturnValue("deny");
vi.mocked(hardGuard.getConfigIssues).mockReturnValue(["hard-guard issue"]);
const resolver = new PermissionResolver(
ordinary,
{ getRuleset: () => [] },
hardGuard,
);
const result = resolver.checkPermission("read", { path: "~/.ssh/id_ed25519" });
expect(result.state).toBe("deny");
expect(ordinary.check).not.toHaveBeenCalled();
expect(resolver.getToolPermission("read")).toBe("deny");
expect(resolver.getConfigIssues()).toContain("hard-guard issue");
});
});
});