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
@@ -1,4 +1,31 @@
1
- import { substitute } from './template-engine.js';
1
+ /**
2
+ * Substitute context values into a condition expression, JSON-encoding string
3
+ * values to prevent quote injection via user-controlled context data.
4
+ */
5
+ function substituteCondition(expression, context) {
6
+ return expression.replace(/\{\{([\w./-]+)\}\}/g, (_match, path) => {
7
+ const segments = path.split('.');
8
+ let current = context;
9
+ for (const seg of segments) {
10
+ if (current === null || current === undefined || typeof current !== 'object') {
11
+ current = undefined;
12
+ break;
13
+ }
14
+ if (seg === '__proto__' || seg === 'constructor' || seg === 'prototype') {
15
+ current = undefined;
16
+ break;
17
+ }
18
+ current = current[seg];
19
+ }
20
+ if (current === undefined)
21
+ return `{{${path}}}`;
22
+ if (typeof current === 'string')
23
+ return JSON.stringify(current);
24
+ if (typeof current === 'number' || typeof current === 'boolean')
25
+ return String(current);
26
+ return JSON.stringify(current);
27
+ });
28
+ }
2
29
  /**
3
30
  * Dangerous patterns that must never appear in condition expressions.
4
31
  */
@@ -28,8 +55,15 @@ const SAFE_TOKEN = /^(\s*('([^']*)'|"([^"]*)"|-?\d+(\.\d+)?|true|false|null|unde
28
55
  * 4. Evaluate using `new Function` with strict mode.
29
56
  */
