monomind 1.8.0 → 1.9.1

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 (566) 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} +21 -8
  91. package/.claude/commands/monomind/help.md +118 -0
  92. package/.claude/commands/{monomind-idea.md → monomind/idea.md} +22 -28
  93. package/.claude/commands/{monomind-improve.md → monomind/improve.md} +21 -27
  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/learning-service.mjs +0 -0
  180. package/.claude/helpers/loop-tracker.cjs +107 -0
  181. package/.claude/helpers/metrics-db.mjs +0 -0
  182. package/.claude/helpers/router.cjs +48 -68
  183. package/.claude/helpers/skill-registry.json +89 -104
  184. package/.claude/helpers/statusline.cjs +33 -2
  185. package/.claude/helpers/swarm-hooks.sh +0 -0
  186. package/.claude/scheduled_tasks.lock +1 -0
  187. package/.claude/settings.json +15 -0
  188. package/.claude/skills/.monomind/data/ranked-context.json +5 -0
  189. package/.claude/skills/.monomind/sessions/current.json +13 -0
  190. package/.claude/skills/.monomind/sessions/session-1777829336455.json +15 -0
  191. package/.claude/skills/.monomind/sessions/session-1777831614725.json +15 -0
  192. package/.claude/skills/.monomind/sessions/session-1777832095857.json +15 -0
  193. package/.claude/skills/.monomind/sessions/session-1777839814183.json +15 -0
  194. package/.claude/skills/.monomind/sessions/session-1777841847131.json +15 -0
  195. package/.claude/skills/.monomind/sessions/session-1777843309463.json +15 -0
  196. package/.claude/skills/.monomind/sessions/session-1777880867159.json +15 -0
  197. package/.claude/skills/.monomind/sessions/session-1777881884593.json +15 -0
  198. package/.claude/skills/.monomind/sessions/session-1777884090471.json +15 -0
  199. package/.claude/skills/.monomind/sessions/session-1777884808221.json +15 -0
  200. package/.claude/skills/.monomind/sessions/session-1777885672155.json +15 -0
  201. package/.claude/skills/.monomind/sessions/session-1777886852818.json +15 -0
  202. package/.claude/skills/.monomind/sessions/session-1777896532690.json +15 -0
  203. package/.claude/skills/agentdb-advanced/SKILL.md +11 -12
  204. package/.claude/skills/agentdb-learning/SKILL.md +20 -21
  205. package/.claude/skills/agentdb-memory-patterns/SKILL.md +28 -30
  206. package/.claude/skills/agentdb-optimization/SKILL.md +11 -12
  207. package/.claude/skills/agentdb-vector-search/SKILL.md +37 -41
  208. package/.claude/skills/{v3-integration-deep → agentic-integration}/SKILL.md +20 -13
  209. package/.claude/skills/agentic-jujutsu/SKILL.md +22 -22
  210. package/.claude/skills/{v3-cli-modernization → cli-modernization}/SKILL.md +17 -8
  211. package/.claude/skills/{v3-core-implementation → core-implementation}/SKILL.md +33 -8
  212. package/.claude/skills/{v3-ddd-architecture → ddd-architecture}/SKILL.md +18 -25
  213. package/.claude/skills/github-code-review/SKILL.md +82 -83
  214. package/.claude/skills/github-multi-repo/SKILL.md +42 -46
  215. package/.claude/skills/github-project-management/SKILL.md +83 -88
  216. package/.claude/skills/github-release-management/SKILL.md +12 -18
  217. package/.claude/skills/github-workflow-automation/SKILL.md +70 -74
  218. package/.claude/skills/hooks-automation/SKILL.md +9 -13
  219. package/.claude/skills/mastermind/_intake.md +83 -0
  220. package/.claude/skills/mastermind/_protocol.md +275 -0
  221. package/.claude/skills/mastermind/architect.md +847 -0
  222. package/.claude/skills/mastermind/build.md +158 -0
  223. package/.claude/skills/mastermind/content.md +185 -0
  224. package/.claude/skills/mastermind/createorg.md +318 -0
  225. package/.claude/skills/mastermind/finance.md +154 -0
  226. package/.claude/skills/mastermind/idea.md +158 -0
  227. package/.claude/skills/mastermind/marketing.md +216 -0
  228. package/.claude/skills/mastermind/monotask.md +350 -0
  229. package/.claude/skills/mastermind/ops.md +156 -0
  230. package/.claude/skills/mastermind/references/copywriting-frameworks.md +181 -0
  231. package/.claude/skills/mastermind/references/persuasion-psychology.md +158 -0
  232. package/.claude/skills/mastermind/release.md +156 -0
  233. package/.claude/skills/mastermind/research.md +156 -0
  234. package/.claude/skills/mastermind/review.md +157 -0
  235. package/.claude/skills/mastermind/runorg.md +308 -0
  236. package/.claude/skills/mastermind/sales.md +158 -0
  237. package/.claude/skills/mastermind/techport.md +743 -0
  238. package/.claude/skills/{v3-mcp-optimization → mcp-optimization}/SKILL.md +35 -14
  239. package/.claude/skills/{v3-memory-unification → memory-unification}/SKILL.md +20 -4
  240. package/.claude/skills/monodesign/SKILL.md +302 -0
  241. package/.claude/skills/monodesign/reference/adapt.md +190 -0
  242. package/.claude/skills/monodesign/reference/animate.md +175 -0
  243. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +187 -0
  244. package/.claude/skills/monodesign/reference/audit.md +133 -0
  245. package/.claude/skills/monodesign/reference/bolder.md +113 -0
  246. package/.claude/skills/monodesign/reference/brand-workflow.md +180 -0
  247. package/.claude/skills/monodesign/reference/brand.md +114 -0
  248. package/.claude/skills/monodesign/reference/clarify.md +174 -0
  249. package/.claude/skills/monodesign/reference/cognitive-load.md +106 -0
  250. package/.claude/skills/monodesign/reference/color-and-contrast.md +105 -0
  251. package/.claude/skills/monodesign/reference/colorize.md +154 -0
  252. package/.claude/skills/monodesign/reference/component-specs.md +260 -0
  253. package/.claude/skills/monodesign/reference/component-states.md +274 -0
  254. package/.claude/skills/monodesign/reference/component-system.md +358 -0
  255. package/.claude/skills/monodesign/reference/copy-formulas.md +160 -0
  256. package/.claude/skills/monodesign/reference/craft.md +193 -0
  257. package/.claude/skills/monodesign/reference/critique.md +213 -0
  258. package/.claude/skills/monodesign/reference/delight.md +302 -0
  259. package/.claude/skills/monodesign/reference/design-principles.md +246 -0
  260. package/.claude/skills/monodesign/reference/distill.md +111 -0
  261. package/.claude/skills/monodesign/reference/document.md +427 -0
  262. package/.claude/skills/monodesign/reference/extract.md +69 -0
  263. package/.claude/skills/monodesign/reference/harden.md +347 -0
  264. package/.claude/skills/monodesign/reference/heuristics-scoring.md +234 -0
  265. package/.claude/skills/monodesign/reference/image-prompts.md +118 -0
  266. package/.claude/skills/monodesign/reference/interaction-design.md +195 -0
  267. package/.claude/skills/monodesign/reference/layout.md +141 -0
  268. package/.claude/skills/monodesign/reference/live.md +622 -0
  269. package/.claude/skills/monodesign/reference/motion-design.md +109 -0
  270. package/.claude/skills/monodesign/reference/onboard.md +234 -0
  271. package/.claude/skills/monodesign/reference/optimize.md +258 -0
  272. package/.claude/skills/monodesign/reference/overdrive.md +130 -0
  273. package/.claude/skills/monodesign/reference/personas.md +179 -0
  274. package/.claude/skills/monodesign/reference/polish.md +233 -0
  275. package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +108 -0
  276. package/.claude/skills/monodesign/reference/product.md +62 -0
  277. package/.claude/skills/monodesign/reference/quieter.md +99 -0
  278. package/.claude/skills/monodesign/reference/responsive-design.md +114 -0
  279. package/.claude/skills/monodesign/reference/shape.md +151 -0
  280. package/.claude/skills/monodesign/reference/spatial-design.md +100 -0
  281. package/.claude/skills/monodesign/reference/teach.md +156 -0
  282. package/.claude/skills/monodesign/reference/token-architecture.md +222 -0
  283. package/.claude/skills/monodesign/reference/typeset.md +124 -0
  284. package/.claude/skills/monodesign/reference/typography.md +159 -0
  285. package/.claude/skills/monodesign/reference/ux-research.md +143 -0
  286. package/.claude/skills/monodesign/reference/ux-rules.md +211 -0
  287. package/.claude/skills/monodesign/reference/ux-writing.md +107 -0
  288. package/.claude/skills/monomotion/SKILL.md +145 -0
  289. package/.claude/skills/monomotion/rules/api-control.md +139 -0
  290. package/.claude/skills/monomotion/rules/effects.md +109 -0
  291. package/.claude/skills/monomotion/rules/integration.md +140 -0
  292. package/.claude/skills/monomotion/rules/scroll.md +131 -0
  293. package/.claude/skills/monomotion/rules/sequencing.md +105 -0
  294. package/.claude/skills/monomotion/rules/svg.md +101 -0
  295. package/.claude/skills/monomotion/rules/text.md +119 -0
  296. package/.claude/skills/pair-programming/SKILL.md +1 -1
  297. package/.claude/skills/performance-analysis/SKILL.md +3 -3
  298. package/.claude/skills/{v3-performance-optimization → performance-optimization}/SKILL.md +16 -8
  299. package/.claude/skills/reasoningbank-agentdb/SKILL.md +17 -19
  300. package/.claude/skills/reasoningbank-intelligence/SKILL.md +4 -6
  301. package/.claude/skills/{v3-security-overhaul → security-hardening}/SKILL.md +13 -3
  302. package/.claude/skills/skill-builder/SKILL.md +19 -19
  303. package/.claude/skills/sparc-methodology/SKILL.md +55 -211
  304. package/.claude/skills/stop-slop/SKILL.md +67 -0
  305. package/.claude/skills/stop-slop/references/examples.md +61 -0
  306. package/.claude/skills/stop-slop/references/phrases.md +130 -0
  307. package/.claude/skills/stop-slop/references/structures.md +136 -0
  308. package/.claude/skills/swarm-advanced/SKILL.md +13 -43
  309. package/.claude/skills/{v3-swarm-coordination → swarm-coordination}/SKILL.md +39 -21
  310. package/.claude/skills/swarm-orchestration/SKILL.md +12 -12
  311. package/.claude/skills/verification-quality/SKILL.md +5 -5
  312. package/.claude/statusline-command.sh +0 -0
  313. package/.claude/statusline.sh +0 -0
  314. package/.claude-plugin/scripts/install.sh +0 -0
  315. package/.claude-plugin/scripts/uninstall.sh +0 -0
  316. package/.claude-plugin/scripts/verify.sh +0 -0
  317. package/README.md +5 -5
  318. package/package.json +17 -17
  319. package/packages/@monomind/cli/README.md +441 -0
  320. package/packages/@monomind/cli/bin/cli.js +78 -13
  321. package/packages/@monomind/cli/bin/mcp-server.js +0 -0
  322. package/packages/@monomind/cli/dist/src/agents/halt-signal.js +33 -7
  323. package/packages/@monomind/cli/dist/src/agents/managed-agent.js +5 -2
  324. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +3 -2
  325. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +1 -1
  326. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +5 -2
  327. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +26 -4
  328. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +17 -9
  329. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +5 -3
  330. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +58 -10
  331. package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +0 -1
  332. package/packages/@monomind/cli/dist/src/agents/version-store.js +44 -21
  333. package/packages/@monomind/cli/dist/src/autopilot-state.js +79 -28
  334. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +7 -2
  335. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +20 -8
  336. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.d.ts +2 -1
  337. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +25 -2
  338. package/packages/@monomind/cli/dist/src/commands/agent.js +6 -4
  339. package/packages/@monomind/cli/dist/src/commands/appliance-advanced.js +23 -0
  340. package/packages/@monomind/cli/dist/src/commands/autopilot.js +3 -3
  341. package/packages/@monomind/cli/dist/src/commands/benchmark.js +119 -8
  342. package/packages/@monomind/cli/dist/src/commands/claims.js +22 -14
  343. package/packages/@monomind/cli/dist/src/commands/config.js +32 -0
  344. package/packages/@monomind/cli/dist/src/commands/daemon.js +13 -11
  345. package/packages/@monomind/cli/dist/src/commands/deployment.js +21 -2
  346. package/packages/@monomind/cli/dist/src/commands/doctor.js +5 -4
  347. package/packages/@monomind/cli/dist/src/commands/embeddings.js +124 -48
  348. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +15 -14
  349. package/packages/@monomind/cli/dist/src/commands/hooks.js +45 -41
  350. package/packages/@monomind/cli/dist/src/commands/index.d.ts +2 -0
  351. package/packages/@monomind/cli/dist/src/commands/index.js +20 -7
  352. package/packages/@monomind/cli/dist/src/commands/init.js +53 -19
  353. package/packages/@monomind/cli/dist/src/commands/mcp.js +31 -44
  354. package/packages/@monomind/cli/dist/src/commands/memory.js +47 -15
  355. package/packages/@monomind/cli/dist/src/commands/migrate.js +156 -108
  356. package/packages/@monomind/cli/dist/src/commands/monograph.d.ts +8 -0
  357. package/packages/@monomind/cli/dist/src/commands/monograph.js +526 -0
  358. package/packages/@monomind/cli/dist/src/commands/neural.js +96 -56
  359. package/packages/@monomind/cli/dist/src/commands/performance.js +30 -8
  360. package/packages/@monomind/cli/dist/src/commands/plugins.js +13 -37
  361. package/packages/@monomind/cli/dist/src/commands/process.js +25 -2
  362. package/packages/@monomind/cli/dist/src/commands/providers.js +37 -5
  363. package/packages/@monomind/cli/dist/src/commands/replay.js +4 -4
  364. package/packages/@monomind/cli/dist/src/commands/route.js +37 -5
  365. package/packages/@monomind/cli/dist/src/commands/ruvector/import.js +12 -2
  366. package/packages/@monomind/cli/dist/src/commands/ruvector/init.js +15 -0
  367. package/packages/@monomind/cli/dist/src/commands/ruvector/status.js +16 -3
  368. package/packages/@monomind/cli/dist/src/commands/security.js +342 -193
  369. package/packages/@monomind/cli/dist/src/commands/session.js +51 -8
  370. package/packages/@monomind/cli/dist/src/commands/start.js +18 -4
  371. package/packages/@monomind/cli/dist/src/commands/swarm.js +47 -36
  372. package/packages/@monomind/cli/dist/src/commands/tokens.js +11 -11
  373. package/packages/@monomind/cli/dist/src/commands/transfer-store.js +1 -1
  374. package/packages/@monomind/cli/dist/src/commands/workflow.js +31 -4
  375. package/packages/@monomind/cli/dist/src/config-adapter.d.ts +2 -1
  376. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +46 -13
  377. package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +0 -3
  378. package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +9 -1
  379. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +4 -2
  380. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +25 -8
  381. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +10 -3
  382. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.js +50 -16
  383. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +27 -5
  384. package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +2 -2
  385. package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +26 -16
  386. package/packages/@monomind/cli/dist/src/eval/trace-collector.js +23 -3
  387. package/packages/@monomind/cli/dist/src/index.js +12 -10
  388. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +8 -8
  389. package/packages/@monomind/cli/dist/src/init/executor.js +212 -102
  390. package/packages/@monomind/cli/dist/src/init/helpers-generator.js +35 -22
  391. package/packages/@monomind/cli/dist/src/init/mcp-generator.js +3 -3
  392. package/packages/@monomind/cli/dist/src/init/settings-generator.js +10 -3
  393. package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +18 -3
  394. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +3 -1
  395. package/packages/@monomind/cli/dist/src/init/types.d.ts +35 -11
  396. package/packages/@monomind/cli/dist/src/init/types.js +5 -9
  397. package/packages/@monomind/cli/dist/src/interactive/interrupt.js +8 -3
  398. package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +38 -4
  399. package/packages/@monomind/cli/dist/src/mcp-client.js +10 -4
  400. package/packages/@monomind/cli/dist/src/mcp-server.d.ts +9 -2
  401. package/packages/@monomind/cli/dist/src/mcp-server.js +182 -35
  402. package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +66 -34
  403. package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.js +34 -7
  404. package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +25 -16
  405. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +4 -6
  406. package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +12 -2
  407. package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +199 -20
  408. package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +68 -18
  409. package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +33 -5
  410. package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +59 -4
  411. package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +46 -10
  412. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +46 -5
  413. package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +29 -16
  414. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +38 -10
  415. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +96 -33
  416. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +70 -37
  417. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +29 -13
  418. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +5867 -56
  419. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +121 -37
  420. package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +21 -8
  421. package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +10 -8
  422. package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +4 -1
  423. package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.js +19 -8
  424. package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +57 -17
  425. package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +35 -17
  426. package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +4 -3
  427. package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +53 -13
  428. package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +63 -14
  429. package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +21 -16
  430. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +92 -23
  431. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +41 -10
  432. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -2
  433. package/packages/@monomind/cli/dist/src/memory/intelligence.js +39 -13
  434. package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +1 -0
  435. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +149 -56
  436. package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +107 -45
  437. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +8 -1
  438. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +25 -8
  439. package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +40 -0
  440. package/packages/@monomind/cli/dist/src/observability/replay-reader.js +138 -0
  441. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +35 -5
  442. package/packages/@monomind/cli/dist/src/parser.d.ts +8 -0
  443. package/packages/@monomind/cli/dist/src/parser.js +48 -14
  444. package/packages/@monomind/cli/dist/src/plugins/manager.js +112 -19
  445. package/packages/@monomind/cli/dist/src/plugins/store/discovery.d.ts +1 -1
  446. package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +80 -62
  447. package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +8 -1
  448. package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +4 -2
  449. package/packages/@monomind/cli/dist/src/production/error-handler.js +27 -5
  450. package/packages/@monomind/cli/dist/src/production/monitoring.js +8 -4
  451. package/packages/@monomind/cli/dist/src/production/rate-limiter.js +30 -22
  452. package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.js +2 -2
  453. package/packages/@monomind/cli/dist/src/ruvector/coverage-router.js +19 -9
  454. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.d.ts +1 -0
  455. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.js +26 -6
  456. package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.js +24 -2
  457. package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +1 -2
  458. package/packages/@monomind/cli/dist/src/ruvector/index.js +2 -2
  459. package/packages/@monomind/cli/dist/src/ruvector/model-router.d.ts +4 -2
  460. package/packages/@monomind/cli/dist/src/ruvector/model-router.js +30 -6
  461. package/packages/@monomind/cli/dist/src/ruvector/moe-router.d.ts +7 -0
  462. package/packages/@monomind/cli/dist/src/ruvector/moe-router.js +35 -12
  463. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.d.ts +7 -1
  464. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.js +40 -9
  465. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +3 -1
  466. package/packages/@monomind/cli/dist/src/services/claim-service.js +33 -2
  467. package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +16 -2
  468. package/packages/@monomind/cli/dist/src/services/config-file-manager.js +105 -17
  469. package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +51 -11
  470. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +7 -0
  471. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +188 -45
  472. package/packages/@monomind/cli/dist/src/services/registry-api.js +62 -9
  473. package/packages/@monomind/cli/dist/src/services/ruvector-training.js +8 -0
  474. package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +4 -1
  475. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +112 -28
  476. package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +9 -2
  477. package/packages/@monomind/cli/dist/src/services/worker-queue.js +86 -5
  478. package/packages/@monomind/cli/dist/src/suggest.js +9 -0
  479. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +5 -3
  480. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +17 -5
  481. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +3 -0
  482. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +30 -6
  483. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +5 -3
  484. package/packages/@monomind/cli/dist/src/transfer/export.js +5 -3
  485. package/packages/@monomind/cli/dist/src/transfer/ipfs/client.js +84 -7
  486. package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +13 -4
  487. package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +19 -10
  488. package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +9 -2
  489. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +68 -13
  490. package/packages/@monomind/cli/dist/src/transfer/store/download.d.ts +15 -6
  491. package/packages/@monomind/cli/dist/src/transfer/store/download.js +113 -24
  492. package/packages/@monomind/cli/dist/src/transfer/store/publish.d.ts +1 -1
  493. package/packages/@monomind/cli/dist/src/transfer/store/publish.js +13 -14
  494. package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +3 -3
  495. package/packages/@monomind/cli/dist/src/transfer/store/registry.js +32 -16
  496. package/packages/@monomind/cli/dist/src/update/checker.js +17 -4
  497. package/packages/@monomind/cli/dist/src/update/executor.js +25 -20
  498. package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +11 -0
  499. package/packages/@monomind/cli/dist/src/update/rate-limiter.js +23 -3
  500. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.d.ts +6 -0
  501. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.js +22 -0
  502. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +37 -3
  503. package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +27 -11
  504. package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +51 -13
  505. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +3 -0
  506. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +6 -2
  507. package/packages/@monomind/cli/dist/src/workflow/template-engine.js +7 -0
  508. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +95 -14
  509. package/packages/@monomind/cli/package.json +5 -3
  510. package/packages/@monomind/guidance/README.md +1192 -0
  511. package/packages/@monomind/shared/README.md +322 -0
  512. package/packages/@monomind/shared/dist/types/consensus-audit.d.ts +3 -1
  513. package/packages/README.md +513 -0
  514. package/.claude/agents/design/design-brand-guardian.md +0 -323
  515. package/.claude/agents/design/design-image-prompt-engineer.md +0 -237
  516. package/.claude/agents/design/design-inclusive-visuals-specialist.md +0 -72
  517. package/.claude/agents/design/design-ui-designer.md +0 -384
  518. package/.claude/agents/design/design-ux-architect.md +0 -470
  519. package/.claude/agents/design/design-ux-researcher.md +0 -330
  520. package/.claude/agents/design/design-visual-storyteller.md +0 -150
  521. package/.claude/agents/design/design-whimsy-injector.md +0 -439
  522. package/.claude/agents/v3/integration-architect.md +0 -338
  523. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  524. package/.claude/commands/coordination/init.md +0 -44
  525. package/.claude/commands/coordination/orchestrate.md +0 -43
  526. package/.claude/commands/coordination/spawn.md +0 -45
  527. package/.claude/commands/github/code-review-swarm.md +0 -550
  528. package/.claude/commands/github/code-review.md +0 -25
  529. package/.claude/commands/github/github-swarm.md +0 -121
  530. package/.claude/commands/github/issue-triage.md +0 -25
  531. package/.claude/commands/github/multi-repo-swarm.md +0 -519
  532. package/.claude/commands/github/pr-enhance.md +0 -26
  533. package/.claude/commands/github/project-board-sync.md +0 -471
  534. package/.claude/commands/github/release-swarm.md +0 -590
  535. package/.claude/commands/github/repo-analyze.md +0 -25
  536. package/.claude/commands/github/swarm-issue.md +0 -482
  537. package/.claude/commands/github/swarm-pr.md +0 -310
  538. package/.claude/commands/github/workflow-automation.md +0 -468
  539. package/.claude/commands/hive-mind/hive-mind-metrics.md +0 -8
  540. package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
  541. package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
  542. package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
  543. package/.claude/commands/list-agents.md +0 -17
  544. package/.claude/commands/memory/memory-persist.md +0 -25
  545. package/.claude/commands/memory/memory-usage.md +0 -25
  546. package/.claude/commands/memory/neural.md +0 -47
  547. package/.claude/commands/metrics.md +0 -11
  548. package/.claude/commands/monitoring/real-time-view.md +0 -25
  549. package/.claude/commands/monitoring/swarm-monitor.md +0 -25
  550. package/.claude/commands/monomind-createtask.md +0 -302
  551. package/.claude/commands/monomind-help.md +0 -103
  552. package/.claude/commands/monomind-memory.md +0 -107
  553. package/.claude/commands/monomind-repeat.md +0 -149
  554. package/.claude/commands/monomind-swarm.md +0 -205
  555. package/.claude/commands/optimization/cache-manage.md +0 -25
  556. package/.claude/commands/optimization/topology-optimize.md +0 -25
  557. package/.claude/commands/pair/commands.md +0 -546
  558. package/.claude/commands/pair/config.md +0 -510
  559. package/.claude/commands/pair/start.md +0 -209
  560. package/.claude/commands/use-agent.md +0 -67
  561. package/.claude/skills/monomind-createtask/SKILL.md +0 -269
  562. package/.claude/skills/monomind-task-engine/SKILL.md +0 -358
  563. /package/.claude/agents/{v3 → specialists}/memory-specialist.md +0 -0
  564. /package/.claude/agents/{v3 → specialists}/performance-engineer.md +0 -0
  565. /package/.claude/agents/{v3 → specialists}/queen-coordinator.md +0 -0
  566. /package/.claude/agents/{v3 → specialists}/security-architect.md +0 -0
