refactor(permission-system): simplify policy and autoreview flow

This commit is contained in:
云服务部-叶林立
2026-09-03 02:01:06 +08:00
parent 180da95ab7
commit 6e7effa792
112 changed files with 911 additions and 10346 deletions
@@ -13,82 +13,23 @@ import { createPermissionSystemLogger } from "#src/logging";
import type { ResolvedPolicyPaths } from "#src/permission-manager";
import { PermissionManager } from "#src/permission-manager";
test("buildResolvedConfigLogEntry includes policy paths and legacy detection flags", () => {
test("buildResolvedConfigLogEntry reports global and agent policy paths", () => {
const policyPaths: ResolvedPolicyPaths = {
globalConfigPath:
"/home/user/.pi/agent/extensions/pi-permission-system/config.json",
globalConfigPath: "/home/user/.pi/agent/extensions/pi-permission-system/policy.jsonc",
globalConfigExists: true,
projectConfigPath:
"/projects/my-app/.pi/extensions/pi-permission-system/config.json",
projectConfigExists: false,
agentsDir: "/home/user/.pi/agent/agents",
agentsDirExists: true,
projectAgentsDir: "/projects/my-app/.pi/agent/agents",
projectAgentsDirExists: false,
};
const result = buildResolvedConfigLogEntry({ policyPaths });
expect(result.globalConfigPath).toBe(
"/home/user/.pi/agent/extensions/pi-permission-system/config.json",
);
expect(result.globalConfigExists).toBe(true);
expect(result.projectConfigPath).toBe(
"/projects/my-app/.pi/extensions/pi-permission-system/config.json",
);
expect(result.projectConfigExists).toBe(false);
expect(result.agentsDir).toBe("/home/user/.pi/agent/agents");
expect(result.agentsDirExists).toBe(true);
expect(result.projectAgentsDir).toBe("/projects/my-app/.pi/agent/agents");
expect(result.projectAgentsDirExists).toBe(false);
expect(result.legacyGlobalPolicyDetected).toBe(false);
expect(result.legacyProjectPolicyDetected).toBe(false);
expect(result.legacyExtensionConfigDetected).toBe(false);
});
test("buildResolvedConfigLogEntry handles null project paths", () => {
const policyPaths: ResolvedPolicyPaths = {
globalConfigPath:
"/home/user/.pi/agent/extensions/pi-permission-system/config.json",
globalConfigExists: false,
projectConfigPath: null,
projectConfigExists: false,
agentsDir: "/home/user/.pi/agent/agents",
agentsDirExists: false,
projectAgentsDir: null,
projectAgentsDirExists: false,
};
const result = buildResolvedConfigLogEntry({ policyPaths });
expect(result.projectConfigPath).toBe(null);
expect(result.projectConfigExists).toBe(false);
expect(result.projectAgentsDir).toBe(null);
expect(result.projectAgentsDirExists).toBe(false);
});
test("buildResolvedConfigLogEntry surfaces legacy detection flags", () => {
const policyPaths: ResolvedPolicyPaths = {
globalConfigPath:
"/home/user/.pi/agent/extensions/pi-permission-system/config.json",
globalConfigExists: true,
projectConfigPath: null,
projectConfigExists: false,
agentsDir: "/home/user/.pi/agent/agents",
agentsDirExists: false,
projectAgentsDir: null,
projectAgentsDirExists: false,
};
const result = buildResolvedConfigLogEntry({
policyPaths,
legacyGlobalPolicyDetected: true,
legacyExtensionConfigDetected: true,
expect(result).toEqual({
...policyPaths,
legacyGlobalPolicyDetected: false,
legacyExtensionConfigDetected: false,
});
expect(result.legacyGlobalPolicyDetected).toBe(true);
expect(result.legacyProjectPolicyDetected).toBe(false);
expect(result.legacyExtensionConfigDetected).toBe(true);
});
test("config.resolved entry appears in review log via logger", () => {
@@ -135,12 +76,9 @@ test("config.resolved entry appears in review log via logger", () => {
expect(parsed.globalConfigExists).toBe(true);
expect(parsed.agentsDir).toBe(agentsDir);
expect(parsed.agentsDirExists).toBe(false);
expect(parsed.projectConfigPath).toBe(null);
expect(parsed.projectConfigExists).toBe(false);
expect(parsed.projectAgentsDir).toBe(null);
expect(parsed.projectAgentsDirExists).toBe(false);
expect(parsed.legacyGlobalPolicyDetected).toBe(false);
expect(parsed.legacyProjectPolicyDetected).toBe(false);
expect(parsed.legacyExtensionConfigDetected).toBe(false);
} finally {
rmSync(tempDir, { recursive: true, force: true });