@mycelish/cli 0.2.7 → 0.3.0

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