@mycelish/cli 0.2.8 → 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 (181) 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 +163 -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 +2 -1
  40. package/dist/core/manifest-state.d.ts.map +1 -1
  41. package/dist/core/manifest-state.js.map +1 -1
  42. package/dist/core/marketplace-cache.d.ts +12 -0
  43. package/dist/core/marketplace-cache.d.ts.map +1 -0
  44. package/dist/core/marketplace-cache.js +127 -0
  45. package/dist/core/marketplace-cache.js.map +1 -0
  46. package/dist/core/marketplace-cache.test.d.ts +2 -0
  47. package/dist/core/marketplace-cache.test.d.ts.map +1 -0
  48. package/dist/core/marketplace-cache.test.js +122 -0
  49. package/dist/core/marketplace-cache.test.js.map +1 -0
  50. package/dist/core/marketplace-constants.d.ts +14 -0
  51. package/dist/core/marketplace-constants.d.ts.map +1 -0
  52. package/dist/core/marketplace-constants.js +14 -0
  53. package/dist/core/marketplace-constants.js.map +1 -0
  54. package/dist/core/marketplace-deduplicator.d.ts +13 -0
  55. package/dist/core/marketplace-deduplicator.d.ts.map +1 -0
  56. package/dist/core/marketplace-deduplicator.js +84 -0
  57. package/dist/core/marketplace-deduplicator.js.map +1 -0
  58. package/dist/core/marketplace-deduplicator.test.d.ts +2 -0
  59. package/dist/core/marketplace-deduplicator.test.d.ts.map +1 -0
  60. package/dist/core/marketplace-deduplicator.test.js +70 -0
  61. package/dist/core/marketplace-deduplicator.test.js.map +1 -0
  62. package/dist/core/marketplace-registry.d.ts.map +1 -1
  63. package/dist/core/marketplace-registry.js +10 -16
  64. package/dist/core/marketplace-registry.js.map +1 -1
  65. package/dist/core/marketplace-registry.test.js +5 -4
  66. package/dist/core/marketplace-registry.test.js.map +1 -1
  67. package/dist/core/marketplace-sources.d.ts +47 -25
  68. package/dist/core/marketplace-sources.d.ts.map +1 -1
  69. package/dist/core/marketplace-sources.js +331 -106
  70. package/dist/core/marketplace-sources.js.map +1 -1
  71. package/dist/core/marketplace-sources.test.js +158 -5
  72. package/dist/core/marketplace-sources.test.js.map +1 -1
  73. package/dist/core/marketplace.d.ts +22 -5
  74. package/dist/core/marketplace.d.ts.map +1 -1
  75. package/dist/core/marketplace.js +280 -127
  76. package/dist/core/marketplace.js.map +1 -1
  77. package/dist/core/marketplace.test.js +20 -58
  78. package/dist/core/marketplace.test.js.map +1 -1
  79. package/dist/core/migrator/executor.d.ts.map +1 -1
  80. package/dist/core/migrator/executor.js +11 -2
  81. package/dist/core/migrator/executor.js.map +1 -1
  82. package/dist/core/migrator/manifest.d.ts +10 -1
  83. package/dist/core/migrator/manifest.d.ts.map +1 -1
  84. package/dist/core/migrator/manifest.js +12 -2
  85. package/dist/core/migrator/manifest.js.map +1 -1
  86. package/dist/core/plugin-scanner.test.js +0 -4
  87. package/dist/core/plugin-scanner.test.js.map +1 -1
  88. package/dist/core/plugin-state.d.ts.map +1 -1
  89. package/dist/core/plugin-state.js +50 -18
  90. package/dist/core/plugin-state.js.map +1 -1
  91. package/dist/core/plugin-takeover.d.ts +15 -0
  92. package/dist/core/plugin-takeover.d.ts.map +1 -1
  93. package/dist/core/plugin-takeover.js +163 -3
  94. package/dist/core/plugin-takeover.js.map +1 -1
  95. package/dist/core/presets.test.js +0 -3
  96. package/dist/core/presets.test.js.map +1 -1
  97. package/dist/core/secret-detector.d.ts +20 -0
  98. package/dist/core/secret-detector.d.ts.map +1 -0
  99. package/dist/core/secret-detector.js +83 -0
  100. package/dist/core/secret-detector.js.map +1 -0
  101. package/dist/core/secret-detector.test.d.ts +2 -0
  102. package/dist/core/secret-detector.test.d.ts.map +1 -0
  103. package/dist/core/secret-detector.test.js +91 -0
  104. package/dist/core/secret-detector.test.js.map +1 -0
  105. package/dist/core/security-scanner.d.ts +24 -0
  106. package/dist/core/security-scanner.d.ts.map +1 -0
  107. package/dist/core/security-scanner.js +182 -0
  108. package/dist/core/security-scanner.js.map +1 -0
  109. package/dist/core/security-scanner.test.d.ts +2 -0
  110. package/dist/core/security-scanner.test.d.ts.map +1 -0
  111. package/dist/core/security-scanner.test.js +120 -0
  112. package/dist/core/security-scanner.test.js.map +1 -0
  113. package/dist/core/snapshot.d.ts.map +1 -1
  114. package/dist/core/snapshot.js +0 -6
  115. package/dist/core/snapshot.js.map +1 -1
  116. package/dist/core/snapshot.test.js +0 -4
  117. package/dist/core/snapshot.test.js.map +1 -1
  118. package/dist/dashboard/assets/_baseUniq-CaVE7eUV.js +1 -0
  119. package/dist/dashboard/assets/arc-CR894Erh.js +1 -0
  120. package/dist/dashboard/assets/architectureDiagram-VXUJARFQ-vuLSFK92.js +36 -0
  121. package/dist/dashboard/assets/blockDiagram-VD42YOAC-CjXwNwFV.js +122 -0
  122. package/dist/dashboard/assets/c4Diagram-YG6GDRKO-BUk0KT3V.js +10 -0
  123. package/dist/dashboard/assets/channel-BzUEK7Iv.js +1 -0
  124. package/dist/dashboard/assets/chunk-4BX2VUAB-BCCD1RD0.js +1 -0
  125. package/dist/dashboard/assets/chunk-55IACEB6-7M5H4j_M.js +1 -0
  126. package/dist/dashboard/assets/chunk-B4BG7PRW-CkuZp9sw.js +165 -0
  127. package/dist/dashboard/assets/chunk-DI55MBZ5-aoWuqaxJ.js +220 -0
  128. package/dist/dashboard/assets/chunk-FMBD7UC4-zGR2QW6c.js +15 -0
  129. package/dist/dashboard/assets/chunk-QN33PNHL-Lj8Zu7hm.js +1 -0
  130. package/dist/dashboard/assets/chunk-QZHKN3VN-JLEIDbAK.js +1 -0
  131. package/dist/dashboard/assets/chunk-TZMSLE5B-BB4GoxaV.js +1 -0
  132. package/dist/dashboard/assets/classDiagram-2ON5EDUG-CMpOlMXG.js +1 -0
  133. package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-CMpOlMXG.js +1 -0
  134. package/dist/dashboard/assets/clone-CHi7kZ5h.js +1 -0
  135. package/dist/dashboard/assets/cose-bilkent-S5V4N54A-DLEOmN1S.js +1 -0
  136. package/dist/dashboard/assets/cytoscape.esm-5J0xJHOV.js +321 -0
  137. package/dist/dashboard/assets/dagre-6UL2VRFP-BKeNwVe7.js +4 -0
  138. package/dist/dashboard/assets/defaultLocale-DX6XiGOO.js +1 -0
  139. package/dist/dashboard/assets/diagram-PSM6KHXK-BwTCZWHJ.js +24 -0
  140. package/dist/dashboard/assets/diagram-QEK2KX5R-Bg109hRA.js +43 -0
  141. package/dist/dashboard/assets/diagram-S2PKOQOG-CjzZEN97.js +24 -0
  142. package/dist/dashboard/assets/erDiagram-Q2GNP2WA-C_o1kY7B.js +60 -0
  143. package/dist/dashboard/assets/flowDiagram-NV44I4VS-CGcmMJTD.js +162 -0
  144. package/dist/dashboard/assets/ganttDiagram-JELNMOA3-Dh1Atgfm.js +267 -0
  145. package/dist/dashboard/assets/gitGraphDiagram-NY62KEGX-BkHRiPWO.js +65 -0
  146. package/dist/dashboard/assets/graph-gTAnu0gr.js +1 -0
  147. package/dist/dashboard/assets/index-DFP3ko3G.css +1 -0
  148. package/dist/dashboard/assets/index-Dr2pvJml.js +189 -0
  149. package/dist/dashboard/assets/infoDiagram-WHAUD3N6-CdqkT51i.js +2 -0
  150. package/dist/dashboard/assets/init-Gi6I4Gst.js +1 -0
  151. package/dist/dashboard/assets/journeyDiagram-XKPGCS4Q-D6H-T7IF.js +139 -0
  152. package/dist/dashboard/assets/kanban-definition-3W4ZIXB7-CdtlB9dE.js +89 -0
  153. package/dist/dashboard/assets/katex-DhXJpUyf.js +261 -0
  154. package/dist/dashboard/assets/layout-5P3G0oCF.js +1 -0
  155. package/dist/dashboard/assets/linear-BEr0iAwY.js +1 -0
  156. package/dist/dashboard/assets/mermaid.core-DY8Lk9ir.js +250 -0
  157. package/dist/dashboard/assets/min-rFBMICyx.js +1 -0
  158. package/dist/dashboard/assets/mindmap-definition-VGOIOE7T-BBgtd54T.js +68 -0
  159. package/dist/dashboard/assets/ordinal-Cboi1Yqb.js +1 -0
  160. package/dist/dashboard/assets/pieDiagram-ADFJNKIX-fgAzUnCv.js +30 -0
  161. package/dist/dashboard/assets/quadrantDiagram-AYHSOK5B-BtBFRMty.js +7 -0
  162. package/dist/dashboard/assets/requirementDiagram-UZGBJVZJ-Dsb2J8qM.js +64 -0
  163. package/dist/dashboard/assets/sankeyDiagram-TZEHDZUN-DgeXoGZy.js +10 -0
  164. package/dist/dashboard/assets/sequenceDiagram-WL72ISMW-CW8ApGYu.js +145 -0
  165. package/dist/dashboard/assets/stateDiagram-FKZM4ZOC-CFKNRDGr.js +1 -0
  166. package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-B3pJgIRu.js +1 -0
  167. package/dist/dashboard/assets/timeline-definition-IT6M3QCI-DeE7K_Tn.js +61 -0
  168. package/dist/dashboard/assets/treemap-KMMF4GRG-DgksShPO.js +128 -0
  169. package/dist/dashboard/assets/xychartDiagram-PRI3JC2R-C8fn_Zm6.js +7 -0
  170. package/dist/dashboard/index.html +2 -2
  171. package/dist/routes/marketplace.d.ts.map +1 -1
  172. package/dist/routes/marketplace.js +179 -1
  173. package/dist/routes/marketplace.js.map +1 -1
  174. package/dist/routes/remove.js +4 -4
  175. package/dist/routes/remove.js.map +1 -1
  176. package/dist/routes/state.d.ts.map +1 -1
  177. package/dist/routes/state.js +56 -9
  178. package/dist/routes/state.js.map +1 -1
  179. package/package.json +2 -2
  180. package/dist/dashboard/assets/index-CAenUQES.css +0 -1
  181. 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
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";
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,9 @@ export async function installFromMarketplace(entry) {
77
92
  return { success: false, error: `Unknown source: ${entry.source}` };
78
93
  }