@@ -5,9 +5,9 @@
5
5
  * Falls back to local state management when CLI tools are unavailable.
6
6
  */
7
7
  import { getProjectCwd } from './types.js';
8
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
8
+ import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync } from 'node:fs';
9
9
  import { join } from 'node:path';
10
- import { execSync } from 'node:child_process';
10
+ import { execFileSync } from 'node:child_process';
11
11
  // Storage paths
12
12
  const STORAGE_DIR = '.monomind';
13
13
  const GITHUB_DIR = 'github';
@@ -38,12 +38,23 @@ function loadGitHubStore() {
38
38
  }
39
39
  function saveGitHubStore(store) {
40
40
  ensureGitHubDir();
41
- writeFileSync(getGitHubPath(), JSON.stringify(store, null, 2), 'utf-8');
41
+ const tmpPath = getGitHubPath() + '.tmp';
42
+ writeFileSync(tmpPath, JSON.stringify(store, null, 2), 'utf-8');
43
+ renameSync(tmpPath, getGitHubPath());
42
44
  }
43
- /** Run a shell command, return stdout or null on failure */
45
+ /** Run a trusted static shell command (no user input), return stdout or null on failure */
44
46
  function run(cmd, cwd) {
45
47
  try {
46
- return execSync(cmd, { encoding: 'utf-8', timeout: 15000, cwd: cwd || getProjectCwd(), stdio: ['pipe', 'pipe', 'pipe'] }).trim();
48
+ return execFileSync(cmd.split(' ')[0], cmd.split(' ').slice(1), { encoding: 'utf-8', timeout: 15000, cwd: cwd || getProjectCwd(), stdio: ['pipe', 'pipe', 'pipe'] }).trim();
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ /** Run a command with user-provided args as separate array elements (no shell injection) */
55
+ function runSafe(cmd, args, cwd) {
56
+ try {
57
+ return execFileSync(cmd, args, { encoding: 'utf-8', timeout: 15000, cwd: cwd || getProjectCwd(), stdio: ['pipe', 'pipe', 'pipe'] }).trim();
47
58
  }
48
59
  catch {
49
60
  return null;
@@ -173,7 +184,7 @@ export const githubTools = [
173
184
  const headBranch = input.branch || run('git rev-parse --abbrev-ref HEAD') || 'feature';
174
185
  const baseBranch = input.baseBranch || 'main';
175
186
  const body = input.body || '';
176
- const result = run(`gh pr create --title "${title.replace(/"/g, '\\"')}" --base "${baseBranch}" --head "${headBranch}" --body "${body.replace(/"/g, '\\"')}"`);
187
+ const result = runSafe('gh', ['pr', 'create', '--title', title, '--base', baseBranch, '--head', headBranch, '--body', body]);
177
188
  if (result) {
178
189
  return { success: true, _real: true, action: 'created', url: result };
179
190
  }
@@ -272,8 +283,10 @@ export const githubTools = [
272
283
  const body = input.body || '';
273
284
  const labels = input.labels || [];
274
285
  if (gh) {
275
- const labelArg = labels.length > 0 ? ` --label "${labels.join(',')}"` : '';
276
- const result = run(`gh issue create --title "${title.replace(/"/g, '\\"')}" --body "${body.replace(/"/g, '\\"')}"${labelArg}`);
286
+ const issueArgs = ['issue', 'create', '--title', title, '--body', body];
287
+ if (labels.length > 0)
288
+ issueArgs.push('--label', labels.join(','));
289
+ const result = runSafe('gh', issueArgs);
277
290
  if (result) {
278
291
  return { success: true, _real: true, action: 'created', url: result };
279
292
  }
@@ -287,13 +300,13 @@ export const githubTools = [
287
300
  if (action === 'update') {
288
301
  const issueNumber = input.issueNumber;
289
302
  if (gh && issueNumber) {
290
- const parts = [];
303
+ const editArgs = ['issue', 'edit', String(issueNumber)];
291
304
  if (input.title)
292
- parts.push(`--title "${input.title.replace(/"/g, '\\"')}"`);
305
+ editArgs.push('--title', input.title);
293
306
  if (input.labels)
294
- parts.push(`--add-label "${input.labels.join(',')}"`);
295
- if (parts.length > 0) {
296
- const result = run(`gh issue edit ${issueNumber} ${parts.join(' ')}`);
307
+ editArgs.push('--add-label', input.labels.join(','));
308
+ if (editArgs.length > 3) {
309
+ const result = runSafe('gh', editArgs);
297
310
  if (result !== null)
298
311
  return { success: true, _real: true, action: 'updated', issueNumber };
299
312
  }
@@ -364,7 +377,7 @@ export const githubTools = [
364
377
  if (action === 'status') {
365
378
  const workflowId = input.workflowId;
366
379
  if (workflowId) {
367
- const raw = run(`gh run view ${workflowId} --json databaseId,displayTitle,status,conclusion,jobs`);
380
+ const raw = runSafe('gh', ['run', 'view', workflowId, '--json', 'databaseId,displayTitle,status,conclusion,jobs']);
368
381
  if (raw) {
369
382
  try {
370
383
  return { success: true, _real: true, run: JSON.parse(raw) };
@@ -385,7 +398,7 @@ export const githubTools = [
385
398
  const workflowId = input.workflowId;
386
399
  const ref = input.ref || 'main';
387
400
  if (workflowId) {
388
- const result = run(`gh workflow run "${workflowId}" --ref "${ref}"`);
401
+ const result = runSafe('gh', ['workflow', 'run', workflowId, '--ref', ref]);
389
402
  if (result !== null)
390
403
  return { success: true, _real: true, action: 'triggered', workflowId, ref };
391
404
  }
@@ -394,7 +407,7 @@ export const githubTools = [
394
407
  if (action === 'cancel') {
395
408
  const workflowId = input.workflowId;
396
409
  if (workflowId) {
397
- const result = run(`gh run cancel ${workflowId}`);
410
+ const result = runSafe('gh', ['run', 'cancel', workflowId]);
398
411
  if (result !== null)
399
412
  return { success: true, _real: true, action: 'cancelled', runId: workflowId };
400
413
  }
@@ -4,7 +4,7 @@
4
4
  * Helps the system navigate Monomind's capabilities by providing structured
5
5
  * discovery of tools, commands, agents, skills, and recommended workflows.
6
6
  *
7
- * @module @monoes/cli/mcp-tools/guidance
7
+ * @module @monomind/cli/mcp-tools/guidance
8
8
  */
9
9
  import { getProjectCwd } from './types.js';
10
10
  import { existsSync, readFileSync, readdirSync } from 'node:fs';
@@ -18,21 +18,34 @@ const CLI_ROOT = join(__dirname, '../../..');
18
18
  * Tries CWD first (most common), then walks up from the CLI package location.
19
19
  */
20
20
  function findProjectRoot() {
21
+ // Allow operator override; trusted when set.
22
+ const envRoot = process.env.MONOMIND_PROJECT_ROOT;
23
+ if (envRoot && existsSync(join(envRoot, '.claude'))) {
24
+ return envRoot;
25
+ }
21
26
  // Strategy 1: CWD (most reliable when invoked by user)
22
27
  if (existsSync(join(getProjectCwd(), '.claude'))) {
23
28
  return getProjectCwd();
24
29
  }
25
- // Strategy 2: Walk up from CLI package location
26
- // CLI is at packages/@monoes/cli/ — project root is 4 levels up
30
+ // Strategy 2: Walk up from CLI package location.
31
+ // CLI is at packages/@monomind/cli/ — project root is 4 levels up.
27
32
  const fromPackage = join(CLI_ROOT, '../../../..');
28
33
  if (existsSync(join(fromPackage, '.claude'))) {
29
34
  return fromPackage;
30
35
  }
31
- // Strategy 3: Walk up from CWD
36
+ // Strategy 3: Walk up from CWD, but stop at the first ancestor that ALSO
37
+ // contains a project-marker the user owns (`.git` or `package.json`). This
38
+ // closes a confused-deputy: previously, dropping `.claude/agents/x.md` in
39
+ // any of 10 ancestor directories (e.g., `/tmp`) would have been consumed
40
+ // as authoritative agent data. Requiring a marker means an attacker also
41
+ // needs control over a `.git` repo or `package.json` at the same level —
42
+ // which means they already control the project.
32
43
  let dir = getProjectCwd();
33
44
  for (let i = 0; i < 10; i++) {
34
- if (existsSync(join(dir, '.claude')))
45
+ if (existsSync(join(dir, '.claude')) &&
46
+ (existsSync(join(dir, '.git')) || existsSync(join(dir, 'package.json')))) {
35
47
  return dir;
48
+ }
36
49
  const parent = dirname(dir);
37
50
  if (parent === dir)
38
51
  break;
@@ -288,15 +301,28 @@ function discoverAgents() {
288
301
  if (!existsSync(agentsDir))
289
302
  return [];
290
303
  const agents = [];
291
- function walk(dir) {
304
+ const visited = new Set();
305
+ // Symlink-aware walk with depth cap. `entry.isDirectory()` returns true for
306
+ // symlinks pointing at directories, so a careless `agents/loop -> ..`
307
+ // symlink would otherwise traverse outside the agents tree (or loop
308
+ // forever). Using lstat + skipping symlinks closes both vectors.
309
+ function walk(dir, depth) {
310
+ if (depth > 8)
311
+ return;
312
+ if (visited.has(dir))
313
+ return;
314
+ visited.add(dir);
292
315
  try {
293
316
  const entries = readdirSync(dir, { withFileTypes: true });
294
317
  for (const entry of entries) {
318
+ if (entry.isSymbolicLink())
319
+ continue;
320
+ const full = join(dir, entry.name);
295
321
  if (entry.isDirectory()) {
296
- walk(join(dir, entry.name));
322
+ walk(full, depth + 1);
297
323
  }
298
- else if (entry.name.endsWith('.md') && entry.name !== 'MIGRATION_SUMMARY.md') {
299
- const content = readFileSync(join(dir, entry.name), 'utf-8');
324
+ else if (entry.isFile() && entry.name.endsWith('.md') && entry.name !== 'MIGRATION_SUMMARY.md') {
325
+ const content = readFileSync(full, 'utf-8');
300
326
  const nameMatch = content.match(/^name:\s*(.+)$/m);
301
327
  if (nameMatch)
302
328
  agents.push(nameMatch[1].trim().replace(/^["']|["']$/g, ''));
@@ -305,7 +331,7 @@ function discoverAgents() {
305
331
  }
306
332
  catch { /* ignore */ }
307
333
  }
308
- walk(agentsDir);
334
+ walk(agentsDir, 0);
309
335
  return [...new Set(agents)].sort();
310
336
  }
311
337
  function discoverSkills() {
@@ -316,6 +342,8 @@ function discoverSkills() {
316
342
  try {
317
343
  const entries = readdirSync(skillsDir, { withFileTypes: true });
318
344
  for (const entry of entries) {
345
+ if (entry.isSymbolicLink())
346
+ continue;
319
347
  if (entry.isDirectory()) {
320
348
  const skillFile = join(skillsDir, entry.name, 'SKILL.md');
321
349
  if (existsSync(skillFile)) {
@@ -3,18 +3,10 @@
3
3
  *
4
4
  * Tool definitions for collective intelligence and swarm coordination.
5
5
  */
6
- import { existsSync, readFileSync, writeFileSync, mkdirSync, appendFileSync } from 'node:fs';
6
+ import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync } from 'node:fs';
7
7
  import { join } from 'node:path';
8
8
  import { getProjectCwd } from './types.js';
9
9
  import { weightedTally } from '../consensus/vote-signer.js';
10
- function logEvent(kind, data) {
11
- try {
12
- const dir = join(getProjectCwd(), '.monomind', 'swarm');
13
- if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
14
- const event = { ts: new Date().toISOString(), source: 'mcp', kind, ...data };
15
- appendFileSync(join(dir, 'events.jsonl'), JSON.stringify(event) + '\n');
16
- } catch { }
17
- }
18
10
  // Storage paths
19
11
  const STORAGE_DIR = '.monomind';
20
12
  const HIVE_DIR = 'hive-mind';
@@ -127,12 +119,16 @@ function loadHiveState() {
127
119
  function saveHiveState(state) {
128
120
  ensureHiveDir();
129
121
  state.updatedAt = new Date().toISOString();
130
- writeFileSync(getHivePath(), JSON.stringify(state, null, 2), 'utf-8');
122
+ const dest = getHivePath();
123
+ const tmp = `${dest}.${process.pid}.${Date.now()}.tmp`;
124
+ writeFileSync(tmp, JSON.stringify(state, null, 2), 'utf-8');
125
+ renameSync(tmp, dest);
131
126
  }
132
127
  // Import agent store helpers for spawn functionality
133
128
  import { existsSync as agentStoreExists, readFileSync as readAgentStore, writeFileSync as writeAgentStore, mkdirSync as mkdirAgentStore } from 'node:fs';
129
+ // Canonical agent store path matches agent-tools.ts: .monomind/agents/store.json
134
130
  function loadAgentStore() {
135
- const storePath = join(getProjectCwd(), '.monomind', 'agents.json');
131
+ const storePath = join(getProjectCwd(), '.monomind', 'agents', 'store.json');
136
132
  try {
137
133
  if (agentStoreExists(storePath)) {
138
134
  return JSON.parse(readAgentStore(storePath, 'utf-8'));
@@ -141,12 +137,16 @@ function loadAgentStore() {
141
137
  catch { /* ignore */ }
142
138
  return { agents: {} };
143
139
  }
140
+ const HIVE_RESERVED_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
144
141
  function saveAgentStore(store) {
145
- const storeDir = join(getProjectCwd(), '.monomind');
142
+ const storeDir = join(getProjectCwd(), '.monomind', 'agents');
146
143
  if (!agentStoreExists(storeDir)) {
147
144
  mkdirAgentStore(storeDir, { recursive: true });
148
145
  }
149
- writeAgentStore(join(storeDir, 'agents.json'), JSON.stringify(store, null, 2), 'utf-8');
146
+ const dest = join(storeDir, 'store.json');
147
+ const tmp = `${dest}.${process.pid}.${Date.now()}.tmp`;
148
+ writeAgentStore(tmp, JSON.stringify(store, null, 2), 'utf-8');
149
+ renameSync(tmp, dest);
150
150
  }
151
151
  export const hiveMindTools = [
152
152
  {
@@ -175,6 +175,8 @@ export const hiveMindTools = [
175
175
  const spawnedWorkers = [];
176
176
  for (let i = 0; i < count; i++) {
177
177
  const agentId = `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
178
+ if (HIVE_RESERVED_KEYS.has(agentId))
179
+ continue;
178
180
  // Create agent record (like agent/spawn)
179
181
  agentStore.agents[agentId] = {
180
182
  agentId,
@@ -187,7 +189,11 @@ export const hiveMindTools = [
187
189
  domain: 'hive-mind',
188
190
  };
189
191
  // Join to hive-mind (like hive-mind/join)
192
+ const MAX_HIVE_AGENTS = 100;
190
193
  if (!state.workers.includes(agentId)) {
194
+ if (state.workers.length >= MAX_HIVE_AGENTS) {
195
+ return { success: false, error: `Hive has reached max agent capacity (${MAX_HIVE_AGENTS})` };
196
+ }
191
197
  state.workers.push(agentId);
192
198
  }
193
199
  spawnedWorkers.push({
@@ -198,9 +204,6 @@ export const hiveMindTools = [
198
204
  }
199
205
  saveAgentStore(agentStore);
200
206
  saveHiveState(state);
201
- for (const w of spawnedWorkers) {
202
- logEvent('hive.spawn', { agentId: w.agentId, role: w.role, agentType });
203
- }
204
207
  return {
205
208
  success: true,
206
209
  spawned: count,
@@ -223,19 +226,21 @@ export const hiveMindTools = [
223
226
  },
224
227
  },
225
228
  handler: async (input) => {
226
- const state = loadHiveState();
227
229
  const hiveId = `hive-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
228
230
  const queenId = input.queenId || `queen-${Date.now()}`;
229
- state.initialized = true;
230
- state.topology = input.topology || 'mesh';
231
- state.createdAt = new Date().toISOString();
232
- state.queen = {
233
- agentId: queenId,
234
- electedAt: new Date().toISOString(),
235
- term: 1,
231
+ const now = new Date().toISOString();
232
+ const state = {
233
+ initialized: true,
234
+ hiveId,
235
+ topology: input.topology || 'mesh',
236
+ queen: { agentId: queenId, electedAt: now, term: 1 },
237
+ workers: [],
238
+ consensus: { pending: [], history: [] },
239
+ sharedMemory: {},
240
+ createdAt: now,
241
+ updatedAt: now,
236
242
  };
237
243
  saveHiveState(state);
238
- logEvent('hive.init', { hiveId, topology: state.topology, consensus: input.consensus || 'byzantine', queenId });
239
244
  return {
240
245
  success: true,
241
246
  hiveId,
@@ -292,7 +297,7 @@ export const hiveMindTools = [
292
297
  const realLoad = activeTaskCount / workerCount;
293
298
  const status = {
294
299
  // CLI expected fields
295
- hiveId: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
300
+ hiveId: state.hiveId ?? `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
296
301
  status: state.initialized ? 'active' : 'offline',
297
302
  topology: state.topology,
298
303
  consensus: 'byzantine', // Default consensus type
@@ -332,7 +337,7 @@ export const hiveMindTools = [
332
337
  memory: 'healthy',
333
338
  },
334
339
  // Additional fields
335
- id: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
340
+ id: state.hiveId ?? `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
336
341
  initialized: state.initialized,
337
342
  workerCount: state.workers.length,
338
343
  pendingConsensus: state.consensus.pending.length,
@@ -367,10 +372,20 @@ export const hiveMindTools = [
367
372
  handler: async (input) => {
368
373
  const state = loadHiveState();
369
374
  const agentId = input.agentId;
375
+ // Reject IDs that would mutate Object.prototype when used as a key on the
376
+ // JSON-loaded plain object `agentStore.agents` (read in hive-mind_status).
377
+ if (typeof agentId !== 'string' || agentId.length === 0 || agentId.length > 128 ||
378
+ HIVE_RESERVED_KEYS.has(agentId) || !/^[a-zA-Z0-9_-]+$/.test(agentId)) {
379
+ return { success: false, error: 'Invalid agentId' };
380
+ }
370
381
  if (!state.initialized) {
371
382
  return { success: false, error: 'Hive-mind not initialized' };
372
383
  }
384
+ const MAX_HIVE_AGENTS = 100;
373
385
  if (!state.workers.includes(agentId)) {
386
+ if (state.workers.length >= MAX_HIVE_AGENTS) {
387
+ return { success: false, error: `Hive has reached max agent capacity (${MAX_HIVE_AGENTS})` };
388
+ }
374
389
  state.workers.push(agentId);
375
390
  saveHiveState(state);
376
391
  }
@@ -397,6 +412,10 @@ export const hiveMindTools = [
397
412
  handler: async (input) => {
398
413
  const state = loadHiveState();
399
414
  const agentId = input.agentId;
415
+ if (typeof agentId !== 'string' || agentId.length === 0 || agentId.length > 128 ||
416
+ HIVE_RESERVED_KEYS.has(agentId) || !/^[a-zA-Z0-9_-]+$/.test(agentId)) {
417
+ return { success: false, error: 'Invalid agentId' };
418
+ }
400
419
  const index = state.workers.indexOf(agentId);
401
420
  if (index > -1) {
402
421
  state.workers.splice(index, 1);
@@ -436,7 +455,7 @@ export const hiveMindTools = [
436
455
  const state = loadHiveState();
437
456
  const action = input.action;
438
457
  const strategy = input.strategy || 'raft';
439
- const totalNodes = state.workers.length || 1;
458
+ const totalNodes = state.workers.length;
440
459
  if (action === 'propose') {
441
460
  const proposalId = `proposal-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
442
461
  const quorumPreset = input.quorumPreset || 'majority';
@@ -476,7 +495,6 @@ export const hiveMindTools = [
476
495
  };
477
496
  state.consensus.pending.push(proposal);
478
497
  saveHiveState(state);
479
- logEvent('hive.consensus.propose', { proposalId, type: proposal.type, strategy, proposedBy: proposal.proposedBy, totalNodes });
480
498
  return {
481
499
  action,
482
500
  proposalId,
@@ -500,6 +518,12 @@ export const hiveMindTools = [
500
518
  if (!voterId) {
501
519
  return { action, error: 'voterId is required for voting' };
502
520
  }
521
+ if (totalNodes === 0) {
522
+ return { action, error: 'No workers in hive — cannot vote' };
523
+ }
524
+ if (!state.workers.includes(voterId)) {
525
+ return { action, error: `Voter ${voterId} is not a member of this hive` };
526
+ }
503
527
  const voteValue = input.vote;
504
528
  const proposalStrategy = proposal.strategy || 'raft';
505
529
  const required = calculateRequiredVotes(proposalStrategy, totalNodes, proposal.quorumPreset);
@@ -598,11 +622,9 @@ export const hiveMindTools = [
598
622
  // Try to resolve
599
623
  const resolution = divergenceGateOpen ? tryResolveProposal(proposal, totalNodes) : null;
600
624
  let resolved = false;
601
- logEvent('hive.consensus.vote', { proposalId: proposal.proposalId, voterId, vote: voteValue, strategy: proposalStrategy, votesFor, votesAgainst });
602
625
  if (resolution !== null) {
603
626
  resolved = true;
604
627
  proposal.status = resolution;
605
- logEvent('hive.consensus.resolved', { proposalId: proposal.proposalId, result: resolution, strategy: proposalStrategy, votesFor, votesAgainst });
606
628
  state.consensus.history.push({
607
629
  proposalId: proposal.proposalId,
608
630
  type: proposal.type,
@@ -613,6 +635,9 @@ export const hiveMindTools = [
613
635
  term: proposal.term,
614
636
  byzantineDetected: proposal.byzantineVoters?.length ? proposal.byzantineVoters : undefined,
615
637
  });
638
+ if (state.consensus.history.length > 1000) {
639
+ state.consensus.history = state.consensus.history.slice(-1000);
640
+ }
616
641
  state.consensus.pending = state.consensus.pending.filter(p => p.proposalId !== proposal.proposalId);
617
642
  }
618
643
  saveHiveState(state);
@@ -635,6 +660,44 @@ export const hiveMindTools = [
635
660
  });
636
661
  }
637
662
  catch { /* AgentDB not available — JSON store is primary */ }
663
+ // Persist consensus audit record
664
+ const sessionSecret = process.env.MONOMIND_SESSION_SECRET;
665
+ if (!sessionSecret) {
666
+ process.stderr.write('[hive-consensus] Audit write skipped: MONOMIND_SESSION_SECRET not set\n');
667
+ }
668
+ else {
669
+ try {
670
+ const { AuditWriter } = await import('../consensus/audit-writer.js');
671
+ const auditDir = join(getProjectCwd(), STORAGE_DIR, 'consensus');
672
+ const writer = new AuditWriter(auditDir);
673
+ const now = new Date().toISOString();
674
+ const voteEntries = Object.entries(proposal.votes).map(([agentId, vote]) => ({
675
+ agentId,
676
+ agentSlug: agentId,
677
+ vote,
678
+ votedAt: now,
679
+ }));
680
+ writer.record({
681
+ decisionId: proposal.proposalId,
682
+ swarmId: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
683
+ protocol: (proposalStrategy === 'bft' ? 'byzantine' : proposalStrategy === 'raft' ? 'raft' : 'quorum'),
684
+ topic: proposal.type,
685
+ decision: resolution,
686
+ votes: voteEntries,
687
+ quorumRequired: required,
688
+ quorumThreshold: required / Math.max(totalNodes, 1),
689
+ round: (proposal.divergenceRoundsSeen ?? 0) + 1,
690
+ startedAt: proposal.proposedAt,
691
+ completedAt: now,
692
+ sessionSecret,
693
+ });
694
+ }
695
+ catch (e) {
696
+ if (process.env.MONOMIND_LOG_LEVEL === 'debug') {
697
+ process.stderr.write(`[hive-consensus] Audit write failed: ${e.message}\n`);
698
+ }
699
+ }
700
+ }
638
701
  }
639
702
  return {
640
703
  action,
@@ -750,7 +813,6 @@ export const hiveMindTools = [
750
813
  // Keep only last 100 broadcasts
751
814
  state.sharedMemory.broadcasts = messages.slice(-100);
752
815
  saveHiveState(state);
753
- logEvent('hive.broadcast', { messageId, fromId: input.fromId || 'system', message: input.message, priority: input.priority || 'normal', recipients: state.workers.length });
754
816
  return {
755
817
  success: true,
756
818
  messageId,
@@ -800,7 +862,6 @@ export const hiveMindTools = [
800
862
  // Reset hive state
801
863
  const shutdownTime = new Date().toISOString();
802
864
  const previousQueen = state.queen?.agentId;
803
- logEvent('hive.shutdown', { workersTerminated: workerCount, previousQueen, graceful, pendingConsensus, topology: state.topology });
804
865
  state.initialized = false;
805
866
  state.queen = undefined;
806
867
  state.workers = [];
@@ -849,6 +910,8 @@ export const hiveMindTools = [
849
910
  if (action === 'set') {
850
911
  if (!key)
851
912
  return { action, error: 'Key required' };
913
+ if (HIVE_RESERVED_KEYS.has(key))
914
+ return { action, error: 'Forbidden key' };
852
915
  state.sharedMemory[key] = input.value;
853
916
  saveHiveState(state);
854
917
  // Also store in AgentDB for searchable hive memory