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
@@ -2,7 +2,7 @@
2
2
  * Transfer MCP Tools
3
3
  * Pattern and plugin sharing via IPFS-based decentralized registry
4
4
  *
5
- * @module @monoes/cli/mcp-tools/transfer-tools
5
+ * @module @monomind/cli/mcp-tools/transfer-tools
6
6
  * @version 3.0.0
7
7
  */
8
8
  /**
@@ -19,6 +19,21 @@ function createResult(data, isError = false) {
19
19
  isError,
20
20
  };
21
21
  }
22
+ /**
23
+ * Cached PatternStore — initialize() may open IPFS connections, sql.js/WASM,
24
+ * or download registry data. Re-creating on every handler call wastes work
25
+ * and risks file-descriptor / socket-pool leaks on rapid invocations.
26
+ */
27
+ let cachedPatternStore = null;
28
+ async function getPatternStore() {
29
+ if (cachedPatternStore)
30
+ return cachedPatternStore;
31
+ const { PatternStore } = await import('../transfer/store/index.js');
32
+ const store = new PatternStore();
33
+ await store.initialize();
34
+ cachedPatternStore = store;
35
+ return cachedPatternStore;
36
+ }
22
37
  /**
23
38
  * Transfer MCP tools for pattern export, import, anonymization, and sharing
24
39
  */
@@ -116,9 +131,7 @@ export const transferTools = [
116
131
  },