79
94
  }
95
+ // MCP registry registers in manifest inside installMcpRegistry() directly
80
96
  if (result.success && entry.source !== MS.MCP_REGISTRY) {
81
- await registerSkillInManifest(entry.name, entry.source);
97
+ await registerSkillInManifest(entry.name, entry.source, result.version, result.contentHash);
82
98
  }
83
99
  // Auto-sync to push installed item into tool directories
84
100
  if (result.success) {
@@ -95,20 +111,13 @@ export async function installFromMarketplace(entry) {
95
111
  return { success: false, error: err instanceof Error ? err.message : String(err) };
96
112
  }
97
113
  }
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
114
  async function installClaudePlugin(entry) {
106
115
  const cacheDir = path.join(os.homedir(), ".claude", "plugins", "cache");
107
116
  const src = path.join(cacheDir, entry.name);
108
117
  const dest = path.join(MYCELIUM_DIR, "skills", entry.name);
109
118
  await fs.mkdir(path.dirname(dest), { recursive: true });
110
119
  await fs.symlink(src, dest);
111
- return { success: true, path: dest };
120
+ return { success: true, path: dest, version: entry.version };
112
121
  }
113
122
  async function installMcpRegistry(entry) {
114
123
  const registryEntry = await getRegistryEntry(entry.name);
@@ -118,7 +127,9 @@ async function installMcpRegistry(entry) {
118
127
  const mcpsPath = path.join(MYCELIUM_DIR, "mcps.yaml");
119
128
  const yamlLine = `\n${entry.name}:\n command: ${config.command}\n args: [${(config.args || []).map((a) => `"${a}"`).join(", ")}]\n enabled: true\n`;
120
129
  await fs.appendFile(mcpsPath, yamlLine, "utf-8");
121
- 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 };
122
133
  }
