monomind 1.7.0 → 1.9.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 (562) hide show
  1. package/.claude/agents/design/design-monodesign.md +121 -0
  2. package/.claude/agents/github/issue-tracker.md +12 -12
  3. package/.claude/agents/github/pr-manager.md +10 -10
  4. package/.claude/agents/github/release-manager.md +49 -105
  5. package/.claude/agents/github/repo-architect.md +73 -92
  6. package/.claude/agents/github/sync-coordinator.md +55 -123
  7. package/.claude/agents/marketing/marketing-competitive-content.md +155 -0
  8. package/.claude/agents/marketing/marketing-content-creator.md +13 -0
  9. package/.claude/agents/marketing/marketing-cro-specialist.md +147 -0
  10. package/.claude/agents/marketing/marketing-email-specialist.md +90 -0
  11. package/.claude/agents/marketing/marketing-launch-strategist.md +129 -0
  12. package/.claude/agents/marketing/marketing-pricing-strategist.md +127 -0
  13. package/.claude/agents/specialists/integration-architect.md +94 -0
  14. package/.claude/commands/agents/README.md +4 -0
  15. package/.claude/commands/agents/agent-capabilities.md +6 -2
  16. package/.claude/commands/agents/agent-coordination.md +4 -0
  17. package/.claude/commands/agents/agent-spawning.md +4 -0
  18. package/.claude/commands/agents/agent-types.md +6 -2
  19. package/.claude/commands/analysis/README.md +14 -5
  20. package/.claude/commands/analysis/bottleneck-detect.md +30 -123
  21. package/.claude/commands/analysis/performance-bottlenecks.md +14 -14
  22. package/.claude/commands/analysis/performance-report.md +38 -11
  23. package/.claude/commands/analysis/token-efficiency.md +13 -16
  24. package/.claude/commands/analysis/token-usage.md +34 -12
  25. package/.claude/commands/automation/README.md +15 -5
  26. package/.claude/commands/automation/auto-agent.md +49 -85
  27. package/.claude/commands/automation/self-healing.md +20 -18
  28. package/.claude/commands/automation/session-memory.md +28 -29
  29. package/.claude/commands/automation/smart-agents.md +17 -9
  30. package/.claude/commands/automation/smart-spawn.md +52 -11
  31. package/.claude/commands/automation/workflow-select.md +46 -11
  32. package/.claude/commands/browse.md +5 -0
  33. package/.claude/commands/coordination/README.md +9 -5
  34. package/.claude/commands/coordination/agent-spawn.md +53 -9
  35. package/.claude/commands/coordination/swarm-init.md +39 -42
  36. package/.claude/commands/coordination/task-orchestrate.md +65 -11
  37. package/.claude/commands/github/README.md +21 -8
  38. package/.claude/commands/github/github-modes.md +9 -5
  39. package/.claude/commands/github/issue-tracker.md +34 -33
  40. package/.claude/commands/github/pr-manager.md +20 -17
  41. package/.claude/commands/github/release-manager.md +37 -49
  42. package/.claude/commands/github/repo-architect.md +39 -41
  43. package/.claude/commands/github/sync-coordinator.md +45 -49
  44. package/.claude/commands/hive-mind/README.md +42 -17
  45. package/.claude/commands/hive-mind/hive-mind-consensus.md +68 -4
  46. package/.claude/commands/hive-mind/hive-mind-init.md +55 -5
  47. package/.claude/commands/hive-mind/hive-mind-memory.md +69 -4
  48. package/.claude/commands/hive-mind/hive-mind-spawn.md +71 -10
  49. package/.claude/commands/hive-mind/hive-mind-status.md +52 -4
  50. package/.claude/commands/hive-mind/hive-mind-stop.md +51 -4
  51. package/.claude/commands/hive-mind/hive-mind.md +74 -14
  52. package/.claude/commands/hooks/README.md +62 -7
  53. package/.claude/commands/hooks/overview.md +94 -35
  54. package/.claude/commands/hooks/post-edit.md +48 -87
  55. package/.claude/commands/hooks/post-task.md +37 -87
  56. package/.claude/commands/hooks/pre-edit.md +52 -84
  57. package/.claude/commands/hooks/pre-task.md +46 -81
  58. package/.claude/commands/hooks/session-end.md +49 -85
  59. package/.claude/commands/hooks/setup.md +87 -58
  60. package/.claude/commands/mastermind/_repeat.md +308 -0
  61. package/.claude/commands/mastermind/architect.md +49 -0
  62. package/.claude/commands/mastermind/brain.md +98 -0
  63. package/.claude/commands/mastermind/build.md +22 -0
  64. package/.claude/commands/mastermind/content.md +22 -0
  65. package/.claude/commands/mastermind/createorg.md +94 -0
  66. package/.claude/commands/mastermind/finance.md +22 -0
  67. package/.claude/commands/mastermind/idea.md +22 -0
  68. package/.claude/commands/mastermind/marketing.md +22 -0
  69. package/.claude/commands/mastermind/master.md +379 -0
  70. package/.claude/commands/mastermind/ops.md +22 -0
  71. package/.claude/commands/mastermind/release.md +22 -0
  72. package/.claude/commands/mastermind/research.md +22 -0
  73. package/.claude/commands/mastermind/review.md +22 -0
  74. package/.claude/commands/mastermind/runorg.md +106 -0
  75. package/.claude/commands/mastermind/sales.md +22 -0
  76. package/.claude/commands/mastermind/techport.md +17 -0
  77. package/.claude/commands/memory/README.md +75 -5
  78. package/.claude/commands/memory/memory-search.md +63 -11
  79. package/.claude/commands/monitoring/README.md +64 -4
  80. package/.claude/commands/monitoring/agent-metrics.md +50 -10
  81. package/.claude/commands/monitoring/agents.md +59 -32
  82. package/.claude/commands/monitoring/status.md +96 -34
  83. package/.claude/commands/monograph/README.md +102 -0
  84. package/.claude/commands/monograph/monograph-build.md +79 -0
  85. package/.claude/commands/monograph/monograph-search.md +96 -0
  86. package/.claude/commands/monograph/monograph-stats.md +53 -0
  87. package/.claude/commands/monograph/monograph-watch.md +63 -0
  88. package/.claude/commands/monograph/monograph-wiki.md +91 -0
  89. package/.claude/commands/monomind/createtask.md +277 -0
  90. package/.claude/commands/{monomind-do.md → monomind/do.md} +22 -9
  91. package/.claude/commands/monomind/help.md +118 -0
  92. package/.claude/commands/{monomind-idea.md → monomind/idea.md} +23 -29
  93. package/.claude/commands/{monomind-improve.md → monomind/improve.md} +24 -30
  94. package/.claude/commands/monomind/memory.md +230 -0
  95. package/.claude/commands/monomind/repeat.md +201 -0
  96. package/.claude/commands/monomind/review.md +313 -0
  97. package/.claude/commands/monomind/specialagents.md +125 -0
  98. package/.claude/commands/monomind/swarm.md +161 -0
  99. package/.claude/commands/monomind/understand.md +148 -0
  100. package/.claude/commands/optimization/README.md +69 -5
  101. package/.claude/commands/optimization/auto-topology.md +66 -43
  102. package/.claude/commands/optimization/parallel-execution.md +65 -39
  103. package/.claude/commands/optimization/performance-optimize.md +79 -0
  104. package/.claude/commands/pair/README.md +48 -230
  105. package/.claude/commands/pair/examples.md +85 -441
  106. package/.claude/commands/pair/modes.md +77 -303
  107. package/.claude/commands/pair/session.md +76 -359
  108. package/.claude/commands/sparc/analyzer.md +9 -26
  109. package/.claude/commands/sparc/architect.md +8 -25
  110. package/.claude/commands/sparc/ask.md +27 -68
  111. package/.claude/commands/sparc/batch-executor.md +8 -25
  112. package/.claude/commands/sparc/code.md +12 -53
  113. package/.claude/commands/sparc/coder.md +8 -25
  114. package/.claude/commands/sparc/debug.md +12 -53
  115. package/.claude/commands/sparc/debugger.md +8 -25
  116. package/.claude/commands/sparc/designer.md +8 -25
  117. package/.claude/commands/sparc/devops.md +16 -57
  118. package/.claude/commands/sparc/docs-writer.md +12 -53
  119. package/.claude/commands/sparc/documenter.md +8 -25
  120. package/.claude/commands/sparc/innovator.md +8 -25
  121. package/.claude/commands/sparc/integration.md +12 -53
  122. package/.claude/commands/sparc/mcp.md +12 -53
  123. package/.claude/commands/sparc/memory-manager.md +28 -25
  124. package/.claude/commands/sparc/optimizer.md +8 -25
  125. package/.claude/commands/sparc/orchestrator.md +35 -97
  126. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +13 -54
  127. package/.claude/commands/sparc/refinement-optimization-mode.md +13 -54
  128. package/.claude/commands/sparc/researcher.md +8 -25
  129. package/.claude/commands/sparc/reviewer.md +8 -25
  130. package/.claude/commands/sparc/security-review.md +13 -54
  131. package/.claude/commands/sparc/sparc-modes.md +97 -151
  132. package/.claude/commands/sparc/sparc.md +16 -56
  133. package/.claude/commands/sparc/spec-pseudocode.md +13 -54
  134. package/.claude/commands/sparc/supabase-admin.md +19 -66
  135. package/.claude/commands/sparc/swarm-coordinator.md +21 -25
  136. package/.claude/commands/sparc/tdd.md +8 -25
  137. package/.claude/commands/sparc/tester.md +8 -25
  138. package/.claude/commands/sparc/tutorial.md +12 -53
  139. package/.claude/commands/sparc/workflow-manager.md +8 -25
  140. package/.claude/commands/sparc.md +76 -130
  141. package/.claude/commands/stream-chain/pipeline.md +72 -77
  142. package/.claude/commands/stream-chain/run.md +133 -47
  143. package/.claude/commands/swarm/README.md +37 -12
  144. package/.claude/commands/swarm/analysis.md +47 -69
  145. package/.claude/commands/swarm/development.md +45 -69
  146. package/.claude/commands/swarm/examples.md +77 -142
  147. package/.claude/commands/swarm/maintenance.md +47 -74
  148. package/.claude/commands/swarm/optimization.md +54 -87
  149. package/.claude/commands/swarm/research.md +47 -107
  150. package/.claude/commands/swarm/swarm-analysis.md +58 -4
  151. package/.claude/commands/swarm/swarm-background.md +61 -4
  152. package/.claude/commands/swarm/swarm-modes.md +63 -4
  153. package/.claude/commands/swarm/swarm-monitor.md +50 -4
  154. package/.claude/commands/swarm/swarm-status.md +40 -4
  155. package/.claude/commands/swarm/swarm-strategies.md +73 -5
  156. package/.claude/commands/swarm/swarm.md +70 -18
  157. package/.claude/commands/swarm/testing.md +51 -102
  158. package/.claude/commands/tokens.md +6 -1
  159. package/.claude/commands/training/README.md +36 -6
  160. package/.claude/commands/training/model-update.md +68 -15
  161. package/.claude/commands/training/neural-patterns.md +54 -55
  162. package/.claude/commands/training/neural-train.md +70 -16
  163. package/.claude/commands/training/pattern-learn.md +60 -16
  164. package/.claude/commands/training/specialization.md +78 -49
  165. package/.claude/commands/truth/start.md +87 -109
  166. package/.claude/commands/ts.md +7 -2
  167. package/.claude/commands/verify/check.md +90 -34
  168. package/.claude/commands/verify/start.md +71 -94
  169. package/.claude/commands/workflows/README.md +62 -6
  170. package/.claude/commands/workflows/development.md +69 -61
  171. package/.claude/commands/workflows/research.md +73 -47
  172. package/.claude/commands/workflows/workflow-create.md +75 -16
  173. package/.claude/commands/workflows/workflow-execute.md +94 -16
  174. package/.claude/commands/workflows/workflow-export.md +81 -16
  175. package/.claude/helpers/control-start.cjs +91 -0
  176. package/.claude/helpers/extras-registry.json +4104 -1991
  177. package/.claude/helpers/graphify-freshen.cjs +44 -13
  178. package/.claude/helpers/hook-handler.cjs +256 -1
  179. package/.claude/helpers/loop-tracker.cjs +107 -0
  180. package/.claude/helpers/router.cjs +48 -68
  181. package/.claude/helpers/skill-registry.json +89 -104
  182. package/.claude/helpers/statusline.cjs +33 -2
  183. package/.claude/scheduled_tasks.lock +1 -0
  184. package/.claude/settings.json +15 -0
  185. package/.claude/skills/.monomind/data/ranked-context.json +5 -0
  186. package/.claude/skills/.monomind/sessions/current.json +13 -0
  187. package/.claude/skills/.monomind/sessions/session-1777829336455.json +15 -0
  188. package/.claude/skills/.monomind/sessions/session-1777831614725.json +15 -0
  189. package/.claude/skills/.monomind/sessions/session-1777832095857.json +15 -0
  190. package/.claude/skills/.monomind/sessions/session-1777839814183.json +15 -0
  191. package/.claude/skills/.monomind/sessions/session-1777841847131.json +15 -0
  192. package/.claude/skills/.monomind/sessions/session-1777843309463.json +15 -0
  193. package/.claude/skills/.monomind/sessions/session-1777880867159.json +15 -0
  194. package/.claude/skills/.monomind/sessions/session-1777881884593.json +15 -0
  195. package/.claude/skills/.monomind/sessions/session-1777884090471.json +15 -0
  196. package/.claude/skills/.monomind/sessions/session-1777884808221.json +15 -0
  197. package/.claude/skills/.monomind/sessions/session-1777885672155.json +15 -0
  198. package/.claude/skills/.monomind/sessions/session-1777886852818.json +15 -0
  199. package/.claude/skills/.monomind/sessions/session-1777896532690.json +15 -0
  200. package/.claude/skills/agentdb-advanced/SKILL.md +11 -12
  201. package/.claude/skills/agentdb-learning/SKILL.md +20 -21
  202. package/.claude/skills/agentdb-memory-patterns/SKILL.md +28 -30
  203. package/.claude/skills/agentdb-optimization/SKILL.md +11 -12
  204. package/.claude/skills/agentdb-vector-search/SKILL.md +37 -41
  205. package/.claude/skills/{v3-integration-deep → agentic-integration}/SKILL.md +20 -13
  206. package/.claude/skills/agentic-jujutsu/SKILL.md +22 -22
  207. package/.claude/skills/{v3-cli-modernization → cli-modernization}/SKILL.md +17 -8
  208. package/.claude/skills/{v3-core-implementation → core-implementation}/SKILL.md +33 -8
  209. package/.claude/skills/{v3-ddd-architecture → ddd-architecture}/SKILL.md +18 -25
  210. package/.claude/skills/github-code-review/SKILL.md +82 -83
  211. package/.claude/skills/github-multi-repo/SKILL.md +42 -46
  212. package/.claude/skills/github-project-management/SKILL.md +83 -88
  213. package/.claude/skills/github-release-management/SKILL.md +12 -18
  214. package/.claude/skills/github-workflow-automation/SKILL.md +70 -74
  215. package/.claude/skills/hooks-automation/SKILL.md +9 -13
  216. package/.claude/skills/mastermind/_intake.md +83 -0
  217. package/.claude/skills/mastermind/_protocol.md +275 -0
  218. package/.claude/skills/mastermind/architect.md +847 -0
  219. package/.claude/skills/mastermind/build.md +158 -0
  220. package/.claude/skills/mastermind/content.md +185 -0
  221. package/.claude/skills/mastermind/createorg.md +318 -0
  222. package/.claude/skills/mastermind/finance.md +154 -0
  223. package/.claude/skills/mastermind/idea.md +158 -0
  224. package/.claude/skills/mastermind/marketing.md +216 -0
  225. package/.claude/skills/mastermind/monotask.md +350 -0
  226. package/.claude/skills/mastermind/ops.md +156 -0
  227. package/.claude/skills/mastermind/references/copywriting-frameworks.md +181 -0
  228. package/.claude/skills/mastermind/references/persuasion-psychology.md +158 -0
  229. package/.claude/skills/mastermind/release.md +156 -0
  230. package/.claude/skills/mastermind/research.md +156 -0
  231. package/.claude/skills/mastermind/review.md +157 -0
  232. package/.claude/skills/mastermind/runorg.md +308 -0
  233. package/.claude/skills/mastermind/sales.md +158 -0
  234. package/.claude/skills/mastermind/techport.md +743 -0
  235. package/.claude/skills/{v3-mcp-optimization → mcp-optimization}/SKILL.md +35 -14
  236. package/.claude/skills/{v3-memory-unification → memory-unification}/SKILL.md +20 -4
  237. package/.claude/skills/monodesign/SKILL.md +302 -0
  238. package/.claude/skills/monodesign/reference/adapt.md +190 -0
  239. package/.claude/skills/monodesign/reference/animate.md +175 -0
  240. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +187 -0
  241. package/.claude/skills/monodesign/reference/audit.md +133 -0
  242. package/.claude/skills/monodesign/reference/bolder.md +113 -0
  243. package/.claude/skills/monodesign/reference/brand-workflow.md +180 -0
  244. package/.claude/skills/monodesign/reference/brand.md +114 -0
  245. package/.claude/skills/monodesign/reference/clarify.md +174 -0
  246. package/.claude/skills/monodesign/reference/cognitive-load.md +106 -0
  247. package/.claude/skills/monodesign/reference/color-and-contrast.md +105 -0
  248. package/.claude/skills/monodesign/reference/colorize.md +154 -0
  249. package/.claude/skills/monodesign/reference/component-specs.md +260 -0
  250. package/.claude/skills/monodesign/reference/component-states.md +274 -0
  251. package/.claude/skills/monodesign/reference/component-system.md +358 -0
  252. package/.claude/skills/monodesign/reference/copy-formulas.md +160 -0
  253. package/.claude/skills/monodesign/reference/craft.md +193 -0
  254. package/.claude/skills/monodesign/reference/critique.md +213 -0
  255. package/.claude/skills/monodesign/reference/delight.md +302 -0
  256. package/.claude/skills/monodesign/reference/design-principles.md +246 -0
  257. package/.claude/skills/monodesign/reference/distill.md +111 -0
  258. package/.claude/skills/monodesign/reference/document.md +427 -0
  259. package/.claude/skills/monodesign/reference/extract.md +69 -0
  260. package/.claude/skills/monodesign/reference/harden.md +347 -0
  261. package/.claude/skills/monodesign/reference/heuristics-scoring.md +234 -0
  262. package/.claude/skills/monodesign/reference/image-prompts.md +118 -0
  263. package/.claude/skills/monodesign/reference/interaction-design.md +195 -0
  264. package/.claude/skills/monodesign/reference/layout.md +141 -0
  265. package/.claude/skills/monodesign/reference/live.md +622 -0
  266. package/.claude/skills/monodesign/reference/motion-design.md +109 -0
  267. package/.claude/skills/monodesign/reference/onboard.md +234 -0
  268. package/.claude/skills/monodesign/reference/optimize.md +258 -0
  269. package/.claude/skills/monodesign/reference/overdrive.md +130 -0
  270. package/.claude/skills/monodesign/reference/personas.md +179 -0
  271. package/.claude/skills/monodesign/reference/polish.md +233 -0
  272. package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +108 -0
  273. package/.claude/skills/monodesign/reference/product.md +62 -0
  274. package/.claude/skills/monodesign/reference/quieter.md +99 -0
  275. package/.claude/skills/monodesign/reference/responsive-design.md +114 -0
  276. package/.claude/skills/monodesign/reference/shape.md +151 -0
  277. package/.claude/skills/monodesign/reference/spatial-design.md +100 -0
  278. package/.claude/skills/monodesign/reference/teach.md +156 -0
  279. package/.claude/skills/monodesign/reference/token-architecture.md +222 -0
  280. package/.claude/skills/monodesign/reference/typeset.md +124 -0
  281. package/.claude/skills/monodesign/reference/typography.md +159 -0
  282. package/.claude/skills/monodesign/reference/ux-research.md +143 -0
  283. package/.claude/skills/monodesign/reference/ux-rules.md +211 -0
  284. package/.claude/skills/monodesign/reference/ux-writing.md +107 -0
  285. package/.claude/skills/monomotion/SKILL.md +145 -0
  286. package/.claude/skills/monomotion/rules/api-control.md +139 -0
  287. package/.claude/skills/monomotion/rules/effects.md +109 -0
  288. package/.claude/skills/monomotion/rules/integration.md +140 -0
  289. package/.claude/skills/monomotion/rules/scroll.md +131 -0
  290. package/.claude/skills/monomotion/rules/sequencing.md +105 -0
  291. package/.claude/skills/monomotion/rules/svg.md +101 -0
  292. package/.claude/skills/monomotion/rules/text.md +119 -0
  293. package/.claude/skills/pair-programming/SKILL.md +1 -1
  294. package/.claude/skills/performance-analysis/SKILL.md +3 -3
  295. package/.claude/skills/{v3-performance-optimization → performance-optimization}/SKILL.md +16 -8
  296. package/.claude/skills/reasoningbank-agentdb/SKILL.md +17 -19
  297. package/.claude/skills/reasoningbank-intelligence/SKILL.md +4 -6
  298. package/.claude/skills/{v3-security-overhaul → security-hardening}/SKILL.md +13 -3
  299. package/.claude/skills/skill-builder/SKILL.md +19 -19
  300. package/.claude/skills/sparc-methodology/SKILL.md +55 -211
  301. package/.claude/skills/stop-slop/SKILL.md +67 -0
  302. package/.claude/skills/stop-slop/references/examples.md +61 -0
  303. package/.claude/skills/stop-slop/references/phrases.md +130 -0
  304. package/.claude/skills/stop-slop/references/structures.md +136 -0
  305. package/.claude/skills/swarm-advanced/SKILL.md +13 -43
  306. package/.claude/skills/{v3-swarm-coordination → swarm-coordination}/SKILL.md +39 -21
  307. package/.claude/skills/swarm-orchestration/SKILL.md +12 -12
  308. package/.claude/skills/verification-quality/SKILL.md +5 -5
  309. package/README.md +5 -5
  310. package/package.json +1 -1
  311. package/packages/@monomind/cli/README.md +5 -5
  312. package/packages/@monomind/cli/bin/cli.js +78 -13
  313. package/packages/@monomind/cli/dist/src/agents/halt-signal.js +33 -7
  314. package/packages/@monomind/cli/dist/src/agents/managed-agent.js +5 -2
  315. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +3 -2
  316. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +1 -1
  317. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +5 -2
  318. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +26 -4
  319. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +17 -9
  320. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +5 -3
  321. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +58 -10
  322. package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +0 -1
  323. package/packages/@monomind/cli/dist/src/agents/version-store.js +44 -21
  324. package/packages/@monomind/cli/dist/src/autopilot-state.js +79 -28
  325. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +7 -2
  326. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +20 -8
  327. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.d.ts +2 -1
  328. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +25 -2
  329. package/packages/@monomind/cli/dist/src/commands/agent.js +6 -4
  330. package/packages/@monomind/cli/dist/src/commands/appliance-advanced.js +23 -0
  331. package/packages/@monomind/cli/dist/src/commands/autopilot.js +3 -3
  332. package/packages/@monomind/cli/dist/src/commands/benchmark.js +119 -8
  333. package/packages/@monomind/cli/dist/src/commands/claims.js +22 -14
  334. package/packages/@monomind/cli/dist/src/commands/config.js +32 -0
  335. package/packages/@monomind/cli/dist/src/commands/daemon.js +13 -11
  336. package/packages/@monomind/cli/dist/src/commands/deployment.js +21 -2
  337. package/packages/@monomind/cli/dist/src/commands/doctor.js +28 -62
  338. package/packages/@monomind/cli/dist/src/commands/embeddings.js +124 -48
  339. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +15 -14
  340. package/packages/@monomind/cli/dist/src/commands/hooks.js +45 -41
  341. package/packages/@monomind/cli/dist/src/commands/index.d.ts +2 -0
  342. package/packages/@monomind/cli/dist/src/commands/index.js +20 -7
  343. package/packages/@monomind/cli/dist/src/commands/init.js +53 -19
  344. package/packages/@monomind/cli/dist/src/commands/mcp.js +31 -44
  345. package/packages/@monomind/cli/dist/src/commands/memory.js +47 -15
  346. package/packages/@monomind/cli/dist/src/commands/migrate.js +156 -108
  347. package/packages/@monomind/cli/dist/src/commands/monograph.d.ts +8 -0
  348. package/packages/@monomind/cli/dist/src/commands/monograph.js +526 -0
  349. package/packages/@monomind/cli/dist/src/commands/neural.js +96 -56
  350. package/packages/@monomind/cli/dist/src/commands/performance.js +30 -8
  351. package/packages/@monomind/cli/dist/src/commands/plugins.js +13 -37
  352. package/packages/@monomind/cli/dist/src/commands/process.js +25 -2
  353. package/packages/@monomind/cli/dist/src/commands/providers.js +37 -5
  354. package/packages/@monomind/cli/dist/src/commands/replay.js +4 -4
  355. package/packages/@monomind/cli/dist/src/commands/route.js +37 -5
  356. package/packages/@monomind/cli/dist/src/commands/ruvector/import.js +12 -2
  357. package/packages/@monomind/cli/dist/src/commands/ruvector/init.js +15 -0
  358. package/packages/@monomind/cli/dist/src/commands/ruvector/status.js +16 -3
  359. package/packages/@monomind/cli/dist/src/commands/security.js +342 -193
  360. package/packages/@monomind/cli/dist/src/commands/session.js +51 -8
  361. package/packages/@monomind/cli/dist/src/commands/start.js +18 -4
  362. package/packages/@monomind/cli/dist/src/commands/swarm.js +47 -36
  363. package/packages/@monomind/cli/dist/src/commands/tokens.js +11 -11
  364. package/packages/@monomind/cli/dist/src/commands/transfer-store.js +1 -1
  365. package/packages/@monomind/cli/dist/src/commands/workflow.js +31 -4
  366. package/packages/@monomind/cli/dist/src/config-adapter.d.ts +2 -1
  367. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +46 -13
  368. package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +0 -3
  369. package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +9 -1
  370. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +4 -2
  371. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +25 -8
  372. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +10 -3
  373. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.js +50 -16
  374. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +27 -5
  375. package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +2 -2
  376. package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +26 -16
  377. package/packages/@monomind/cli/dist/src/eval/trace-collector.js +23 -3
  378. package/packages/@monomind/cli/dist/src/index.js +12 -10
  379. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +8 -8
  380. package/packages/@monomind/cli/dist/src/init/executor.js +163 -137
  381. package/packages/@monomind/cli/dist/src/init/helpers-generator.js +49 -36
  382. package/packages/@monomind/cli/dist/src/init/mcp-generator.js +3 -3
  383. package/packages/@monomind/cli/dist/src/init/settings-generator.js +10 -3
  384. package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +18 -3
  385. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +3 -1
  386. package/packages/@monomind/cli/dist/src/init/types.d.ts +35 -11
  387. package/packages/@monomind/cli/dist/src/init/types.js +5 -9
  388. package/packages/@monomind/cli/dist/src/interactive/interrupt.js +8 -3
  389. package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +38 -4
  390. package/packages/@monomind/cli/dist/src/mcp-client.js +15 -6
  391. package/packages/@monomind/cli/dist/src/mcp-server.d.ts +9 -2
  392. package/packages/@monomind/cli/dist/src/mcp-server.js +182 -35
  393. package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +66 -34
  394. package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.js +34 -7
  395. package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +25 -16
  396. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +4 -6
  397. package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +12 -2
  398. package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +199 -20
  399. package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +68 -18
  400. package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +33 -5
  401. package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +59 -4
  402. package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +46 -10
  403. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +46 -5
  404. package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +29 -16
  405. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.d.ts +4 -67
  406. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +40 -1250
  407. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +38 -10
  408. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +96 -33
  409. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +70 -37
  410. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +1 -0
  411. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +1 -0
  412. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +29 -13
  413. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +9 -0
  414. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +6306 -0
  415. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +121 -37
  416. package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +21 -8
  417. package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +10 -8
  418. package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +4 -1
  419. package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.js +19 -8
  420. package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +57 -17
  421. package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +35 -17
  422. package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +4 -3
  423. package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +53 -13
  424. package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +63 -14
  425. package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +21 -16
  426. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +92 -23
  427. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +41 -10
  428. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -2
  429. package/packages/@monomind/cli/dist/src/memory/intelligence.js +39 -13
  430. package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +1 -0
  431. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +149 -56
  432. package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +107 -45
  433. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +8 -1
  434. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +25 -8
  435. package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +40 -0
  436. package/packages/@monomind/cli/dist/src/observability/replay-reader.js +138 -0
  437. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +35 -5
  438. package/packages/@monomind/cli/dist/src/parser.d.ts +8 -0
  439. package/packages/@monomind/cli/dist/src/parser.js +48 -14
  440. package/packages/@monomind/cli/dist/src/plugins/manager.js +112 -19
  441. package/packages/@monomind/cli/dist/src/plugins/store/discovery.d.ts +1 -1
  442. package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +80 -62
  443. package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +8 -1
  444. package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +4 -2
  445. package/packages/@monomind/cli/dist/src/production/error-handler.js +27 -5
  446. package/packages/@monomind/cli/dist/src/production/monitoring.js +8 -4
  447. package/packages/@monomind/cli/dist/src/production/rate-limiter.js +30 -22
  448. package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.js +2 -2
  449. package/packages/@monomind/cli/dist/src/ruvector/coverage-router.js +19 -9
  450. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.d.ts +1 -0
  451. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.js +26 -6
  452. package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.js +24 -2
  453. package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +1 -2
  454. package/packages/@monomind/cli/dist/src/ruvector/index.js +2 -2
  455. package/packages/@monomind/cli/dist/src/ruvector/model-router.d.ts +4 -2
  456. package/packages/@monomind/cli/dist/src/ruvector/model-router.js +30 -6
  457. package/packages/@monomind/cli/dist/src/ruvector/moe-router.d.ts +7 -0
  458. package/packages/@monomind/cli/dist/src/ruvector/moe-router.js +35 -12
  459. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.d.ts +7 -1
  460. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.js +40 -9
  461. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +3 -1
  462. package/packages/@monomind/cli/dist/src/services/claim-service.js +33 -2
  463. package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +16 -2
  464. package/packages/@monomind/cli/dist/src/services/config-file-manager.js +105 -17
  465. package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +51 -11
  466. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +7 -0
  467. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +188 -45
  468. package/packages/@monomind/cli/dist/src/services/registry-api.js +62 -9
  469. package/packages/@monomind/cli/dist/src/services/ruvector-training.js +8 -0
  470. package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +4 -1
  471. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +112 -28
  472. package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +9 -2
  473. package/packages/@monomind/cli/dist/src/services/worker-queue.js +86 -5
  474. package/packages/@monomind/cli/dist/src/suggest.js +9 -0
  475. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +5 -3
  476. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +17 -5
  477. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +3 -0
  478. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +30 -6
  479. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +5 -3
  480. package/packages/@monomind/cli/dist/src/transfer/export.js +5 -3
  481. package/packages/@monomind/cli/dist/src/transfer/ipfs/client.js +84 -7
  482. package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +13 -4
  483. package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +19 -10
  484. package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +9 -2
  485. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +68 -13
  486. package/packages/@monomind/cli/dist/src/transfer/store/download.d.ts +15 -6
  487. package/packages/@monomind/cli/dist/src/transfer/store/download.js +113 -24
  488. package/packages/@monomind/cli/dist/src/transfer/store/publish.d.ts +1 -1
  489. package/packages/@monomind/cli/dist/src/transfer/store/publish.js +13 -14
  490. package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +3 -3
  491. package/packages/@monomind/cli/dist/src/transfer/store/registry.js +32 -16
  492. package/packages/@monomind/cli/dist/src/update/checker.js +17 -4
  493. package/packages/@monomind/cli/dist/src/update/executor.js +25 -20
  494. package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +11 -0
  495. package/packages/@monomind/cli/dist/src/update/rate-limiter.js +23 -3
  496. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.d.ts +6 -0
  497. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.js +22 -0
  498. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +37 -3
  499. package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +27 -11
  500. package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +51 -13
  501. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +3 -0
  502. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +6 -2
  503. package/packages/@monomind/cli/dist/src/workflow/template-engine.js +7 -0
  504. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +95 -14
  505. package/packages/@monomind/cli/package.json +5 -2
  506. package/packages/@monomind/guidance/README.md +0 -3
  507. package/packages/@monomind/shared/README.md +0 -1
  508. package/packages/@monomind/shared/dist/types/consensus-audit.d.ts +3 -1
  509. package/packages/README.md +15 -16
  510. package/.claude/agents/design/design-brand-guardian.md +0 -323
  511. package/.claude/agents/design/design-image-prompt-engineer.md +0 -237
  512. package/.claude/agents/design/design-inclusive-visuals-specialist.md +0 -72
  513. package/.claude/agents/design/design-ui-designer.md +0 -384
  514. package/.claude/agents/design/design-ux-architect.md +0 -470
  515. package/.claude/agents/design/design-ux-researcher.md +0 -330
  516. package/.claude/agents/design/design-visual-storyteller.md +0 -150
  517. package/.claude/agents/design/design-whimsy-injector.md +0 -439
  518. package/.claude/agents/v3/integration-architect.md +0 -338
  519. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  520. package/.claude/commands/coordination/init.md +0 -44
  521. package/.claude/commands/coordination/orchestrate.md +0 -43
  522. package/.claude/commands/coordination/spawn.md +0 -45
  523. package/.claude/commands/github/code-review-swarm.md +0 -550
  524. package/.claude/commands/github/code-review.md +0 -25
  525. package/.claude/commands/github/github-swarm.md +0 -121
  526. package/.claude/commands/github/issue-triage.md +0 -25
  527. package/.claude/commands/github/multi-repo-swarm.md +0 -519
  528. package/.claude/commands/github/pr-enhance.md +0 -26
  529. package/.claude/commands/github/project-board-sync.md +0 -471
  530. package/.claude/commands/github/release-swarm.md +0 -590
  531. package/.claude/commands/github/repo-analyze.md +0 -25
  532. package/.claude/commands/github/swarm-issue.md +0 -482
  533. package/.claude/commands/github/swarm-pr.md +0 -310
  534. package/.claude/commands/github/workflow-automation.md +0 -468
  535. package/.claude/commands/hive-mind/hive-mind-metrics.md +0 -8
  536. package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
  537. package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
  538. package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
  539. package/.claude/commands/list-agents.md +0 -17
  540. package/.claude/commands/memory/memory-persist.md +0 -25
  541. package/.claude/commands/memory/memory-usage.md +0 -25
  542. package/.claude/commands/memory/neural.md +0 -47
  543. package/.claude/commands/metrics.md +0 -11
  544. package/.claude/commands/monitoring/real-time-view.md +0 -25
  545. package/.claude/commands/monitoring/swarm-monitor.md +0 -25
  546. package/.claude/commands/monomind-createtask.md +0 -302
  547. package/.claude/commands/monomind-help.md +0 -103
  548. package/.claude/commands/monomind-memory.md +0 -107
  549. package/.claude/commands/monomind-repeat.md +0 -149
  550. package/.claude/commands/monomind-swarm.md +0 -205
  551. package/.claude/commands/optimization/cache-manage.md +0 -25
  552. package/.claude/commands/optimization/topology-optimize.md +0 -25
  553. package/.claude/commands/pair/commands.md +0 -546
  554. package/.claude/commands/pair/config.md +0 -510
  555. package/.claude/commands/pair/start.md +0 -209
  556. package/.claude/commands/use-agent.md +0 -67
  557. package/.claude/skills/monomind-createtask/SKILL.md +0 -269
  558. package/.claude/skills/monomind-task-engine/SKILL.md +0 -358
  559. /package/.claude/agents/{v3 → specialists}/memory-specialist.md +0 -0
  560. /package/.claude/agents/{v3 → specialists}/performance-engineer.md +0 -0
  561. /package/.claude/agents/{v3 → specialists}/queen-coordinator.md +0 -0
  562. /package/.claude/agents/{v3 → specialists}/security-architect.md +0 -0
