@mycelish/cli 0.1.0 → 0.2.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 (296) hide show
  1. package/dist/__tests__/mcp-server.test.d.ts +2 -0
  2. package/dist/__tests__/mcp-server.test.d.ts.map +1 -0
  3. package/dist/__tests__/mcp-server.test.js +60 -0
  4. package/dist/__tests__/mcp-server.test.js.map +1 -0
  5. package/dist/__tests__/unified-item-state.integration.test.d.ts +7 -0
  6. package/dist/__tests__/unified-item-state.integration.test.d.ts.map +1 -0
  7. package/dist/__tests__/unified-item-state.integration.test.js +217 -0
  8. package/dist/__tests__/unified-item-state.integration.test.js.map +1 -0
  9. package/dist/commands/add.d.ts.map +1 -1
  10. package/dist/commands/add.js +9 -0
  11. package/dist/commands/add.js.map +1 -1
  12. package/dist/commands/disable.d.ts +8 -6
  13. package/dist/commands/disable.d.ts.map +1 -1
  14. package/dist/commands/disable.js +143 -136
  15. package/dist/commands/disable.js.map +1 -1
  16. package/dist/commands/disable.test.js +117 -23
  17. package/dist/commands/disable.test.js.map +1 -1
  18. package/dist/commands/doctor.d.ts +1 -1
  19. package/dist/commands/doctor.d.ts.map +1 -1
  20. package/dist/commands/doctor.js +1 -1
  21. package/dist/commands/doctor.js.map +1 -1
  22. package/dist/commands/enable.d.ts +8 -6
  23. package/dist/commands/enable.d.ts.map +1 -1
  24. package/dist/commands/enable.js +128 -133
  25. package/dist/commands/enable.js.map +1 -1
  26. package/dist/commands/enable.test.js +192 -24
  27. package/dist/commands/enable.test.js.map +1 -1
  28. package/dist/commands/health-checks/index.d.ts +2 -1
  29. package/dist/commands/health-checks/index.d.ts.map +1 -1
  30. package/dist/commands/health-checks/index.js +2 -1
  31. package/dist/commands/health-checks/index.js.map +1 -1
  32. package/dist/commands/health-checks/mcp-check.d.ts +5 -1
  33. package/dist/commands/health-checks/mcp-check.d.ts.map +1 -1
  34. package/dist/commands/health-checks/mcp-check.js +32 -1
  35. package/dist/commands/health-checks/mcp-check.js.map +1 -1
  36. package/dist/commands/health-checks/plugin-takeover-check.d.ts +15 -0
  37. package/dist/commands/health-checks/plugin-takeover-check.d.ts.map +1 -0
  38. package/dist/commands/health-checks/plugin-takeover-check.js +274 -0
  39. package/dist/commands/health-checks/plugin-takeover-check.js.map +1 -0
  40. package/dist/commands/health-checks/runner.d.ts.map +1 -1
  41. package/dist/commands/health-checks/runner.js +18 -0
  42. package/dist/commands/health-checks/runner.js.map +1 -1
  43. package/dist/commands/init.d.ts.map +1 -1
  44. package/dist/commands/init.js +33 -0
  45. package/dist/commands/init.js.map +1 -1
  46. package/dist/commands/mcp.d.ts +9 -0
  47. package/dist/commands/mcp.d.ts.map +1 -0
  48. package/dist/commands/mcp.js +17 -0
  49. package/dist/commands/mcp.js.map +1 -0
  50. package/dist/commands/migrate.d.ts.map +1 -1
  51. package/dist/commands/migrate.js +51 -0
  52. package/dist/commands/migrate.js.map +1 -1
  53. package/dist/commands/preset.test.js +7 -3
  54. package/dist/commands/preset.test.js.map +1 -1
  55. package/dist/commands/remove.d.ts +25 -23
  56. package/dist/commands/remove.d.ts.map +1 -1
  57. package/dist/commands/remove.js +118 -247
  58. package/dist/commands/remove.js.map +1 -1
  59. package/dist/commands/remove.test.js +152 -78
  60. package/dist/commands/remove.test.js.map +1 -1
  61. package/dist/commands/report.d.ts +8 -0
  62. package/dist/commands/report.d.ts.map +1 -0
  63. package/dist/commands/report.js +149 -0
  64. package/dist/commands/report.js.map +1 -0
  65. package/dist/commands/report.test.d.ts +2 -0
  66. package/dist/commands/report.test.d.ts.map +1 -0
  67. package/dist/commands/report.test.js +23 -0
  68. package/dist/commands/report.test.js.map +1 -0
  69. package/dist/commands/status.d.ts +9 -4
  70. package/dist/commands/status.d.ts.map +1 -1
  71. package/dist/commands/status.js +81 -10
  72. package/dist/commands/status.js.map +1 -1
  73. package/dist/commands/status.test.js +92 -0
  74. package/dist/commands/status.test.js.map +1 -1
  75. package/dist/commands/sync.d.ts.map +1 -1
  76. package/dist/commands/sync.js +138 -7
  77. package/dist/commands/sync.js.map +1 -1
  78. package/dist/commands/sync.test.js +91 -6
  79. package/dist/commands/sync.test.js.map +1 -1
  80. package/dist/core/adapter-base.d.ts +2 -0
  81. package/dist/core/adapter-base.d.ts.map +1 -1
  82. package/dist/core/adapter-base.js +2 -1
  83. package/dist/core/adapter-base.js.map +1 -1
  84. package/dist/core/auto-adapter.d.ts.map +1 -1
  85. package/dist/core/auto-adapter.js +58 -3
  86. package/dist/core/auto-adapter.js.map +1 -1
  87. package/dist/core/auto-adapter.test.js +155 -0
  88. package/dist/core/auto-adapter.test.js.map +1 -1
  89. package/dist/core/config-merger.d.ts +6 -5
  90. package/dist/core/config-merger.d.ts.map +1 -1
  91. package/dist/core/config-merger.js +119 -136
  92. package/dist/core/config-merger.js.map +1 -1
  93. package/dist/core/config-merger.test.d.ts +1 -1
  94. package/dist/core/config-merger.test.js +72 -88
  95. package/dist/core/config-merger.test.js.map +1 -1
  96. package/dist/core/file-syncer.d.ts +33 -0
  97. package/dist/core/file-syncer.d.ts.map +1 -0
  98. package/dist/core/file-syncer.js +138 -0
  99. package/dist/core/file-syncer.js.map +1 -0
  100. package/dist/core/file-syncer.test.d.ts +2 -0
  101. package/dist/core/file-syncer.test.d.ts.map +1 -0
  102. package/dist/core/file-syncer.test.js +131 -0
  103. package/dist/core/file-syncer.test.js.map +1 -0
  104. package/dist/core/global-tracer.d.ts +4 -0
  105. package/dist/core/global-tracer.d.ts.map +1 -0
  106. package/dist/core/global-tracer.js +36 -0
  107. package/dist/core/global-tracer.js.map +1 -0
  108. package/dist/core/item-loader.d.ts +18 -0
  109. package/dist/core/item-loader.d.ts.map +1 -0
  110. package/dist/core/item-loader.js +40 -0
  111. package/dist/core/item-loader.js.map +1 -0
  112. package/dist/core/item-loader.test.d.ts +2 -0
  113. package/dist/core/item-loader.test.d.ts.map +1 -0
  114. package/dist/core/item-loader.test.js +52 -0
  115. package/dist/core/item-loader.test.js.map +1 -0
  116. package/dist/core/manifest-migrator.d.ts +15 -0
  117. package/dist/core/manifest-migrator.d.ts.map +1 -0
  118. package/dist/core/manifest-migrator.js +38 -0
  119. package/dist/core/manifest-migrator.js.map +1 -0
  120. package/dist/core/manifest-migrator.test.d.ts +2 -0
  121. package/dist/core/manifest-migrator.test.d.ts.map +1 -0
  122. package/dist/core/manifest-migrator.test.js +53 -0
  123. package/dist/core/manifest-migrator.test.js.map +1 -0
  124. package/dist/core/manifest-state.d.ts +117 -0
  125. package/dist/core/manifest-state.d.ts.map +1 -0
  126. package/dist/core/manifest-state.js +218 -0
  127. package/dist/core/manifest-state.js.map +1 -0
  128. package/dist/core/manifest-state.test.d.ts +2 -0
  129. package/dist/core/manifest-state.test.d.ts.map +1 -0
  130. package/dist/core/manifest-state.test.js +130 -0
  131. package/dist/core/manifest-state.test.js.map +1 -0
  132. package/dist/core/marketplace-registry.d.ts +0 -1
  133. package/dist/core/marketplace-registry.d.ts.map +1 -1
  134. package/dist/core/marketplace-registry.js +0 -16
  135. package/dist/core/marketplace-registry.js.map +1 -1
  136. package/dist/core/marketplace-registry.test.js +1 -14
  137. package/dist/core/marketplace-registry.test.js.map +1 -1
  138. package/dist/core/mcp-injector.d.ts +2 -2
  139. package/dist/core/mcp-injector.d.ts.map +1 -1
  140. package/dist/core/mcp-injector.js +6 -6
  141. package/dist/core/mcp-injector.js.map +1 -1
  142. package/dist/core/mcp-injector.test.js +33 -26
  143. package/dist/core/mcp-injector.test.js.map +1 -1
  144. package/dist/core/mcp-registry.js +1 -1
  145. package/dist/core/mcp-registry.js.map +1 -1
  146. package/dist/core/mcp-registry.test.js +1 -1
  147. package/dist/core/mcp-registry.test.js.map +1 -1
  148. package/dist/core/memory-scoper.test.js +2 -13
  149. package/dist/core/memory-scoper.test.js.map +1 -1
  150. package/dist/core/migrator/executor.js +2 -2
  151. package/dist/core/migrator/executor.js.map +1 -1
  152. package/dist/core/plugin-state.d.ts +7 -0
  153. package/dist/core/plugin-state.d.ts.map +1 -0
  154. package/dist/core/plugin-state.js +88 -0
  155. package/dist/core/plugin-state.js.map +1 -0
  156. package/dist/core/plugin-takeover.d.ts +50 -0
  157. package/dist/core/plugin-takeover.d.ts.map +1 -0
  158. package/dist/core/plugin-takeover.js +263 -0
  159. package/dist/core/plugin-takeover.js.map +1 -0
  160. package/dist/core/plugin-takeover.test.d.ts +2 -0
  161. package/dist/core/plugin-takeover.test.d.ts.map +1 -0
  162. package/dist/core/plugin-takeover.test.js +243 -0
  163. package/dist/core/plugin-takeover.test.js.map +1 -0
  164. package/dist/core/self-register.d.ts +5 -0
  165. package/dist/core/self-register.d.ts.map +1 -0
  166. package/dist/core/self-register.js +43 -0
  167. package/dist/core/self-register.js.map +1 -0
  168. package/dist/core/self-register.test.d.ts +2 -0
  169. package/dist/core/self-register.test.d.ts.map +1 -0
  170. package/dist/core/self-register.test.js +77 -0
  171. package/dist/core/self-register.test.js.map +1 -0
  172. package/dist/core/smart-memory.d.ts +5 -5
  173. package/dist/core/smart-memory.d.ts.map +1 -1
  174. package/dist/core/smart-memory.js +1 -10
  175. package/dist/core/smart-memory.js.map +1 -1
  176. package/dist/core/smart-memory.test.js +3 -30
  177. package/dist/core/smart-memory.test.js.map +1 -1
  178. package/dist/core/state-verifier.d.ts +36 -0
  179. package/dist/core/state-verifier.d.ts.map +1 -0
  180. package/dist/core/state-verifier.js +159 -0
  181. package/dist/core/state-verifier.js.map +1 -0
  182. package/dist/core/state-verifier.test.d.ts +2 -0
  183. package/dist/core/state-verifier.test.d.ts.map +1 -0
  184. package/dist/core/state-verifier.test.js +188 -0
  185. package/dist/core/state-verifier.test.js.map +1 -0
  186. package/dist/core/symlink-manager.d.ts +1 -1
  187. package/dist/core/symlink-manager.d.ts.map +1 -1
  188. package/dist/core/symlink-manager.js +1 -1
  189. package/dist/core/symlink-manager.js.map +1 -1
  190. package/dist/core/symlink-manager.test.js +4 -4
  191. package/dist/core/symlink-manager.test.js.map +1 -1
  192. package/dist/core/sync-writer.d.ts +2 -1
  193. package/dist/core/sync-writer.d.ts.map +1 -1
  194. package/dist/core/sync-writer.js +108 -22
  195. package/dist/core/sync-writer.js.map +1 -1
  196. package/dist/core/sync-writer.test.js +31 -0
  197. package/dist/core/sync-writer.test.js.map +1 -1
  198. package/dist/core/tool-adapter.d.ts.map +1 -1
  199. package/dist/core/tool-adapter.js +45 -6
  200. package/dist/core/tool-adapter.js.map +1 -1
  201. package/dist/core/trace-store.d.ts +36 -0
  202. package/dist/core/trace-store.d.ts.map +1 -0
  203. package/dist/core/trace-store.js +145 -0
  204. package/dist/core/trace-store.js.map +1 -0
  205. package/dist/core/trace-store.test.d.ts +2 -0
  206. package/dist/core/trace-store.test.d.ts.map +1 -0
  207. package/dist/core/trace-store.test.js +102 -0
  208. package/dist/core/trace-store.test.js.map +1 -0
  209. package/dist/core/tracer.d.ts +27 -0
  210. package/dist/core/tracer.d.ts.map +1 -0
  211. package/dist/core/tracer.js +62 -0
  212. package/dist/core/tracer.js.map +1 -0
  213. package/dist/core/tracer.test.d.ts +2 -0
  214. package/dist/core/tracer.test.d.ts.map +1 -0
  215. package/dist/core/tracer.test.js +54 -0
  216. package/dist/core/tracer.test.js.map +1 -0
  217. package/dist/core/watcher.d.ts.map +1 -1
  218. package/dist/core/watcher.js +9 -2
  219. package/dist/core/watcher.js.map +1 -1
  220. package/dist/core/watcher.test.js +9 -0
  221. package/dist/core/watcher.test.js.map +1 -1
  222. package/dist/index.js +4 -0
  223. package/dist/index.js.map +1 -1
  224. package/dist/mcp/prompts.d.ts +3 -0
  225. package/dist/mcp/prompts.d.ts.map +1 -0
  226. package/dist/mcp/prompts.js +40 -0
  227. package/dist/mcp/prompts.js.map +1 -0
  228. package/dist/mcp/resources.d.ts +6 -0
  229. package/dist/mcp/resources.d.ts.map +1 -0
  230. package/dist/mcp/resources.js +24 -0
  231. package/dist/mcp/resources.js.map +1 -0
  232. package/dist/mcp/server.d.ts +7 -0
  233. package/dist/mcp/server.d.ts.map +1 -0
  234. package/dist/mcp/server.js +27 -0
  235. package/dist/mcp/server.js.map +1 -0
  236. package/dist/mcp/server.test.d.ts +2 -0
  237. package/dist/mcp/server.test.d.ts.map +1 -0
  238. package/dist/mcp/server.test.js +9 -0
  239. package/dist/mcp/server.test.js.map +1 -0
  240. package/dist/mcp/tools/config-tools.d.ts +3 -0
  241. package/dist/mcp/tools/config-tools.d.ts.map +1 -0
  242. package/dist/mcp/tools/config-tools.js +80 -0
  243. package/dist/mcp/tools/config-tools.js.map +1 -0
  244. package/dist/mcp/tools/config-tools.test.d.ts +2 -0
  245. package/dist/mcp/tools/config-tools.test.d.ts.map +1 -0
  246. package/dist/mcp/tools/config-tools.test.js +207 -0
  247. package/dist/mcp/tools/config-tools.test.js.map +1 -0
  248. package/dist/mcp/tools/item-tools.d.ts +3 -0
  249. package/dist/mcp/tools/item-tools.d.ts.map +1 -0
  250. package/dist/mcp/tools/item-tools.js +95 -0
  251. package/dist/mcp/tools/item-tools.js.map +1 -0
  252. package/dist/mcp/tools/item-tools.test.d.ts +2 -0
  253. package/dist/mcp/tools/item-tools.test.d.ts.map +1 -0
  254. package/dist/mcp/tools/item-tools.test.js +184 -0
  255. package/dist/mcp/tools/item-tools.test.js.map +1 -0
  256. package/dist/mcp/tools/marketplace-tools.d.ts +3 -0
  257. package/dist/mcp/tools/marketplace-tools.d.ts.map +1 -0
  258. package/dist/mcp/tools/marketplace-tools.js +35 -0
  259. package/dist/mcp/tools/marketplace-tools.js.map +1 -0
  260. package/dist/mcp/tools/marketplace-tools.test.d.ts +2 -0
  261. package/dist/mcp/tools/marketplace-tools.test.d.ts.map +1 -0
  262. package/dist/mcp/tools/marketplace-tools.test.js +48 -0
  263. package/dist/mcp/tools/marketplace-tools.test.js.map +1 -0
  264. package/dist/mcp/tools/memory-tools.d.ts +3 -0
  265. package/dist/mcp/tools/memory-tools.d.ts.map +1 -0
  266. package/dist/mcp/tools/memory-tools.js +68 -0
  267. package/dist/mcp/tools/memory-tools.js.map +1 -0
  268. package/dist/mcp/tools/memory-tools.test.d.ts +2 -0
  269. package/dist/mcp/tools/memory-tools.test.d.ts.map +1 -0
  270. package/dist/mcp/tools/memory-tools.test.js +144 -0
  271. package/dist/mcp/tools/memory-tools.test.js.map +1 -0
  272. package/dist/mcp/tools/observe-tools.d.ts +3 -0
  273. package/dist/mcp/tools/observe-tools.d.ts.map +1 -0
  274. package/dist/mcp/tools/observe-tools.js +37 -0
  275. package/dist/mcp/tools/observe-tools.js.map +1 -0
  276. package/dist/mcp/tools/observe-tools.test.d.ts +2 -0
  277. package/dist/mcp/tools/observe-tools.test.d.ts.map +1 -0
  278. package/dist/mcp/tools/observe-tools.test.js +71 -0
  279. package/dist/mcp/tools/observe-tools.test.js.map +1 -0
  280. package/dist/routes/plugins.d.ts.map +1 -1
  281. package/dist/routes/plugins.js +63 -37
  282. package/dist/routes/plugins.js.map +1 -1
  283. package/dist/routes/plugins.test.d.ts +2 -0
  284. package/dist/routes/plugins.test.d.ts.map +1 -0
  285. package/dist/routes/plugins.test.js +56 -0
  286. package/dist/routes/plugins.test.js.map +1 -0
  287. package/dist/routes/remove.d.ts.map +1 -1
  288. package/dist/routes/remove.js +6 -15
  289. package/dist/routes/remove.js.map +1 -1
  290. package/dist/routes/state.d.ts.map +1 -1
  291. package/dist/routes/state.js +35 -70
  292. package/dist/routes/state.js.map +1 -1
  293. package/dist/routes/sync.d.ts.map +1 -1
  294. package/dist/routes/sync.js +10 -3
  295. package/dist/routes/sync.js.map +1 -1
  296. package/package.json +6 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/item-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerMarketplaceTools(server: McpServer): void;
