import { describe, expect, it } from "vitest" ;
import type { OpenClawConfig } from "../config/config.js" ;
import {
isAcpAgentAllowedByPolicy,
isAcpDispatchEnabledByPolicy,
isAcpEnabledByPolicy,
resolveAcpAgentPolicyError,
resolveAcpDispatchPolicyError,
resolveAcpDispatchPolicyMessage,
resolveAcpDispatchPolicyState,
} from "./policy.js" ;
describe("acp policy" , () => {
it("treats ACP + ACP dispatch as enabled by default" , () => {
const cfg = {} satisfies OpenClawConfig;
expect(isAcpEnabledByPolicy(cfg)).toBe(true );
expect(isAcpDispatchEnabledByPolicy(cfg)).toBe(true );
expect(resolveAcpDispatchPolicyState(cfg)).toBe("enabled" );
});
it("reports ACP disabled state when acp.enabled is false" , () => {
const cfg = {
acp: {
enabled: false ,
},
} satisfies OpenClawConfig;
expect(isAcpEnabledByPolicy(cfg)).toBe(false );
expect(resolveAcpDispatchPolicyState(cfg)).toBe("acp_disabled" );
expect(resolveAcpDispatchPolicyMessage(cfg)).toContain("acp.enabled=false" );
expect(resolveAcpDispatchPolicyError(cfg)?.code).toBe("ACP_DISPATCH_DISABLED" );
});
it("reports dispatch-disabled state when dispatch gate is false" , () => {
const cfg = {
acp: {
enabled: true ,
dispatch: {
enabled: false ,
},
},
} satisfies OpenClawConfig;
expect(isAcpDispatchEnabledByPolicy(cfg)).toBe(false );
expect(resolveAcpDispatchPolicyState(cfg)).toBe("dispatch_disabled" );
expect(resolveAcpDispatchPolicyMessage(cfg)).toContain("acp.dispatch.enabled=false" );
});
it("applies allowlist filtering for ACP agents" , () => {
const cfg = {
acp: {
allowedAgents: ["Codex" , "claude-code" , "kimi" ],
},
} satisfies OpenClawConfig;
expect(isAcpAgentAllowedByPolicy(cfg, "codex" )).toBe(true );
expect(isAcpAgentAllowedByPolicy(cfg, "claude-code" )).toBe(true );
expect(isAcpAgentAllowedByPolicy(cfg, "KIMI" )).toBe(true );
expect(isAcpAgentAllowedByPolicy(cfg, "gemini" )).toBe(false );
expect(resolveAcpAgentPolicyError(cfg, "gemini" )?.code).toBe("ACP_SESSION_INIT_FAILED" );
expect(resolveAcpAgentPolicyError(cfg, "codex" )).toBeNull();
});
});
Messung V0.5 in Prozent C=99 H=97 G=97
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland