@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
@@ -2,36 +2,26 @@
2
2
  * Config Merger Module
3
3
  *
4
4
  * Merges configurations from three levels:
5
- * - Global (~/.mycelium/) - base configuration
5
+ * - Global (~/.mycelium/global/) - base configuration
6
6
  * - Machine (~/.mycelium/machines/{hostname}/) - hardware-specific overrides
7
7
  * - Project (.mycelium/ in project root) - project-specific overrides
8
8
  *
9
9
  * Priority: Project > Machine > Global
10
10
  */
11
- import * as fs from "node:fs/promises";
12
11
  import * as os from "node:os";
13
12
  import * as path from "node:path";
13
+ import { parse as yamlParse } from "yaml";
14
+ import { MYCELIUM_HOME, readFileIfExists } from "./fs-helpers.js";
15
+ import { loadItemsFromDir } from "./item-loader.js";
14
16
  /**
15
17
  * Default empty memory config
16
18
  */
17
19
  function getDefaultMemoryConfig() {
18
20
  return {
19
21
  scopes: {
20
- shared: {
21
- syncTo: [],
22
- path: "",
23
- files: [],
24
- },
25
- coding: {
26
- syncTo: [],
27
- path: "",
28
- files: [],
29
- },
30
- personal: {
31
- syncTo: [],
32
- path: "",
33
- files: [],
34
- },
22
+ shared: { syncTo: [], path: "", files: [] },
23
+ coding: { syncTo: [], path: "", files: [] },
24
+ personal: { syncTo: [], path: "", files: [] },
35
25
  },
36
26
  };
37
27
  }
