plugnz 0.0.25 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugnz.mjs +52 -2
- package/package.json +1 -1
package/dist/plugnz.mjs
CHANGED
|
@@ -18575,6 +18575,12 @@ function createClaudeCodeLifecycleHost(input) {
|
|
|
18575
18575
|
return decision;
|
|
18576
18576
|
if (request.operation !== "install" && request.operation !== "update")
|
|
18577
18577
|
return decision;
|
|
18578
|
+
if (request.snapshot.inventory.hookDeclarations.some((declaration) => declaration.form === "portable-hooks") && !claudeReflectionPermissionsSupported(request.snapshot.inventory, request.snapshot.packageRoot)) {
|
|
18579
|
+
return selectLifecycleRoute(definition.id, definition.evidenceProfiles.map((profile) => ({
|
|
18580
|
+
...profile,
|
|
18581
|
+
semantics: { ...profile.semantics, "ordinary-skills": "unsupported", agents: "unsupported", "permissions-preprocessing": "unsupported" }
|
|
18582
|
+
})), request);
|
|
18583
|
+
}
|
|
18578
18584
|
if (request.snapshot.inventory.componentDefinitions.some((component) => component.kind === "agent" && (component.root !== "agents" || component.dialect !== "markdown"))) {
|
|
18579
18585
|
return selectLifecycleRoute(definition.id, definition.evidenceProfiles.map((profile) => ({
|
|
18580
18586
|
...profile,
|
|
@@ -18618,12 +18624,56 @@ function claudeRouteEvidence(contracts, facts) {
|
|
|
18618
18624
|
return { route: "managed", hold: "same-version-bytes" };
|
|
18619
18625
|
return { route: "native", proofId: `claude-native-update-${contract.version}-git` };
|
|
18620
18626
|
}
|
|
18627
|
+
function claudeReflectionPermissionsSupported(inventory, root) {
|
|
18628
|
+
const agents = inventory.componentDefinitions.filter((component) => component.kind === "agent");
|
|
18629
|
+
const agentPaths = new Set(agents.map((component) => component.path));
|
|
18630
|
+
if (inventory.components.permissionsPreprocessing.some((path) => !agentPaths.has(path)))
|
|
18631
|
+
return false;
|
|
18632
|
+
if (!inventory.components.skills.every((path) => {
|
|
18633
|
+
try {
|
|
18634
|
+
const raw = readFileSync21(join27(root, path), "utf8");
|
|
18635
|
+
const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/u.exec(raw);
|
|
18636
|
+
if (!match || /!`[\s\S]*?`/u.test(raw))
|
|
18637
|
+
return false;
|
|
18638
|
+
const header = yamlParse(match[1] ?? "");
|
|
18639
|
+
return !PERMISSION_FIELDS.some((field) => Object.hasOwn(header, field));
|
|
18640
|
+
} catch {
|
|
18641
|
+
return false;
|
|
18642
|
+
}
|
|
18643
|
+
}))
|
|
18644
|
+
return false;
|
|
18645
|
+
return agents.every((component) => {
|
|
18646
|
+
if (component.root !== "agents" || component.dialect !== "markdown")
|
|
18647
|
+
return false;
|
|
18648
|
+
try {
|
|
18649
|
+
const raw = readFileSync21(join27(root, component.path), "utf8");
|
|
18650
|
+
const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/u.exec(raw);
|
|
18651
|
+
if (!match || /!`[\s\S]*?`/u.test(raw))
|
|
18652
|
+
return false;
|
|
18653
|
+
const header = yamlParse(match[1] ?? "");
|
|
18654
|
+
if (Object.keys(header).some((key) => !["name", "description", "model", "tools"].includes(key)) || header["model"] !== "inherit")
|
|
18655
|
+
return false;
|
|
18656
|
+
const tools = typeof header["tools"] === "string" ? header["tools"].split(",").map((tool) => tool.trim()).sort() : [];
|
|
18657
|
+
return tools.length === 2 && tools[0] === "Read" && tools[1] === "Write";
|
|
18658
|
+
} catch {
|
|
18659
|
+
return false;
|
|
18660
|
+
}
|
|
18661
|
+
});
|
|
18662
|
+
}
|
|
18663
|
+
function claudeReflectionHookProfile() {
|
|
18664
|
+
const hooks = portableHookProfile(hookAdapter, "managed", ["install", "update", "disable", "retire"]);
|
|
18665
|
+
return createCapabilityEvidenceProfile({
|
|
18666
|
+
...hooks,
|
|
18667
|
+
semantics: { ...hooks.semantics, "ordinary-skills": "supported", agents: "supported", "permissions-preprocessing": "supported" },
|
|
18668
|
+
evidence: [...hooks.evidence, "docs/evidence/claude-code-2.1.285-reflection-20261016.json"]
|
|
18669
|
+
});
|
|
18670
|
+
}
|
|
18621
18671
|
function claudeCodeLifecycleDefinition(contracts) {
|
|
18622
18672
|
const version = claudeVersionObservation(observeClaudeCodeVersion());
|
|
18623
18673
|
const detectedVersion = version.kind === "detected" ? version.version : undefined;
|
|
18624
18674
|
return {
|
|
18625
18675
|
id: "claude-code",
|
|
18626
|
-
evidenceProfiles: [...claudeEvidenceProfiles(detectedVersion, contracts),
|
|
18676
|
+
evidenceProfiles: [...claudeEvidenceProfiles(detectedVersion, contracts), claudeReflectionHookProfile()],
|
|
18627
18677
|
probeVersion: async () => version,
|
|
18628
18678
|
observeTarget: async (target) => ({ target, installations: observeClaudeInstallations(target, detectedVersion) }),
|
|
18629
18679
|
observeNativeMutationScope: async (request) => ({
|
|
@@ -34128,7 +34178,7 @@ function legacyCommandAction(command) {
|
|
|
34128
34178
|
// package.json
|
|
34129
34179
|
var package_default = {
|
|
34130
34180
|
name: "plugnz",
|
|
34131
|
-
version: "0.0.
|
|
34181
|
+
version: "0.0.26",
|
|
34132
34182
|
description: "Install, diagnose and update agent plugins (Agent Plugins spec) and MCP configs across Claude Code, Codex, Cursor, Kimi and more",
|
|
34133
34183
|
license: "MIT",
|
|
34134
34184
|
type: "module",
|
package/package.json
CHANGED