@mycelish/cli 0.2.8 → 0.3.1

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 (187) hide show
  1. package/dist/commands/doctor.d.ts.map +1 -1
  2. package/dist/commands/doctor.js +65 -0
  3. package/dist/commands/doctor.js.map +1 -1
  4. package/dist/commands/health-checks/runner.d.ts.map +1 -1
  5. package/dist/commands/health-checks/runner.js +23 -1
  6. package/dist/commands/health-checks/runner.js.map +1 -1
  7. package/dist/commands/marketplace.d.ts.map +1 -1
  8. package/dist/commands/marketplace.js +34 -1
  9. package/dist/commands/marketplace.js.map +1 -1
  10. package/dist/commands/remote.d.ts.map +1 -1
  11. package/dist/commands/remote.js +17 -0
  12. package/dist/commands/remote.js.map +1 -1
  13. package/dist/commands/remove.d.ts +16 -8
  14. package/dist/commands/remove.d.ts.map +1 -1
  15. package/dist/commands/remove.js +195 -42
  16. package/dist/commands/remove.js.map +1 -1
  17. package/dist/commands/remove.test.js +4 -4
  18. package/dist/commands/remove.test.js.map +1 -1
  19. package/dist/commands/sync.d.ts.map +1 -1
  20. package/dist/commands/sync.js +20 -1
  21. package/dist/commands/sync.js.map +1 -1
  22. package/dist/core/auto-adapter.d.ts.map +1 -1
  23. package/dist/core/auto-adapter.js +2 -0
  24. package/dist/core/auto-adapter.js.map +1 -1
  25. package/dist/core/content-hash.d.ts +3 -0
  26. package/dist/core/content-hash.d.ts.map +1 -0
  27. package/dist/core/content-hash.js +11 -0
  28. package/dist/core/content-hash.js.map +1 -0
  29. package/dist/core/env-template.d.ts +8 -0
  30. package/dist/core/env-template.d.ts.map +1 -1
  31. package/dist/core/env-template.js +67 -1
  32. package/dist/core/env-template.js.map +1 -1
  33. package/dist/core/env-template.test.js +100 -1
  34. package/dist/core/env-template.test.js.map +1 -1
  35. package/dist/core/manifest-migrator.d.ts +0 -1
  36. package/dist/core/manifest-migrator.d.ts.map +1 -1
  37. package/dist/core/manifest-migrator.js +1 -1
  38. package/dist/core/manifest-migrator.js.map +1 -1
  39. package/dist/core/manifest-state.d.ts +4 -2
  40. package/dist/core/manifest-state.d.ts.map +1 -1
  41. package/dist/core/manifest-state.js +1 -0
  42. package/dist/core/manifest-state.js.map +1 -1
  43. package/dist/core/manifest-state.test.js +3 -2
  44. package/dist/core/manifest-state.test.js.map +1 -1
  45. package/dist/core/marketplace-cache.d.ts +12 -0
  46. package/dist/core/marketplace-cache.d.ts.map +1 -0
  47. package/dist/core/marketplace-cache.js +127 -0
  48. package/dist/core/marketplace-cache.js.map +1 -0
  49. package/dist/core/marketplace-cache.test.d.ts +2 -0
  50. package/dist/core/marketplace-cache.test.d.ts.map +1 -0
  51. package/dist/core/marketplace-cache.test.js +122 -0
  52. package/dist/core/marketplace-cache.test.js.map +1 -0
  53. package/dist/core/marketplace-constants.d.ts +14 -0
  54. package/dist/core/marketplace-constants.d.ts.map +1 -0
  55. package/dist/core/marketplace-constants.js +14 -0
  56. package/dist/core/marketplace-constants.js.map +1 -0
  57. package/dist/core/marketplace-deduplicator.d.ts +13 -0
  58. package/dist/core/marketplace-deduplicator.d.ts.map +1 -0
  59. package/dist/core/marketplace-deduplicator.js +84 -0
  60. package/dist/core/marketplace-deduplicator.js.map +1 -0
  61. package/dist/core/marketplace-deduplicator.test.d.ts +2 -0
  62. package/dist/core/marketplace-deduplicator.test.d.ts.map +1 -0
  63. package/dist/core/marketplace-deduplicator.test.js +70 -0
  64. package/dist/core/marketplace-deduplicator.test.js.map +1 -0
  65. package/dist/core/marketplace-registry.d.ts.map +1 -1
  66. package/dist/core/marketplace-registry.js +10 -16
  67. package/dist/core/marketplace-registry.js.map +1 -1
  68. package/dist/core/marketplace-registry.test.js +5 -4
  69. package/dist/core/marketplace-registry.test.js.map +1 -1
  70. package/dist/core/marketplace-sources.d.ts +47 -25
  71. package/dist/core/marketplace-sources.d.ts.map +1 -1
  72. package/dist/core/marketplace-sources.js +331 -106
  73. package/dist/core/marketplace-sources.js.map +1 -1
  74. package/dist/core/marketplace-sources.test.js +158 -5
  75. package/dist/core/marketplace-sources.test.js.map +1 -1
  76. package/dist/core/marketplace.d.ts +22 -5
  77. package/dist/core/marketplace.d.ts.map +1 -1
  78. package/dist/core/marketplace.js +287 -131
  79. package/dist/core/marketplace.js.map +1 -1
  80. package/dist/core/marketplace.test.js +24 -58
  81. package/dist/core/marketplace.test.js.map +1 -1
  82. package/dist/core/migrator/executor.d.ts.map +1 -1
  83. package/dist/core/migrator/executor.js +11 -2
  84. package/dist/core/migrator/executor.js.map +1 -1
  85. package/dist/core/migrator/manifest.d.ts +10 -1
  86. package/dist/core/migrator/manifest.d.ts.map +1 -1
  87. package/dist/core/migrator/manifest.js +12 -2
  88. package/dist/core/migrator/manifest.js.map +1 -1
  89. package/dist/core/plugin-scanner.test.js +0 -4
  90. package/dist/core/plugin-scanner.test.js.map +1 -1
  91. package/dist/core/plugin-state.d.ts.map +1 -1
  92. package/dist/core/plugin-state.js +98 -18
  93. package/dist/core/plugin-state.js.map +1 -1
  94. package/dist/core/plugin-takeover.d.ts +15 -0
  95. package/dist/core/plugin-takeover.d.ts.map +1 -1
  96. package/dist/core/plugin-takeover.js +163 -3
  97. package/dist/core/plugin-takeover.js.map +1 -1
  98. package/dist/core/presets.test.js +0 -3
  99. package/dist/core/presets.test.js.map +1 -1
  100. package/dist/core/secret-detector.d.ts +20 -0
  101. package/dist/core/secret-detector.d.ts.map +1 -0
  102. package/dist/core/secret-detector.js +83 -0
  103. package/dist/core/secret-detector.js.map +1 -0
  104. package/dist/core/secret-detector.test.d.ts +2 -0
  105. package/dist/core/secret-detector.test.d.ts.map +1 -0
  106. package/dist/core/secret-detector.test.js +91 -0
  107. package/dist/core/secret-detector.test.js.map +1 -0
  108. package/dist/core/security-scanner.d.ts +24 -0
  109. package/dist/core/security-scanner.d.ts.map +1 -0
  110. package/dist/core/security-scanner.js +182 -0
  111. package/dist/core/security-scanner.js.map +1 -0
  112. package/dist/core/security-scanner.test.d.ts +2 -0
  113. package/dist/core/security-scanner.test.d.ts.map +1 -0
  114. package/dist/core/security-scanner.test.js +120 -0
  115. package/dist/core/security-scanner.test.js.map +1 -0
  116. package/dist/core/snapshot.d.ts.map +1 -1
  117. package/dist/core/snapshot.js +0 -6
  118. package/dist/core/snapshot.js.map +1 -1
  119. package/dist/core/snapshot.test.js +0 -4
  120. package/dist/core/snapshot.test.js.map +1 -1
  121. package/dist/core/state-verifier.d.ts.map +1 -1
  122. package/dist/core/state-verifier.js +1 -0
  123. package/dist/core/state-verifier.js.map +1 -1
  124. package/dist/dashboard/assets/_baseUniq-jpnlJe91.js +1 -0
  125. package/dist/dashboard/assets/arc-dJqY5iW3.js +1 -0
  126. package/dist/dashboard/assets/architectureDiagram-VXUJARFQ-DS-AEHHe.js +36 -0
  127. package/dist/dashboard/assets/blockDiagram-VD42YOAC-Bn0VV7II.js +122 -0
  128. package/dist/dashboard/assets/c4Diagram-YG6GDRKO-CB_qD81l.js +10 -0
  129. package/dist/dashboard/assets/channel-qTocB4Pq.js +1 -0
  130. package/dist/dashboard/assets/chunk-4BX2VUAB-aOtXKVpc.js +1 -0
  131. package/dist/dashboard/assets/chunk-55IACEB6-BlTmVjwT.js +1 -0
  132. package/dist/dashboard/assets/chunk-B4BG7PRW-ByWFjAo6.js +165 -0
  133. package/dist/dashboard/assets/chunk-DI55MBZ5-DlgmWX--.js +220 -0
  134. package/dist/dashboard/assets/chunk-FMBD7UC4-CqEkD31_.js +15 -0
  135. package/dist/dashboard/assets/chunk-QN33PNHL-D-NwUBy5.js +1 -0
  136. package/dist/dashboard/assets/chunk-QZHKN3VN-5CiE9Pyg.js +1 -0
  137. package/dist/dashboard/assets/chunk-TZMSLE5B-DI4PmdOV.js +1 -0
  138. package/dist/dashboard/assets/classDiagram-2ON5EDUG-BG-TpUqS.js +1 -0
  139. package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-BG-TpUqS.js +1 -0
  140. package/dist/dashboard/assets/clone-DU2QZ4l8.js +1 -0
  141. package/dist/dashboard/assets/cose-bilkent-S5V4N54A-CK6jhm9G.js +1 -0
  142. package/dist/dashboard/assets/cytoscape.esm-5J0xJHOV.js +321 -0
  143. package/dist/dashboard/assets/dagre-6UL2VRFP-D7pcmBXr.js +4 -0
  144. package/dist/dashboard/assets/defaultLocale-DX6XiGOO.js +1 -0
  145. package/dist/dashboard/assets/diagram-PSM6KHXK-Cf5iaUrO.js +24 -0
  146. package/dist/dashboard/assets/diagram-QEK2KX5R-Ba6pejlB.js +43 -0
  147. package/dist/dashboard/assets/diagram-S2PKOQOG-MICrmiFJ.js +24 -0
  148. package/dist/dashboard/assets/erDiagram-Q2GNP2WA-Mp_TTdk-.js +60 -0
  149. package/dist/dashboard/assets/flowDiagram-NV44I4VS-DtDj1m9Q.js +162 -0
  150. package/dist/dashboard/assets/ganttDiagram-JELNMOA3-C6PAWTPX.js +267 -0
  151. package/dist/dashboard/assets/gitGraphDiagram-NY62KEGX-C5u12JOT.js +65 -0
  152. package/dist/dashboard/assets/graph-NsKMojNd.js +1 -0
  153. package/dist/dashboard/assets/index-CcxaE_OV.js +189 -0
  154. package/dist/dashboard/assets/index-D2P8RAeH.css +1 -0
  155. package/dist/dashboard/assets/infoDiagram-WHAUD3N6-Eo1K9zhj.js +2 -0
  156. package/dist/dashboard/assets/init-Gi6I4Gst.js +1 -0
  157. package/dist/dashboard/assets/journeyDiagram-XKPGCS4Q-B1kKiUUS.js +139 -0
  158. package/dist/dashboard/assets/kanban-definition-3W4ZIXB7-Dm52p6CM.js +89 -0
  159. package/dist/dashboard/assets/katex-DhXJpUyf.js +261 -0
  160. package/dist/dashboard/assets/layout-BPmnLTg1.js +1 -0
  161. package/dist/dashboard/assets/linear-BXRcMUWZ.js +1 -0
  162. package/dist/dashboard/assets/mermaid.core-ajywX_zk.js +250 -0
  163. package/dist/dashboard/assets/min-BjB8Dahw.js +1 -0
  164. package/dist/dashboard/assets/mindmap-definition-VGOIOE7T-DN6BiXQl.js +68 -0
  165. package/dist/dashboard/assets/ordinal-Cboi1Yqb.js +1 -0
  166. package/dist/dashboard/assets/pieDiagram-ADFJNKIX-BXrIkLM5.js +30 -0
  167. package/dist/dashboard/assets/quadrantDiagram-AYHSOK5B-6Ids5EIZ.js +7 -0
  168. package/dist/dashboard/assets/requirementDiagram-UZGBJVZJ-CDkzg6it.js +64 -0
  169. package/dist/dashboard/assets/sankeyDiagram-TZEHDZUN-B8IW83XN.js +10 -0
  170. package/dist/dashboard/assets/sequenceDiagram-WL72ISMW-TLaFO0qu.js +145 -0
  171. package/dist/dashboard/assets/stateDiagram-FKZM4ZOC-BTxdoKIX.js +1 -0
  172. package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-DD-D-6rX.js +1 -0
  173. package/dist/dashboard/assets/timeline-definition-IT6M3QCI-CChAmzCr.js +61 -0
  174. package/dist/dashboard/assets/treemap-KMMF4GRG-D79S5bTA.js +128 -0
  175. package/dist/dashboard/assets/xychartDiagram-PRI3JC2R-BaeVzgs1.js +7 -0
  176. package/dist/dashboard/index.html +2 -2
  177. package/dist/routes/marketplace.d.ts.map +1 -1
  178. package/dist/routes/marketplace.js +179 -1
  179. package/dist/routes/marketplace.js.map +1 -1
  180. package/dist/routes/remove.js +4 -4
  181. package/dist/routes/remove.js.map +1 -1
  182. package/dist/routes/state.d.ts.map +1 -1
  183. package/dist/routes/state.js +97 -10
  184. package/dist/routes/state.js.map +1 -1
  185. package/package.json +2 -2
  186. package/dist/dashboard/assets/index-CAenUQES.css +0 -1
  187. package/dist/dashboard/assets/index-DDo3xcmE.js +0 -150