@@ -42,6 +32,9 @@ function createEmptyMergedConfig() {
42
32
  return {
43
33
  mcps: {},
44
34
  skills: {},
35
+ agents: {},
36
+ rules: {},
37
+ commands: {},
45
38
  memory: getDefaultMemoryConfig(),
46
39
  sources: {},
47
40
  };
@@ -52,69 +45,39 @@ function createEmptyMergedConfig() {
52
45
  */
53
46
  export function mergeConfigs(globalConfig, machineConfig, projectConfig) {
54
47
  const result = createEmptyMergedConfig();
55
- // Start with global MCPs
56
- if (globalConfig?.mcps) {
57
- for (const [name, config] of Object.entries(globalConfig.mcps)) {
58
- result.mcps[name] = { ...config };
59
- result.sources[name] = "global";
60
- }
61
- }
62
- // Apply machine overrides (higher priority than global)
63
- if (machineConfig?.mcps) {
64
- for (const [name, config] of Object.entries(machineConfig.mcps)) {
65
- if (result.mcps[name]) {
66
- // Merge with existing config - machine takes priority
67
- result.mcps[name] = mergeMcpServerConfig(result.mcps[name], config);
68
- result.sources[name] = "machine";
69
- }
70
- else {
71
- // Add new MCP from machine config
72
- result.mcps[name] = { ...config };
73
- result.sources[name] = "machine";
48
+ const levels = [
49
+ { config: globalConfig, source: "global" },
50
+ { config: machineConfig, source: "machine" },
51
+ { config: projectConfig, source: "project" },
52
+ ];
53
+ for (const { config, source } of levels) {
54
+ if (!config)
55
+ continue;
56
+ // Merge MCPs — higher priority level overwrites lower
57
+ if (config.mcps) {
58
+ for (const [name, mcp] of Object.entries(config.mcps)) {
59
+ result.mcps[name] = result.mcps[name]
60
+ ? mergeMcpServerConfig(result.mcps[name], mcp)
61
+ : { ...mcp };
62
+ result.sources[name] = source;
74
63
  }
75
64
  }
76
- }
77
- // Apply project overrides (highest priority)
78
- if (projectConfig?.mcps) {
79
- for (const [name, config] of Object.entries(projectConfig.mcps)) {
80
- if (result.mcps[name]) {
81
- // Merge with existing config - project takes priority
82
- result.mcps[name] = mergeMcpServerConfig(result.mcps[name], config);
83
- result.sources[name] = "project";
84
- }
85
- else {
86
- // Add new MCP from project config
87
- result.mcps[name] = { ...config };
88
- result.sources[name] = "project";
89
- }
90
- }
91
- }
92
- // Merge skills (similar priority logic)
93
- if (globalConfig?.skills) {
94
- for (const [name, skill] of Object.entries(globalConfig.skills)) {
95
- result.skills[name] = { ...skill };
96
- }
97
- }
98
- if (machineConfig?.skills) {
99
- for (const [name, skill] of Object.entries(machineConfig.skills)) {
100
- result.skills[name] = { ...skill };
65
+ // Merge skills — simple overwrite by priority
66
+ if (config.skills) {
67
+ Object.assign(result.skills, config.skills);
101
68
  }
102
- }
103
- if (projectConfig?.skills) {
104
- for (const [name, skill] of Object.entries(projectConfig.skills)) {
105
- result.skills[name] = { ...skill };
69
+ // Merge agents/rules/commands — simple overwrite by priority
70
+ if (config.agents)
71
+ Object.assign(result.agents, config.agents);
72
+ if (config.rules)
73
+ Object.assign(result.rules, config.rules);
74
+ if (config.commands)
75
+ Object.assign(result.commands, config.commands);
76
+ // Merge memory — scope-level overwrite
77
+ if (config.memory) {
78
+ result.memory = mergeMemoryConfig(result.memory, config.memory);
106
79
  }
107
80
  }
108
- // Merge memory config
109
- if (globalConfig?.memory) {
110
- result.memory = { ...globalConfig.memory };
111
- }
112
- if (machineConfig?.memory) {
113
- result.memory = mergeMemoryConfig(result.memory, machineConfig.memory);
114
- }
115
- if (projectConfig?.memory) {
116
- result.memory = mergeMemoryConfig(result.memory, projectConfig.memory);
117
- }
118
81
  return result;
119
82
  }
120
83
  /**
@@ -125,104 +88,124 @@ function mergeMcpServerConfig(target, source) {
125
88
  command: source.command ?? target.command,
126
89
  args: source.args ?? target.args,
127
90
  env: source.env !== undefined ? source.env : target.env,
128
- enabled: source.enabled !== undefined ? source.enabled : target.enabled,
91
+ state: source.state ?? target.state,
92
+ source: source.source ?? target.source,
129
93
  tools: source.tools ?? target.tools,
130
94
  excludeTools: source.excludeTools ?? target.excludeTools,
131
95
  };
132
96
  }
133
97
  /**
134
- * Merge memory configs
98
+ * Merge memory configs — scopes from source overwrite target at scope level
135
99
  */
136
100
  function mergeMemoryConfig(target, source) {
137
- const result = { ...target };
138
- if (source.scopes) {
139
- result.scopes = {
140
- ...target.scopes,
141
- ...source.scopes,
142
- };
101
+ if (!source.scopes)
102
+ return target;
103
+ return { ...target, scopes: { ...target.scopes, ...source.scopes } };
104
+ }
105
+ // ============================================================================
106
+ // Item Loading Helpers
107
+ // ============================================================================
108
+ async function loadFileItems(dir) {
109
+ const items = await loadItemsFromDir(dir);
110
+ const result = {};
111
+ for (const item of items) {
112
+ result[item.name] = item;
143
113
  }
144
114
  return result;
145
115
  }
116
+ // ============================================================================
117
+ // Config File Loading
118
+ // ============================================================================
146
119
  /**
147
- * Check if a file exists
120
+ * Parse a config string as YAML or JSON.
121
+ * Returns null on parse error (logs a warning for malformed files).
148
122
  */
149
- async function fileExists(filePath) {
123
+ function parseConfig(content, filePath) {
150
124
  try {
151
- await fs.access(filePath);
152
- return true;
125
+ // YAML.parse handles both YAML and JSON transparently
126
+ return yamlParse(content);
153
127
  }
154
- catch {
155
- return false;
128
+ catch (err) {
129
+ console.warn(`Mycelium: failed to parse ${filePath}: ${err.message}`);
130
+ return null;
156
131
  }
157
132
  }
158
133
  /**
159
- * Load and parse a JSON config file
134
+ * Load MCPs from a directory tries mcps.yaml first, falls back to mcps.json.
135
+ *
136
+ * Format differences:
137
+ * - YAML: flat structure { "mcp-name": { command, args } }
138
+ * - JSON: nested structure { mcps: { "mcp-name": { command, args } } }
160
139
  */
161
- async function loadJsonConfig(filePath) {
162
- try {
163
- const content = await fs.readFile(filePath, "utf-8");
164
- return JSON.parse(content);
165
- }
166
- catch {
167
- return null;
168
- }
140
+ async function loadMcpsFromDir(dir) {
141
+ // Try YAML first (preferred format)
142
+ const yamlContent = await readFileIfExists(path.join(dir, "mcps.yaml"));
143
+ if (yamlContent) {
144
+ return parseConfig(yamlContent, path.join(dir, "mcps.yaml")) ?? {};
145
+ }
146
+ // Fallback to JSON
147
+ const jsonContent = await readFileIfExists(path.join(dir, "mcps.json"));
148
+ if (jsonContent) {
149
+ const data = parseConfig(jsonContent, path.join(dir, "mcps.json"));
150
+ return data?.mcps ?? {};
151
+ }
152
+ return {};
169
153
  }
170
154
  /**
171
- * Load global config from ~/.mycelium/
155
+ * Load global config from ~/.mycelium/global/
172
156
  */
173
157
  export async function loadGlobalConfig() {
174
- const home = os.homedir();
175
- const globalPath = path.join(home, ".mycelium");
176
- const mcpsPath = path.join(globalPath, "mcps.json");
177
- const result = {
178
- mcps: {},
158
+ const globalDir = path.join(MYCELIUM_HOME, "global");
159
+ return {
160
+ mcps: await loadMcpsFromDir(globalDir),
179
161
  skills: {},
162
+ agents: await loadFileItems(path.join(globalDir, "agents")),
163
+ rules: await loadFileItems(path.join(globalDir, "rules")),
164
+ commands: await loadFileItems(path.join(globalDir, "commands")),
180
165
  };
181
- if (await fileExists(mcpsPath)) {
182
- const mcpsConfig = await loadJsonConfig(mcpsPath);
183
- if (mcpsConfig?.mcps) {
184
- result.mcps = mcpsConfig.mcps;
185
- }
186
- }
187
- return result;
188
166
  }
189
167
  /**
190
168
  * Load project config from .mycelium/ in project root
191
169
  */
192
170
  export async function loadProjectConfig(projectRoot) {
193
- const projectPath = path.join(projectRoot, ".mycelium");
194
- const mcpsPath = path.join(projectPath, "mcps.json");
195
- const result = {
196
- mcps: {},
171
+ const root = projectRoot ?? process.cwd();
172
+ const projDir = path.join(root, ".mycelium");
173
+ return {
174
+ mcps: await loadMcpsFromDir(projDir),
197
175
  skills: {},
176
+ agents: await loadFileItems(path.join(projDir, "agents")),
177
+ rules: await loadFileItems(path.join(projDir, "rules")),
178
+ commands: await loadFileItems(path.join(projDir, "commands")),
198
179
  };
199
- if (await fileExists(mcpsPath)) {
200
- const mcpsConfig = await loadJsonConfig(mcpsPath);
201
- if (mcpsConfig?.mcps) {
202
- result.mcps = mcpsConfig.mcps;
203
- }
204
- }
205
- return result;
206
180
  }
207
181
  /**
208
- * Load machine-specific config from ~/.mycelium/machines/{hostname}/
182
+ * Load machine-specific config from ~/.mycelium/machines/{hostname}.*
183
+ * Tries: hostname.yaml → hostname.json → hostname/ directory
209
184
  */
210
185
  export async function loadMachineConfig() {
211
- const home = os.homedir();
212
186
  const hostname = os.hostname();
213
- const machinePath = path.join(home, ".mycelium", "machines", hostname);
214
- const mcpsPath = path.join(machinePath, "mcps.json");
215
- const result = {
216
- mcps: {},
217
- skills: {},
187
+ const machinesDir = path.join(MYCELIUM_HOME, "machines");
188
+ const hostDir = path.join(machinesDir, hostname);
189
+ // Load agents/rules/commands from hostname/ directory
190
+ const fileItems = {
191
+ agents: await loadFileItems(path.join(hostDir, "agents")),
192
+ rules: await loadFileItems(path.join(hostDir, "rules")),
193
+ commands: await loadFileItems(path.join(hostDir, "commands")),
218
194
  };
219
- if (await fileExists(mcpsPath)) {
220
- const mcpsConfig = await loadJsonConfig(mcpsPath);
221
- if (mcpsConfig?.mcps) {
222
- result.mcps = mcpsConfig.mcps;
223
- }
224
- }
225
- return result;
195
+ // Try hostname.yaml (flat MCP entries)
196
+ const yamlContent = await readFileIfExists(path.join(machinesDir, `${hostname}.yaml`));
197
+ if (yamlContent) {
198
+ const mcps = parseConfig(yamlContent, `machines/${hostname}.yaml`) ?? {};
199
+ return { mcps, skills: {}, ...fileItems };
200
+ }
201
+ // Try hostname.json (nested { mcps: {} })
202
+ const jsonContent = await readFileIfExists(path.join(machinesDir, `${hostname}.json`));
203
+ if (jsonContent) {
204
+ const data = parseConfig(jsonContent, `machines/${hostname}.json`);
205
+ return { mcps: data?.mcps ?? {}, skills: {}, ...fileItems };
206
+ }
207
+ // Try hostname/ directory
208
+ return { mcps: await loadMcpsFromDir(hostDir), skills: {}, ...fileItems };
226
209
  }
227
210
  /**
228
211
  * Load and merge all config levels for a project
@@ -1 +1 @@
1
- {"version":3,"file":"config-merger.js","sourceRoot":"","sources":["../../src/core/config-merger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-merger.js","sourceRoot":"","sources":["../../src/core/config-merger.ts"],"names":[],"mappings":"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"}
@@ -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
  export {};
10
10
  //# sourceMappingURL=config-merger.test.d.ts.map