import { describe, expect, it, vi } from "vitest"; let mockCfg: unknown = {}; vi.mock("../config/config.js", async (importOriginal) => { const actual = await importOriginal(); return { ...actual, loadConfig: vi.fn().mockImplementation(() => mockCfg), }; }); describe("sandbox explain command", () => { it("prints JSON shape + fix-it keys", async () => { mockCfg = { agents: { defaults: { sandbox: { mode: "all", scope: "agent", workspaceAccess: "none" }, }, }, tools: { sandbox: { tools: { deny: ["browser"] } }, elevated: { enabled: true, allowFrom: { whatsapp: ["*"] } }, }, session: { store: "/tmp/clawdbot-test-sessions-{agentId}.json" }, }; const { sandboxExplainCommand } = await import("./sandbox-explain.js"); const logs: string[] = []; await sandboxExplainCommand({ json: true, session: "agent:main:main" }, { log: (msg: string) => logs.push(msg), error: (msg: string) => logs.push(msg), exit: (_code: number) => {}, } as unknown as Parameters[1]); const out = logs.join(""); const parsed = JSON.parse(out); expect(parsed).toHaveProperty("docsUrl", "https://docs.clawd.bot/sandbox"); expect(parsed).toHaveProperty("sandbox.mode", "all"); expect(parsed).toHaveProperty("sandbox.tools.sources.allow.source"); expect(Array.isArray(parsed.fixIt)).toBe(true); expect(parsed.fixIt).toContain("agents.defaults.sandbox.mode=off"); expect(parsed.fixIt).toContain("tools.sandbox.tools.deny"); }, 15_000); });