123
134
  async function installAnthropicSkill(entry) {
124
135
  const rawUrl = `https://raw.githubusercontent.com/anthropics/skills/main/skills/${encodeURIComponent(entry.name)}/SKILL.md`;
@@ -130,30 +141,63 @@ async function installAnthropicSkill(entry) {
130
141
  await fs.mkdir(dir, { recursive: true });
131
142
  const filePath = path.join(dir, "SKILL.md");
132
143
  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 };
144
+ return { success: true, path: filePath, contentHash: computeContentHash(content) };
145
145
  }
146
146
  // ============================================================================
147
147
  // Popular / Browse
148
148
  // ============================================================================
149
- export async function getPopularSkills() {
149
+ export async function getPopularSkills(options) {
150
150
  const results = [];
151
151
  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) },
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
+ },
157
201
  ];
158
202
  // Add dynamic GitHub marketplaces
159
203
  const registry = await loadMarketplaceRegistry();
@@ -165,99 +209,59 @@ export async function getPopularSkills() {
165
209
  fetchers.push({
166
210
  name,
167
211
  fn: async () => {
168
- const r = await searchGitHubRepo(gh.owner, gh.repo, "", name);
212
+ const r = await searchGitHubRepo(gh.owner, gh.repo, "", name, options);
169
213
  if (r.entries.length > 0)
170
214
  results.push(r);
171
215
  },
172
216
  });
173
217
  }
