@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
@@ -4,7 +4,7 @@
4
4
  * Config merge priority: Project > Machine > Global
5
5
  * - Global provides base set of skills/mcps/memory
6
6
  * - Machine can add/override for hardware-specific needs
7
- * - Project can add/override/DISABLE specific items (enabled: false)
7
+ * - Project can add/override/DISABLE specific items (state: "disabled")
8
8
  */
9
9
  import { describe, it, expect, vi, beforeEach } from "vitest";
10
10
  import * as os from "node:os";
@@ -22,12 +22,12 @@ describe("mergeConfigs", () => {
22
22
  "context7": {
23
23
  command: "npx",
24
24
  args: ["-y", "@context7/mcp"],
25
- enabled: true,
25
+ state: "enabled",
26
26
  },
27
27
  "filesystem": {
28
28
  command: "npx",
29
29
  args: ["-y", "@modelcontextprotocol/server-filesystem"],
30
- enabled: true,
30
+ state: "enabled",
31
31
  },
32
32
  },
33
33
  };
@@ -36,7 +36,7 @@ describe("mergeConfigs", () => {
36
36
  "project-specific": {
37
37
  command: "node",
38
38
  args: ["./local-mcp.js"],
39
- enabled: true,
39
+ state: "enabled",
40
40
  },
41
41
  },
42
42
  };
@@ -59,7 +59,7 @@ describe("mergeConfigs", () => {
59
59
  command: "npx",
60
60
  args: ["-y", "@context7/mcp"],
61
61
  env: { DEFAULT_ENV: "value" },
62
- enabled: true,
62
+ state: "enabled",
63
63
  },
64
64
  },
65
65
  };
@@ -68,7 +68,7 @@ describe("mergeConfigs", () => {
68
68
  "context7": {
69
69
  command: "npx",
70
70
  args: ["-y", "@context7/mcp", "--custom-flag"],
71
- enabled: true,
71
+ state: "enabled",
72
72
  },
73
73
  },
74
74
  };
@@ -78,19 +78,19 @@ describe("mergeConfigs", () => {
78
78
  // Command should remain from project (or global if not overridden)
79
79
  expect(result.mcps["context7"].command).toBe("npx");
80
80
  });
