paperclip/packages/adapter-utils/src/paperclip-runner-permission...

59 lines
2.2 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
PAPERCLIP_RUNNER_DEFAULT_MODELS,
isPaperclipRunnerProvider,
resolvePaperclipRunnerModel,
resolvePaperclipRunnerPermissionMode,
} from "./paperclip-runner-permissions.js";
describe("Paperclip Runner permission defaults", () => {
it("defaults Codex to the only qualified non-interactive mode", () => {
expect(resolvePaperclipRunnerPermissionMode("codex", undefined)).toBe(
"never",
);
expect(resolvePaperclipRunnerPermissionMode("codex", "on-request")).toBe("never");
expect(resolvePaperclipRunnerPermissionMode("codex", "untrusted")).toBe("never");
});
it("uses interactive defaults for dormant non-Codex providers", () => {
expect(resolvePaperclipRunnerPermissionMode("opencode", undefined)).toBe(
"ask",
);
expect(resolvePaperclipRunnerPermissionMode("acpx", undefined)).toBe(
"approve-reads",
);
});
it("recognizes only exact provider identifiers", () => {
expect(isPaperclipRunnerProvider("codex")).toBe(true);
expect(isPaperclipRunnerProvider("opencode")).toBe(true);
expect(isPaperclipRunnerProvider("claude_managed")).toBe(true);
expect(isPaperclipRunnerProvider("aws_agentcore")).toBe(true);
expect(isPaperclipRunnerProvider("acpx")).toBe(true);
expect(isPaperclipRunnerProvider("toString")).toBe(false);
expect(isPaperclipRunnerProvider("__proto__")).toBe(false);
});
it("keeps managed provider permissions under the qualified profile", () => {
expect(resolvePaperclipRunnerPermissionMode("claude_managed", "never"))
.toBe("provider-managed");
expect(resolvePaperclipRunnerPermissionMode("aws_agentcore", "approve-all"))
.toBe("provider-managed");
});
it("uses the Codex default for missing or blank models", () => {
expect(resolvePaperclipRunnerModel("codex", undefined)).toBe(
PAPERCLIP_RUNNER_DEFAULT_MODELS.codex,
);
expect(resolvePaperclipRunnerModel("codex", " ")).toBe(
PAPERCLIP_RUNNER_DEFAULT_MODELS.codex,
);
});
it("preserves an explicit Codex model", () => {
expect(resolvePaperclipRunnerModel("codex", "gpt-5.5")).toBe("gpt-5.5");
expect(resolvePaperclipRunnerModel("codex", " gpt-5.5 ")).toBe("gpt-5.5");
});
});