174
218
  }
219
+ const log = getTracer().createTrace("marketplace");
220
+ const t0 = Date.now();
175
221
  const settled = await Promise.allSettled(fetchers.map(f => f.fn()));
176
222
  for (let i = 0; i < settled.length; i++) {
177
223
  if (settled[i].status === "rejected") {
178
- 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) });
179
225
  }
180
226
  }
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
- }
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);
195
229
  }
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 });
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 });
200
236
  }
201
237
  }
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 });
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}` };
207
245
  }
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;
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);
248
260
  }
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 });
261
+ if (failed > 0) {
262
+ return { success: true, error: `Installed ${succeeded}/${results.length} components (${failed} failed)` };
260
263
  }
264
+ return { success: true, path: `${succeeded} components installed from ${owner}/${repo}` };
261
265
  }
262
266
  // ============================================================================
263
267
  // Auto-Sync
@@ -271,35 +275,184 @@ async function autoSync() {
271
275
  // ============================================================================
272
276
  // Manifest Registration
273
277
  // ============================================================================
274
- async function registerSkillInManifest(name, source) {
278
+ async function registerSkillInManifest(name, source, version, contentHash) {
275
279
  const manifestDir = MYCELIUM_HOME;
276
280
  const manifest = await loadStateManifest(manifestDir) ?? { version: "1.0.0" };
277
281
  if (!manifest.skills)
278
282
  manifest.skills = {};
279
- manifest.skills[name] = { state: "enabled", source };
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;
280
289
  await saveStateManifest(manifestDir, manifest);
281
290
  }
282
291
  // ============================================================================
283
292
  // Installed Status Enrichment
284
293
  // ============================================================================
285
- async function getInstalledSkillNames() {
294
+ async function getInstalledItems() {
286
295
  const manifest = await loadStateManifest(MYCELIUM_HOME);
287
296
  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));
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;
309
+ }
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
+ }
292
362
  }
293
363
  async function enrichWithInstalledStatus(results) {
294
- const installed = await getInstalledSkillNames();
364
+ const installed = await getInstalledItems();
295
365
  if (installed.size === 0)
296
366
  return results;
297
367
  return results.map(r => ({
298
368
  ...r,
299
- entries: r.entries.map(e => installed.has(e.name) ? { ...e, installed: true } : e),
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
+ }),
300
376
  }));
301
377
  }
302
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
+ });
451
+ }
452
+ }
453
+ return updates;
454
+ }
455
+ // ============================================================================
303
456
  // Update
304
457
  // ============================================================================
305
458
  export async function updateSkill(name, source) {
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/core/marketplace.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,GAEtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAExD,uCAAuC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,MAA0B;IAE1B,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAC;IACjD,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,CAAC,MAAM,CAAC;QACV,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,IAAI,eAAe,CAAC,CAAC,CAAC;YAAE,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzD,6DAA6D;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,EAAE;gBAAE,OAAO,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO;SACrB,MAAM,CAAC,CAAC,CAAC,EAAwD,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;SAC7F,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvC,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAuB;IAEvB,IAAI,CAAC;QACH,IAAI,MAA2D,CAAC;QAChE,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,EAAE,CAAC,QAAQ;gBACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yDAAyD,EAAE,CAAC;YAC9F,KAAK,EAAE,CAAC,UAAU;gBAChB,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YAChD,KAAK,EAAE,CAAC,cAAc;gBACpB,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YACnD,KAAK,EAAE,CAAC,YAAY;gBAClB,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YAClD,KAAK,EAAE,CAAC,gBAAgB;gBACtB,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YACrD,KAAK,EAAE,CAAC,OAAO;gBACb,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YAC9C,OAAO,CAAC,CAAC,CAAC;gBACR,iCAAiC;gBACjC,MAAM,GAAG,GAAG,MAAM,uBAAuB,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC;oBAChB,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,EAAE,EAAE,CAAC;wBACP,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC/D,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACtE,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC;YACvD,MAAM,uBAAuB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,yDAAyD;QACzD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,QAAQ,EAAE,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAuB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,4CAA4C,EAAE,OAAO,CAAC,CAAC;IAC3H,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAuB;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,KAAuB;IACvD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,KAAK,KAAK,CAAC,IAAI,iBAAiB,MAAM,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACvJ,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,KAAuB;IAC1D,MAAM,MAAM,GAAG,mEAAmE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;IAC5H,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAuB;IACnD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,sCAAsC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EACtE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAC5C,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,OAAO,GAA8B,EAAE,CAAC;IAE9C,MAAM,QAAQ,GAAqD;QACjE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE;QAC5E,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE;QACxE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;QACnE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;QACjE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;KAC5D,CAAC;IAEF,kCAAkC;IAClC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG;YAAE,SAAS;QACtE,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,EAAE,EAAE,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,EAAE,EAAE,KAAK,IAAI,EAAE;oBACb,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC9D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAwB,EAAG,OAAO,CAAC,CAAC,CAA2B,CAAC,MAAM,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,OAAkC;IAC3E,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,OAAO,GAAuB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI;YACJ,WAAW,EAAE,6BAA6B,IAAI,EAAE;YAChD,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,EAAE,CAAC,gBAAgB;YAC3B,IAAI,EAAE,OAAgB;SACvB,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,OAAkC;IACzE,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAAkC;IACtE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAAkC;IACtE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAC1F,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO;IACpB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAE7B,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAuB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;QACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;QACxC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI;QAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;QAC1B,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;QAChC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,EAAE,CAAC,UAAU;QACrB,IAAI,EAAE,OAAgB;KACvB,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,OAAkC;IACnE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,sCAAsC,CAAC,UAAU,EACvE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,SAAS;YACtB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiC,CAAC;YAChE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACtB,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM;IACnC,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAuB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3F,MAAM,EAAE,EAAE,CAAC,OAAO;YAClB,IAAI,EAAE,OAAgB;SACvB,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,KAAK,UAAU,QAAQ;IACrB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,YAAY,GAAyC,MAAM,CAAC,WAAW,CAC3E,YAAY,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1D,CAAC;IACF,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,KAAK,UAAU,uBAAuB,CAAC,IAAY,EAAE,MAAc;IACjE,MAAM,WAAW,GAAG,aAAa,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9E,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACrD,MAAM,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,KAAK,UAAU,sBAAsB;IACnC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IACxC,OAAO,IAAI,GAAG,CACZ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,OAAkC;IACzE,MAAM,SAAS,GAAG,MAAM,sBAAsB,EAAE,CAAC;IACjD,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,GAAG,CAAC;QACJ,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACnF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,MAAyB;IAEzB,MAAM,KAAK,GAAqB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACjF,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/core/marketplace.ts"],"names":[],"mappings":"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"}