mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-07 07:42:19 +01:00
test(claude): bind skills fixtures to explicit runner behavior
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
9708571b43
commit
804a38a4e1
4 files changed
+50
-13
No files matched your search
@@ -1005,6 +1005,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
desiredSkills: ["paperclip"],
|
||||
adapterConfig: {},
|
||||
}));
|
||||
@@ -1038,6 +1039,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
desiredSkills: [{
|
||||
key: "paperclipai/paperclip/paperclip",
|
||||
versionId: "22222222-2222-4222-8222-222222222222",
|
||||
@@ -1057,6 +1059,7 @@ describe("agent skill routes", () => {
|
||||
name: "Security Engineer",
|
||||
role: "security",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {},
|
||||
}));
|
||||
|
||||
@@ -1088,6 +1091,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {},
|
||||
instructionsBundle: {
|
||||
files: {
|
||||
@@ -1124,6 +1128,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {
|
||||
instructionsFilePath: "/tmp/existing/AGENTS.md",
|
||||
promptTemplate: "You are QA.",
|
||||
@@ -1150,6 +1155,7 @@ describe("agent skill routes", () => {
|
||||
name: "CEO",
|
||||
role: "ceo",
|
||||
adapterType,
|
||||
...(adapterType === "claude_local" ? { runner: "legacy" } : {}),
|
||||
adapterConfig: adapterType === "paperclip_runner" ? { provider: "codex" } : {},
|
||||
}));
|
||||
|
||||
@@ -1180,6 +1186,7 @@ describe("agent skill routes", () => {
|
||||
name: "Research Lead",
|
||||
role: "ceo",
|
||||
adapterType,
|
||||
...(adapterType === "claude_local" ? { runner: "legacy" } : {}),
|
||||
adapterConfig: adapterType === "paperclip_runner" ? { provider: "codex" } : {},
|
||||
instructionsBundle: { entryFile: "AGENTS.md", files: customFiles },
|
||||
}));
|
||||
@@ -1206,6 +1213,7 @@ describe("agent skill routes", () => {
|
||||
name: "Engineer",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {},
|
||||
}));
|
||||
|
||||
@@ -1233,6 +1241,7 @@ describe("agent skill routes", () => {
|
||||
name: "Ada",
|
||||
role: "general",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {},
|
||||
onboardingFirstAgent: true,
|
||||
}));
|
||||
@@ -1264,7 +1273,12 @@ describe("agent skill routes", () => {
|
||||
{ adapterType: "codex_local", runner: "legacy", platform: "darwin", expectedType: "codex_local" },
|
||||
{ adapterType: "codex_local", runner: "auto", platform: "win32", expectedType: "codex_local" },
|
||||
];
|
||||
it.each([...codexRunnerCases, { adapterType: "claude_local", runner: "auto", platform: "linux", expectedType: "claude_local" }].flatMap((runnerCase) => [
|
||||
const creationRunnerCases = [...codexRunnerCases,
|
||||
{ adapterType: "claude_local", runner: "auto", platform: "linux", expectedType: "claude_local" },
|
||||
{ adapterType: "claude_local", runner: "auto", platform: "darwin", expectedType: "paperclip_runner" },
|
||||
{ adapterType: "claude_local", runner: "legacy", platform: "darwin", expectedType: "claude_local" },
|
||||
];
|
||||
it.each(creationRunnerCases.flatMap((runnerCase) => [
|
||||
["agents", "paperclipai/paperclip/paperclip-create-agent"],
|
||||
["agent-hires", "paperclipai/paperclip/paperclip-create-agent"],
|
||||
["agents", "paperclip"],
|
||||
@@ -1288,7 +1302,7 @@ describe("agent skill routes", () => {
|
||||
expect(input.role).toBe("general");
|
||||
expect(input.adapterType).toBe(expectedType);
|
||||
const native = expectedType === "paperclip_runner";
|
||||
if (native) expect(input.adapterConfig.provider).toBe("codex");
|
||||
if (native) expect(input.adapterConfig).toMatchObject(adapterType === "claude_local" ? { provider: "acpx", acpxAgent: "claude", model: "claude-opus-5-5" } : { provider: "codex" });
|
||||
const canonicalKey = skill === "paperclip" ? "paperclipai/paperclip/paperclip" : skill;
|
||||
const expected = ["paperclip", "paperclip-board", "paperclip-converting-plans-to-tasks", "paperclip-create-agent", "para-memory-files", "first-task"]
|
||||
// Native PRP supplies the operational contract; role skills and their pins remain assigned.
|
||||
@@ -1308,17 +1322,17 @@ describe("agent skill routes", () => {
|
||||
expect(mockAgentService.create.mock.calls[0][1].adapterConfig.paperclipSkillSync).toBeUndefined();
|
||||
});
|
||||
|
||||
it.each(codexRunnerCases.flatMap((runnerCase) => ["agents", "agent-hires"].map((route) => ({ ...runnerCase, route }))))("assigns core skills without first-task to ordinary CEOs via $route using $runner on $platform", async ({ route, runner, platform, expectedType }) => {
|
||||
it.each(creationRunnerCases.flatMap((runnerCase) => ["agents", "agent-hires"].map((route) => ({ ...runnerCase, route }))))("assigns core skills without first-task to ordinary CEOs via $route using $runner on $platform", async ({ route, runner, platform, expectedType, adapterType }) => {
|
||||
runnerTarget.platform = platform;
|
||||
runnerTarget.architecture = platform === "darwin" ? "arm64" : "x64";
|
||||
const res = await request(await createApp())
|
||||
.post(`/api/companies/company-1/${route}`)
|
||||
.send({ name: "CEO", role: "ceo", adapterType: "codex_local", ...(runner === "auto" ? {} : { runner }) });
|
||||
.send({ name: "CEO", role: "ceo", adapterType, ...(runner === "auto" ? {} : { runner }) });
|
||||
expect(res.status, JSON.stringify(res.body)).toBe(201);
|
||||
const input = mockAgentService.create.mock.calls[0][1];
|
||||
expect(input.adapterType).toBe(expectedType);
|
||||
const native = expectedType === "paperclip_runner";
|
||||
if (native) expect(input.adapterConfig.provider).toBe("codex");
|
||||
if (native) expect(input.adapterConfig).toMatchObject(adapterType === "claude_local" ? { provider: "acpx", acpxAgent: "claude", model: "claude-opus-5-5" } : { provider: "codex" });
|
||||
const desiredSkills = input.adapterConfig.paperclipSkillSync.desiredSkills;
|
||||
const expected = ["paperclip", "paperclip-board", "paperclip-converting-plans-to-tasks", "paperclip-create-agent", "para-memory-files"]
|
||||
.filter((name) => !native || name !== "paperclip")
|
||||
@@ -1334,7 +1348,8 @@ describe("agent skill routes", () => {
|
||||
type: "agent", agentId: "11111111-1111-4111-8111-111111111111", companyId: "company-1",
|
||||
}))
|
||||
.post("/api/companies/company-1/agent-hires")
|
||||
.send({ name: "Biff", role: "general", adapterType: "claude_local", onboardingFirstAgent: true });
|
||||
.send({ name: "Biff", role: "general", adapterType: "claude_local",
|
||||
runner: "legacy", onboardingFirstAgent: true });
|
||||
expect(res.status, JSON.stringify(res.body)).toBe(201);
|
||||
expect(mockAgentService.create.mock.calls[0][1].adapterConfig.paperclipSkillSync).toBeUndefined();
|
||||
await vi.waitFor(() => expect(mockAgentInstructionsService.materializeManagedBundle).toHaveBeenCalled());
|
||||
@@ -1371,6 +1386,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
desiredSkills: ["paperclip"],
|
||||
adapterConfig: {},
|
||||
});
|
||||
@@ -1396,6 +1412,7 @@ describe("agent skill routes", () => {
|
||||
name: "First Lead",
|
||||
role: "ceo",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {},
|
||||
});
|
||||
|
||||
@@ -1453,6 +1470,7 @@ describe("agent skill routes", () => {
|
||||
name: "First Lead",
|
||||
role: "ceo",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
desiredSkills: ["paperclip"],
|
||||
adapterConfig: {},
|
||||
});
|
||||
@@ -1474,6 +1492,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {},
|
||||
});
|
||||
|
||||
@@ -1491,6 +1510,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
desiredSkills: [{
|
||||
key: "paperclipai/paperclip/paperclip",
|
||||
versionId: "22222222-2222-4222-8222-222222222222",
|
||||
@@ -1515,6 +1535,7 @@ describe("agent skill routes", () => {
|
||||
role: "engineer",
|
||||
icon: "crown",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
desiredSkills: ["paperclip"],
|
||||
adapterConfig: {},
|
||||
sourceIssueId,
|
||||
@@ -1569,6 +1590,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {},
|
||||
instructionsBundle: {
|
||||
files: {
|
||||
@@ -1605,6 +1627,7 @@ describe("agent skill routes", () => {
|
||||
name: "QA Agent",
|
||||
role: "engineer",
|
||||
adapterType: "claude_local",
|
||||
runner: "legacy",
|
||||
adapterConfig: {
|
||||
instructionsFilePath: "/tmp/existing/AGENTS.md",
|
||||
promptTemplate: "You are QA.",
|
||||
|
||||
Reference in new issue
Block a user