





























@@ -13,7 +13,7 @@ vi.unmock("./exec-approvals.js");
1313vi.unmock("./exec-approvals-effective.js");
14141515let collectExecPolicyScopeSnapshots: typeof import("./exec-approvals-effective.js").collectExecPolicyScopeSnapshots;
16-let resolveExecPolicyScopeSummary: typeof import("./exec-approvals-effective.js").resolveExecPolicyScopeSummary;
16+let resolveExecPolicyScopeSnapshot: typeof import("./exec-approvals-effective.js").resolveExecPolicyScopeSnapshot;
1717let evaluateExecAllowlist: typeof import("./exec-approvals.js").evaluateExecAllowlist;
1818let hasDurableExecApproval: typeof import("./exec-approvals.js").hasDurableExecApproval;
1919let maxAsk: typeof import("./exec-approvals.js").maxAsk;
@@ -40,7 +40,7 @@ async function loadActualExecApprovalModules(): Promise<void> {
4040"./exec-approvals-effective.js",
4141);
4242collectExecPolicyScopeSnapshots = effective.collectExecPolicyScopeSnapshots;
43-resolveExecPolicyScopeSummary = effective.resolveExecPolicyScopeSummary;
43+resolveExecPolicyScopeSnapshot = effective.resolveExecPolicyScopeSnapshot;
4444evaluateExecAllowlist = execApprovals.evaluateExecAllowlist;
4545hasDurableExecApproval = execApprovals.hasDurableExecApproval;
4646maxAsk = execApprovals.maxAsk;
@@ -62,6 +62,14 @@ async function loadActualExecApprovalModules(): Promise<void> {
6262resolveExecPolicyForMode = execApprovals.resolveExecPolicyForMode;
6363}
646465+function summarizeExecPolicyScopeSnapshot(
66+params: Parameters<typeof resolveExecPolicyScopeSnapshot>[0],
67+): Omit<ReturnType<typeof resolveExecPolicyScopeSnapshot>, "allowedDecisions"> {
68+const { allowedDecisions: _allowedDecisions, ...summary } =
69+resolveExecPolicyScopeSnapshot(params);
70+return summary;
71+}
72+6573function expectFields(value: unknown, expected: Record<string, unknown>): void {
6674if (!value || typeof value !== "object") {
6775throw new Error("expected fields object");
@@ -84,7 +92,7 @@ function expectMalformedAgentAskUsesDefaults(agentAsk: unknown): void {
8492},
8593},
8694} as unknown as ExecApprovalsFile;
87-const summary = resolveExecPolicyScopeSummary({
95+const summary = summarizeExecPolicyScopeSnapshot({
8896 approvals,
8997globalExecConfig: {
9098ask: "off",
@@ -410,7 +418,7 @@ describe("exec approvals policy helpers", () => {
410418});
411419412420it("explains stricter host security and ask precedence", () => {
413-const summary = resolveExecPolicyScopeSummary({
421+const summary = summarizeExecPolicyScopeSnapshot({
414422approvals: {
415423version: 1,
416424defaults: {
@@ -448,7 +456,7 @@ describe("exec approvals policy helpers", () => {
448456});
449457450458it("maps normalized requested mode into policy snapshots", () => {
451-const summary = resolveExecPolicyScopeSummary({
459+const summary = summarizeExecPolicyScopeSnapshot({
452460approvals: {
453461version: 1,
454462},
@@ -478,7 +486,7 @@ describe("exec approvals policy helpers", () => {
478486});
479487480488it("lets narrower legacy policy override a global normalized mode in snapshots", () => {
481-const summary = resolveExecPolicyScopeSummary({
489+const summary = summarizeExecPolicyScopeSnapshot({
482490approvals: {
483491version: 1,
484492},
@@ -508,7 +516,7 @@ describe("exec approvals policy helpers", () => {
508516});
509517510518it("preserves mode-derived siblings for partial narrower legacy policy snapshots", () => {
511-const summary = resolveExecPolicyScopeSummary({
519+const summary = summarizeExecPolicyScopeSnapshot({
512520approvals: {
513521version: 1,
514522},
@@ -538,7 +546,7 @@ describe("exec approvals policy helpers", () => {
538546});
539547540548it("reports full plus on-miss as full because on-miss only gates allowlist misses", () => {
541-const summary = resolveExecPolicyScopeSummary({
549+const summary = summarizeExecPolicyScopeSnapshot({
542550approvals: {
543551version: 1,
544552},
@@ -568,7 +576,7 @@ describe("exec approvals policy helpers", () => {
568576});
569577570578it("uses the actual approvals path when reporting host sources", () => {
571-const summary = resolveExecPolicyScopeSummary({
579+const summary = summarizeExecPolicyScopeSnapshot({
572580approvals: {
573581version: 1,
574582defaults: {
@@ -599,7 +607,7 @@ describe("exec approvals policy helpers", () => {
599607const stateDir = path.join(process.cwd(), ".tmp-openclaw-state");
600608process.env.OPENCLAW_STATE_DIR = stateDir;
601609try {
602-const summary = resolveExecPolicyScopeSummary({
610+const summary = summarizeExecPolicyScopeSnapshot({
603611approvals: {
604612version: 1,
605613defaults: {
@@ -626,7 +634,7 @@ describe("exec approvals policy helpers", () => {
626634});
627635628636it("does not let host ask=off suppress a stricter requested ask", () => {
629-const summary = resolveExecPolicyScopeSummary({
637+const summary = summarizeExecPolicyScopeSnapshot({
630638approvals: {
631639version: 1,
632640defaults: {
@@ -649,7 +657,7 @@ describe("exec approvals policy helpers", () => {
649657});
650658651659it("clamps askFallback to the effective security", () => {
652-const summary = resolveExecPolicyScopeSummary({
660+const summary = summarizeExecPolicyScopeSnapshot({
653661approvals: {
654662version: 1,
655663defaults: {
@@ -685,7 +693,7 @@ describe("exec approvals policy helpers", () => {
685693});
686694687695it("attributes host policy to wildcard agent entries before defaults", () => {
688-const summary = resolveExecPolicyScopeSummary({
696+const summary = summarizeExecPolicyScopeSnapshot({
689697approvals: {
690698version: 1,
691699defaults: {
@@ -725,7 +733,7 @@ describe("exec approvals policy helpers", () => {
725733});
726734727735it("inherits requested agent policy from global tools.exec config", () => {
728-const summary = resolveExecPolicyScopeSummary({
736+const summary = summarizeExecPolicyScopeSnapshot({
729737approvals: {
730738version: 1,
731739agents: {
@@ -759,7 +767,7 @@ describe("exec approvals policy helpers", () => {
759767});
760768761769it("reports askFallback from the OpenClaw default when approvals omit it", () => {
762-const summary = resolveExecPolicyScopeSummary({
770+const summary = summarizeExecPolicyScopeSnapshot({
763771approvals: {
764772version: 1,
765773agents: {},
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。