@@ -1,34 +1,44 @@
1
1
  import { MARKETPLACE_SOURCES as MS } from "@mycelish/core";
2
+ import { deduplicateEntries } from "./marketplace-deduplicator.js";
2
3
  import { getRegistryEntry, parseRegistryEntry, } from "./mcp-registry.js";
3
4
  import { loadMarketplaceRegistry } from "./marketplace-registry.js";
4
- import { KNOWN_SEARCHERS, listInstalledPlugins, fetchAnthropicSkillsList, fetchMcpServers, mcpServerToEntry, fetchNpmDownloads, parseGitHubUrl, searchGitHubRepo, installGitHubRepoItem, } from "./marketplace-sources.js";
5
+ import { KNOWN_SEARCHERS, listInstalledPlugins, enrichPluginsWithLatestVersions, fetchAnthropicSkillsList, fetchMcpServers, mcpServerToEntry, fetchGlamaServers, glamaServerToEntry, parseGitHubUrl, searchGitHubRepo, installGitHubRepoItem, fetchGitHubRepoItems, enrichWithGitHubStars, enrichWithNpmDownloads, } from "./marketplace-sources.js";
6
+ import { getTracer } from "./global-tracer.js";
7
+ import { cachedFetch } from "./marketplace-cache.js";
5
8
  import * as fs from "node:fs/promises";
