Add --skills flag to company export CLI and fix unsupported URL import path
- Add first-class --skills <list> option to `paperclipai company export`, passing through to the existing service support for skill selection - Remove broken `type: "url"` source branch from import command — the shared schema and server only accept `inline | github`, so non-GitHub HTTP URLs now error clearly instead of failing at validation - Export isHttpUrl/isGithubUrl helpers for testability - Add server tests for skills-filtered export (selected + fallback) - Add CLI tests for URL detection helpers Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -356,6 +356,42 @@ describe("company portability", () => {
|
||||
expect(asTextFile(exported.files["skills/paperclipai/paperclip/paperclip/references/api.md"])).toContain("# API");
|
||||
});
|
||||
|
||||
it("exports only selected skills when skills filter is provided", async () => {
|
||||
const portability = companyPortabilityService({} as any);
|
||||
|
||||
const exported = await portability.exportBundle("company-1", {
|
||||
include: {
|
||||
company: true,
|
||||
agents: true,
|
||||
projects: false,
|
||||
issues: false,
|
||||
},
|
||||
skills: ["company-playbook"],
|
||||
});
|
||||
|
||||
expect(exported.files["skills/company/PAP/company-playbook/SKILL.md"]).toBeDefined();
|
||||
expect(asTextFile(exported.files["skills/company/PAP/company-playbook/SKILL.md"])).toContain("# Company Playbook");
|
||||
expect(exported.files["skills/paperclipai/paperclip/paperclip/SKILL.md"]).toBeUndefined();
|
||||
});
|
||||
|
||||
it("warns and exports all skills when skills filter matches nothing", async () => {
|
||||
const portability = companyPortabilityService({} as any);
|
||||
|
||||
const exported = await portability.exportBundle("company-1", {
|
||||
include: {
|
||||
company: true,
|
||||
agents: true,
|
||||
projects: false,
|
||||
issues: false,
|
||||
},
|
||||
skills: ["nonexistent-skill"],
|
||||
});
|
||||
|
||||
expect(exported.warnings).toContainEqual(expect.stringContaining("nonexistent-skill"));
|
||||
expect(exported.files["skills/company/PAP/company-playbook/SKILL.md"]).toBeDefined();
|
||||
expect(exported.files["skills/paperclipai/paperclip/paperclip/SKILL.md"]).toBeDefined();
|
||||
});
|
||||
|
||||
it("exports the company logo into images/ and references it from .paperclip.yaml", async () => {
|
||||
const storage = {
|
||||
getObject: vi.fn().mockResolvedValue({
|
||||
|
||||
Reference in New Issue
Block a user