30
57
  export function evaluateCondition(expression, context) {
31
- // Step 1: substitute variables
32
- const resolved = substitute(expression, context);
58
+ if (expression.length > 500) {
59
+ throw new Error('Condition expression too long (max 500 characters)');
60
+ }
61
+ // Step 1: substitute variables (string values JSON-encoded to prevent quote injection)
62
+ const resolved = substituteCondition(expression, context);
63
+ // Re-check length after substitution — injected values can expand the expression
64
+ if (resolved.length > 500) {
65
+ throw new Error('Condition expression too long after variable substitution (max 500 characters)');
66
+ }
33
67
  // Step 2: reject dangerous patterns
34
68
  for (const pattern of DANGEROUS_PATTERNS) {
35
69
  if (pattern.test(resolved)) {
@@ -41,28 +41,44 @@ export function detectCycles(dag) {
41
41
  color.set(id, WHITE);
42
42
  parent.set(id, null);
43
43
  }
44
- function dfs(u) {
45
- color.set(u, GRAY);
46
- const neighbors = dag.edges.get(u) ?? new Set();
47
- for (const v of neighbors) {
48
- if (color.get(v) === GRAY) {
44
+ // Iterative DFS to avoid call-stack overflow on deep linear DAGs
45
+ function dfs(start) {
46
+ const stack = [
47
+ { u: start, neighbors: (dag.edges.get(start) ?? new Set()).values(), entered: false },
48
+ ];
49
+ while (stack.length > 0) {
50
+ const frame = stack[stack.length - 1];
51
+ if (!frame.entered) {
52
+ frame.entered = true;
53
+ color.set(frame.u, GRAY);
54
+ }
55
+ const { value: v, done } = frame.neighbors.next();
56
+ if (done) {
57
+ color.set(frame.u, BLACK);
58
+ stack.pop();
59
+ continue;
60
+ }
61
+ const vColor = color.get(v);
62
+ if (vColor === GRAY) {
49
63
  // Found a cycle — reconstruct it
50
64
  const cycle = [v];
51
- let curr = u;
65
+ let curr = frame.u;
52
66
  while (curr !== v) {
53
67
  cycle.push(curr);
54
- curr = parent.get(curr);
68
+ const next = parent.get(curr);
69
+ if (next == null)
70
+ break;
71
+ curr = next;
55
72
  }
56
73
  cycle.push(v);
57
74
  cycle.reverse();
58
75
  cycles.push(cycle);
59
76
  }
60
- else if (color.get(v) === WHITE) {
61
- parent.set(v, u);
62
- dfs(v);
77
+ else if (vColor === WHITE) {
78
+ parent.set(v, frame.u);
79
+ stack.push({ u: v, neighbors: (dag.edges.get(v) ?? new Set()).values(), entered: false });
63
80
  }
64
81
  }
65
- color.set(u, BLACK);
66
82
  }
67
83
  for (const id of dag.tasks.keys()) {
68
84
  if (color.get(id) === WHITE) {
@@ -1,5 +1,16 @@
1
1
  import { buildDAG, detectCycles, topologicalSort } from './dag-builder.js';
2
2
  import { resolveContext } from './context-resolver.js';
3
+ import { getMonitor } from '../production/monitoring.js';
4
+ function classifyError(err) {
5
+ const msg = err.message.toLowerCase();
6
+ if (msg.includes('rate limit') || msg.includes('429') || msg.includes('too many requests'))
7
+ return 'RATE_LIMIT';
8
+ if (msg.includes('timed out') || msg.includes('timeout'))
9
+ return 'TIMEOUT';
10
+ if (msg.includes('validation') || msg.includes('invalid') || msg.includes('schema'))
11
+ return 'VALIDATION';
12
+ return 'UNKNOWN';
13
+ }
3
14
  export class DAGExecutor {
4
15
  runner;
5
16
  constructor(runner) {
@@ -17,20 +28,37 @@ export class DAGExecutor {
17
28
  const levelResults = await Promise.all(level.map(async (task) => {
18
29
  const context = resolveContext(task, results);
19
30
  const timeoutMs = task.timeoutMs ?? 300_000;
31
+ let timeoutHandle;
32
+ const timeoutPromise = new Promise((_, reject) => {
33
+ timeoutHandle = setTimeout(() => reject(new Error(`Task "${task.id}" timed out after ${timeoutMs}ms`)), timeoutMs);
34
+ });
20
35
  const result = await Promise.race([
21
36
  this.runWithRetry(task, context),
22
- new Promise((_, reject) => setTimeout(() => reject(new Error(`Task "${task.id}" timed out after ${timeoutMs}ms`)), timeoutMs)),
23
- ]).catch((err) => ({
24
- taskId: task.id,
25
- agentSlug: task.agentSlug,
26
- output: null,
27
- outputRaw: '',
28
- latencyMs: 0,
29
- retryCount: 0,
30
- completedAt: Date.now(),
31
- status: String(err).includes('timed out') ? 'timeout' : 'error',
32
- error: String(err),
33
- }));
37
+ timeoutPromise,
38
+ ]).finally(() => {
39
+ if (timeoutHandle)
40
+ clearTimeout(timeoutHandle);
41
+ }).catch((err) => {
42
+ const isTimeout = String(err).includes('timed out');
43
+ if (isTimeout) {
44
+ // Visible in monomind control — leaked task still running in background
45
+ getMonitor().counter('dag.task.timeout_leak', 1, {
46
+ taskId: task.id,
47
+ agentSlug: task.agentSlug,
48
+ });
49
+ }
50
+ return {
51
+ taskId: task.id,
52
+ agentSlug: task.agentSlug,
53
+ output: null,
54
+ outputRaw: '',
55
+ latencyMs: 0,
56
+ retryCount: 0,
57
+ completedAt: Date.now(),
58
+ status: isTimeout ? 'timeout' : 'error',
59
+ error: String(err),
60
+ };
61
+ });
34
62
  return result;
35
63
  }));
36
64
  for (const result of levelResults) {
@@ -48,12 +76,22 @@ export class DAGExecutor {
48
76
  retryOn: [],
49
77
  };
50
78
  let lastError;
79
+ let actualAttempts = 0;
51
80
  for (let attempt = 0; attempt < policy.maxAttempts; attempt++) {
81
+ actualAttempts = attempt + 1;
52
82
  try {
53
83
  return await this.runner(task, context);
54
84
  }
55
85
  catch (err) {
56
86
  lastError = err;
87
+ // If retryOn is non-empty, check whether this error category matches.
88
+ // Unmatched errors consume the attempt but do not get retried further.
89
+ if (policy.retryOn.length > 0) {
90
+ const category = classifyError(lastError);
91
+ if (!policy.retryOn.includes(category)) {
92
+ break;
93
+ }
94
+ }
57
95
  if (attempt < policy.maxAttempts - 1) {
58
96
  const delay = policy.initialDelayMs *
59
97
  Math.pow(policy.backoffMultiplier, attempt) +
@@ -68,7 +106,7 @@ export class DAGExecutor {
68
106
  output: null,
69
107
  outputRaw: '',
70
108
  latencyMs: 0,
71
- retryCount: policy.maxAttempts,
109
+ retryCount: actualAttempts,
72
110
  completedAt: Date.now(),
73
111
  status: 'error',
74
112
  error: lastError?.message ?? 'Unknown error',
@@ -45,6 +45,7 @@ export declare const mapReduceStepSchema: z.ZodObject<{
45
45
  map_task: z.ZodString;
46
46
  reduce_agent: z.ZodString;
47
47
  reduce_task: z.ZodString;
48
+ concurrent: z.ZodOptional<z.ZodNumber>;
48
49
  }, z.core.$strip>;
49
50
  export declare const loopStepSchema: z.ZodObject<{
50
51
  id: z.ZodString;
@@ -95,6 +96,7 @@ export declare const workflowStepSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
95
96
  map_task: z.ZodString;
96
97
  reduce_agent: z.ZodString;
97
98
  reduce_task: z.ZodString;
99
+ concurrent: z.ZodOptional<z.ZodNumber>;
98
100
  }, z.core.$strip>, z.ZodObject<{
99
101
  id: z.ZodString;
100
102
  type: z.ZodLiteral<"loop">;
@@ -150,6 +152,7 @@ export declare const workflowDefinitionSchema: z.ZodObject<{
150
152
  map_task: z.ZodString;
151
153
  reduce_agent: z.ZodString;
152
154
  reduce_task: z.ZodString;
155
+ concurrent: z.ZodOptional<z.ZodNumber>;
153
156
  }, z.core.$strip>, z.ZodObject<{
154
157
  id: z.ZodString;
155
158
  type: z.ZodLiteral<"loop">;
@@ -26,7 +26,7 @@ export const agentStepSchema = z.object({
26
26
  export const parallelStepSchema = z.object({
27
27
  id: z.string().min(1),
28
28
  type: z.literal('parallel'),
29
- steps: z.array(lazyStep).min(2),
29
+ steps: z.array(lazyStep).min(2).max(50),
30
30
  });
31
31
  export const sequenceStepSchema = z.object({
32
32
  id: z.string().min(1),
@@ -48,6 +48,7 @@ export const mapReduceStepSchema = z.object({
48
48
  map_task: z.string().min(1),
49
49
  reduce_agent: z.string().min(1),
50
50
  reduce_task: z.string().min(1),
51
+ concurrent: z.number().int().min(1).max(500).optional(),
51
52
  });
52
53
  export const loopStepSchema = z.object({
53
54
  id: z.string().min(1),
@@ -74,5 +75,8 @@ export const workflowDefinitionSchema = z.object({
74
75
  description: z.string().optional(),
75
76
  variables: z.record(z.string(), z.unknown()).optional(),
76
77
  steps: z.array(workflowStepSchema).min(1),
77
- });
78
+ }).refine((def) => {
79
+ const ids = def.steps.map((s) => s.id);
80
+ return ids.length === new Set(ids).size;
81
+ }, { message: 'Workflow step IDs must be unique', path: ['steps'] });
78
82
  //# sourceMappingURL=dsl-schema.js.map
@@ -16,6 +16,7 @@ export function substitute(template, context) {
16
16
  return String(value);
17
17
  });
18
18
  }
19
+ const BLOCKED_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
19
20
  function resolvePath(obj, path) {
20
21
  const segments = path.split('.');
21
22
  let current = obj;
@@ -26,6 +27,12 @@ function resolvePath(obj, path) {
26
27
  if (typeof current !== 'object') {
27
28
  return undefined;
28
29
  }
30
+ if (BLOCKED_KEYS.has(segment)) {
31
+ return undefined;
32
+ }
33
+ if (!Object.prototype.hasOwnProperty.call(current, segment)) {
34
+ return undefined;
35
+ }
29
36
  current = current[segment];
30
37
  }
31
38
  return current;
@@ -1,5 +1,45 @@
1
1
  import { substitute } from './template-engine.js';
2
2
  import { evaluateCondition } from './condition-evaluator.js';
3
+ const DEFAULT_MAP_CONCURRENCY = 10;
4
+ function classifyWorkflowError(err) {
5
+ const msg = err.message.toLowerCase();
6
+ if (msg.includes('rate limit') || msg.includes('429') || msg.includes('too many requests'))
7
+ return 'RATE_LIMIT';
8
+ if (msg.includes('timed out') || msg.includes('timeout'))
9
+ return 'TIMEOUT';
10
+ if (msg.includes('validation') || msg.includes('invalid') || msg.includes('schema'))
11
+ return 'VALIDATION';
12
+ return 'UNKNOWN';
13
+ }
14
+ async function mapWithConcurrency(items, concurrency, fn) {
15
+ const results = new Array(items.length);
16
+ const controller = new AbortController();
17
+ let next = 0;
18
+ async function worker() {
19
+ while (next < items.length) {
20
+ if (controller.signal.aborted)
21
+ return;
22
+ const idx = next++;
23
+ results[idx] = await fn(items[idx], idx, controller.signal);
24
+ }
25
+ }
26
+ try {
27
+ await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, worker));
28
+ }
29
+ catch (err) {
30
+ controller.abort();
31
+ throw err;
32
+ }
33
+ return results;
34
+ }
35
+ const BLOCKED_CONTEXT_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
36
+ const SAFE_KEY_RE = /^[a-zA-Z_$][a-zA-Z0-9_$.\-]*$/;
37
+ function safeContextWrite(context, key, value) {
38
+ if (!SAFE_KEY_RE.test(key) || BLOCKED_CONTEXT_KEYS.has(key)) {
39
+ throw new Error(`Unsafe workflow context key rejected: "${key}"`);
40
+ }
41
+ context[key] = value;
42
+ }
3
43
  // ---------- Executor ----------
4
44
  export class WorkflowExecutor {
5
45
  dispatcher;
@@ -59,14 +99,45 @@ export class WorkflowExecutor {
59
99
  // ---- Handlers ----
60
100
  async executeAgent(step, context) {
61
101
  const resolvedTask = substitute(step.task, context);
62
- const output = await this.dispatcher.dispatch(step.agent, resolvedTask, context);
63
- // Store output in context if output_key is set
64
- if (step.output_key) {
65
- context[step.output_key] = output;
102
+ const maxAttempts = step.retry_policy?.maxAttempts ?? 1;
103
+ const initialDelayMs = step.retry_policy?.initialDelayMs ?? 500;
104
+ const backoffMultiplier = step.retry_policy?.backoffMultiplier ?? 2;
105
+ const jitterMs = step.retry_policy?.jitterMs ?? 0;
106
+ const retryOn = step.retry_policy?.retryOn;
107
+ let lastError;
108
+ let delayMs = initialDelayMs;
109
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
110
+ try {
111
+ let dispatchPromise = this.dispatcher.dispatch(step.agent, resolvedTask, context);
112
+ if (step.timeout_ms) {
113
+ dispatchPromise = Promise.race([
114
+ dispatchPromise,
115
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Agent step "${step.id}" timed out after ${step.timeout_ms}ms`)), step.timeout_ms)),
116
+ ]);
117
+ }
118
+ const output = await dispatchPromise;
119
+ if (step.output_key) {
120
+ safeContextWrite(context, step.output_key, output);
121
+ }
122
+ safeContextWrite(context, step.id, output);
123
+ return { stepId: step.id, output, status: 'success' };
124
+ }
125
+ catch (err) {
126
+ lastError = err;
127
+ if (attempt >= maxAttempts)
128
+ break;
129
+ // Only retry for configured error categories (default: retry all)
130
+ if (retryOn && retryOn.length > 0) {
131
+ const category = classifyWorkflowError(err instanceof Error ? err : new Error(String(err)));
132
+ if (!retryOn.includes(category))
133
+ break;
134
+ }
135
+ const jitter = jitterMs > 0 ? Math.random() * jitterMs : 0;
136
+ await new Promise((r) => setTimeout(r, delayMs + jitter));
137
+ delayMs = Math.round(delayMs * backoffMultiplier);
138
+ }
66
139
  }
67
- // Always store by step id
68
- context[step.id] = output;
69
- return { stepId: step.id, output, status: 'success' };
140
+ throw lastError;
70
141
  }
71
142
  async executeParallel(step, context) {
72
143
  const results = await Promise.all(step.steps.map((sub) => this.executeStep(sub, context)));
@@ -93,6 +164,9 @@ export class WorkflowExecutor {
93
164
  async executeMapReduce(step, context) {
94
165
  // Resolve items from context
95
166
  const resolvedItems = substitute(step.items, context);
167
+ if (resolvedItems.length > 1_000_000) {
168
+ throw new Error(`map_reduce step "${step.id}": items string exceeds 1MB size limit`);
169
+ }
96
170
  let items;
97
171
  try {
98
172
  items = JSON.parse(resolvedItems);
@@ -100,27 +174,34 @@ export class WorkflowExecutor {
100
174
  throw new Error('not an array');
101
175
  }
102
176
  catch {
103
- throw new Error(`map_reduce step "${step.id}": items must resolve to a JSON array, got: ${resolvedItems}`);
177
+ throw new Error(`map_reduce step "${step.id}": items must resolve to a JSON array, got: ${resolvedItems.slice(0, 200)}`);
178
+ }
179
+ const MAX_MAP_ITEMS = 500;
180
+ if (items.length > MAX_MAP_ITEMS) {
181
+ throw new Error(`map_reduce step "${step.id}": ${items.length} items exceeds limit of ${MAX_MAP_ITEMS}`);
104
182
  }
105
- // Map phase: fan-out to map_agent
106
- const mapResults = await Promise.all(items.map(async (item, idx) => {
183
+ // Map phase: fan-out to map_agent with concurrency cap (default 10, override via --concurrent)
184
+ const concurrency = step.concurrent ?? DEFAULT_MAP_CONCURRENCY;
185
+ const mapResults = await mapWithConcurrency(items, concurrency, async (item, idx, signal) => {
186
+ if (signal.aborted)
187
+ throw new Error('Map phase aborted');
107
188
  const taskStr = substitute(step.map_task, { ...context, item });
108
189
  const output = await this.dispatcher.dispatch(step.map_agent, taskStr, {
109
190
  ...context,
110
191
  item,
111
192
  });
112
193
  return { stepId: `${step.id}.map[${idx}]`, output, status: 'success' };
113
- }));
194
+ });
114
195
  // Store mapped outputs for reduce
115
196
  const mapOutputs = mapResults.map((r) => r.output);
116
- context[`${step.id}_map_results`] = mapOutputs;
197
+ safeContextWrite(context, `${step.id}_map_results`, mapOutputs);
117
198
  // Reduce phase
118
199
  const reduceTask = substitute(step.reduce_task, {
119
200
  ...context,
120
201
  map_results: mapOutputs,
121
202
  });
122
203
  const reduceOutput = await this.dispatcher.dispatch(step.reduce_agent, reduceTask, { ...context, map_results: mapOutputs });
123
- context[step.id] = reduceOutput;
204
+ safeContextWrite(context, step.id, reduceOutput);
124
205
  return [
125
206
  ...mapResults,
126
207
  { stepId: `${step.id}.reduce`, output: reduceOutput, status: 'success' },
@@ -139,7 +220,7 @@ export class WorkflowExecutor {
139
220
  }
140
221
  iteration++;
141
222
  }
142
- context[`${step.id}_iterations`] = iteration;
223
+ safeContextWrite(context, `${step.id}_iterations`, iteration);
143
224
  return results;
144
225
  }
145
226
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monoes/monomindcli",
3
- "version": "1.8.0",
3
+ "version": "1.9.1",
4
4
  "type": "module",
5
5
  "description": "Monomind CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
6
6
  "main": "dist/src/index.js",
@@ -86,7 +86,8 @@
86
86
  },
87
87
  "dependencies": {
88
88
  "@noble/ed25519": "^2.1.0",
89
- "@monoes/monograph": "^1.1.0",
89
+ "@monoes/monograph": "workspace:*",
90
+ "@monomind/routing": "workspace:*",
90
91
  "graphology": "^0.25.4",
91
92
  "graphology-communities-louvain": "^2.0.1",
92
93
  "graphology-metrics": "^2.4.0",
@@ -104,7 +105,8 @@
104
105
  "@ruvector/router": "^0.1.27",
105
106
  "@ruvector/rvagent-wasm": "^0.1.0",
106
107
  "@ruvector/ruvllm-wasm": "^2.0.2",
107
- "@ruvector/sona": "^0.1.5"
108
+ "@ruvector/sona": "^0.1.5",
109
+ "@anthropic-ai/sdk": "*"
108
110
  },
109
111
  "publishConfig": {
110
112
  "access": "public",