patchcord 0.6.8 → 0.6.9

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "patchcord",
3
3
  "description": "Cross-machine agent messaging. Messages from other agents land in the inbox and wake the agent to reply.",
4
- "version": "0.6.8",
4
+ "version": "0.6.9",
5
5
  "author": {
6
6
  "name": "ppravdin"
7
7
  },
package/bin/patchcord.mjs CHANGED
@@ -1952,16 +1952,30 @@ if (!cmd || cmd === "install" || cmd === "agent" || cmd?.startsWith("--")) {
1952
1952
  if (removedStaleGlobal) {
1953
1953
  globalChanges.push("Removed global Patchcord skills/instructions (agy reads ~/.gemini/skills — per-project only)");
1954
1954
  }
1955
- // agy-cli loads ALL of ~/.gemini/skills in every folder warn if orchestrator/mux
1956
- // skills are present (they mention patchcord/inbox and trigger CLI/token scavenging).
1955
+ // agy-cli loads ALL of ~/.gemini/skills in every folder. Gemini CLI uses
1956
+ // ~/.gemini/commands for patchcord NOT this dir. Purge orchestrator/mux/
1957
+ // actor skills that were copied here by mistake (they trigger patchcord hunts
1958
+ // without MCP). Silent — never ask the user to clean up by hand.
1957
1959
  const geminiSkillsRoot = join(HOME, ".gemini", "skills");
1960
+ const isAgyGlobalSkillLeak = (name) => {
1961
+ const n = name.toLowerCase();
1962
+ if (n.startsWith("patchcord")) return true;
1963
+ if (n.startsWith("orchestrator")) return true;
1964
+ if (n.startsWith("actor-") || n.startsWith("actor:")) return true;
1965
+ if (n === "mux" || n.startsWith("mux-")) return true;
1966
+ if (n === "team-ops") return true;
1967
+ return false;
1968
+ };
1958
1969
  if (existsSync(geminiSkillsRoot)) {
1959
- const noisy = ["orchestrator-comms", "orchestrator-team", "orchestrator-flow", "mux", "actor-lead", "actor-team-lead", "patchcord"];
1960
- let entries = [];
1961
- try { entries = readdirSync(geminiSkillsRoot, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name); } catch {}
1962
- const found = entries.filter((n) => noisy.some((p) => n.includes(p)));
1963
- if (found.length) {
1964
- console.log(` ${yellow}warning:${r} ~/.gemini/skills has global skills (${found.join(", ")}) — agy-cli reads them in every folder and may hunt patchcord without MCP. Keep orchestrator/patchcord skills in ~/.claude/skills or per-project .agents/skills only.`);
1970
+ let removedLeaked = 0;
1971
+ try {
1972
+ for (const ent of readdirSync(geminiSkillsRoot, { withFileTypes: true })) {
1973
+ if (!ent.isDirectory() || !isAgyGlobalSkillLeak(ent.name)) continue;
1974
+ try { rmSync(join(geminiSkillsRoot, ent.name), { recursive: true, force: true }); removedLeaked++; } catch {}
1975
+ }
1976
+ } catch {}
1977
+ if (removedLeaked > 0) {
1978
+ globalChanges.push(`Removed ${removedLeaked} leaked skill(s) from ~/.gemini/skills (agy global read path)`);
1965
1979
  }
1966
1980
  }
1967
1981
  // true = configured, false = file absent (definitely not), null = unparseable (unknown)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchcord",
3
- "version": "0.6.8",
3
+ "version": "0.6.9",
4
4
  "description": "Cross-machine agent messaging for Claude Code and Codex",
5
5
  "scripts": {
6
6
  "version": "node scripts/sync-plugin-version.mjs && git add .claude-plugin/plugin.json"