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
@@ -4,17 +4,19 @@
4
4
  * V2 Compatibility - Neural network and ML tools
5
5
  *
6
6
  * ✅ HYBRID Implementation:
7
- * - Uses @monoes/embeddings for REAL ML embeddings when available
7
+ * - Uses @monomind/embeddings for REAL ML embeddings when available
8
8
  * - Falls back to deterministic hash-based embeddings when ML model not installed
9
9
  * - Pattern storage and search with cosine similarity (real math in all tiers)
10
10
  * - Training stores patterns as searchable embeddings (not simulated)
11
11
  *
12
- * Note: For production neural features, use @monoes/neural module
12
+ * Note: For production neural features, use @monomind/neural module
13
13
  */
14
14
  import { getProjectCwd } from './types.js';
15
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
15
+ import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync, statSync } from 'node:fs';
16
16
  import { join } from 'node:path';
17
- // Try to import real embeddings prefer agentic-flow v1 ReasoningBank, then @monoes/embeddings
17
+ const MAX_NEURAL_STORE_BYTES = 50 * 1024 * 1024; // 50 MB
18
+ const NEURAL_RESERVED_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
19
+ // Try to import real embeddings — prefer agentic-flow v1 ReasoningBank, then @monomind/embeddings
18
20
  let realEmbeddings = null;
19
21
  let embeddingServiceName = 'none';