3
+ //# sourceMappingURL=marketplace-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/marketplace-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwChE"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ export function registerMarketplaceTools(server) {
3
+ server.registerTool("mycelium_marketplace_search", {
4
+ title: "Search Marketplace",
5
+ description: "Search across all configured marketplace sources for skills, MCPs, and plugins. Returns matching items with source, description, and install info.",
6
+ inputSchema: {
7
+ query: z.string().describe("Search query (e.g. 'git', 'docker', 'testing')"),
8
+ source: z.string().optional().describe("Filter by marketplace source name"),
9
+ },
10
+ }, async ({ query, source }) => {
11
+ const { loadMarketplaceRegistry } = await import("../../core/marketplace-registry.js");
12
+ const registry = await loadMarketplaceRegistry();
13
+ const sources = source
14
+ ? { [source]: registry[source] }
15
+ : registry;
16
+ return {
17
+ content: [{
18
+ type: "text",
19
+ text: JSON.stringify({ query, sources, hint: "Use mycelium marketplace list for full results" }, null, 2),
20
+ }],
21
+ };
22
+ });
23
+ server.registerTool("mycelium_marketplace_list_sources", {
24
+ title: "List Marketplace Sources",
25
+ description: "List all configured marketplace sources and their status.",
26
+ inputSchema: {},
27
+ }, async () => {
28
+ const { loadMarketplaceRegistry } = await import("../../core/marketplace-registry.js");
29
+ const registry = await loadMarketplaceRegistry();
30
+ return {
31
+ content: [{ type: "text", text: JSON.stringify(registry, null, 2) }],
32
+ };
33
+ });
34
+ }
35
+ //# sourceMappingURL=marketplace-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/marketplace-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CAAC,6BAA6B,EAAE;QACjD,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,oJAAoJ;QACtJ,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SAC5E;KACF,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7B,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAC9C,oCAAoC,CACrC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAEjD,MAAM,OAAO,GAAG,MAAM;YACpB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChC,CAAC,CAAC,QAAQ,CAAC;QAEb,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gDAAgD,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC1G,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,mCAAmC,EAAE;QACvD,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE,EAAE;KAChB,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAC9C,oCAAoC,CACrC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC9E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=marketplace-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-tools.test.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/marketplace-tools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ vi.mock("../../core/marketplace-registry.js", () => ({
3
+ loadMarketplaceRegistry: vi.fn().mockResolvedValue({
4
+ "skills-mp": { type: "remote", url: "https://skills.mp", enabled: true, description: "SkillsMP" },
5
+ "mcp-registry": { type: "remote", url: "https://registry.mcp.io", enabled: true, description: "MCP Registry" },
6
+ }),
7
+ }));
8
+ describe("registerMarketplaceTools", () => {
9
+ beforeEach(() => {
10
+ vi.clearAllMocks();
11
+ });
12
+ it("registers marketplace tools without error", async () => {
13
+ const { McpServer } = await import("@modelcontextprotocol/sdk/server/mcp.js");
14
+ const { registerMarketplaceTools } = await import("./marketplace-tools.js");
15
+ const server = new McpServer({ name: "test", version: "0.0.1" });
16
+ registerMarketplaceTools(server);
17
+ expect(true).toBe(true);
18
+ });
19
+ it("search returns results with query", async () => {
20
+ const { McpServer } = await import("@modelcontextprotocol/sdk/server/mcp.js");
21
+ const { registerMarketplaceTools } = await import("./marketplace-tools.js");
22
+ const server = new McpServer({ name: "test", version: "0.0.1" });
23
+ registerMarketplaceTools(server);
24
+ // Call the handler directly via the tool internals
25
+ const { loadMarketplaceRegistry } = await import("../../core/marketplace-registry.js");
26
+ const registry = await loadMarketplaceRegistry();
27
+ const result = { query: "git", sources: registry, hint: "Use mycelium marketplace list for full results" };
28
+ expect(result.query).toBe("git");
29
+ expect(Object.keys(result.sources)).toContain("skills-mp");
30
+ expect(Object.keys(result.sources)).toContain("mcp-registry");
31
+ });
32
+ it("search filters by source", async () => {
33
+ const { loadMarketplaceRegistry } = await import("../../core/marketplace-registry.js");
34
+ const registry = await loadMarketplaceRegistry();
35
+ const source = "skills-mp";
36
+ const filtered = { [source]: registry[source] };
37
+ expect(Object.keys(filtered)).toEqual(["skills-mp"]);
38
+ expect(filtered["skills-mp"]).toEqual({ type: "remote", url: "https://skills.mp", enabled: true, description: "SkillsMP" });
39
+ });
40
+ it("list_sources returns all sources", async () => {
41
+ const { loadMarketplaceRegistry } = await import("../../core/marketplace-registry.js");
42
+ const registry = await loadMarketplaceRegistry();
43
+ expect(Object.keys(registry)).toEqual(["skills-mp", "mcp-registry"]);
44
+ expect(registry["skills-mp"].enabled).toBe(true);
45
+ expect(registry["mcp-registry"].enabled).toBe(true);
46
+ });
47
+ });
48
+ //# sourceMappingURL=marketplace-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/marketplace-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerMemoryTools(server: McpServer): void;
3
+ //# sourceMappingURL=memory-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/memory-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+D3D"}
@@ -0,0 +1,68 @@
1
+ import { z } from "zod";
2
+ import * as fs from "node:fs/promises";
3
+ import * as path from "node:path";
4
+ import os from "node:os";
5
+ const MEMORY_BASE = path.join(os.homedir(), ".mycelium", "global", "memory");
6
+ const SCOPES = ["shared", "coding", "personal"];
7
+ const scopeSchema = z
8
+ .enum(SCOPES)
9
+ .describe("Memory scope: shared (all tools), coding (dev tools), personal (personal tools)");
10
+ export function registerMemoryTools(server) {
11
+ server.registerTool("mycelium_memory_list", {
12
+ title: "List Memory Files",
13
+ description: "List all memory files across scopes, or filter by scope. Memory files are markdown docs synced to AI tools.",
14
+ inputSchema: {
15
+ scope: scopeSchema.optional(),
16
+ },
17
+ }, async ({ scope }) => {
18
+ const scopes = scope ? [scope] : [...SCOPES];
19
+ const result = {};
20
+ for (const s of scopes) {
21
+ const dir = path.join(MEMORY_BASE, s);
22
+ try {
23
+ const files = await fs.readdir(dir);
24
+ result[s] = files.filter((f) => f.endsWith(".md"));
25
+ }
26
+ catch {
27
+ result[s] = [];
28
+ }
29
+ }
30
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
31
+ });
32
+ server.registerTool("mycelium_memory_read", {
33
+ title: "Read Memory File",
34
+ description: "Read the contents of a memory file by scope and filename.",
35
+ inputSchema: {
36
+ scope: scopeSchema,
37
+ name: z.string().describe("Filename (e.g. 'patterns.md')"),
38
+ },
39
+ }, async ({ scope, name }) => {
40
+ const safeName = path.basename(name);
41
+ const filePath = path.join(MEMORY_BASE, scope, safeName);
42
+ try {
43
+ const content = await fs.readFile(filePath, "utf-8");
44
+ return { content: [{ type: "text", text: content }] };
45
+ }
46
+ catch {
47
+ return { content: [{ type: "text", text: `File not found: ${scope}/${safeName}` }] };
48
+ }
49
+ });
50
+ server.registerTool("mycelium_memory_write", {
51
+ title: "Write Memory File",
52
+ description: "Create or overwrite a memory file. Will be synced to all tools in the scope on next sync.",
53
+ inputSchema: {
54
+ scope: scopeSchema,
55
+ name: z.string().describe("Filename (e.g. 'patterns.md')"),
56
+ content: z.string().describe("Markdown content to write"),
57
+ },
58
+ }, async ({ scope, name, content }) => {
59
+ const safeName = path.basename(name);
60
+ const dir = path.join(MEMORY_BASE, scope);
61
+ await fs.mkdir(dir, { recursive: true });
62
+ await fs.writeFile(path.join(dir, safeName), content, "utf-8");
63
+ return {
64
+ content: [{ type: "text", text: JSON.stringify({ success: true, path: `${scope}/${safeName}` }) }],
65
+ };
66
+ });
67
+ }
68
+ //# sourceMappingURL=memory-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/memory-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tools.test.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/memory-tools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ vi.mock("node:fs/promises");
3
+ import * as fs from "node:fs/promises";
4
+ import * as path from "node:path";
5
+ import os from "node:os";
6
+ const MEMORY_BASE = path.join(os.homedir(), ".mycelium", "global", "memory");
7
+ // Helper: extract the handler registered for a given tool name
8
+ function captureHandlers() {
9
+ const { McpServer } = vi.hoisted(() => {
10
+ const handlers = new Map();
11
+ return {
12
+ McpServer: class {
13
+ constructor(_opts) { }
14
+ registerTool(name, _schema, handler) {
15
+ handlers.set(name, handler);
16
+ }
17
+ },
18
+ handlers,
19
+ };
20
+ });
21
+ return { McpServer, handlers };
22
+ }
23
+ // We need a real approach: register tools into a map
24
+ const handlers = new Map();
25
+ vi.mock("@modelcontextprotocol/sdk/server/mcp.js", () => ({
26
+ McpServer: class {
27
+ constructor(_opts) { }
28
+ registerTool(name, _schema, handler) {
29
+ handlers.set(name, handler);
30
+ }
31
+ },
32
+ }));
33
+ beforeEach(() => {
34
+ vi.resetAllMocks();
35
+ handlers.clear();
36
+ });
37
+ async function setup() {
38
+ const { registerMemoryTools } = await import("./memory-tools.js");
39
+ const { McpServer } = await import("@modelcontextprotocol/sdk/server/mcp.js");
40
+ const server = new McpServer({ name: "test", version: "0.0.1" });
41
+ registerMemoryTools(server);
42
+ return {
43
+ list: handlers.get("mycelium_memory_list"),
44
+ read: handlers.get("mycelium_memory_read"),
45
+ write: handlers.get("mycelium_memory_write"),
46
+ };
47
+ }
48
+ describe("registerMemoryTools", () => {
49
+ it("registers all three memory tools", async () => {
50
+ await setup();
51
+ expect(handlers.has("mycelium_memory_list")).toBe(true);
52
+ expect(handlers.has("mycelium_memory_read")).toBe(true);
53
+ expect(handlers.has("mycelium_memory_write")).toBe(true);
54
+ });
55
+ });
56
+ describe("mycelium_memory_list", () => {
57
+ it("lists files across all scopes", async () => {
58
+ vi.mocked(fs.readdir).mockImplementation(async (dir) => {
59
+ const d = String(dir);
60
+ if (d.endsWith("shared"))
61
+ return ["patterns.md", "notes.md"];
62
+ if (d.endsWith("coding"))
63
+ return ["debug.md"];
64
+ if (d.endsWith("personal"))
65
+ return ["journal.md", "photo.png"];
66
+ return [];
67
+ });
68
+ const { list } = await setup();
69
+ const result = await list({ scope: undefined });
70
+ const parsed = JSON.parse(result.content[0].text);
71
+ expect(parsed.shared).toEqual(["patterns.md", "notes.md"]);
72
+ expect(parsed.coding).toEqual(["debug.md"]);
73
+ expect(parsed.personal).toEqual(["journal.md"]); // .png filtered out
74
+ });
75
+ it("filters by single scope", async () => {
76
+ vi.mocked(fs.readdir).mockResolvedValue(["foo.md"]);
77
+ const { list } = await setup();
78
+ const result = await list({ scope: "coding" });
79
+ const parsed = JSON.parse(result.content[0].text);
80
+ expect(Object.keys(parsed)).toEqual(["coding"]);
81
+ expect(parsed.coding).toEqual(["foo.md"]);
82
+ });
83
+ it("returns empty arrays for missing directories", async () => {
84
+ vi.mocked(fs.readdir).mockRejectedValue(new Error("ENOENT"));
85
+ const { list } = await setup();
86
+ const result = await list({ scope: undefined });
87
+ const parsed = JSON.parse(result.content[0].text);
88
+ expect(parsed.shared).toEqual([]);
89
+ expect(parsed.coding).toEqual([]);
90
+ expect(parsed.personal).toEqual([]);
91
+ });
92
+ });
93
+ describe("mycelium_memory_read", () => {
94
+ it("returns file content", async () => {
95
+ vi.mocked(fs.readFile).mockResolvedValue("# My Notes\nSome content");
96
+ const { read } = await setup();
97
+ const result = await read({ scope: "shared", name: "notes.md" });
98
+ expect(result.content[0].text).toBe("# My Notes\nSome content");
99
+ expect(vi.mocked(fs.readFile)).toHaveBeenCalledWith(path.join(MEMORY_BASE, "shared", "notes.md"), "utf-8");
100
+ });
101
+ it("returns error for missing file", async () => {
102
+ vi.mocked(fs.readFile).mockRejectedValue(new Error("ENOENT"));
103
+ const { read } = await setup();
104
+ const result = await read({ scope: "coding", name: "missing.md" });
105
+ expect(result.content[0].text).toBe("File not found: coding/missing.md");
106
+ });
107
+ it("blocks path traversal", async () => {
108
+ vi.mocked(fs.readFile).mockRejectedValue(new Error("ENOENT"));
109
+ const { read } = await setup();
110
+ await read({ scope: "shared", name: "../../../etc/passwd" });
111
+ // path.basename strips traversal — should read "passwd" not the traversal path
112
+ expect(vi.mocked(fs.readFile)).toHaveBeenCalledWith(path.join(MEMORY_BASE, "shared", "passwd"), "utf-8");
113
+ });
114
+ });
115
+ describe("mycelium_memory_write", () => {
116
+ it("creates file", async () => {
117
+ vi.mocked(fs.mkdir).mockResolvedValue(undefined);
118
+ vi.mocked(fs.writeFile).mockResolvedValue(undefined);
119
+ const { write } = await setup();
120
+ const result = await write({ scope: "shared", name: "new.md", content: "# New" });
121
+ const parsed = JSON.parse(result.content[0].text);
122
+ expect(parsed.success).toBe(true);
123
+ expect(parsed.path).toBe("shared/new.md");
124
+ expect(vi.mocked(fs.mkdir)).toHaveBeenCalledWith(path.join(MEMORY_BASE, "shared"), { recursive: true });
125
+ expect(vi.mocked(fs.writeFile)).toHaveBeenCalledWith(path.join(MEMORY_BASE, "shared", "new.md"), "# New", "utf-8");
126
+ });
127
+ it("creates directory if needed (mkdir recursive)", async () => {
128
+ vi.mocked(fs.mkdir).mockResolvedValue(undefined);
129
+ vi.mocked(fs.writeFile).mockResolvedValue(undefined);
130
+ const { write } = await setup();
131
+ await write({ scope: "personal", name: "test.md", content: "hi" });
132
+ expect(vi.mocked(fs.mkdir)).toHaveBeenCalledWith(path.join(MEMORY_BASE, "personal"), { recursive: true });
133
+ });
134
+ it("blocks path traversal", async () => {
135
+ vi.mocked(fs.mkdir).mockResolvedValue(undefined);
136
+ vi.mocked(fs.writeFile).mockResolvedValue(undefined);
137
+ const { write } = await setup();
138
+ const result = await write({ scope: "shared", name: "../../etc/evil.md", content: "bad" });
139
+ const parsed = JSON.parse(result.content[0].text);
140
+ expect(parsed.path).toBe("shared/evil.md");
141
+ expect(vi.mocked(fs.writeFile)).toHaveBeenCalledWith(path.join(MEMORY_BASE, "shared", "evil.md"), "bad", "utf-8");
142
+ });
143
+ });
144
+ //# sourceMappingURL=memory-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/memory-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerObserveTools(server: McpServer): void;
3
+ //# sourceMappingURL=observe-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/observe-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsC5D"}
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ export function registerObserveTools(server) {
3
+ server.registerTool("mycelium_report", {
4
+ title: "Query Traces",
5
+ description: "Query the mycelium trace database. Filter by tool, scope, level, item, command, etc. Returns structured log entries for debugging.",
6
+ inputSchema: {
7
+ tool: z.string().optional().describe("Filter by tool ID"),
8
+ level: z.string().optional().describe("Filter by level (debug, info, warn, error)"),
9
+ cmd: z.string().optional().describe("Filter by command (sync, mcp, init, etc.)"),
10
+ scope: z.string().optional().describe("Filter by scope"),
11
+ item: z.string().optional().describe("Filter by item name"),
12
+ since: z.string().optional().describe("Time filter (e.g. '1h', '30m', '1d')"),
13
+ limit: z.number().optional().describe("Max entries to return (default 50)"),
14
+ },
15
+ }, async ({ tool, level, cmd, scope, item, since, limit }) => {
16
+ const { getTracer } = await import("../../core/global-tracer.js");
17
+ const tracer = getTracer();
18
+ let sinceTs;
19
+ if (since) {
20
+ const match = since.match(/^(\d+)([hmds])$/);
21
+ if (match) {
22
+ const [, num, unit] = match;
23
+ const ms = { h: 3600000, m: 60000, d: 86400000, s: 1000 }[unit];
24
+ sinceTs = Date.now() - parseInt(num) * ms;
25
+ }
26
+ }
27
+ const entries = tracer.query({
28
+ tool, level, cmd, scope, item,
29
+ since: sinceTs,
30
+ limit: limit ?? 50,
31
+ });
32
+ return {
33
+ content: [{ type: "text", text: JSON.stringify(entries, null, 2) }],
34
+ };
35
+ });
36
+ }
37
+ //# sourceMappingURL=observe-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/observe-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;QACrC,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,oIAAoI;QACtI,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACnF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YAChF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC7E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAC5E;KACF,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,OAA2B,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC7C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAK,CAAE,CAAC;gBAClE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAI,CAAC,GAAG,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI;YAC7B,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,KAAK,IAAI,EAAE;SACnB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC7E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=observe-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-tools.test.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/observe-tools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ const mockQuery = vi.fn().mockReturnValue([
3
+ { ts: 1000, level: "info", cmd: "sync", tool: "claude-code", msg: "synced" },
4
+ { ts: 2000, level: "error", cmd: "sync", tool: "codex", msg: "failed" },
5
+ ]);
6
+ vi.mock("../../core/global-tracer.js", () => ({
7
+ getTracer: vi.fn().mockReturnValue({
8
+ query: mockQuery,
9
+ }),
10
+ }));
11
+ describe("registerObserveTools", () => {
12
+ beforeEach(() => {
13
+ vi.clearAllMocks();
14
+ mockQuery.mockReturnValue([
15
+ { ts: 1000, level: "info", cmd: "sync", tool: "claude-code", msg: "synced" },
16
+ { ts: 2000, level: "error", cmd: "sync", tool: "codex", msg: "failed" },
17
+ ]);
18
+ });
19
+ it("registers observe tools without error", async () => {
20
+ const { McpServer } = await import("@modelcontextprotocol/sdk/server/mcp.js");
21
+ const { registerObserveTools } = await import("./observe-tools.js");
22
+ const server = new McpServer({ name: "test", version: "0.0.1" });
23
+ registerObserveTools(server);
24
+ expect(true).toBe(true);
25
+ });
26
+ it("report with no filters calls query with defaults", async () => {
27
+ const { getTracer } = await import("../../core/global-tracer.js");
28
+ const tracer = getTracer();
29
+ const entries = tracer.query({ limit: 50 });
30
+ expect(mockQuery).toHaveBeenCalledWith({ limit: 50 });
31
+ expect(entries).toHaveLength(2);
32
+ });
33
+ it("report with tool filter passes tool to query", async () => {
34
+ const { getTracer } = await import("../../core/global-tracer.js");
35
+ const tracer = getTracer();
36
+ tracer.query({ tool: "claude-code", limit: 50 });
37
+ expect(mockQuery).toHaveBeenCalledWith({ tool: "claude-code", limit: 50 });
38
+ });
39
+ it("parses since '1h' into timestamp", () => {
40
+ const since = "1h";
41
+ const match = since.match(/^(\d+)([hmds])$/);
42
+ expect(match).not.toBeNull();
43
+ const [, num, unit] = match;
44
+ const ms = { h: 3600000, m: 60000, d: 86400000, s: 1000 }[unit];
45
+ const sinceTs = Date.now() - parseInt(num) * ms;
46
+ expect(sinceTs).toBeGreaterThan(0);
47
+ expect(Date.now() - sinceTs).toBeCloseTo(3600000, -2);
48
+ });
49
+ it("parses since '30m' into timestamp", () => {
50
+ const since = "30m";
51
+ const match = since.match(/^(\d+)([hmds])$/);
52
+ expect(match).not.toBeNull();
53
+ const [, num, unit] = match;
54
+ const ms = { h: 3600000, m: 60000, d: 86400000, s: 1000 }[unit];
55
+ const sinceTs = Date.now() - parseInt(num) * ms;
56
+ expect(Date.now() - sinceTs).toBeCloseTo(1800000, -2);
57
+ });
58
+ it("report with limit passes limit to query", async () => {
59
+ const { getTracer } = await import("../../core/global-tracer.js");
60
+ const tracer = getTracer();
61
+ tracer.query({ limit: 10 });
62
+ expect(mockQuery).toHaveBeenCalledWith({ limit: 10 });
63
+ });
64
+ it("invalid since string results in no time filter", () => {
65
+ const since = "invalid";
66
+ const match = since.match(/^(\d+)([hmds])$/);
67
+ expect(match).toBeNull();
68
+ // sinceTs stays undefined — no time filter applied
69
+ });
70
+ });
71
+ //# sourceMappingURL=observe-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/observe-tools.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA+CxD"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA6ExD"}