81
- it("project can disable global MCPs with enabled: false", async () => {
81
+ it("project can disable global MCPs with state: disabled", async () => {
82
82
  const { mergeConfigs } = await import("./config-merger.js");
83
83
  const globalConfig = {
84
84
  mcps: {
85
85
  "context7": {
86
86
  command: "npx",
87
87
  args: ["-y", "@context7/mcp"],
88
- enabled: true,
88
+ state: "enabled",
89
89
  },
90
90
  "filesystem": {
91
91
  command: "npx",
92
92
  args: ["-y", "@modelcontextprotocol/server-filesystem"],
93
- enabled: true,
93
+ state: "enabled",
94
94
  },
95
95
  },
96
96
  };
@@ -99,15 +99,15 @@ describe("mergeConfigs", () => {
99
99
  "context7": {
100
100
  command: "npx",
101
101
  args: ["-y", "@context7/mcp"],
102
- enabled: false, // Disable this MCP for the project
102
+ state: "disabled", // Disable this MCP for the project
103
103
  },
104
104
  },
105
105
  };
106
106
  const result = mergeConfigs(globalConfig, undefined, projectConfig);
107
107
  // context7 should be disabled
108
- expect(result.mcps["context7"].enabled).toBe(false);
108
+ expect(result.mcps["context7"].state).toBe("disabled");
109
109
  // filesystem should remain enabled
110
- expect(result.mcps["filesystem"].enabled).toBe(true);
110
+ expect(result.mcps["filesystem"].state).toBe("enabled");
111
111
  });
112
112
  it("project can add new MCPs not in global", async () => {
113
113
  const { mergeConfigs } = await import("./config-merger.js");
@@ -116,7 +116,7 @@ describe("mergeConfigs", () => {
116
116
  "context7": {
117
117
  command: "npx",
118
118
  args: ["-y", "@context7/mcp"],
119
- enabled: true,
119
+ state: "enabled",
120
120
  },
121
121
  },
122
122
  };
@@ -126,7 +126,7 @@ describe("mergeConfigs", () => {
126
126
  command: "node",
127
127
  args: ["./db-mcp.js"],
128
128
  env: { DB_URL: "postgres://localhost" },
129
- enabled: true,
129
+ state: "enabled",
130
130
  },
131
131
  },
132
132
  };
@@ -145,7 +145,7 @@ describe("mergeConfigs", () => {
145
145
  "context7": {
146
146
  command: "npx",
147
147
  args: ["-y", "@context7/mcp"],
148
- enabled: true,
148
+ state: "enabled",
149
149
  },
150
150
  },
151
151
  };
@@ -155,12 +155,12 @@ describe("mergeConfigs", () => {
155
155
  command: "npx",
156
156
  args: ["-y", "@context7/mcp"],
157
157
  env: { MACHINE_SPECIFIC: "gpu-optimized" },
158
- enabled: true,
158
+ state: "enabled",
159
159
  },
160
160
  "machine-gpu": {
161
161
  command: "cuda-mcp",
162
162
  args: ["--gpu=0"],
163
- enabled: true,
163
+ state: "enabled",
164
164
  },
165
165
  },
166
166
  };
@@ -169,7 +169,7 @@ describe("mergeConfigs", () => {
169
169
  "project-specific": {
170
170
  command: "node",
171
171
  args: ["./local.js"],
172
- enabled: true,
172
+ state: "enabled",
173
173
  },
174
174
  },
175
175
  };
@@ -188,7 +188,7 @@ describe("mergeConfigs", () => {
188
188
  "global-mcp": {
189
189
  command: "npx",
190
190
  args: ["global"],
191
- enabled: true,
191
+ state: "enabled",
192
192
  },
193
193
  },
194
194
  };
@@ -197,7 +197,7 @@ describe("mergeConfigs", () => {
197
197
  "machine-mcp": {
198
198
  command: "machine",
199
199
  args: ["machine"],
200
- enabled: true,
200
+ state: "enabled",
201
201
  },
202
202
  },
203
203
  };
@@ -206,7 +206,7 @@ describe("mergeConfigs", () => {
206
206
  "project-mcp": {
207
207
  command: "project",
208
208
  args: ["project"],
209
- enabled: true,
209
+ state: "enabled",
210
210
  },
211
211
  },
212
212
  };
@@ -223,7 +223,7 @@ describe("mergeConfigs", () => {
223
223
  "shared-mcp": {
224
224
  command: "global-cmd",
225
225
  args: ["global"],
226
- enabled: true,
226
+ state: "enabled",
227
227
  },
228
228
  },
229
229
  };
@@ -232,7 +232,7 @@ describe("mergeConfigs", () => {
232
232
  "shared-mcp": {
233
233
  command: "machine-cmd",
234
234
  args: ["machine"],
235
- enabled: true,
235
+ state: "enabled",
236
236
  },
237
237
  },
238
238
  };
@@ -241,7 +241,7 @@ describe("mergeConfigs", () => {
241
241
  "shared-mcp": {
242
242
  command: "project-cmd",
243
243
  args: ["project"],
244
- enabled: true,
244
+ state: "enabled",
245
245
  },
246
246
  },
247
247
  };
@@ -258,7 +258,7 @@ describe("mergeConfigs", () => {
258
258
  "only-global": {
259
259
  command: "npx",
260
260
  args: ["test"],
261
- enabled: true,
261
+ state: "enabled",
262
262
  },
263
263
  },
264
264
  };
@@ -271,24 +271,22 @@ describe("loadGlobalConfig", () => {
271
271
  beforeEach(() => {
272
272
  vi.resetAllMocks();
273
273
  });
274
- it("loads from ~/.mycelium/", async () => {
274
+ it("loads from ~/.mycelium/global/mcps.yaml", async () => {
275
275
  const fs = await import("node:fs/promises");
276
276
  const { loadGlobalConfig } = await import("./config-merger.js");
277
- const mockMcpsConfig = {
278
- mcps: {
279
- "test-mcp": {
280
- command: "npx",
281
- args: ["-y", "test-mcp"],
282
- enabled: true,
283
- },
284
- },
285
- };
277
+ const yamlContent = `test-mcp:
278
+ command: npx
279
+ args:
280
+ - "-y"
281
+ - test-mcp
282
+ state: enabled`;
286
283
  vi.mocked(fs.access).mockResolvedValue(undefined);
287
- vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockMcpsConfig));
284
+ vi.mocked(fs.readFile).mockResolvedValue(yamlContent);
288
285
  const result = await loadGlobalConfig();
289
286
  const home = os.homedir();
290
- expect(fs.readFile).toHaveBeenCalledWith(path.join(home, ".mycelium", "mcps.json"), "utf-8");
287
+ expect(fs.readFile).toHaveBeenCalledWith(path.join(home, ".mycelium", "global", "mcps.yaml"), "utf-8");
291
288
  expect(result.mcps).toHaveProperty("test-mcp");
289
+ expect(result.mcps["test-mcp"].command).toBe("npx");
292
290
  });
293
291
  it("returns empty config if global config does not exist", async () => {
294
292
  const fs = await import("node:fs/promises");
@@ -302,22 +300,18 @@ describe("loadProjectConfig", () => {
302
300
  beforeEach(() => {
303
301
  vi.resetAllMocks();
304
302
  });
305
- it("loads from .mycelium/ in project root", async () => {
303
+ it("loads from .mycelium/mcps.yaml in project root", async () => {
306
304
  const fs = await import("node:fs/promises");
307
305
  const { loadProjectConfig } = await import("./config-merger.js");
308
- const mockMcpsConfig = {
309
- mcps: {
310
- "project-mcp": {
311
- command: "node",
312
- args: ["./mcp.js"],
313
- enabled: true,
314
- },
315
- },
316
- };
306
+ const yamlContent = `project-mcp:
307
+ command: node
308
+ args:
309
+ - "./mcp.js"
310
+ state: enabled`;
317
311
  vi.mocked(fs.access).mockResolvedValue(undefined);
318
- vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockMcpsConfig));
312
+ vi.mocked(fs.readFile).mockResolvedValue(yamlContent);
319
313
  const result = await loadProjectConfig("/home/user/my-project");
320
- expect(fs.readFile).toHaveBeenCalledWith("/home/user/my-project/.mycelium/mcps.json", "utf-8");
314
+ expect(fs.readFile).toHaveBeenCalledWith("/home/user/my-project/.mycelium/mcps.yaml", "utf-8");
321
315
  expect(result.mcps).toHaveProperty("project-mcp");
322
316
  });
323
317
  it("returns empty config if project config does not exist", async () => {
@@ -332,24 +326,25 @@ describe("loadMachineConfig", () => {
332
326
  beforeEach(() => {
333
327
  vi.resetAllMocks();
334
328
  });
335
- it("loads from ~/.mycelium/machines/{hostname}/", async () => {
329
+ it("loads from ~/.mycelium/machines/{hostname}.yaml", async () => {
336
330
  const fs = await import("node:fs/promises");
337
331
  const { loadMachineConfig } = await import("./config-merger.js");
338
- const mockMcpsConfig = {
339
- mcps: {
340
- "machine-mcp": {
341
- command: "cuda-mcp",
342
- args: ["--gpu"],
343
- enabled: true,
344
- },
345
- },
346
- };
347
- vi.mocked(fs.access).mockResolvedValue(undefined);
348
- vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockMcpsConfig));
349
- const result = await loadMachineConfig();
332
+ const yamlContent = `machine-mcp:
333
+ command: cuda-mcp
334
+ args:
335
+ - "--gpu"
336
+ state: enabled`;
350
337
  const home = os.homedir();
351
338
  const hostname = os.hostname();
352
- expect(fs.readFile).toHaveBeenCalledWith(path.join(home, ".mycelium", "machines", hostname, "mcps.json"), "utf-8");
339
+ vi.mocked(fs.access).mockImplementation(async (p) => {
340
+ const s = String(p);
341
+ if (s.endsWith(`${hostname}.yaml`))
342
+ return undefined;
343
+ throw new Error("ENOENT");
344
+ });
345
+ vi.mocked(fs.readFile).mockResolvedValue(yamlContent);
346
+ const result = await loadMachineConfig();
347
+ expect(fs.readFile).toHaveBeenCalledWith(path.join(home, ".mycelium", "machines", `${hostname}.yaml`), "utf-8");
353
348
  expect(result.mcps).toHaveProperty("machine-mcp");
354
349
  });
355
350
  it("returns empty config if machine config does not exist", async () => {
@@ -367,35 +362,24 @@ describe("loadAndMergeAllConfigs", () => {
367
362
  it("loads and merges all config levels", async () => {
368
363
  const fs = await import("node:fs/promises");
369
364
  const { loadAndMergeAllConfigs } = await import("./config-merger.js");
370
- const globalMcps = {
371
- mcps: {
372
- "global-mcp": { command: "global", args: [], enabled: true },
373
- },
374
- };
375
- const machineMcps = {
376
- mcps: {
377
- "machine-mcp": { command: "machine", args: [], enabled: true },
378
- },
379
- };
380
- const projectMcps = {
381
- mcps: {
382
- "project-mcp": { command: "project", args: [], enabled: true },
383
- },
384
- };
365
+ const globalYaml = `global-mcp:\n command: global\n args: []\n state: enabled`;
366
+ const machineYaml = `machine-mcp:\n command: machine\n args: []\n state: enabled`;
367
+ const projectYaml = `project-mcp:\n command: project\n args: []\n state: enabled`;
385
368
  const home = os.homedir();
386
369
  const hostname = os.hostname();
387
- vi.mocked(fs.access).mockResolvedValue(undefined);
370
+ vi.mocked(fs.access).mockImplementation(async (p) => {
371
+ const s = String(p);
372
+ if (s.endsWith("mcps.yaml") || s.endsWith(`${hostname}.yaml`))
373
+ return undefined;
374
+ throw new Error("ENOENT");
375
+ });
388
376
  vi.mocked(fs.readFile).mockImplementation(async (filePath) => {
389
377
  const pathStr = filePath.toString();
390
- if (pathStr.includes("machines")) {
391
- return JSON.stringify(machineMcps);
392
- }
393
- else if (pathStr.includes(".mycelium/mcps.json") && !pathStr.includes("my-project")) {
394
- return JSON.stringify(globalMcps);
395
- }
396
- else {
397
- return JSON.stringify(projectMcps);
398
- }
378
+ if (pathStr.includes(`${hostname}.yaml`))
379
+ return machineYaml;
380
+ if (pathStr.includes("global/mcps.yaml"))
381
+ return globalYaml;
382
+ return projectYaml;
399
383
  });
400
384
  const result = await loadAndMergeAllConfigs("/home/user/my-project");
401
385
  expect(result.mcps).toHaveProperty("global-mcp");
@@ -1 +1 @@
1
- {"version":3,"file":"config-merger.test.js","sourceRoot":"","sources":["../../src/core/config-merger.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-merger.test.js","sourceRoot":"","sources":["../../src/core/config-merger.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * File Syncer for Mycelium
3
+ *
4
+ * Generalized file sync using symlink or copy strategy.
5
+ * Handles create/update/remove based on item state, with orphan cleanup.
6
+ */
7
+ import type { ItemState } from "@mycelish/core";
8
+ export interface FileSyncStrategy {
9
+ type: "symlink" | "copy";
10
+ }
11
+ export interface FileSyncItem {
12
+ name: string;
13
+ path: string;
14
+ state?: ItemState;
15
+ }
16
+ export interface FileSyncResult {
17
+ success: boolean;
18
+ created: string[];
19
+ updated: string[];
20
+ removed: string[];
21
+ unchanged: string[];
22
+ errors: Array<{
23
+ item: string;
24
+ error: string;
25
+ }>;
26
+ }
27
+ /**
28
+ * Sync files from source paths to a target directory using symlink or copy strategy.
29
+ */
30
+ export declare function syncFilesToDir(items: FileSyncItem[], targetDir: string, strategy: FileSyncStrategy, options?: {
31
+ removeOrphans?: boolean;
32
+ }): Promise<FileSyncResult>;
33
+ //# sourceMappingURL=file-syncer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-syncer.d.ts","sourceRoot":"","sources":["../../src/core/file-syncer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC,OAAO,CAAC,cAAc,CAAC,CA+CzB"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * File Syncer for Mycelium
3
+ *
4
+ * Generalized file sync using symlink or copy strategy.
5
+ * Handles create/update/remove based on item state, with orphan cleanup.
6
+ */
7
+ import * as fs from "node:fs/promises";
8
+ import * as path from "node:path";
9
+ // ============================================================================
10
+ // Core
11
+ // ============================================================================
12
+ /**
13
+ * Sync files from source paths to a target directory using symlink or copy strategy.
14
+ */
15
+ export async function syncFilesToDir(items, targetDir, strategy, options) {
16
+ const result = {
17
+ success: true,
18
+ created: [],
19
+ updated: [],
20
+ removed: [],
21
+ unchanged: [],
22
+ errors: [],
23
+ };
24
+ await fs.mkdir(targetDir, { recursive: true });
25
+ const itemNames = new Set(items.map((i) => i.name));
26
+ for (const item of items) {
27
+ const targetPath = path.join(targetDir, path.basename(item.path));
28
+ const isEnabled = !item.state || item.state === "enabled";
29
+ if (isEnabled) {
30
+ try {
31
+ const action = strategy.type === "symlink"
32
+ ? await syncSymlink(item.path, targetPath)
33
+ : await syncCopy(item.path, targetPath);
34
+ if (action === "created")
35
+ result.created.push(item.name);
36
+ else if (action === "updated")
37
+ result.updated.push(item.name);
38
+ else
39
+ result.unchanged.push(item.name);
40
+ }
41
+ catch (error) {
42
+ result.success = false;
43
+ result.errors.push({
44
+ item: item.name,
45
+ error: error instanceof Error ? error.message : String(error),
46
+ });
47
+ }
48
+ }
49
+ else {
50
+ // Remove disabled/deleted items
51
+ const removed = await tryRemove(targetPath, strategy.type);
52
+ if (removed)
53
+ result.removed.push(item.name);
54
+ }
55
+ }
56
+ if (options?.removeOrphans) {
57
+ await removeOrphans(targetDir, itemNames, strategy.type, result);
58
+ }
59
+ return result;
60
+ }
61
+ // ============================================================================
62
+ // Internal helpers
63
+ // ============================================================================
64
+ async function syncSymlink(sourcePath, targetPath) {
65
+ let stats;
66
+ try {
67
+ stats = await fs.lstat(targetPath);
68
+ }
69
+ catch {
70
+ await fs.symlink(sourcePath, targetPath);
71
+ return "created";
72
+ }
73
+ if (stats.isSymbolicLink()) {
74
+ const current = await fs.readlink(targetPath);
75
+ if (current === sourcePath)
76
+ return "unchanged";
77
+ await fs.unlink(targetPath);
78
+ await fs.symlink(sourcePath, targetPath);
79
+ return "updated";
80
+ }
81
+ // Not a symlink — replace
82
+ await fs.unlink(targetPath);
83
+ await fs.symlink(sourcePath, targetPath);
84
+ return "updated";
85
+ }
86
+ async function syncCopy(sourcePath, targetPath) {
87
+ let targetStats;
88
+ try {
89
+ targetStats = await fs.stat(targetPath);
90
+ }
91
+ catch {
92
+ await fs.copyFile(sourcePath, targetPath);
93
+ return "created";
94
+ }
95
+ const sourceStats = await fs.stat(sourcePath);
96
+ if (sourceStats.mtimeMs > targetStats.mtimeMs) {
97
+ await fs.copyFile(sourcePath, targetPath);
98
+ return "updated";
99
+ }
100
+ return "unchanged";
101
+ }
102
+ async function tryRemove(targetPath, strategyType) {
103
+ try {
104
+ const stats = await fs.lstat(targetPath);
105
+ if (strategyType === "symlink" && !stats.isSymbolicLink())
106
+ return false;
107
+ await fs.unlink(targetPath);
108
+ return true;
109
+ }
110
+ catch {
111
+ return false;
112
+ }
113
+ }
114
+ async function removeOrphans(targetDir, itemNames, strategyType, result) {
115
+ try {
116
+ const entries = await fs.readdir(targetDir);
117
+ for (const entry of entries) {
118
+ // Derive item name from the filename to check against known items
119
+ if (itemNames.has(path.parse(entry).name))
120
+ continue;
121
+ const entryPath = path.join(targetDir, entry);
122
+ try {
123
+ const stats = await fs.lstat(entryPath);
124
+ if (strategyType === "symlink" && !stats.isSymbolicLink())
125
+ continue;
126
+ await fs.unlink(entryPath);
127
+ result.removed.push(entry);
128
+ }
129
+ catch {
130
+ // ignore
131
+ }
132
+ }
133
+ }
134
+ catch {
135
+ // ignore
136
+ }
137
+ }
138
+ //# sourceMappingURL=file-syncer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-syncer.js","sourceRoot":"","sources":["../../src/core/file-syncer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file-syncer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-syncer.test.d.ts","sourceRoot":"","sources":["../../src/core/file-syncer.test.ts"],"names":[],"mappings":""}