plugins 1.2.10-canary.1 → 1.2.10-canary.2

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.
Files changed (2) hide show
  1. package/dist/index.js +4 -104
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -725,75 +725,15 @@ async function stageInstallWorkspace(plugins, repoPath, targetId, stagingBaseDir
725
725
  };
726
726
  }
727
727
  async function installToClaudeCode(plugins, scope, repoPath, source) {
728
- const marketplaceName = plugins[0]?.marketplace ?? deriveMarketplaceName(source);
729
- step("Preparing plugins for Claude Code...");
730
- barEmpty();
731
- await prepareForClaudeCode(plugins, repoPath, marketplaceName);
732
- const marketplaceSource = isAnthropicSource(source) ? normalizeGitUrl(source) : repoPath;
733
- const claudePath = findClaude();
734
- step("Adding marketplace");
735
- barDebug(c.dim(`Binary: ${claudePath}`));
736
- try {
737
- const version = execSync2(`${claudePath} --version`, { encoding: "utf-8", stdio: "pipe" }).trim();
738
- barDebug(c.dim(`Version: ${version}`));
739
- } catch {
740
- barDebug(c.dim(`Warning: could not get claude version`));
741
- }
742
- try {
743
- const result = execSync2(`${claudePath} plugin marketplace add ${marketplaceSource}`, {
744
- encoding: "utf-8",
745
- stdio: "pipe"
746
- });
747
- if (result.trim()) barDebug(c.dim(result.trim()));
748
- stepDone("Marketplace added");
749
- } catch (err) {
750
- const stderr = err.stderr?.toString().trim() ?? "";
751
- const stdout = err.stdout?.toString().trim() ?? "";
752
- if (stderr.includes("already") || stdout.includes("already")) {
753
- stepDone(`Marketplace ${c.dim("'" + marketplaceName + "'")} already on disk`);
754
- } else {
755
- stepError("Failed to add marketplace.");
756
- barLine(c.dim(`Command: ${claudePath} plugin marketplace add ${marketplaceSource}`));
757
- if (stdout) barLine(c.dim(`stdout: ${stdout}`));
758
- if (stderr) barLine(c.dim(`stderr: ${stderr}`));
759
- barLine(c.dim(`exit code: ${err.status}`));
760
- process.exit(1);
761
- }
762
- }
763
- barEmpty();
764
- for (const plugin of plugins) {
765
- const pluginRef = `${plugin.name}@${marketplaceName}`;
766
- step(`Installing ${c.bold(pluginRef)}...`);
767
- try {
768
- execSync2(`${claudePath} plugin install ${pluginRef} --scope ${scope}`, {
769
- encoding: "utf-8",
770
- stdio: "pipe"
771
- });
772
- stepDone(`Installed ${c.cyan(pluginRef)}`);
773
- } catch (err) {
774
- const stderr = err.stderr?.toString().trim() ?? "";
775
- const stdout = err.stdout?.toString().trim() ?? "";
776
- if (stderr.includes("already") || stdout.includes("already")) {
777
- stepDone(`${c.cyan(pluginRef)} ${c.dim("already installed")}`);
778
- } else {
779
- stepError(`Failed to install ${pluginRef}`);
780
- barLine(c.dim(`Command: ${claudePath} plugin install ${pluginRef} --scope ${scope}`));
781
- if (stdout) barLine(c.dim(`stdout: ${stdout}`));
782
- if (stderr) barLine(c.dim(`stderr: ${stderr}`));
783
- barLine(c.dim(`exit code: ${err.status}`));
784
- }
785
- }
786
- }
787
- cachePopulated = true;
728
+ await installToPluginCache(plugins, scope, repoPath, source);
788
729
  }
