test(sessions): cover sandbox session-tools context

This commit is contained in:
Peter Steinberger
2026-02-16 03:00:25 +00:00
parent 7a4a068124
commit 82333add95

View File

@@ -4,6 +4,8 @@ import {
createAgentToAgentPolicy,
createSessionVisibilityGuard,
resolveEffectiveSessionToolsVisibility,
resolveSandboxSessionToolsVisibility,
resolveSandboxedSessionToolContext,
resolveSessionToolsVisibility,
} from "./sessions-access.js";
@@ -44,6 +46,43 @@ describe("resolveEffectiveSessionToolsVisibility", () => {
});
});
describe("sandbox session-tools context", () => {
it("defaults sandbox visibility clamp to spawned", () => {
expect(resolveSandboxSessionToolsVisibility({} as OpenClawConfig)).toBe("spawned");
});
it("restricts non-subagent sandboxed sessions to spawned visibility", () => {
const cfg = {
tools: { sessions: { visibility: "all" } },
agents: { defaults: { sandbox: { sessionToolsVisibility: "spawned" } } },
} as OpenClawConfig;
const context = resolveSandboxedSessionToolContext({
cfg,
agentSessionKey: "agent:main:main",
sandboxed: true,
});
expect(context.restrictToSpawned).toBe(true);
expect(context.requesterInternalKey).toBe("agent:main:main");
expect(context.effectiveRequesterKey).toBe("agent:main:main");
});
it("does not restrict subagent sessions in sandboxed mode", () => {
const cfg = {
tools: { sessions: { visibility: "all" } },
agents: { defaults: { sandbox: { sessionToolsVisibility: "spawned" } } },
} as OpenClawConfig;
const context = resolveSandboxedSessionToolContext({
cfg,
agentSessionKey: "agent:main:subagent:abc",
sandboxed: true,
});
expect(context.restrictToSpawned).toBe(false);
expect(context.requesterInternalKey).toBe("agent:main:subagent:abc");
});
});
describe("createAgentToAgentPolicy", () => {
it("denies cross-agent access when disabled", () => {
const policy = createAgentToAgentPolicy({} as OpenClawConfig);