@@ -5,27 +5,39 @@
5
5
  * github.com/nokhodian/monomind
6
6
  */
7
7
  import { output } from '../output.js';
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import { homedir } from 'os';
8
11
  const CLAIMS_CONFIG_PATHS = [
9
12
  '.monomind/claims.json',
10
13
  'monomind.claims.json',
11
14
  ];
12
15
  function getClaimsConfigPaths() {
13
- // Lazy import to keep top-level synchronous
14
- // eslint-disable-next-line @typescript-eslint/no-var-requires
15
- const path = require('path');
16
16
  return [
17
17
  path.resolve(CLAIMS_CONFIG_PATHS[0]),
18
18
  path.resolve(CLAIMS_CONFIG_PATHS[1]),
19
- path.resolve(process.env.HOME || '~', '.config/monomind/claims.json'),
19
+ path.resolve(homedir(), '.config/monomind/claims.json'),
20
20
  ];
21
21
  }
22
+ function safeParseJson(content) {
23
+ const parsed = JSON.parse(content);
24
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
25
+ throw new Error('Claims config must be a JSON object');
26
+ }
27
+ const safe = Object.create(null);
28
+ for (const key of Object.keys(parsed)) {
29
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype')
30
+ continue;
31
+ safe[key] = parsed[key];
32
+ }
33
+ return safe;
34
+ }
22
35
  function loadClaimsConfig() {
23
- const fs = require('fs');
24
36
  const configPaths = getClaimsConfigPaths();
25
37
  for (const configPath of configPaths) {
26
38
  if (fs.existsSync(configPath)) {
27
39
  const content = fs.readFileSync(configPath, 'utf-8');
28
- return { config: JSON.parse(content), path: configPath };
40
+ return { config: safeParseJson(content), path: configPath };
29
41
  }
30
42
  }
31
43
  // Return default config with the first path as the default write location
@@ -41,8 +53,6 @@ function loadClaimsConfig() {
41
53
  return { config: defaultConfig, path: configPaths[0] };
42
54
  }
43
55
  function saveClaimsConfig(config, configPath) {
44
- const fs = require('fs');
45
- const path = require('path');
46
56
  const dir = path.dirname(configPath);
47
57
  if (!fs.existsSync(dir)) {
48
58
  fs.mkdirSync(dir, { recursive: true });
@@ -166,7 +176,7 @@ const checkCommand = {
166
176
  const claimsConfigPaths = [
167
177
  path.resolve('.monomind/claims.json'),
168
178
  path.resolve('monomind.claims.json'),
169
- path.resolve(process.env.HOME || '~', '.config/monomind/claims.json'),
179
+ path.resolve(homedir(), '.config/monomind/claims.json'),
170
180
  ];
171
181
  let claimsConfig = {
172
182
  // Default policy - allows basic operations
@@ -181,7 +191,7 @@ const checkCommand = {
181
191
  for (const configPath of claimsConfigPaths) {
182
192
  if (fs.existsSync(configPath)) {
183
193
  const content = fs.readFileSync(configPath, 'utf-8');
184
- claimsConfig = { ...claimsConfig, ...JSON.parse(content) };
194
+ claimsConfig = { ...claimsConfig, ...safeParseJson(content) };
185
195
  policySource = configPath;
186
196
  break;
187
197
  }
@@ -235,10 +245,8 @@ const checkCommand = {
235
245
  }
236
246
  catch (error) {
237
247
  spinner.stop();
238
- // On error, fall back to permissive default
239
- isGranted = !claim.startsWith('admin:');
240
- reason = isGranted ? 'Granted (default permissive policy)' : 'Admin claims require explicit grant';
241
- policySource = 'fallback';
248
+ output.printError(`Failed to evaluate claim: ${error instanceof Error ? error.message : String(error)}`);
249
+ return { success: false, exitCode: 1 };
242
250
  }
243
251
  if (isGranted) {
244
252
  output.writeln(output.success('✓ Claim granted'));
@@ -3,6 +3,7 @@
3
3
  * Configuration management
4
4
  */
5
5
  import { output } from '../output.js';
6
+ import { confirm } from '../prompt.js';
6
7
  import { configManager, parseConfigValue } from '../services/config-file-manager.js';
7
8
  import * as path from 'path';
8
9
  // Init configuration
@@ -146,6 +147,13 @@ const setCommand = {
146
147
  output.printError('Both key and value are required');
147
148
  return { success: false, exitCode: 1 };
148
149
  }
150
+ const FORBIDDEN_KEY_SEGMENTS = new Set(['__proto__', 'constructor', 'prototype']);
151
+ for (const seg of key.split('.')) {
152
+ if (FORBIDDEN_KEY_SEGMENTS.has(seg)) {
153
+ output.printError(`Forbidden config key segment: "${seg}"`);
154
+ return { success: false, exitCode: 1 };
155
+ }
156
+ }
149
157
  try {
150
158
  const parsedValue = parseConfigValue(value);
151
159
  configManager.set(ctx.cwd, key, parsedValue);
@@ -311,6 +319,25 @@ const resetCommand = {
311
319
  ],
312
320
  action: async (ctx) => {
313
321
  try {
322
+ if (!ctx.flags.force && ctx.interactive) {
323
+ const confirmed = await confirm({ message: 'This will reset all configuration to defaults. Continue?', default: false });
324
+ if (!confirmed)
325
+ return { success: true, message: 'Reset cancelled' };
326
+ }
327
+ const section = ctx.flags.section;
328
+ if (section && section !== 'all') {
329
+ // Scoped reset: remove only the specified section key from the config.
330
+ // Setting to undefined causes JSON serialization to omit the key, effectively removing it.
331
+ const current = configManager.getConfig(ctx.cwd);
332
+ if (section in current) {
333
+ configManager.set(ctx.cwd, section, configManager.getDefaults()[section]);
334
+ output.writeln(`Section "${section}" reset to defaults`);
335
+ }
336
+ else {
337
+ output.printWarning(`Section "${section}" not found in configuration`);
338
+ }
339
+ return { success: true };
340
+ }
314
341
  const configPath = configManager.reset(ctx.cwd);
315
342
  output.writeln(`Configuration reset to defaults: ${configPath}`);
316
343
  return { success: true };
@@ -344,6 +371,11 @@ const exportCommand = {
344
371
  ],
345
372
  action: async (ctx) => {
346
373
  try {
374
+ const format = ctx.flags.format || 'json';
375
+ if (format === 'yaml') {
376
+ // configManager.exportTo does not support YAML serialization; export as JSON instead
377
+ output.printWarning('YAML export is not supported. Exporting as JSON.');
378
+ }
347
379
  const exportPath = ctx.flags.output || ctx.args[0] || 'monomind.config.export.json';
348
380
  configManager.exportTo(ctx.cwd, exportPath);
349
381
  const resolved = path.resolve(ctx.cwd, exportPath);
@@ -6,7 +6,7 @@ import { output } from '../output.js';
6
6
  import { getDaemon, startDaemon, stopDaemon } from '../services/worker-daemon.js';
7
7
  import { spawn } from 'child_process';
8
8
  import { fileURLToPath } from 'url';
9
- import { dirname, join, resolve } from 'path';
9
+ import { dirname, join, resolve, sep } from 'path';
10
10
  import * as fs from 'fs';
11
11
  // Start daemon subcommand
12
12
  const startCommand = {
@@ -185,12 +185,9 @@ function validatePath(path, label) {
185
185
  throw new Error(`${label} contains shell metacharacters`);
186
186
  }
187
187
  // Prevent path traversal outside expected directories
188
- if (!resolved.includes('.monomind') && !resolved.includes('bin')) {
189
- // Allow only paths within project structure
190
- const cwd = process.cwd();
191
- if (!resolved.startsWith(cwd)) {
192
- throw new Error(`${label} escapes project directory`);
193
- }
188
+ const cwd = process.cwd();
189
+ if (!resolved.startsWith(cwd + sep) && !resolved.startsWith(cwd + '/') && resolved !== cwd) {
190
+ throw new Error(`${label} escapes project directory`);
194
191
  }
195
192
  }
196
193
  /**
@@ -237,7 +234,7 @@ async function startBackgroundDaemon(projectRoot, quiet, maxCpuLoad, minFreeMemo
237
234
  // Prevent macOS SIGHUP kill when terminal closes
238
235
  ...(process.platform === 'darwin' ? { NOHUP: '1' } : {}),
239
236
  },
240
- ...(isWin ? { shell: true, windowsHide: true } : {}),
237
+ ...(isWin ? { windowsHide: true } : {}),
241
238
  };
242
239
  // Use spawn with explicit arguments instead of shell string interpolation
243
240
  // This prevents command injection via paths
@@ -271,12 +268,17 @@ async function startBackgroundDaemon(projectRoot, quiet, maxCpuLoad, minFreeMemo
271
268
  // Write PID file only if the child hasn't already written its own.
272
269
  // The foreground child calls writePidFile() internally, but on some platforms
273
270
  // it may not have started yet, so we write as a fallback.
274
- if (!fs.existsSync(pidFile)) {
275
- fs.writeFileSync(pidFile, String(pid));
271
+ // Use 'wx' flag for atomic exclusive create — avoids TOCTOU race.
272
+ try {
273
+ fs.writeFileSync(pidFile, String(pid), { flag: 'wx' });
274
+ }
275
+ catch {
276
+ // File already exists (child wrote it first) — that's expected, ignore
276
277
  }
277
278
  if (!quiet) {
279
+ const actualLogPath = join(resolvedRoot, '.monomind', 'logs', 'daemon.log');
278
280
  output.printSuccess(`Daemon started in background (PID: ${pid})`);
279
- output.printInfo(`Logs: ${logFile}`);
281
+ output.printInfo(`Logs: ${actualLogPath}`);
280
282
  output.printInfo(`Stop with: monomind daemon stop`);
281
283
  }
282
284
  return { success: true };
@@ -26,13 +26,27 @@ function loadDeploymentState(cwd) {
26
26
  }
27
27
  try {
28
28
  const raw = fs.readFileSync(filePath, 'utf-8');
29
- return JSON.parse(raw);
29
+ const parsed = JSON.parse(raw);
30
+ // Strip proto-pollution keys before casting
31
+ const DANGEROUS = new Set(['__proto__', 'constructor', 'prototype']);
32
+ if (parsed !== null && typeof parsed === 'object') {
33
+ for (const k of DANGEROUS) {
34
+ if (Object.prototype.hasOwnProperty.call(parsed, k))
35
+ delete parsed[k];
36
+ }
37
+ }
38
+ return parsed;
30
39
  }
31
40
  catch {
32
41
  return emptyState();
33
42
  }
34
43
  }
44
+ const MAX_DEPLOYMENT_HISTORY = 1000;
35
45
  function saveDeploymentState(cwd, state) {
46
+ // Cap history to prevent unbounded file growth
47
+ if (state.history.length > MAX_DEPLOYMENT_HISTORY) {
48
+ state.history = state.history.slice(-MAX_DEPLOYMENT_HISTORY);
49
+ }
36
50
  const dir = getStateDir(cwd);
37
51
  if (!fs.existsSync(dir)) {
38
52
  fs.mkdirSync(dir, { recursive: true });
@@ -218,10 +232,11 @@ const statusCommand = {
218
232
  output.writeln(output.dim('No environments configured'));
219
233
  }
220
234
  // Recent history (last 5)
221
- let recent = [...state.history].reverse().slice(0, 5);
235
+ let recent = [...state.history].reverse();
222
236
  if (filterEnv) {
223
237
  recent = recent.filter(r => r.environment === filterEnv);
224
238
  }
239
+ recent = recent.slice(0, 5);
225
240
  if (recent.length > 0) {
226
241
  output.writeln();
227
242
  output.writeln(output.bold('Recent Deployments'));
@@ -268,6 +283,10 @@ const rollbackCommand = {
268
283
  return { success: false, exitCode: 1 };
269
284
  }
270
285
  const targetVersion = ctx.flags['version'] ? String(ctx.flags['version']) : null;
286
+ const steps = parseInt(ctx.flags.steps || '1', 10);
287
+ if (steps > 1) {
288
+ output.printWarning(`Multi-step rollback (--steps ${steps}) is not yet implemented. Rolling back 1 step only.`);
289
+ }
271
290
  const state = loadDeploymentState(ctx.cwd);
272
291
  // Find deployments for this environment in reverse chronological order
273
292
  const envHistory = state.history
@@ -9,6 +9,7 @@ import { existsSync, readFileSync, statSync } from 'fs';
9
9
  import { join, dirname } from 'path';
10
10
  import { fileURLToPath } from 'url';
11
11
  import { execSync, exec } from 'child_process';
12
+ import { homedir } from 'os';
12
13
  import { promisify } from 'util';
13
14
  // Promisified exec with proper shell and env inheritance for cross-platform support
14
15
  const execAsync = promisify(exec);
@@ -178,8 +179,8 @@ async function checkGitRepo() {
178
179
  // Check MCP servers
179
180
  async function checkMcpServers() {
180
181
  const mcpConfigPaths = [
181
- join(process.env.HOME || '', '.claude/claude_desktop_config.json'),
182
- join(process.env.HOME || '', '.config/claude/mcp.json'),
182
+ join(homedir(), '.claude/claude_desktop_config.json'),
183
+ join(homedir(), '.config/claude/mcp.json'),
183
184
  '.mcp.json'
184
185
  ];
185
186
  for (const configPath of mcpConfigPaths) {
@@ -188,7 +189,7 @@ async function checkMcpServers() {
188
189
  const content = JSON.parse(readFileSync(configPath, 'utf8'));
189
190
  const servers = content.mcpServers || content.servers || {};
190
191
  const count = Object.keys(servers).length;
191
- const hasMonomind = 'monomind' in servers || 'monomind_alpha' in servers || 'monomind' in servers || 'monomind_alpha' in servers;
192
+ const hasMonomind = 'monomind' in servers || 'monomind_alpha' in servers;
192
193
  if (hasMonomind) {
193
194
  return { name: 'MCP Servers', status: 'pass', message: `${count} servers (monomind configured)` };
194
195
  }
@@ -263,7 +264,7 @@ async function checkVersionFreshness() {
263
264
  const pkg = JSON.parse(readFileSync(candidate, 'utf8'));
264
265
  if (pkg.version &&
265
266
  typeof pkg.name === 'string' &&
266
- (pkg.name === '@monomind/cli' || pkg.name === 'monomind' || pkg.name === 'monomind')) {
267
+ (pkg.name === '@monomind/cli' || pkg.name === 'monomind')) {
267
268
  currentVersion = pkg.version;
268
269
  break;
269
270
  }
@@ -382,50 +383,31 @@ async function installClaudeCode() {
382
383
  return false;
383
384
  }
384
385
  }
385
- // Check graphify (Python knowledge graph engine)
386
- async function checkGraphify() {
386
+ // Check monograph (TypeScript knowledge graph engine, bundled with CLI)
387
+ async function checkMonograph() {
387
388
  try {
388
- await runCommand('graphify --help');
389
- return { name: 'Graphify', status: 'pass', message: 'installed (knowledge graph engine)' };
390
- }
391
- catch {
392
- // Check if Python/uv are available for the fix suggestion
393
- let fix = 'pip install graphifyy';
394
- try {
395
- await runCommand('uv --version');
396
- fix = 'uv tool install graphifyy';
389
+ const __filename = fileURLToPath(import.meta.url);
390
+ const candidates = [
391
+ join(dirname(__filename), '..', '..', 'node_modules', '@monomind', 'monograph', 'package.json'),
392
+ join(dirname(__filename), '..', '..', '..', '..', 'node_modules', '@monomind', 'monograph', 'package.json'),
393
+ ];
394
+ if (candidates.some(p => existsSync(p))) {
395
+ return { name: 'Monograph', status: 'pass', message: 'available (knowledge graph engine)' };
397
396
  }
398
- catch { }
399
397
  return {
400
- name: 'Graphify',
398
+ name: 'Monograph',
401
399
  status: 'warn',
402
- message: 'Not installed (knowledge graph disabled)',
403
- fix
400
+ message: 'Package not found (knowledge graph disabled)',
401
+ fix: 'npm install in project root'
404
402
  };
405
403
  }
406
- }
407
- // Install graphify Python package
408
- async function installGraphify() {
409
- try {
410
- output.writeln();
411
- output.writeln(output.bold('Installing Graphify knowledge graph engine...'));
412
- // Prefer uv (fast, isolated), fall back to pip
413
- let cmd = 'pip install graphifyy';
414
- try {
415
- await runCommand('uv --version');
416
- cmd = 'uv tool install graphifyy';
417
- }
418
- catch { }
419
- execSync(cmd, { encoding: 'utf8', stdio: 'inherit', timeout: 120000 });
420
- output.writeln(output.success('Graphify installed successfully!'));
421
- return true;
422
- }
423
- catch (error) {
424
- output.writeln(output.error('Failed to install Graphify'));
425
- if (error instanceof Error) {
426
- output.writeln(output.dim(error.message));
427
- }
428
- return false;
404
+ catch {
405
+ return {
406
+ name: 'Monograph',
407
+ status: 'warn',
408
+ message: 'Package check failed (knowledge graph may be unavailable)',
409
+ fix: 'npm install in project root'
410
+ };
429
411
  }
430
412
  }
431
413
  // Check agentic-flow v1 integration (filesystem-based to avoid slow WASM/DB init)
@@ -491,14 +473,14 @@ export const doctorCommand = {
491
473
  {
492
474
  name: 'install',
493
475
  short: 'i',
494
- description: 'Auto-install missing dependencies (Claude Code CLI, Graphify)',
476
+ description: 'Auto-install missing dependencies (Claude Code CLI)',
495
477
  type: 'boolean',
496
478
  default: false
497
479
  },
498
480
  {
499
481
  name: 'component',
500
482
  short: 'c',
501
- description: 'Check specific component (version, node, npm, config, daemon, memory, api, git, mcp, claude, disk, typescript, graphify)',
483
+ description: 'Check specific component (version, node, npm, config, daemon, memory, api, git, mcp, claude, disk, typescript, monograph)',
502
484
  type: 'string'
503
485
  },
504
486
  {
@@ -540,7 +522,7 @@ export const doctorCommand = {
540
522
  checkMcpServers,
541
523
  checkDiskSpace,
542
524
  checkBuildTools,
543
- checkGraphify,
525
+ checkMonograph,
544
526
  checkAgenticFlow
545
527
  ];
546
528
  const componentMap = {
@@ -557,7 +539,7 @@ export const doctorCommand = {
557
539
  'mcp': checkMcpServers,
558
540
  'disk': checkDiskSpace,
559
541
  'typescript': checkBuildTools,
560
- 'graphify': checkGraphify,
542
+ 'monograph': checkMonograph,
561
543
  'agentic-flow': checkAgenticFlow
562
544
  };
563
545
  let checksToRun = allChecks;
@@ -616,22 +598,6 @@ export const doctorCommand = {
616
598
  output.writeln(formatCheck(newCheck));
617
599
  }
618
600
  }
619
- const graphifyResult = results.find(r => r.name === 'Graphify');
620
- if (graphifyResult && graphifyResult.status !== 'pass') {
621
- const installed = await installGraphify();
622
- if (installed) {
623
- const newCheck = await checkGraphify();
624
- const idx = results.findIndex(r => r.name === 'Graphify');
625
- if (idx !== -1) {
626
- results[idx] = newCheck;
627
- const fixIdx = fixes.findIndex(f => f.startsWith('Graphify:'));
628
- if (fixIdx !== -1 && newCheck.status === 'pass') {
629
- fixes.splice(fixIdx, 1);
630
- }
631
- }
632
- output.writeln(formatCheck(newCheck));
633
- }
634
- }
635
601
  }
636
602
  // Summary
637
603
  const passed = results.filter(r => r.status === 'pass').length;