mirror of
https://github.com/prompt-security/clawsec.git
synced 2026-06-21 09:21:21 +03:00
59d54ed778
* fix(release): map ClawHub publish slugs * fix(release): share skill platform parsing
46 lines
2.0 KiB
JavaScript
46 lines
2.0 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { resolveClawHubSlug } from "./ci/resolve_clawhub_slug.mjs";
|
|
import { collectDeclaredPlatforms, installAgentForSkill } from "./ci/skill_platforms.mjs";
|
|
|
|
const cases = [
|
|
["openclaw-traffic-guardian", ["openclaw"], "clawsec-openclaw-traffic-guardian"],
|
|
["openclaw-audit-watchdog", ["openclaw"], "clawsec-openclaw-audit-watchdog"],
|
|
["soul-guardian", ["openclaw"], "clawsec-openclaw-soul-guardian"],
|
|
["hermes-attestation-guardian", ["hermes"], "clawsec-hermes-attestation-guardian"],
|
|
["hermes-traffic-guardian", ["hermes"], "clawsec-hermes-traffic-guardian"],
|
|
["nanoclaw-traffic-guardian", ["nanoclaw"], "clawsec-nanoclaw-traffic-guardian"],
|
|
["picoclaw-security-guardian", ["picoclaw"], "clawsec-picoclaw-security-guardian"],
|
|
["picoclaw-self-pen-testing", ["picoclaw"], "clawsec-picoclaw-self-pen-testing"],
|
|
["picoclaw-traffic-guardian", ["picoclaw"], "clawsec-picoclaw-traffic-guardian"],
|
|
["clawtributor", ["openclaw", "nanoclaw", "hermes", "picoclaw"], "clawsec-clawtributor"],
|
|
["clawsec-feed", ["openclaw"], "clawsec-feed"],
|
|
["clawsec-suite", ["openclaw"], "clawsec-suite"],
|
|
];
|
|
|
|
for (const [name, platforms, expected] of cases) {
|
|
assert.equal(resolveClawHubSlug({ name, platforms }), expected, `${name} should map to ${expected}`);
|
|
assert.equal(resolveClawHubSlug({ name }), expected, `${name} should map to ${expected} without metadata`);
|
|
}
|
|
|
|
assert.throws(
|
|
() => resolveClawHubSlug({ name: "../openclaw-traffic-guardian", platforms: ["openclaw"] }),
|
|
/Invalid skill name/,
|
|
"unsafe skill names must be rejected",
|
|
);
|
|
|
|
assert.deepEqual(
|
|
collectDeclaredPlatforms({
|
|
platform: "openclaw",
|
|
platforms: ["hermes", "openclaw", ""],
|
|
picoclaw: { requires: {} },
|
|
}),
|
|
["openclaw", "hermes", "picoclaw"],
|
|
"declared platform parsing should combine legacy fields, arrays, and platform metadata keys",
|
|
);
|
|
|
|
assert.equal(
|
|
installAgentForSkill({ platform: "hermes" }, new Set(["codex", "hermes-agent", "openclaw"])),
|
|
"hermes-agent",
|
|
"install agent selection should reuse platform aliases",
|
|
);
|