117
132
  handler: async (input) => {
118
133
  try {
119
- const { PatternStore } = await import('../transfer/store/index.js');
120
- const store = new PatternStore();
121
- await store.initialize();
134
+ const store = await getPatternStore();
122
135
  const results = store.search(input);
123
136
  return createResult(results);
124
137
  }
@@ -144,9 +157,7 @@ export const transferTools = [
144
157
  },
145
158
  handler: async (input) => {
146
159
  try {
147
- const { PatternStore } = await import('../transfer/store/index.js');
148
- const store = new PatternStore();
149
- await store.initialize();
160
+ const store = await getPatternStore();
150
161
  const pattern = store.getPattern(input.id);
151
162
  if (!pattern) {
152
163
  return createResult({ error: 'Pattern not found' }, true);
@@ -179,9 +190,7 @@ export const transferTools = [
179
190
  },
180
191
  handler: async (input) => {
181
192
  try {
182
- const { PatternStore } = await import('../transfer/store/index.js');
183
- const store = new PatternStore();
184
- await store.initialize();
193
+ const store = await getPatternStore();
185
194
  const result = await store.download(input.id, { verify: input.verify });
186
195
  return createResult(result);
187
196
  }
@@ -206,9 +215,7 @@ export const transferTools = [
206
215
  },
207
216
  handler: async (input) => {
208
217
  try {
209
- const { PatternStore } = await import('../transfer/store/index.js');
210
- const store = new PatternStore();
211
- await store.initialize();
218
+ const store = await getPatternStore();
212
219
  const featured = store.getFeatured();
213
220
  const limit = input.limit || 10;
214
221
  return createResult(featured.slice(0, limit));
@@ -234,9 +241,7 @@ export const transferTools = [
234
241
  },
235
242
  handler: async (input) => {
236
243
  try {
237
- const { PatternStore } = await import('../transfer/store/index.js');
238
- const store = new PatternStore();
239
- await store.initialize();
244
+ const store = await getPatternStore();
240
245
  const trending = store.getTrending();
241
246
  const limit = input.limit || 10;
242
247
  return createResult(trending.slice(0, limit));
@@ -3,9 +3,11 @@
3
3
  *
4
4
  * Tool definitions for workflow automation and orchestration.
5
5
  */
6
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
6
+ import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync, statSync } from 'node:fs';
7
7
  import { join } from 'node:path';
8
+ import { randomBytes } from 'node:crypto';
8
9
  import { getProjectCwd } from './types.js';
10
+ const MAX_WORKFLOW_STORE_BYTES = 50 * 1024 * 1024; // 50 MB
9
11
  // Storage paths
10
12
  const STORAGE_DIR = '.monomind';
11
13
  const WORKFLOW_DIR = 'workflows';
@@ -26,6 +28,9 @@ function loadWorkflowStore() {
26
28
  try {
27
29
  const path = getWorkflowPath();
28
30
  if (existsSync(path)) {
31
+ if (statSync(path).size > MAX_WORKFLOW_STORE_BYTES) {
32
+ return { workflows: {}, templates: {}, version: '3.0.0' };
33
+ }
29
34
  const data = readFileSync(path, 'utf-8');
30
35
  return JSON.parse(data);
31
36
  }
@@ -36,9 +41,37 @@ function loadWorkflowStore() {
36
41
  return { workflows: {}, templates: {}, version: '3.0.0' };
37
42
  }
38
43
  function saveWorkflowStore(store) {
44
+ // Cap completed/failed/cancelled workflows so the file doesn't grow without
45
+ // bound. Each save serializes the entire store to disk; without eviction
46
+ // a long-running daemon would blow up to GBs of JSON.
47
+ const MAX_WORKFLOWS = 500;
48
+ const MAX_TEMPLATES = 200;
49
+ const TERMINAL = new Set(['completed', 'failed', 'cancelled']);
50
+ const finished = Object.entries(store.workflows ?? {})
51
+ .filter(([, w]) => TERMINAL.has(w.status ?? ''))
52
+ .sort(([, a], [, b]) => {
53
+ const aw = a;
54
+ const bw = b;
55
+ return (aw.completedAt ?? aw.createdAt ?? '').localeCompare(bw.completedAt ?? bw.createdAt ?? '');
56
+ });
57
+ if (finished.length > MAX_WORKFLOWS) {
58
+ for (const [id] of finished.slice(0, finished.length - MAX_WORKFLOWS)) {
59
+ delete store.workflows[id];
60
+ }
61
+ }
62
+ const templates = Object.keys(store.templates ?? {});
63
+ if (templates.length > MAX_TEMPLATES) {
64
+ for (const id of templates.slice(0, templates.length - MAX_TEMPLATES)) {
65
+ delete store.templates[id];
66
+ }
67
+ }
39
68
  ensureWorkflowDir();
40
- writeFileSync(getWorkflowPath(), JSON.stringify(store, null, 2), 'utf-8');
69
+ const dest = getWorkflowPath();
70
+ const tmp = `${dest}.${process.pid}.${Date.now()}.tmp`;
71
+ writeFileSync(tmp, JSON.stringify(store, null, 2), 'utf-8');
72
+ renameSync(tmp, dest);
41
73
  }
74
+ const FORBIDDEN_WORKFLOW_IDS = new Set(['__proto__', 'constructor', 'prototype']);
42
75
  export const workflowTools = [
43
76
  {
44
77
  name: 'workflow_run',
@@ -69,7 +102,7 @@ export const workflowTools = [
69
102
  const options = input.options || {};
70
103
  const dryRun = options.dryRun;
71
104
  // Build workflow from template or inline
72
- const workflowId = `workflow-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
105
+ const workflowId = `workflow-${Date.now()}-${randomBytes(6).toString('hex')}`;
73
106
  const stages = [];
74
107
  // Generate stages based on template
75
108
  const templateName = template || 'custom';
@@ -158,7 +191,7 @@ export const workflowTools = [
158
191
  },
159
192
  handler: async (input) => {
160
193
  const store = loadWorkflowStore();
161
- const workflowId = `workflow-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
194
+ const workflowId = `workflow-${Date.now()}-${randomBytes(6).toString('hex')}`;
162
195
  const steps = (input.steps || []).map((s, i) => ({
163
196
  stepId: `step-${i + 1}`,
164
197
  name: s.name || `Step ${i + 1}`,
@@ -201,9 +234,17 @@ export const workflowTools = [
201
234
  required: ['workflowId'],
202
235
  },
203
236
  handler: async (input) => {
204
- const store = loadWorkflowStore();
205
237
  const workflowId = input.workflowId;
206
- const workflow = store.workflows[workflowId];
238
+ if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
239
+ return { workflowId, error: 'Workflow not found' };
240
+ }
241
+ const store = loadWorkflowStore();
242
+ // Object.hasOwn defends against bracket-access into Object.prototype
243
+ // members (toString, hasOwnProperty, etc.) — the FORBIDDEN_WORKFLOW_IDS
244
+ // blocklist alone misses these inherited names.
245
+ const workflow = Object.hasOwn(store.workflows, workflowId)
246
+ ? store.workflows[workflowId]
247
+ : undefined;
207
248
  if (!workflow) {
208
249
  return { workflowId, error: 'Workflow not found' };
209
250
  }
@@ -252,9 +293,12 @@ export const workflowTools = [
252
293
  required: ['workflowId'],
253
294
  },
254
295
  handler: async (input) => {
255
- const store = loadWorkflowStore();
256
296
  const workflowId = input.workflowId;
257
- const workflow = store.workflows[workflowId];
297
+ if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
298
+ return { workflowId, error: 'Workflow not found' };
299
+ }
300
+ const store = loadWorkflowStore();
301
+ const workflow = Object.hasOwn(store.workflows, workflowId) ? store.workflows[workflowId] : undefined;
258
302
  if (!workflow) {
259
303
  return { workflowId, error: 'Workflow not found' };
260
304
  }
@@ -313,6 +357,7 @@ export const workflowTools = [
313
357
  workflows.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
314
358
  // Apply limit
315
359
  const limit = input.limit || 20;
360
+ const totalCount = workflows.length;
316
361
  workflows = workflows.slice(0, limit);
317
362
  return {
318
363
  workflows: workflows.map(w => ({
@@ -323,7 +368,7 @@ export const workflowTools = [
323
368
  createdAt: w.createdAt,
324
369
  completedAt: w.completedAt,
325
370
  })),
326
- total: workflows.length,
371
+ total: totalCount,
327
372
  filters: { status: input.status },
328
373
  };
329
374
  },
@@ -340,9 +385,12 @@ export const workflowTools = [
340
385
  required: ['workflowId'],
341
386
  },
342
387
  handler: async (input) => {
343
- const store = loadWorkflowStore();
344
388
  const workflowId = input.workflowId;
345
- const workflow = store.workflows[workflowId];
389
+ if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
390
+ return { workflowId, error: 'Workflow not found' };
391
+ }
392
+ const store = loadWorkflowStore();
393
+ const workflow = Object.hasOwn(store.workflows, workflowId) ? store.workflows[workflowId] : undefined;
346
394
  if (!workflow) {
347
395
  return { workflowId, error: 'Workflow not found' };
348
396
  }
@@ -371,9 +419,12 @@ export const workflowTools = [
371
419
  required: ['workflowId'],
372
420
  },
373
421
  handler: async (input) => {
374
- const store = loadWorkflowStore();
375
422
  const workflowId = input.workflowId;
376
- const workflow = store.workflows[workflowId];
423
+ if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
424
+ return { workflowId, error: 'Workflow not found' };
425
+ }
426
+ const store = loadWorkflowStore();
427
+ const workflow = Object.hasOwn(store.workflows, workflowId) ? store.workflows[workflowId] : undefined;
377
428
  if (!workflow) {
378
429
  return { workflowId, error: 'Workflow not found' };
379
430
  }
@@ -413,16 +464,21 @@ export const workflowTools = [
413
464
  required: ['workflowId'],
414
465
  },
415
466
  handler: async (input) => {
416
- const store = loadWorkflowStore();
417
467
  const workflowId = input.workflowId;
418
- const workflow = store.workflows[workflowId];
468
+ if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
469
+ return { workflowId, error: 'Workflow not found' };
470
+ }
471
+ const store = loadWorkflowStore();
472
+ const workflow = Object.hasOwn(store.workflows, workflowId)
473
+ ? store.workflows[workflowId]
474
+ : undefined;
419
475
  if (!workflow) {
420
476
  return { workflowId, error: 'Workflow not found' };
421
477
  }
422
- if (workflow.status === 'completed' || workflow.status === 'failed') {
478
+ if (workflow.status === 'completed' || workflow.status === 'failed' || workflow.status === 'cancelled') {
423
479
  return { workflowId, error: 'Workflow already finished' };
424
480
  }
425
- workflow.status = 'failed';
481
+ workflow.status = 'cancelled';
426
482
  workflow.error = input.reason || 'Cancelled by user';
427
483
  workflow.completedAt = new Date().toISOString();
428
484
  // Mark remaining steps as skipped
@@ -451,9 +507,12 @@ export const workflowTools = [
451
507
  required: ['workflowId'],
452
508
  },
453
509
  handler: async (input) => {
454
- const store = loadWorkflowStore();
455
510
  const workflowId = input.workflowId;
456
- if (!store.workflows[workflowId]) {
511
+ if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
512
+ return { workflowId, error: 'Workflow not found' };
513
+ }
514
+ const store = loadWorkflowStore();
515
+ if (!Object.hasOwn(store.workflows, workflowId)) {
457
516
  return { workflowId, error: 'Workflow not found' };
458
517
  }
459
518
  const workflow = store.workflows[workflowId];
@@ -488,11 +547,15 @@ export const workflowTools = [
488
547
  const store = loadWorkflowStore();
489
548
  const action = input.action;
490
549
  if (action === 'save') {
491
- const workflow = store.workflows[input.workflowId];
550
+ const rawWorkflowId = input.workflowId;
551
+ if (!rawWorkflowId || typeof rawWorkflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(rawWorkflowId) || !Object.hasOwn(store.workflows, rawWorkflowId)) {
552
+ return { action, error: 'Workflow not found' };
553
+ }
554
+ const workflow = store.workflows[rawWorkflowId];
492
555
  if (!workflow) {
493
556
  return { action, error: 'Workflow not found' };
494
557
  }
495
- const templateId = `template-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
558
+ const templateId = `template-${Date.now()}-${randomBytes(6).toString('hex')}`;
496
559
  const template = {
497
560
  ...workflow,
498
561
  workflowId: templateId,
@@ -521,17 +584,23 @@ export const workflowTools = [
521
584
  };
522
585
  }
523
586
  if (action === 'create') {
524
- const template = store.templates[input.templateId];
587
+ const rawTemplateId = input.templateId;
588
+ if (!rawTemplateId || typeof rawTemplateId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(rawTemplateId) || !Object.hasOwn(store.templates, rawTemplateId)) {
589
+ return { action, error: 'Template not found' };
590
+ }
591
+ const template = store.templates[rawTemplateId];
525
592
  if (!template) {
526
593
  return { action, error: 'Template not found' };
527
594
  }
528
- const workflowId = `workflow-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
595
+ const workflowId = `workflow-${Date.now()}-${randomBytes(6).toString('hex')}`;
529
596
  const workflow = {
530
597
  ...template,
531
598
  workflowId,
532
599
  name: input.newName || template.name.replace(' Template', ''),
533
600
  status: 'ready',
534
601
  createdAt: new Date().toISOString(),
602
+ steps: template.steps.map(s => ({ ...s, status: 'pending', result: undefined })),
603
+ variables: { ...template.variables },
535
604
  };
536
605
  store.workflows[workflowId] = workflow;
537
606
  saveWorkflowStore(store);
@@ -199,6 +199,9 @@ export class EWCConsolidator {
199
199
  penalty: result.totalPenalty,
200
200
  patterns: result.patternsConsolidated
201
201
  });
202
+ if (this.consolidationHistory.length > 100) {
203
+ this.consolidationHistory = this.consolidationHistory.slice(-100);
204
+ }
202
205
  // Persist to disk
203
206
  this.saveToDisk();
204
207
  result.success = true;
@@ -495,7 +498,9 @@ export class EWCConsolidator {
495
498
  consolidationHistory: this.consolidationHistory.slice(-100),
496
499
  savedAt: Date.now()
497
500
  };
498
- fs.writeFileSync(this.config.storagePath, JSON.stringify(state, null, 2));
501
+ const tmp = this.config.storagePath + '.tmp';
502
+ fs.writeFileSync(tmp, JSON.stringify(state, null, 2));
503
+ fs.renameSync(tmp, this.config.storagePath);
499
504
  }
500
505
  catch {
501
506
  // Silently fail - persistence is best-effort
@@ -514,20 +519,46 @@ export class EWCConsolidator {
514
519
  if (state.version !== '1.0.0') {
515
520
  throw new Error(`Unsupported state version: ${state.version}`);
516
521
  }
517
- // Restore state
518
- this.globalFisher = state.globalFisher || new Array(this.config.dimensions).fill(0);
519
- // Restore patterns
522
+ // Validate globalFisher — must be a finite-numeric vector matching dim.
523
+ // An attacker who can write the persisted file could otherwise inject
524
+ // [Infinity, ...] (freezes learning via the penalty>lambda damping branch)
525
+ // or NaN values that poison ranking unpredictably.
526
+ if (Array.isArray(state.globalFisher)
527
+ && state.globalFisher.length === this.config.dimensions
528
+ && state.globalFisher.every((v) => typeof v === 'number' && Number.isFinite(v))) {
529
+ this.globalFisher = state.globalFisher;
530
+ }
531
+ else {
532
+ this.globalFisher = new Array(this.config.dimensions).fill(0);
533
+ }
534
+ // Restore patterns — drop any whose weights/fisherDiagonal are invalid.
520
535
  this.patterns.clear();
521
- if (state.patterns) {
522
- for (const [id, pattern] of state.patterns) {
536
+ if (Array.isArray(state.patterns)) {
537
+ const isFiniteNumberArray = (a, dim) => Array.isArray(a) && a.length === dim && a.every(v => typeof v === 'number' && Number.isFinite(v));
538
+ for (const entry of state.patterns) {
539
+ if (!Array.isArray(entry) || entry.length !== 2)
540
+ continue;
541
+ const [id, pattern] = entry;
542
+ if (typeof id !== 'string' || id.length > 256)
543
+ continue;
544
+ const p = pattern;
545
+ if (!p || typeof p !== 'object')
546
+ continue;
547
+ if (p.weights !== undefined && !isFiniteNumberArray(p.weights, this.config.dimensions))
548
+ continue;
549
+ if (p.fisherDiagonal !== undefined && !isFiniteNumberArray(p.fisherDiagonal, this.config.dimensions))
550
+ continue;
523
551
  this.patterns.set(id, pattern);
524
552
  }
525
553
  }
526
554
  // Restore history
527
- this.consolidationHistory = state.consolidationHistory || [];
528
- // Update config from persisted values
529
- if (state.config) {
530
- this.config.lambda = state.config.lambda ?? this.config.lambda;
555
+ this.consolidationHistory = Array.isArray(state.consolidationHistory) ? state.consolidationHistory : [];
556
+ // Update config from persisted values, clamped to a sensible range to
557
+ // prevent negative/NaN lambda from inverting the regularization sign.
558
+ if (state.config && typeof state.config.lambda === 'number'
559
+ && Number.isFinite(state.config.lambda)
560
+ && state.config.lambda >= 0 && state.config.lambda <= 1000) {
561
+ this.config.lambda = state.config.lambda;
531
562
  }
532
563
  }
533
564
  }
@@ -212,8 +212,8 @@ declare class LocalReasoningBank {
212
212
  clear(): void;
213
213
  }
214
214
  /**
215
- * Initialize the intelligence system (SONA + ReasoningBank)
216
- * Uses optimized local implementations
215
+ * Initialize the intelligence system (SONA + ReasoningBank).
216
+ * Promise-based singleton: concurrent callers share a single init flight.
217
217
  */
218
218
  export declare function initializeIntelligence(config?: Partial<SonaConfig>): Promise<{
219
219
  success: boolean;
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * @module v1/cli/intelligence
12
12
  */
13
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
13
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
14
14
  import { homedir } from 'node:os';
15
15
  import { join } from 'node:path';
16
16
  // ============================================================================
@@ -335,8 +335,26 @@ class LocalReasoningBank {
335
335
  if (existsSync(path)) {
336
336
  const data = JSON.parse(readFileSync(path, 'utf-8'));
337
337
  if (Array.isArray(data)) {
338
+ // Validate each persisted pattern. The patterns file is part of the
339
+ // IPFS-distributed pattern transfer flow — without bounds checks, a
340
+ // malicious bundle can inject `confidence: 1e9` (deterministically wins
341
+ // every routing decision) or `keywords: [10000 strings]` (DoS on every
342
+ // findBestPatternMatch call).
338
343
  for (const pattern of data) {
339
- this.patterns.set(pattern.id, pattern);
344
+ if (!pattern || typeof pattern !== 'object')
345
+ continue;
346
+ const id = pattern.id;
347
+ if (typeof id !== 'string' || id.length === 0 || id.length > 256)
348
+ continue;
349
+ const conf = pattern.confidence;
350
+ if (conf !== undefined && (typeof conf !== 'number' || !Number.isFinite(conf) || conf < 0 || conf > 1)) {
351
+ continue;
352
+ }
353
+ const keywords = pattern.keywords;
354
+ if (keywords !== undefined && (!Array.isArray(keywords) || keywords.length > 64)) {
355
+ continue;
356
+ }
357
+ this.patterns.set(id, pattern);
340
358
  this.patternList.push(pattern);
341
359
  }
342
360
  }
@@ -370,7 +388,9 @@ class LocalReasoningBank {
370
388
  try {
371
389
  ensureDataDir();
372
390
  const path = getPatternsPath();
373
- writeFileSync(path, JSON.stringify(this.patternList, null, 2), 'utf-8');
391
+ const tmp = `${path}.${process.pid}.${Date.now()}.tmp`;
392
+ writeFileSync(tmp, JSON.stringify(this.patternList, null, 2), 'utf-8');
393
+ renameSync(tmp, path);
374
394
  this.dirty = false;
375
395
  }
376
396
  catch (error) {
@@ -514,6 +534,7 @@ class LocalReasoningBank {
514
534
  let sonaCoordinator = null;
515
535
  let reasoningBank = null;
516
536
  let intelligenceInitialized = false;
537
+ let initPromise = null;
517
538
  let globalStats = {
518
539
  trajectoriesRecorded: 0,
519
540
  lastAdaptation: null
@@ -559,14 +580,7 @@ function savePersistedStats() {
559
580
  * Initialize the intelligence system (SONA + ReasoningBank)
560
581
  * Uses optimized local implementations
561
582
  */
562
- export async function initializeIntelligence(config) {
563
- if (intelligenceInitialized) {
564
- return {
565
- success: true,
566
- sonaEnabled: !!sonaCoordinator,
567
- reasoningBankEnabled: !!reasoningBank
568
- };
569
- }
583
+ async function _doInitializeIntelligence(config) {
570
584
  try {
571
585
  // Merge config with defaults
572
586
  const finalConfig = {
@@ -598,6 +612,19 @@ export async function initializeIntelligence(config) {
598
612
  };
599
613
  }
600
614
  }
615
+ /**
616
+ * Initialize the intelligence system (SONA + ReasoningBank).
617
+ * Promise-based singleton: concurrent callers share a single init flight.
618
+ */
619
+ export async function initializeIntelligence(config) {
620
+ if (intelligenceInitialized) {
621
+ return { success: true, sonaEnabled: !!sonaCoordinator, reasoningBankEnabled: !!reasoningBank };
622
+ }
623
+ if (!initPromise) {
624
+ initPromise = _doInitializeIntelligence(config);
625
+ }
626
+ return initPromise;
627
+ }
601
628
  /**
602
629
  * Record a trajectory step for learning
603
630
  * Performance: <0.05ms without embedding generation
@@ -661,7 +688,6 @@ export async function recordStep(step) {
661
688
  globalStats.lastAdaptation = Date.now();
662
689
  }
663
690
  globalStats.trajectoriesRecorded++;
664
- savePersistedStats();
665
691
  return true;
666
692
  }
667
693
  catch {
@@ -839,7 +865,7 @@ export function clearIntelligence() {
839
865
  */
840
866
  export function benchmarkAdaptation(iterations = 1000) {
841
867
  if (!sonaCoordinator) {
842
- initializeIntelligence();
868
+ return { totalMs: 0, avgMs: 0, minMs: 0, maxMs: 0, targetMet: false };
843
869
  }
844
870
  const times = [];
845
871
  const testEmbedding = Array.from({ length: 384 }, () => Math.random());
@@ -16,6 +16,7 @@
16
16
  *
17
17
  * @module v1/cli/memory-bridge
18
18
  */
19
+ export declare function safeParseEmbedding(raw: string | null | undefined): number[] | null;
19
20
  /**
20
21
  * Store an entry via AgentDB v1.
21
22
  * Phase 2-5: Routes through MutationGuard → TieredCache → DB → AttestationLog.