6
9
  import * as os from "node:os";
7
10
  import * as path from "node:path";
8
11
  import { MYCELIUM_HOME } from "./fs-helpers.js";
9
- import { loadStateManifest, saveStateManifest } from "./manifest-state.js";
12
+ import { loadStateManifest, saveStateManifest, sectionForType } from "./manifest-state.js";
13
+ import { computeContentHash } from "./content-hash.js";
14
+ import { POPULAR_ITEMS_LIMIT, ENRICHMENT_OVERALL_TIMEOUT, BATCH_HASH, TIMEOUT_GITHUB, } from "./marketplace-constants.js";
15
+ // Re-export so existing consumers don't break
16
+ export { computeContentHash } from "./content-hash.js";
10
17
  const MYCELIUM_DIR = path.join(MYCELIUM_HOME, "global");
11
18
  // Re-export for backward compatibility
12
19
  export { listInstalledPlugins } from "./marketplace-sources.js";
13
20
  // ============================================================================
14
21
  // Unified search
15
22
  // ============================================================================
16
- export async function searchMarketplace(query, source) {
23
+ export async function searchMarketplace(query, source, options) {
17
24
  const registry = await loadMarketplaceRegistry();
18
25
  const enabledSources = source
19
26
  ? [source]
20
27
  : Object.entries(registry)
21
28
  .filter(([, config]) => config.enabled)
22
29
  .map(([name]) => name);
30
+ const log = getTracer().createTrace("marketplace");
31
+ log.info({ scope: "search", op: "start", msg: `q="${query}" sources=${enabledSources.length}` });
32
+ const t0 = Date.now();
23
33
  const searches = enabledSources.map((s) => {
24
34
  if (KNOWN_SEARCHERS[s])
25
- return KNOWN_SEARCHERS[s](query);
35
+ return KNOWN_SEARCHERS[s](query, options);
26
36
  // Dynamic GitHub marketplace: parse URL from registry config
27
37
  const config = registry[s];
28
38
  if (config?.url) {
29
39
  const gh = parseGitHubUrl(config.url);
30
40
  if (gh)
31
- return searchGitHubRepo(gh.owner, gh.repo, query, s);
41
+ return searchGitHubRepo(gh.owner, gh.repo, query, s, options);
32
42
  }
33
43
  return null;
34
44
  }).filter((p) => p !== null);
@@ -37,20 +47,23 @@ export async function searchMarketplace(query, source) {
37
47
  .filter((r) => r.status === "fulfilled")
38
48
  .map((r) => r.value)
39
49
  .filter((r) => r.entries.length > 0);
40
- return enrichWithInstalledStatus(filtered);
50
+ const total = filtered.reduce((n, r) => n + r.entries.length, 0);
51
+ log.info({ scope: "search", op: "done", dur: Date.now() - t0, msg: `${total} entries from ${filtered.length} sources` });
52
+ return normalizeAndEnrich(filtered);
41
53
  }
42
54
  // ============================================================================
43
- // Install
55
+ // Shared Enrichment Pipeline
44
56
  // ============================================================================
57
+ async function normalizeAndEnrich(results) {
58
+ const enriched = await enrichWithInstalledStatus(results);
59
+ const allEntries = deduplicateEntries(enriched);
60
+ await Promise.allSettled([enrichWithGitHubStars(allEntries), enrichWithNpmDownloads(allEntries)]);
61
+ return enrichWithLatestHashes(allEntries);
62
+ }
45
63
  export async function installFromMarketplace(entry) {
46
64
  try {
47
65
  let result;
48
66
  switch (entry.source) {
49
- case MS.SKILLSMP:
50
- return { success: false, error: "SkillsMP requires an API key. Configure it in settings." };
51
- case MS.OPENSKILLS:
52
- result = await installOpenSkill(entry);
53
- break;
54
67
  case MS.CLAUDE_PLUGINS:
55
68
  result = await installClaudePlugin(entry);
56
69
  break;
@@ -60,9 +73,6 @@ export async function installFromMarketplace(entry) {
60
73
  case MS.ANTHROPIC_SKILLS:
61
74
  result = await installAnthropicSkill(entry);
62
75
  break;
63
- case MS.CLAWHUB:
64
- result = await installClawHub(entry);
65
- break;
66
76
  default: {
67
77
  // Try dynamic GitHub marketplace
68
78
  const reg = await loadMarketplaceRegistry();
@@ -70,6 +80,11 @@ export async function installFromMarketplace(entry) {
70
80
  if (config?.url) {
71
81
  const gh = parseGitHubUrl(config.url);
72
82
  if (gh) {
83
+ // Plugin type: install all components from the repo
84
+ if (entry.type === "plugin") {
85
+ result = await installPlugin(gh.owner, gh.repo, entry);
86
+ break;
87
+ }
73
88
  result = await installGitHubRepoItem(gh.owner, gh.repo, entry);
74
89
  break;
75
90
  }
@@ -77,8 +92,10 @@ export async function installFromMarketplace(entry) {
77
92
  return { success: false, error: `Unknown source: ${entry.source}` };
78
93
  }
79
94
  }
80
- if (result.success && entry.source !== MS.MCP_REGISTRY) {
81
- await registerSkillInManifest(entry.name, entry.source);
95
+ // MCP registry registers in manifest inside installMcpRegistry() directly
96
+ // Skip "plugin" type — installPlugin() already registers individual components
97
+ if (result.success && entry.source !== MS.MCP_REGISTRY && entry.type !== "plugin") {
98
+ await registerItemInManifest(entry.name, entry.source, result.version, result.contentHash, entry.type);
82
99
  }
83
100
  // Auto-sync to push installed item into tool directories
84
101
  if (result.success) {
@@ -95,20 +112,13 @@ export async function installFromMarketplace(entry) {
95
112
  return { success: false, error: err instanceof Error ? err.message : String(err) };
96
113
  }
97
114
  }
98
- async function installOpenSkill(entry) {
99
- const dir = path.join(MYCELIUM_DIR, "skills", entry.name);
100
- await fs.mkdir(dir, { recursive: true });
101
- const filePath = path.join(dir, "SKILL.md");
102
- await fs.writeFile(filePath, `# ${entry.name}\n\n${entry.description}\n\n> Installed from openskills registry\n`, "utf-8");
103
- return { success: true, path: filePath };
104
- }
105
115
  async function installClaudePlugin(entry) {
106
116
  const cacheDir = path.join(os.homedir(), ".claude", "plugins", "cache");
107
117
  const src = path.join(cacheDir, entry.name);
108
118
  const dest = path.join(MYCELIUM_DIR, "skills", entry.name);
109
119
  await fs.mkdir(path.dirname(dest), { recursive: true });
110
120
  await fs.symlink(src, dest);
111
- return { success: true, path: dest };
121
+ return { success: true, path: dest, version: entry.version };
112
122
  }
113
123
  async function installMcpRegistry(entry) {
114
124
  const registryEntry = await getRegistryEntry(entry.name);
@@ -118,7 +128,9 @@ async function installMcpRegistry(entry) {
118
128
  const mcpsPath = path.join(MYCELIUM_DIR, "mcps.yaml");
119
129
  const yamlLine = `\n${entry.name}:\n command: ${config.command}\n args: [${(config.args || []).map((a) => `"${a}"`).join(", ")}]\n enabled: true\n`;
120
130
  await fs.appendFile(mcpsPath, yamlLine, "utf-8");
121
- return { success: true, path: mcpsPath };
131
+ // MCP registry entries store version in manifest directly
132
+ await registerItemInManifest(entry.name, entry.source, entry.version, undefined, "mcp");
133
+ return { success: true, path: mcpsPath, version: entry.version };
122
134
  }
123
135
  async function installAnthropicSkill(entry) {
124
136
  const rawUrl = `https://raw.githubusercontent.com/anthropics/skills/main/skills/${encodeURIComponent(entry.name)}/SKILL.md`;
@@ -130,30 +142,63 @@ async function installAnthropicSkill(entry) {
130
142
  await fs.mkdir(dir, { recursive: true });
131
143
  const filePath = path.join(dir, "SKILL.md");
132
144
  await fs.writeFile(filePath, content, "utf-8");
133
- return { success: true, path: filePath };
134
- }
135
- async function installClawHub(entry) {
136
- const res = await fetch(`https://clawhub.ai/api/v1/download/${encodeURIComponent(entry.name)}`, { headers: { Accept: "application/json" } });
137
- if (!res.ok)
138
- throw new Error(`Download failed: ${res.statusText}`);
139
- const content = await res.text();
140
- const dir = path.join(MYCELIUM_DIR, "skills", entry.name);
141
- await fs.mkdir(dir, { recursive: true });
142
- const filePath = path.join(dir, "SKILL.md");
143
- await fs.writeFile(filePath, content, "utf-8");
144
- return { success: true, path: filePath };
145
+ return { success: true, path: filePath, contentHash: computeContentHash(content) };
145
146
  }
146
147
  // ============================================================================
147
148
  // Popular / Browse
148
149
  // ============================================================================
149
- export async function getPopularSkills() {
150
+ export async function getPopularSkills(options) {
150
151
  const results = [];
151
152
  const fetchers = [
152
- { name: "anthropic-skills", fn: () => fetchPopularAnthropicSkills(results) },
153
- { name: "claude-plugins", fn: () => fetchPopularClaudePlugins(results) },
154
- { name: "mcp-registry", fn: () => fetchPopularMcpServers(results) },
155
- { name: "openskills", fn: () => fetchPopularOpenSkills(results) },
156
- { name: "clawhub", fn: () => fetchPopularClawHub(results) },
153
+ {
154
+ name: "anthropic-skills",
155
+ fn: () => fetchPopularSource({
156
+ source: MS.ANTHROPIC_SKILLS,
157
+ fetch: async () => {
158
+ const skills = await fetchAnthropicSkillsList(options);
159
+ return skills.map(name => ({
160
+ name,
161
+ description: `Official Anthropic skill: ${name}`,
162
+ author: "anthropics",
163
+ source: MS.ANTHROPIC_SKILLS,
164
+ type: "skill",
165
+ url: `https://github.com/anthropics/skills/tree/main/skills/${name}`,
166
+ }));
167
+ },
168
+ }, results),
169
+ },
170
+ {
171
+ name: "claude-plugins",
172
+ fn: () => fetchPopularSource({
173
+ source: MS.CLAUDE_PLUGINS,
174
+ fetch: async () => {
175
+ const plugins = await listInstalledPlugins();
176
+ if (plugins.length > 0)
177
+ await enrichPluginsWithLatestVersions(plugins);
178
+ return plugins;
179
+ },
180
+ }, results),
181
+ },
182
+ {
183
+ name: "mcp-registry",
184
+ fn: () => fetchPopularSource({
185
+ source: MS.MCP_REGISTRY,
186
+ fetch: async () => {
187
+ const servers = await cachedFetch("mcp-registry", () => fetchMcpServers(""), options);
188
+ return servers.map(mcpServerToEntry);
189
+ },
190
+ }, results),
191
+ },
192
+ {
193
+ name: "glama",
194
+ fn: () => fetchPopularSource({
195
+ source: MS.GLAMA,
196
+ fetch: async () => {
197
+ const servers = await cachedFetch("glama", () => fetchGlamaServers(""), options);
198
+ return servers.map(glamaServerToEntry);
199
+ },
200
+ }, results),
201
+ },
157
202
  ];
158
203
  // Add dynamic GitHub marketplaces
159
204
  const registry = await loadMarketplaceRegistry();
@@ -165,99 +210,59 @@ export async function getPopularSkills() {
165
210
  fetchers.push({
166
211
  name,
167
212
  fn: async () => {
168
- const r = await searchGitHubRepo(gh.owner, gh.repo, "", name);
213
+ const r = await searchGitHubRepo(gh.owner, gh.repo, "", name, options);
169
214
  if (r.entries.length > 0)
170
215
  results.push(r);
171
216
  },
172
217
  });
173
218
  }
174
219
  }
220
+ const log = getTracer().createTrace("marketplace");
221
+ const t0 = Date.now();
175
222
  const settled = await Promise.allSettled(fetchers.map(f => f.fn()));
176
223
  for (let i = 0; i < settled.length; i++) {
177
224
  if (settled[i].status === "rejected") {
178
- console.warn(`${fetchers[i].name} popular fetch failed:`, settled[i].reason);
225
+ log.warn({ scope: "popular", op: "fetch-failed", item: fetchers[i].name, msg: String(settled[i].reason) });
179
226
  }
180
227
  }
181
- return enrichWithInstalledStatus(results);
182
- }
183
- async function fetchPopularAnthropicSkills(results) {
184
- const skills = await fetchAnthropicSkillsList();
185
- if (skills.length > 0) {
186
- const entries = skills.slice(0, 12).map(name => ({
187
- name,
188
- description: `Official Anthropic skill: ${name}`,
189
- author: "anthropics",
190
- source: MS.ANTHROPIC_SKILLS,
191
- type: "skill",
192
- }));
193
- results.push({ entries, total: entries.length, source: MS.ANTHROPIC_SKILLS });
194
- }
228
+ log.info({ scope: "popular", op: "done", dur: Date.now() - t0, msg: `${results.reduce((n, r) => n + r.entries.length, 0)} entries` });
229
+ return normalizeAndEnrich(results);
195
230
  }
196
- async function fetchPopularClaudePlugins(results) {
197
- const plugins = await listInstalledPlugins();
198
- if (plugins.length > 0) {
199
- results.push({ entries: plugins.slice(0, 12), total: plugins.length, source: MS.CLAUDE_PLUGINS });
231
+ /** Config-driven popular fetcher — collapses 4 near-identical functions. */
232
+ async function fetchPopularSource(config, results) {
233
+ const entries = await config.fetch();
234
+ if (entries.length > 0) {
235
+ const sliced = entries.slice(0, POPULAR_ITEMS_LIMIT);
236
+ results.push({ entries: sliced, total: entries.length, source: config.source });
200
237
  }
201
238
  }
202
- async function fetchPopularMcpServers(results) {
203
- const servers = await fetchMcpServers("");
204
- if (servers.length > 0) {
205
- const entries = servers.slice(0, 12).map(mcpServerToEntry);
206
- results.push({ entries, total: entries.length, source: MS.MCP_REGISTRY });
239
+ // ============================================================================
240
+ // Plugin Install (all components from a GitHub repo)
241
+ // ============================================================================
242
+ async function installPlugin(owner, repo, entry) {
243
+ const items = await fetchGitHubRepoItems(owner, repo);
244
+ if (items.length === 0) {
245
+ return { success: false, error: `No installable items found in ${owner}/${repo}` };
207
246
  }
208
- }
209
- async function fetchPopularOpenSkills(results) {
210
- const res = await fetch("https://registry.npmjs.org/-/v1/search?text=openskills&size=12");
211
- if (!res.ok)
212
- return;
213
- const data = (await res.json());
214
- const names = data.objects.map(o => o.package.name);
215
- const downloads = await fetchNpmDownloads(names);
216
- const entries = data.objects.map((o) => ({
217
- name: o.package.name,
218
- description: o.package.description || "",
219
- author: o.package.author?.name,
220
- version: o.package.version,
221
- latestVersion: o.package.version,
222
- downloads: downloads[o.package.name],
223
- source: MS.OPENSKILLS,
224
- type: "skill",
225
- }));
226
- results.push({ entries, total: entries.length, source: MS.OPENSKILLS });
227
- }
228
- async function fetchPopularClawHub(results) {
229
- const queries = ["code", "git", "test", "debug"];
230
- const allItems = [];
231
- const seen = new Set();
232
- for (const q of queries) {
233
- try {
234
- const res = await fetch(`https://clawhub.ai/api/v1/search?q=${q}&limit=6`, { headers: { Accept: "application/json" } });
235
- if (!res.ok)
236
- continue;
237
- const data = (await res.json());
238
- for (const item of data.results || []) {
239
- if (!seen.has(item.slug)) {
240
- seen.add(item.slug);
241
- allItems.push(item);
242
- }
243
- }
244
- }
245
- catch { /* skip */ }
246
- if (allItems.length >= 12)
247
- break;
247
+ const results = await Promise.allSettled(items.map(item => installGitHubRepoItem(owner, repo, {
248
+ name: item.name,
249
+ description: item.description || "",
250
+ source: entry.source,
251
+ type: item.type,
252
+ })));
253
+ const succeeded = results.filter(r => r.status === "fulfilled" && r.value.success).length;
254
+ const failed = results.length - succeeded;
255
+ // Register each installed item in manifest
256
+ for (let idx = 0; idx < items.length; idx++) {
257
+ const item = items[idx];
258
+ const r = results[idx];
259
+ const contentHash = r.status === "fulfilled" ? r.value.contentHash : undefined;
260
+ await registerItemInManifest(item.name, entry.source, undefined, contentHash, item.type);
248
261
  }
249
- if (allItems.length > 0) {
250
- const entries = allItems.slice(0, 12).map((item) => ({
251
- name: item.slug,
252
- description: item.summary || item.displayName || "",
253
- version: item.version,
254
- latestVersion: item.version,
255
- updatedAt: item.updatedAt ? new Date(item.updatedAt).toISOString().slice(0, 10) : undefined,
256
- source: MS.CLAWHUB,
257
- type: "skill",
258
- }));
259
- results.push({ entries, total: entries.length, source: MS.CLAWHUB });
262
+ if (failed > 0) {
263
+ return { success: true, error: `Installed ${succeeded}/${results.length} components (${failed} failed)` };
260
264
  }
265
+ return { success: true, path: `${succeeded} components installed from ${owner}/${repo}` };
261
266
  }
262
267
  // ============================================================================
263
268
  // Auto-Sync
@@ -271,35 +276,186 @@ async function autoSync() {
271
276
  // ============================================================================
272
277
  // Manifest Registration
273
278
  // ============================================================================
274
- async function registerSkillInManifest(name, source) {
279
+ async function registerItemInManifest(name, source, version, contentHash, itemType) {
275
280
  const manifestDir = MYCELIUM_HOME;
276
281
  const manifest = await loadStateManifest(manifestDir) ?? { version: "1.0.0" };
277
- if (!manifest.skills)
278
- manifest.skills = {};
279
- manifest.skills[name] = { state: "enabled", source };
282
+ const sectionKey = (itemType && sectionForType(itemType)) || "skills";
283
+ if (!manifest[sectionKey])
284
+ manifest[sectionKey] = {};
285
+ const section = manifest[sectionKey];
286
+ const entry = { state: "enabled", source };
287
+ if (version)
288
+ entry.version = version;
289
+ if (contentHash)
290
+ entry.contentHash = contentHash;
291
+ section[name] = entry;
280
292
  await saveStateManifest(manifestDir, manifest);
281
293
  }
282
294
  // ============================================================================
283
295
  // Installed Status Enrichment
284
296
  // ============================================================================
285
- async function getInstalledSkillNames() {
297
+ async function getInstalledItems() {
286
298
  const manifest = await loadStateManifest(MYCELIUM_HOME);
287
299
  if (!manifest?.skills)
288
- return new Set();
289
- return new Set(Object.entries(manifest.skills)
290
- .filter(([, cfg]) => cfg.state === "enabled")
291
- .map(([name]) => name));
300
+ return new Map();
301
+ const map = new Map();
302
+ let needsSave = false;
303
+ for (const [name, cfg] of Object.entries(manifest.skills)) {
304
+ if (cfg.state === "enabled") {
305
+ // Backfill: compute contentHash for items that have none, or migrate short hashes
306
+ const needsBackfill = !cfg.version && (!cfg.contentHash || cfg.contentHash.length < 12);
307
+ if (needsBackfill) {
308
+ const hash = await backfillContentHash(name, cfg);
309
+ if (hash) {
310
+ cfg.contentHash = hash;
311
+ needsSave = true;
312
+ }
313
+ }
314
+ map.set(name, { source: cfg.source ?? "", version: cfg.version, contentHash: cfg.contentHash });
315
+ }
316
+ }
317
+ if (needsSave) {
318
+ await saveStateManifest(MYCELIUM_HOME, manifest).catch(() => { });
319
+ }
320
+ return map;
321
+ }
322
+ /** Backfill: compute content hash from already-installed item files */
323
+ async function backfillContentHash(name, cfg) {
324
+ // Try all item type paths — skills use dir/SKILL.md, agents/commands use flat .md
325
+ const candidates = [
326
+ path.join(MYCELIUM_DIR, "skills", name, "SKILL.md"),
327
+ path.join(MYCELIUM_DIR, "agents", `${name}.md`),
328
+ path.join(MYCELIUM_DIR, "commands", `${name}.md`),
329
+ ];
330
+ // Plugin-origin items live in the plugin cache, not in ~/.mycelium/global/
331
+ if (cfg?.pluginOrigin?.cachePath) {
332
+ candidates.unshift(path.join(cfg.pluginOrigin.cachePath, "skills", name, "SKILL.md"), path.join(cfg.pluginOrigin.cachePath, "agents", `${name}.md`), path.join(cfg.pluginOrigin.cachePath, "commands", `${name}.md`));
333
+ }
334
+ for (const p of candidates) {
335
+ try {
336
+ const content = await fs.readFile(p, "utf-8");
337
+ return computeContentHash(content);
338
+ }
339
+ catch {
340
+ // Try next path
341
+ }
342
+ }
343
+ return undefined;
344
+ }
345
+ // ============================================================================
346
+ // Mycelium Self-Update Check
347
+ // ============================================================================
348
+ export async function checkMyceliumUpdate() {
349
+ try {
350
+ const pkgPath = path.join(path.dirname(new URL(import.meta.url).pathname), "..", "..", "package.json");
351
+ const pkgContent = await fs.readFile(pkgPath, "utf-8");
352
+ const pkg = JSON.parse(pkgContent);
353
+ const current = pkg.version;
354
+ const res = await fetch("https://registry.npmjs.org/@mycelish/cli/latest", {
355
+ signal: AbortSignal.timeout(TIMEOUT_GITHUB),
356
+ });
357
+ if (!res.ok)
358
+ return null;
359
+ const data = (await res.json());
360
+ return { current, latest: data.version, hasUpdate: data.version !== current };
361
+ }
362
+ catch {
363
+ return null;
364
+ }
292
365
  }
293
366
  async function enrichWithInstalledStatus(results) {
294
- const installed = await getInstalledSkillNames();
367
+ const installed = await getInstalledItems();
295
368
  if (installed.size === 0)
296
369
  return results;
297
370
  return results.map(r => ({
298
371
  ...r,
299
- entries: r.entries.map(e => installed.has(e.name) ? { ...e, installed: true } : e),
372
+ entries: r.entries.map(e => {
373
+ const info = installed.get(e.name);
374
+ if (!info)
375
+ return e;
376
+ const installedVersion = info.version ?? (info.contentHash ? `#${info.contentHash}` : undefined);
377
+ return { ...e, installed: true, installedVersion };
378
+ }),
300
379
  }));
301
380
  }
302
381
  // ============================================================================
382
+ // Latest Hash Enrichment (for versionless sources)
383
+ // ============================================================================
384
+ async function enrichWithLatestHashes(entries) {
385
+ const needsHash = entries.filter(e => e.installed && !e.latestVersion && e.url);
386
+ if (needsHash.length === 0)
387
+ return entries;
388
+ const hashMap = new Map();
389
+ // Overall timeout: cap total enrichment at 15s regardless of item count
390
+ const overallController = new AbortController();
391
+ const overallTimeout = setTimeout(() => overallController.abort(), ENRICHMENT_OVERALL_TIMEOUT);
392
+ try {
393
+ const BATCH_SIZE = BATCH_HASH;
394
+ for (let i = 0; i < needsHash.length; i += BATCH_SIZE) {
395
+ if (overallController.signal.aborted)
396
+ break;
397
+ const batch = needsHash.slice(i, i + BATCH_SIZE).map(async (e) => {
398
+ try {
399
+ let rawUrl = e.url;
400
+ if (rawUrl.includes("github.com") && rawUrl.includes("/tree/main/")) {
401
+ rawUrl = rawUrl.replace("github.com", "raw.githubusercontent.com").replace("/tree/main/", "/main/");
402
+ if (e.type === "skill" && !rawUrl.endsWith(".md")) {
403
+ rawUrl += "/SKILL.md";
404
+ }
405
+ }
406
+ const res = await fetch(rawUrl, { signal: overallController.signal });
407
+ if (res.ok) {
408
+ const content = await res.text();
409
+ hashMap.set(e.name, `#${computeContentHash(content)}`);
410
+ }
411
+ }
412
+ catch {
413
+ // Non-critical — skip (includes abort)
414
+ }
415
+ });
416
+ await Promise.allSettled(batch);
417
+ }
418
+ }
419
+ finally {
420
+ clearTimeout(overallTimeout);
421
+ }
422
+ if (hashMap.size === 0)
423
+ return entries;
424
+ return entries.map(e => {
425
+ const hash = hashMap.get(e.name);
426
+ return hash ? { ...e, latestVersion: hash } : e;
427
+ });
428
+ }
429
+ // ============================================================================
430
+ // Check for Updates
431
+ // ============================================================================
432
+ export async function checkForUpdates() {
433
+ const installed = await getInstalledItems();
434
+ if (installed.size === 0)
435
+ return [];
436
+ // Search all sources to get latest versions
437
+ const results = await searchMarketplace("");
438
+ const updates = [];
439
+ for (const entry of results) {
440
+ const info = installed.get(entry.name);
441
+ if (!info)
442
+ continue;
443
+ const installedVersion = info.version ?? (info.contentHash ? `#${info.contentHash}` : undefined);
444
+ if (!installedVersion || !entry.latestVersion)
445
+ continue;
446
+ if (installedVersion !== entry.latestVersion) {
447
+ updates.push({
448
+ name: entry.name,
449
+ source: entry.source,
450
+ type: entry.type,
451
+ installedVersion,
452
+ latestVersion: entry.latestVersion,
453
+ });
454
+ }
455
+ }
456
+ return updates;
457
+ }
458
+ // ============================================================================
303
459
  // Update
304
460
  // ============================================================================
305
461
  export async function updateSkill(name, source) {
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/core/marketplace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/core/marketplace.ts"],"names":[],"mappings":"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"}