20
22
  try {
@@ -24,9 +26,9 @@ try {
24
26
  realEmbeddings = { embed: (text) => rb.computeEmbedding(text) };
25
27
  embeddingServiceName = 'agentic-flow/reasoningbank';
26
28
  }
27
- // Tier 2: @monoes/embeddings
29
+ // Tier 2: @monomind/embeddings
28
30
  if (!realEmbeddings) {
29
- const embeddingsModule = await import('@monoes/embeddings').catch(() => null);
31
+ const embeddingsModule = await import('@monomind/embeddings').catch(() => null);
30
32
  if (embeddingsModule?.createEmbeddingService) {
31
33
  try {
32
34
  const service = embeddingsModule.createEmbeddingService({ provider: 'agentic-flow' });
@@ -75,7 +77,26 @@ function loadNeuralStore() {
75
77
  try {
76
78
  const path = getNeuralPath();
77
79
  if (existsSync(path)) {
78
- return JSON.parse(readFileSync(path, 'utf-8'));
80
+ if (statSync(path).size > MAX_NEURAL_STORE_BYTES) {
81
+ return { models: {}, patterns: {}, version: '3.0.0' };
82
+ }
83
+ const raw = JSON.parse(readFileSync(path, 'utf-8'));
84
+ // Strip proto-polluting keys from top-level containers
85
+ const models = {};
86
+ for (const [k, v] of Object.entries(raw.models ?? {})) {
87
+ if (!NEURAL_RESERVED_KEYS.has(k))
88
+ models[k] = v;
89
+ }
90
+ const patterns = {};
91
+ for (const [k, v] of Object.entries(raw.patterns ?? {})) {
92
+ if (!NEURAL_RESERVED_KEYS.has(k))
93
+ patterns[k] = v;
94
+ }
95
+ return {
96
+ models: models,
97
+ patterns: patterns,
98
+ version: typeof raw.version === 'string' ? raw.version : '3.0.0',
99
+ };
79
100
  }
80
101
  }
81
102
  catch {
@@ -85,7 +106,10 @@ function loadNeuralStore() {
85
106
  }
86
107
  function saveNeuralStore(store) {
87
108
  ensureNeuralDir();
88
- writeFileSync(getNeuralPath(), JSON.stringify(store, null, 2), 'utf-8');
109
+ const dest = getNeuralPath();
110
+ const tmp = `${dest}.${process.pid}.${Date.now()}.tmp`;
111
+ writeFileSync(tmp, JSON.stringify(store, null, 2), 'utf-8');
112
+ renameSync(tmp, dest);
89
113
  }
90
114
  // Generate embedding - uses real ML embeddings if available, falls back to deterministic hash
91
115
  async function generateEmbedding(text, dims = 384) {
@@ -118,8 +142,9 @@ async function generateEmbedding(text, dims = 384) {
118
142
  }
119
143
  // Cosine similarity for pattern search
120
144
  function cosineSimilarity(a, b) {
121
- if (a.length !== b.length)
122
- return 0;
145
+ if (a.length !== b.length) {
146
+ throw new Error(`Embedding dimension mismatch: ${a.length} vs ${b.length}. Ensure all embeddings use the same provider and dims.`);
147
+ }
123
148
  let dotProduct = 0;
124
149
  let normA = 0;
125
150
  let normB = 0;
@@ -149,6 +174,18 @@ export const neuralTools = [
149
174
  handler: async (input) => {
150
175
  const store = loadNeuralStore();
151
176
  const modelId = input.modelId || `model-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
177
+ const RESERVED_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
178
+ if (RESERVED_KEYS.has(modelId)) {
179
+ return { success: false, error: 'Invalid modelId' };
180
+ }
181
+ const MAX_PATTERNS = 10000;
182
+ if (Object.keys(store.patterns ?? {}).length >= MAX_PATTERNS) {
183
+ return { success: false, error: `Pattern store full (max ${MAX_PATTERNS}). Run neural_compress first.` };
184
+ }
185
+ const MAX_MODELS = 100;
186
+ if (Object.keys(store.models ?? {}).length >= MAX_MODELS) {
187
+ return { success: false, error: `Model store full (max ${MAX_MODELS}). Delete old models first.` };
188
+ }
152
189
  const modelType = input.modelType;
153
190
  const epochs = input.epochs || 10;
154
191
  const model = {
@@ -165,20 +202,30 @@ export const neuralTools = [
165
202
  };
166
203
  store.models[modelId] = model;
167
204
  saveNeuralStore(store);
168
- // Real training: embed training data and store as searchable patterns
205
+ // Real training: embed training data and store as searchable patterns.
206
+ // Cap input array length and re-check the pattern cap inside the loop —
207
+ // the pre-loop check at line 199 alone allowed an attacker to bypass
208
+ // MAX_PATTERNS by passing a 100k-entry array.
209
+ const MAX_TRAINING_ENTRIES = 1000;
210
+ const MAX_TEXT_LENGTH = 64 * 1024;
169
211
  const trainingData = input.data;
170
212
  let patternsStored = 0;
171
213
  if (trainingData) {
172
- const entries = Array.isArray(trainingData) ? trainingData : [trainingData];
214
+ const rawEntries = Array.isArray(trainingData) ? trainingData : [trainingData];
215
+ const entries = rawEntries.slice(0, MAX_TRAINING_ENTRIES);
173
216
  for (let i = 0; i < entries.length; i++) {
217
+ if (Object.keys(store.patterns ?? {}).length >= MAX_PATTERNS)
218
+ break;
174
219
  const entry = entries[i];
175
- const text = typeof entry === 'string' ? entry
220
+ let text = typeof entry === 'string' ? entry
176
221
  : entry?.text
177
222
  || entry?.content
178
223
  || entry?.label
179
224
  || JSON.stringify(entry);
180
- if (!text)
225
+ if (!text || typeof text !== 'string')
181
226
  continue;
227
+ if (text.length > MAX_TEXT_LENGTH)
228
+ text = text.slice(0, MAX_TEXT_LENGTH);
182
229
  const embedding = await generateEmbedding(text, 384);
183
230
  const patternId = `${modelId}-train-${i}`;
184
231
  store.patterns[patternId] = {
@@ -227,10 +274,16 @@ export const neuralTools = [
227
274
  handler: async (input) => {
228
275
  const store = loadNeuralStore();
229
276
  const modelId = input.modelId;
230
- const inputText = input.input;
231
- const topK = input.topK || 3;
277
+ const inputText = typeof input.input === 'string' ? input.input.slice(0, 16 * 1024) : '';
278
+ const topK = Math.max(1, Math.min(input.topK || 3, 50));
279
+ const RESERVED_KEYS_PRED = new Set(['__proto__', 'constructor', 'prototype']);
280
+ if (modelId && (RESERVED_KEYS_PRED.has(modelId) || typeof modelId !== 'string')) {
281
+ return { success: false, error: 'Invalid modelId' };
282
+ }
232
283
  // Find model or use default
233
- const model = modelId ? store.models[modelId] : Object.values(store.models).find(m => m.status === 'ready');
284
+ const model = modelId
285
+ ? (Object.hasOwn(store.models, modelId) ? store.models[modelId] : undefined)
286
+ : Object.values(store.models).find(m => m.status === 'ready');
234
287
  if (model && model.status !== 'ready') {
235
288
  return { success: false, error: 'Model not ready' };
236
289
  }
@@ -238,19 +291,25 @@ export const neuralTools = [
238
291
  const startTime = performance.now();
239
292
  const embedding = await generateEmbedding(inputText, 384);
240
293
  const latency = Math.round(performance.now() - startTime);
241
- // Search stored patterns via real cosine similarity
242
- const storedPatterns = Object.values(store.patterns);
294
+ // Search stored patterns via real cosine similarity.
295
+ // Cap at MAX_PATTERNS to prevent O(N) blowup if the store grew unbounded
296
+ // through some other path. Skip patterns below an early-exit threshold
297
+ // before sorting to avoid O(N log N) on irrelevant rows.
298
+ const MAX_SCAN = 10000;
299
+ const EARLY_EXIT_THRESHOLD = 0.1;
300
+ const storedPatterns = Object.values(store.patterns).slice(0, MAX_SCAN);
243
301
  let predictions;
244
302
  if (storedPatterns.length > 0) {
245
- // Real nearest-neighbor prediction using stored pattern embeddings
246
- predictions = storedPatterns
247
- .map(p => ({
248
- label: p.name || p.type || p.id,
249
- confidence: Math.max(0, cosineSimilarity(embedding, p.embedding)),
250
- patternId: p.id,
251
- }))
252
- .sort((a, b) => b.confidence - a.confidence)
253
- .slice(0, topK);
303
+ const scored = [];
304
+ for (const p of storedPatterns) {
305
+ if (!Array.isArray(p.embedding) || p.embedding.length !== embedding.length)
306
+ continue;
307
+ const conf = Math.max(0, cosineSimilarity(embedding, p.embedding));
308
+ if (conf < EARLY_EXIT_THRESHOLD)
309
+ continue;
310
+ scored.push({ label: p.name || p.type || p.id, confidence: conf, patternId: p.id });
311
+ }
312
+ predictions = scored.sort((a, b) => b.confidence - a.confidence).slice(0, topK);
254
313
  }
255
314
  else {
256
315
  // No patterns stored — no predictions possible
@@ -303,13 +362,21 @@ export const neuralTools = [
303
362
  };
304
363
  }
305
364
  if (action === 'get') {
306
- const pattern = store.patterns[input.patternId];
365
+ const patternId = input.patternId;
366
+ if (!patternId || NEURAL_RESERVED_KEYS.has(patternId)) {
367
+ return { success: false, error: 'Invalid patternId' };
368
+ }
369
+ const pattern = Object.hasOwn(store.patterns, patternId) ? store.patterns[patternId] : undefined;
307
370
  if (!pattern) {
308
371
  return { success: false, error: 'Pattern not found' };
309
372
  }
310
373
  return { success: true, pattern };
311
374
  }
312
375
  if (action === 'store') {
376
+ const MAX_PATTERNS = 10000;
377
+ if (Object.keys(store.patterns ?? {}).length >= MAX_PATTERNS) {
378
+ return { success: false, error: `Pattern store full (max ${MAX_PATTERNS}). Run neural_compress first.` };
379
+ }
313
380
  const patternId = `pattern-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
314
381
  const patternName = input.name || 'Unnamed pattern';
315
382
  // Generate embedding from pattern name/content
@@ -347,6 +414,13 @@ export const neuralTools = [
347
414
  }))
348
415
  .sort((a, b) => b.similarity - a.similarity)
349
416
  .slice(0, 10);
417
+ // Increment usageCount so prune can track retrieval frequency
418
+ for (const r of results) {
419
+ if (Object.hasOwn(store.patterns, r.id)) {
420
+ store.patterns[r.id].usageCount = (store.patterns[r.id].usageCount || 0) + 1;
421
+ }
422
+ }
423
+ saveNeuralStore(store);
350
424
  return {
351
425
  _realSimilarity: true,
352
426
  _realEmbedding: !!realEmbeddings,
@@ -362,7 +436,10 @@ export const neuralTools = [
362
436
  }
363
437
  if (action === 'delete') {
364
438
  const patternId = input.patternId;
365
- if (!store.patterns[patternId]) {
439
+ if (!patternId || NEURAL_RESERVED_KEYS.has(patternId)) {
440
+ return { success: false, error: 'Invalid patternId' };
441
+ }
442
+ if (!Object.hasOwn(store.patterns, patternId)) {
366
443
  return { success: false, error: 'Pattern not found' };
367
444
  }
368
445
  delete store.patterns[patternId];
@@ -415,9 +492,7 @@ export const neuralTools = [
415
492
  return {
416
493
  success: true, _real: true, method,
417
494
  patternsCompressed: totalCompressed,
418
- compressionRatio: '3.92x (Int8)',
419
- beforeBytes: beforeSize,
420
- afterBytes: Math.round(beforeSize / 3.92),
495
+ note: 'Quantization metadata stored; original embeddings retained for search accuracy.',
421
496
  };
422
497
  }
423
498
  catch {
@@ -425,8 +500,13 @@ export const neuralTools = [
425
500
  }
426
501
  }
427
502
  if (method === 'prune') {
428
- // Prune patterns with low usage count below threshold (targetReduction as min usage)
429
- const threshold = targetReduction;
503
+ // Prune the least-used fraction of patterns. targetReduction (0-1) is a percentile:
504
+ // 0.5 removes the bottom 50% by usageCount, 0.8 removes the bottom 80%, etc.
505
+ const counts = Object.values(store.patterns)
506
+ .map(p => p.usageCount || 0)
507
+ .sort((a, b) => a - b);
508
+ const cutoffIdx = Math.floor(targetReduction * counts.length);
509
+ const threshold = counts[cutoffIdx] ?? 0;
430
510
  const toRemove = [];
431
511
  for (const [id, pattern] of Object.entries(store.patterns)) {
432
512
  if ((pattern.usageCount || 0) < threshold)
@@ -492,7 +572,11 @@ export const neuralTools = [
492
572
  handler: async (input) => {
493
573
  const store = loadNeuralStore();
494
574
  if (input.modelId) {
495
- const model = store.models[input.modelId];
575
+ const modelId = input.modelId;
576
+ if (NEURAL_RESERVED_KEYS.has(modelId)) {
577
+ return { success: false, error: 'Invalid modelId' };
578
+ }
579
+ const model = Object.hasOwn(store.models, modelId) ? store.models[modelId] : undefined;
496
580
  if (!model) {
497
581
  return { success: false, error: 'Model not found' };
498
582
  }
@@ -502,7 +586,7 @@ export const neuralTools = [
502
586
  const patterns = Object.values(store.patterns);
503
587
  return {
504
588
  _realEmbeddings: !!realEmbeddings,
505
- embeddingProvider: realEmbeddings ? `@monoes/embeddings (${embeddingServiceName})` : 'hash-based (deterministic)',
589
+ embeddingProvider: realEmbeddings ? `@monomind/embeddings (${embeddingServiceName})` : 'hash-based (deterministic)',
506
590
  models: {
507
591
  total: models.length,
508
592
  ready: models.filter(m => m.status === 'ready').length,
@@ -12,7 +12,7 @@
12
12
  * Note: Some optimization suggestions are illustrative
13
13
  */
14
14
  import { getProjectCwd } from './types.js';
15
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
15
+ import { existsSync, readFileSync, writeFileSync, renameSync, unlinkSync, readdirSync, mkdirSync } from 'node:fs';
16
16
  import { join } from 'node:path';
17
17
  import * as os from 'node:os';
18
18
  // Storage paths
@@ -46,7 +46,10 @@ function loadPerfStore() {
46
46
  }
47
47
  function savePerfStore(store) {
48
48
  ensurePerfDir();
49
- writeFileSync(getPerfPath(), JSON.stringify(store, null, 2), 'utf-8');
49
+ const dest = getPerfPath();
50
+ const tmpPath = `${dest}.${process.pid}.${Date.now()}.tmp`;
51
+ writeFileSync(tmpPath, JSON.stringify(store, null, 2), 'utf-8');
52
+ renameSync(tmpPath, dest);
50
53
  }
51
54
  export const performanceTools = [
52
55
  {
@@ -177,7 +180,6 @@ export const performanceTools = [
177
180
  readFileSync(probeFile);
178
181
  diskLatencyMs = Math.round((performance.now() - t0) * 100) / 100;
179
182
  try {
180
- const { unlinkSync } = require('node:fs');
181
183
  unlinkSync(probeFile);
182
184
  }
183
185
  catch { /* best-effort */ }
@@ -301,6 +303,13 @@ export const performanceTools = [
301
303
  createdAt: new Date().toISOString(),
302
304
  };
303
305
  store.benchmarks[id] = result;
306
+ // Evict oldest entries if over limit
307
+ const MAX_BENCHMARKS = 200;
308
+ const benchEntries = Object.entries(store.benchmarks)
309
+ .sort(([, a], [, b]) => (a.createdAt < b.createdAt ? -1 : 1));
310
+ if (benchEntries.length > MAX_BENCHMARKS) {
311
+ store.benchmarks = Object.fromEntries(benchEntries.slice(-MAX_BENCHMARKS));
312
+ }
304
313
  results.push({
305
314
  name: suiteName,
306
315
  opsPerSec,
@@ -312,9 +321,10 @@ export const performanceTools = [
312
321
  }
313
322
  savePerfStore(store);
314
323
  // Calculate comparison vs previous benchmarks
324
+ const runStart = new Date().toISOString();
315
325
  const allBenchmarks = Object.values(store.benchmarks);
316
326
  const previousBenchmarks = allBenchmarks
317
- .filter(b => suitesToRun.includes(b.name) && b.createdAt < results[0]?.name)
327
+ .filter(b => suitesToRun.includes(b.name) && b.createdAt < runStart)
318
328
  .slice(-suitesToRun.length);
319
329
  const comparison = previousBenchmarks.length > 0
320
330
  ? {
@@ -365,6 +375,9 @@ export const performanceTools = [
365
375
  };
366
376
  const targets = target === 'all' ? ['memory', 'io', 'cpu'] : [target];
367
377
  const deadline = wallStart + durationMs;
378
+ // Cap I/O operations to prevent the io target from saturating disk/event loop
379
+ const MAX_IO_OPS = 1000;
380
+ let ioOps = 0;
368
381
  while (performance.now() < deadline) {
369
382
  for (const t of targets) {
370
383
  if (performance.now() >= deadline)
@@ -375,11 +388,14 @@ export const performanceTools = [
375
388
  runOp('array-sort', () => { const a = Array.from({ length: 500 }, () => Math.random()); a.sort(); });
376
389
  }
377
390
  else if (t === 'io') {
391
+ if (ioOps >= MAX_IO_OPS)
392
+ continue;
378
393
  runOp('file-write', () => { ensurePerfDir(); writeFileSync(join(getPerfDir(), '.profile-probe'), 'x'.repeat(1024)); });
379
394
  runOp('file-read', () => { try {
380
395
  readFileSync(join(getPerfDir(), '.profile-probe'));
381
396
  }
382
397
  catch { /* ok */ } });
398
+ ioOps += 2;
383
399
  }
384
400
  else if (t === 'cpu') {
385
401
  runOp('matrix-mult', () => { const s = 32; const a = Array.from({ length: s }, () => Array.from({ length: s }, () => Math.random())); for (let i = 0; i < s; i++)
@@ -408,7 +424,6 @@ export const performanceTools = [
408
424
  .sort((a, b) => b.percentOfTotal - a.percentOfTotal);
409
425
  // Cleanup probe file
410
426
  try {
411
- const { unlinkSync } = require('node:fs');
412
427
  unlinkSync(join(getPerfDir(), '.profile-probe'));
413
428
  }
414
429
  catch { /* ok */ }
@@ -459,7 +474,6 @@ export const performanceTools = [
459
474
  readFileSync(probe);
460
475
  diskLatencyBefore = Math.round((performance.now() - t0) * 100) / 100;
461
476
  try {
462
- const { unlinkSync } = require('node:fs');
463
477
  unlinkSync(probe);
464
478
  }
465
479
  catch { /* ok */ }
@@ -504,10 +518,9 @@ export const performanceTools = [
504
518
  if (aggressive) {
505
519
  try {
506
520
  const dir = getPerfDir();
507
- const { readdirSync, unlinkSync: ul } = require('node:fs');
508
521
  const probes = readdirSync(dir).filter((f) => f.startsWith('.'));
509
522
  probes.forEach((f) => { try {
510
- ul(join(dir, f));
523
+ unlinkSync(join(dir, f));
511
524
  }
512
525
  catch { /* ok */ } });
513
526
  if (probes.length > 0)
@@ -3,16 +3,16 @@
3
3
  *
4
4
  * Provides MCP tools for checking and syncing V1 implementation progress.
5
5
  *
6
- * @module @monoes/cli/mcp-tools/progress
6
+ * @module @monomind/cli/mcp-tools/progress
7
7
  */
8
- import { existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
8
+ import { existsSync, readdirSync, readFileSync, writeFileSync, renameSync, mkdirSync } from 'fs';
9
9
  import { join, basename, dirname } from 'path';
10
10
  import { fileURLToPath } from 'url';
11
11
  // Get project root - handles both src and dist paths
12
12
  const __filename = fileURLToPath(import.meta.url);
13
13
  const __dirname = dirname(__filename);
14
14
  // From dist/src/mcp-tools or src/mcp-tools, navigate to v1 directory
15
- // CLI is at packages/@monoes/cli, so go up 2 levels from cli to get to v1
15
+ // CLI is at packages/@monomind/cli, so go up 2 levels from cli to get to v1
16
16
  const CLI_ROOT = join(__dirname, '../../..');
17
17
  const MONOMIND_DIR = join(CLI_ROOT, '..'); // @monomind directory
18
18
  const PACKAGES_DIR = join(MONOMIND_DIR, '..'); // v1 directory
@@ -92,7 +92,7 @@ function calculateModuleProgress(moduleDir) {
92
92
  async function calculateProgress() {
93
93
  const now = new Date().toISOString();
94
94
  // Count V1 modules
95
- const modulesDir = join(PACKAGES_DIR, '@monoes');
95
+ const modulesDir = join(PACKAGES_DIR, '@monomind');
96
96
  const modules = [];
97
97
  let totalProgress = 0;
98
98
  let explicitDDD = 0;
@@ -119,7 +119,7 @@ async function calculateProgress() {
119
119
  const totalStats = countFilesAndLines(PACKAGES_DIR);
120
120
  // Count CLI commands (from commands/index.ts)
121
121
  let cliCommands = 28; // Default to known count
122
- const commandsIndexPath = join(PACKAGES_DIR, '@monoes/cli/src/commands/index.ts');
122
+ const commandsIndexPath = join(PACKAGES_DIR, '@monomind/cli/src/commands/index.ts');
123
123
  if (existsSync(commandsIndexPath)) {
124
124
  try {
125
125
  const content = readFileSync(commandsIndexPath, 'utf-8');
@@ -132,7 +132,7 @@ async function calculateProgress() {
132
132
  }
133
133
  // Count MCP tools
134
134
  let mcpTools = 100; // Approximate
135
- const toolsIndexPath = join(PACKAGES_DIR, '@monoes/cli/src/mcp-tools/index.ts');
135
+ const toolsIndexPath = join(PACKAGES_DIR, '@monomind/cli/src/mcp-tools/index.ts');
136
136
  if (existsSync(toolsIndexPath)) {
137
137
  try {
138
138
  const content = readFileSync(toolsIndexPath, 'utf-8');
@@ -142,7 +142,7 @@ async function calculateProgress() {
142
142
  }
143
143
  // Count hooks subcommands (count const *Command definitions)
144
144
  let hooksSubcommands = 27; // Default to documented count
145
- const hooksPath = join(PACKAGES_DIR, '@monoes/cli/src/commands/hooks.ts');
145
+ const hooksPath = join(PACKAGES_DIR, '@monomind/cli/src/commands/hooks.ts');
146
146
  if (existsSync(hooksPath)) {
147
147
  try {
148
148
  const content = readFileSync(hooksPath, 'utf-8');
@@ -191,7 +191,8 @@ async function syncProgress() {
191
191
  mkdirSync(metricsDir, { recursive: true });
192
192
  }
193
193
  const outputPath = join(metricsDir, 'v1-progress.json');
194
- writeFileSync(outputPath, JSON.stringify({
194
+ const outputTmp = outputPath + '.tmp';
195
+ writeFileSync(outputTmp, JSON.stringify({
195
196
  domains: { completed: Math.floor(metrics.packages.withDDD / 3), total: 5 },
196
197
  ddd: {
197
198
  progress: metrics.ddd.progress,
@@ -203,6 +204,7 @@ async function syncProgress() {
203
204
  lastUpdated: metrics.lastUpdated,
204
205
  source: 'ProgressService',
205
206
  }, null, 2));
207
+ renameSync(outputTmp, outputPath);
206
208
  return metrics;
207
209
  }
208
210
  function getSummary(metrics) {
@@ -3,6 +3,7 @@
3
3
  * Lightweight counter for tracking MCP tool invocations.
4
4
  * Used by system_metrics to report real request counts.
5
5
  */
6
+ const MAX_TRACKED_TOOLS = 500;
6
7
  let counts = {
7
8
  total: 0,
8
9
  success: 0,
@@ -16,7 +17,9 @@ export function trackRequest(toolName, success) {
16
17
  counts.success++;
17
18
  else
18
19
  counts.errors++;
19
- counts.byTool[toolName] = (counts.byTool[toolName] || 0) + 1;
20
+ if (Object.keys(counts.byTool).length < MAX_TRACKED_TOOLS || toolName in counts.byTool) {
21
+ counts.byTool[toolName] = (counts.byTool[toolName] || 0) + 1;
22
+ }
20
23
  }
21
24
  export function getRequestCounts() {
22
25
  return { ...counts };
@@ -7,6 +7,20 @@
7
7
  async function loadRuvllmWasm() {
8
8
  return import('../ruvector/ruvllm-wasm.js');
9
9
  }
10
+ // ── Instance Registries ──────────────────────────────────────
11
+ const hnswRouters = new Map();
12
+ const sonaInstances = new Map();
13
+ const loraInstances = new Map();
14
+ // ── Map eviction (prevents WASM object leaks in long-running MCP servers) ────
15
+ const MAX_MAP_SIZE = 50;
16
+ function setWithEviction(map, key, value) {
17
+ if (map.size >= MAX_MAP_SIZE) {
18
+ // Evict the oldest entry (first inserted)
19
+ const firstKey = map.keys().next().value;
20
+ map.delete(firstKey);
21
+ }
22
+ map.set(key, value);
23
+ }
10
24
  export const ruvllmWasmTools = [
11
25
  {
12
26
  name: 'ruvllm_status',
@@ -45,7 +59,7 @@ export const ruvllmWasmTools = [
45
59
  });
46
60
  // Store router in module-level registry
47
61
  const id = `hnsw-${Date.now().toString(36)}`;
48
- hnswRouters.set(id, router);
62
+ setWithEviction(hnswRouters, id, router);
49
63
  return { content: [{ type: 'text', text: JSON.stringify({ success: true, routerId: id, dimensions: args.dimensions, maxPatterns: args.maxPatterns }) }] };
50
64
  }
51
65
  catch (err) {
@@ -102,7 +116,8 @@ export const ruvllmWasmTools = [
102
116
  if (!router)
103
117
  return { content: [{ type: 'text', text: JSON.stringify({ error: `Router not found: ${args.routerId}` }) }], isError: true };
104
118
  const query = new Float32Array(args.query);
105
- const results = router.route(query, args.k ?? 3);
119
+ const k = typeof args.k === 'number' && args.k > 0 ? Math.floor(args.k) : 3;
120
+ const results = router.route(query, k);
106
121
  return { content: [{ type: 'text', text: JSON.stringify({ results }) }] };
107
122
  }
108
123
  catch (err) {
@@ -130,7 +145,7 @@ export const ruvllmWasmTools = [
130
145
  patternCapacity: args.patternCapacity,
131
146
  });
132
147
  const id = `sona-${Date.now().toString(36)}`;
133
- sonaInstances.set(id, sona);
148
+ setWithEviction(sonaInstances, id, sona);
134
149
  return { content: [{ type: 'text', text: JSON.stringify({ success: true, sonaId: id }) }] };
135
150
  }
136
151
  catch (err) {
@@ -185,7 +200,7 @@ export const ruvllmWasmTools = [
185
200
  alpha: args.alpha,
186
201
  });
187
202
  const id = `lora-${Date.now().toString(36)}`;
188
- loraInstances.set(id, lora);
203
+ setWithEviction(loraInstances, id, lora);
189
204
  return { content: [{ type: 'text', text: JSON.stringify({ success: true, loraId: id }) }] };
190
205
  }
191
206
  catch (err) {
@@ -277,8 +292,4 @@ export const ruvllmWasmTools = [
277
292
  },
278
293
  },
279
294
  ];
280
- // ── Instance Registries ──────────────────────────────────────
281
- const hnswRouters = new Map();
282
- const sonaInstances = new Map();
283
- const loraInstances = new Map();
284
295
  //# sourceMappingURL=ruvllm-tools.js.map