789
730
  async function installToCursor(plugins, scope, repoPath, source) {
790
731
  if (cachePopulated) return;
791
- const claudePath = findClaudeOrNull();
792
- if (claudePath) {
793
- await installToClaudeCode(plugins, scope, repoPath, source);
732
+ if (process.platform === "win32") {
733
+ await installToCursorExtensions(plugins, scope, repoPath, source);
794
734
  return;
795
735
  }
796
- await installToCursorExtensions(plugins, scope, repoPath, source);
736
+ await installToPluginCache(plugins, scope, repoPath, source);
797
737
  }
798
738
  async function installToPluginCache(plugins, scope, repoPath, source) {
799
739
  const marketplaceName = plugins[0]?.marketplace ?? deriveMarketplaceName(source);
@@ -865,10 +805,6 @@ async function installToPluginCache(plugins, scope, repoPath, source) {
865
805
  cachePopulated = true;
866
806
  }
867
807
  async function installToCursorExtensions(plugins, scope, repoPath, source) {
868
- if (process.platform !== "win32") {
869
- await installToPluginCache(plugins, scope, repoPath, source);
870
- return;
871
- }
872
808
  const marketplaceName = plugins[0]?.marketplace ?? deriveMarketplaceName(source);
873
809
  const home = homedir2();
874
810
  const extensionsDir = join3(home, ".cursor", "extensions");
@@ -1096,26 +1032,6 @@ async function prepareForClaudeCode(plugins, repoPath, marketplaceName) {
1096
1032
  await preparePluginDirForVendor(plugin, ".claude-plugin", "CLAUDE_PLUGIN_ROOT");
1097
1033
  }
1098
1034
  }
1099
- function findClaudeOrNull() {
1100
- try {
1101
- const path = execSync2("which claude", { encoding: "utf-8", stdio: "pipe" }).trim();
1102
- if (path) return path;
1103
- } catch {
1104
- }
1105
- const home = homedir2();
1106
- const candidates = [
1107
- join3(home, ".local", "bin", "claude"),
1108
- join3(home, ".bun", "bin", "claude"),
1109
- "/usr/local/bin/claude"
1110
- ];
1111
- for (const candidate of candidates) {
1112
- if (existsSync2(candidate)) return candidate;
1113
- }
1114
- return null;
1115
- }
1116
- function findClaude() {
1117
- return findClaudeOrNull() ?? "claude";
1118
- }
1119
1035
  async function preparePluginDirForVendor(plugin, vendorDir, envVar) {
1120
1036
  const pluginPath = plugin.path;
1121
1037
  const openPluginDir = join3(pluginPath, ".plugin");
@@ -1198,22 +1114,6 @@ function deriveMarketplaceName(source) {
1198
1114
  const parts = source.replace(/\/$/, "").split("/");
1199
1115
  return parts[parts.length - 1] ?? "plugins";
1200
1116
  }
1201
- function isAnthropicSource(source) {
1202
- if (source.match(/^anthropics\/[\w.-]+$/)) return true;
1203
- if (source.startsWith("https://github.com/anthropics/")) return true;
1204
- if (source.startsWith("git@github.com:anthropics/")) return true;
1205
- return false;
1206
- }
1207
- function normalizeGitUrl(source) {
1208
- if (source.match(/^[\w-]+\/[\w.-]+$/)) {
1209
- return `https://github.com/${source}`;
1210
- }
1211
- const sshMatch = source.match(/^git@([^:]+):(.+?)(?:\.git)?$/);
1212
- if (sshMatch) {
1213
- return `https://${sshMatch[1]}/${sshMatch[2]}`;
1214
- }
1215
- return source;
1216
- }
1217
1117
 
1218
1118
  // lib/telemetry.ts
1219
1119
  var TELEMETRY_URL = "https://plugins-telemetry.labs.vercel.dev/t";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plugins",
3
- "version": "1.2.10-canary.1",
3
+ "version": "1.2.10-canary.2",
4
4
  "description": "Install open-plugin format plugins into agent tools",
5
5
  "type": "module",
6
6
  "bin": {