monomind 1.9.16 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (701) hide show
  1. package/.claude/commands/mastermind/_repeat.md +182 -39
  2. package/.claude/commands/mastermind/architect.md +17 -11
  3. package/.claude/commands/mastermind/brain.md +4 -0
  4. package/.claude/commands/mastermind/build.md +4 -0
  5. package/.claude/commands/mastermind/content.md +4 -0
  6. package/.claude/commands/mastermind/createorg.md +5 -3
  7. package/.claude/commands/mastermind/finance.md +4 -0
  8. package/.claude/commands/mastermind/idea.md +4 -0
  9. package/.claude/commands/mastermind/marketing.md +4 -0
  10. package/.claude/commands/mastermind/master.md +100 -46
  11. package/.claude/commands/mastermind/ops.md +4 -0
  12. package/.claude/commands/mastermind/release.md +4 -0
  13. package/.claude/commands/mastermind/research.md +4 -0
  14. package/.claude/commands/mastermind/review.md +4 -0
  15. package/.claude/commands/mastermind/runorg.md +5 -3
  16. package/.claude/commands/mastermind/sales.md +4 -0
  17. package/.claude/commands/mastermind/techport.md +9 -0
  18. package/.claude/commands/monomind/do.md +5 -1
  19. package/.claude/commands/monomind/idea.md +5 -1
  20. package/.claude/commands/monomind/improve.md +5 -1
  21. package/.claude/commands/monomind/repeat.md +85 -29
  22. package/.claude/commands/monomind/review.md +6 -2
  23. package/.claude/commands/monomind/understand.md +10 -8
  24. package/.claude/helpers/extras-registry.json +235 -235
  25. package/.claude/helpers/graphify-freshen.cjs +13 -1
  26. package/.claude/helpers/hook-handler.cjs +1 -1
  27. package/.claude/helpers/router.cjs +4 -1
  28. package/.claude/scheduled_tasks.lock +1 -1
  29. package/.claude/settings.json +3 -3
  30. package/.claude/settings.local.json +3 -3
  31. package/.claude/skills/.monomind/sessions/current.json +1 -1
  32. package/.claude/skills/.monomind/sessions/session-1777829336455.json +1 -1
  33. package/.claude/skills/.monomind/sessions/session-1777831614725.json +1 -1
  34. package/.claude/skills/.monomind/sessions/session-1777832095857.json +1 -1
  35. package/.claude/skills/.monomind/sessions/session-1777839814183.json +1 -1
  36. package/.claude/skills/.monomind/sessions/session-1777841847131.json +1 -1
  37. package/.claude/skills/.monomind/sessions/session-1777843309463.json +1 -1
  38. package/.claude/skills/.monomind/sessions/session-1777880867159.json +1 -1
  39. package/.claude/skills/.monomind/sessions/session-1777881884593.json +1 -1
  40. package/.claude/skills/.monomind/sessions/session-1777884090471.json +1 -1
  41. package/.claude/skills/.monomind/sessions/session-1777884808221.json +1 -1
  42. package/.claude/skills/.monomind/sessions/session-1777885672155.json +1 -1
  43. package/.claude/skills/.monomind/sessions/session-1777886852818.json +1 -1
  44. package/.claude/skills/.monomind/sessions/session-1777896532690.json +1 -1
  45. package/.claude/skills/mastermind/_protocol.md +37 -21
  46. package/.claude/skills/mastermind/access.md +236 -0
  47. package/.claude/skills/mastermind/activity.md +191 -0
  48. package/.claude/skills/mastermind/adapter-manager.md +259 -0
  49. package/.claude/skills/mastermind/adapters.md +204 -0
  50. package/.claude/skills/mastermind/agent-detail.md +242 -0
  51. package/.claude/skills/mastermind/agents.md +178 -0
  52. package/.claude/skills/mastermind/approval-detail.md +259 -0
  53. package/.claude/skills/mastermind/approve.md +181 -0
  54. package/.claude/skills/mastermind/architect.md +24 -8
  55. package/.claude/skills/mastermind/backup.md +197 -0
  56. package/.claude/skills/mastermind/bootstrap.md +190 -0
  57. package/.claude/skills/mastermind/budgets.md +237 -0
  58. package/.claude/skills/mastermind/companies.md +256 -0
  59. package/.claude/skills/mastermind/costs.md +151 -0
  60. package/.claude/skills/mastermind/createorg.md +23 -5
  61. package/.claude/skills/mastermind/diagnose.md +249 -0
  62. package/.claude/skills/mastermind/env.md +198 -0
  63. package/.claude/skills/mastermind/environments.md +250 -0
  64. package/.claude/skills/mastermind/export.md +324 -0
  65. package/.claude/skills/mastermind/goal-detail.md +255 -0
  66. package/.claude/skills/mastermind/goals.md +149 -0
  67. package/.claude/skills/mastermind/heartbeat.md +164 -0
  68. package/.claude/skills/mastermind/idea.md +318 -186
  69. package/.claude/skills/mastermind/import.md +281 -0
  70. package/.claude/skills/mastermind/inbox.md +214 -0
  71. package/.claude/skills/mastermind/instance-settings.md +315 -0
  72. package/.claude/skills/mastermind/instance.md +231 -0
  73. package/.claude/skills/mastermind/invite-landing.md +227 -0
  74. package/.claude/skills/mastermind/invites.md +254 -0
  75. package/.claude/skills/mastermind/issue-detail.md +291 -0
  76. package/.claude/skills/mastermind/issues.md +235 -0
  77. package/.claude/skills/mastermind/join-queue.md +170 -0
  78. package/.claude/skills/mastermind/liveness.md +392 -0
  79. package/.claude/skills/mastermind/memory.md +321 -0
  80. package/.claude/skills/mastermind/my-issues.md +146 -0
  81. package/.claude/skills/mastermind/new-agent.md +241 -0
  82. package/.claude/skills/mastermind/org-chart.md +207 -0
  83. package/.claude/skills/mastermind/org-settings.md +217 -0
  84. package/.claude/skills/mastermind/plan-to-tasks.md +136 -0
  85. package/.claude/skills/mastermind/plugin-manager.md +241 -0
  86. package/.claude/skills/mastermind/plugin-settings.md +273 -0
  87. package/.claude/skills/mastermind/plugins.md +190 -0
  88. package/.claude/skills/mastermind/profile.md +187 -0
  89. package/.claude/skills/mastermind/project-detail.md +249 -0
  90. package/.claude/skills/mastermind/project-workspace.md +244 -0
  91. package/.claude/skills/mastermind/projects.md +164 -0
  92. package/.claude/skills/mastermind/routine-detail.md +253 -0
  93. package/.claude/skills/mastermind/routines.md +202 -0
  94. package/.claude/skills/mastermind/runorg.md +74 -9
  95. package/.claude/skills/mastermind/search.md +186 -0
  96. package/.claude/skills/mastermind/secrets.md +199 -0
  97. package/.claude/skills/mastermind/skills.md +156 -0
  98. package/.claude/skills/mastermind/tasks.md +149 -0
  99. package/.claude/skills/mastermind/techport.md +5 -5
  100. package/.claude/skills/mastermind/threads.md +259 -0
  101. package/.claude/skills/mastermind/tree-control.md +250 -0
  102. package/.claude/skills/mastermind/wiki.md +314 -0
  103. package/.claude/skills/mastermind/workspace-detail.md +317 -0
  104. package/.claude/skills/mastermind/workspaces.md +261 -0
  105. package/.claude/skills/mastermind/worktree.md +187 -0
  106. package/LICENSE +1 -1
  107. package/package.json +1 -1
  108. package/packages/@monomind/cli/package.json +1 -1
  109. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.d.ts +0 -32
  110. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.d.ts.map +0 -1
  111. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.js +0 -297
  112. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.js.map +0 -1
  113. package/packages/@monomind/cli/bundled-graph/dist/src/build.d.ts +0 -8
  114. package/packages/@monomind/cli/bundled-graph/dist/src/build.d.ts.map +0 -1
  115. package/packages/@monomind/cli/bundled-graph/dist/src/build.js +0 -73
  116. package/packages/@monomind/cli/bundled-graph/dist/src/build.js.map +0 -1
  117. package/packages/@monomind/cli/bundled-graph/dist/src/cache.d.ts +0 -12
  118. package/packages/@monomind/cli/bundled-graph/dist/src/cache.d.ts.map +0 -1
  119. package/packages/@monomind/cli/bundled-graph/dist/src/cache.js +0 -43
  120. package/packages/@monomind/cli/bundled-graph/dist/src/cache.js.map +0 -1
  121. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.d.ts +0 -5
  122. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.d.ts.map +0 -1
  123. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js +0 -120
  124. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js.map +0 -1
  125. package/packages/@monomind/cli/bundled-graph/dist/src/detect.d.ts +0 -21
  126. package/packages/@monomind/cli/bundled-graph/dist/src/detect.d.ts.map +0 -1
  127. package/packages/@monomind/cli/bundled-graph/dist/src/detect.js +0 -195
  128. package/packages/@monomind/cli/bundled-graph/dist/src/detect.js.map +0 -1
  129. package/packages/@monomind/cli/bundled-graph/dist/src/export.d.ts +0 -21
  130. package/packages/@monomind/cli/bundled-graph/dist/src/export.d.ts.map +0 -1
  131. package/packages/@monomind/cli/bundled-graph/dist/src/export.js +0 -68
  132. package/packages/@monomind/cli/bundled-graph/dist/src/export.js.map +0 -1
  133. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.d.ts +0 -20
  134. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.d.ts.map +0 -1
  135. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.js +0 -158
  136. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.js.map +0 -1
  137. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.d.ts +0 -3
  138. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.d.ts.map +0 -1
  139. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.js +0 -88
  140. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.js.map +0 -1
  141. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.d.ts +0 -3
  142. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.d.ts.map +0 -1
  143. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.js +0 -121
  144. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.js.map +0 -1
  145. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.d.ts +0 -3
  146. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.d.ts.map +0 -1
  147. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.js +0 -121
  148. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.js.map +0 -1
  149. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.d.ts +0 -3
  150. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.d.ts.map +0 -1
  151. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.js +0 -181
  152. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.js.map +0 -1
  153. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.d.ts +0 -3
  154. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.d.ts.map +0 -1
  155. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.js +0 -117
  156. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.js.map +0 -1
  157. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.d.ts +0 -3
  158. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.d.ts.map +0 -1
  159. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.js +0 -112
  160. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.js.map +0 -1
  161. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.d.ts +0 -3
  162. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.d.ts.map +0 -1
  163. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.js +0 -130
  164. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.js.map +0 -1
  165. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.d.ts +0 -3
  166. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.d.ts.map +0 -1
  167. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.js +0 -230
  168. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.js.map +0 -1
  169. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.d.ts +0 -3
  170. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.d.ts.map +0 -1
  171. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.js +0 -120
  172. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.js.map +0 -1
  173. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.d.ts +0 -3
  174. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.d.ts.map +0 -1
  175. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.js +0 -195
  176. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.js.map +0 -1
  177. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.d.ts +0 -3
  178. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.d.ts.map +0 -1
  179. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.js +0 -110
  180. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.js.map +0 -1
  181. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.d.ts +0 -3
  182. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.d.ts.map +0 -1
  183. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.js +0 -122
  184. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.js.map +0 -1
  185. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.d.ts +0 -3
  186. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.d.ts.map +0 -1
  187. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.js +0 -295
  188. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.js.map +0 -1
  189. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.d.ts +0 -38
  190. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.d.ts.map +0 -1
  191. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.js +0 -242
  192. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.js.map +0 -1
  193. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts +0 -48
  194. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts.map +0 -1
  195. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.js +0 -137
  196. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.js.map +0 -1
  197. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.d.ts +0 -7
  198. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.d.ts.map +0 -1
  199. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.js +0 -2
  200. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.js.map +0 -1
  201. package/packages/@monomind/cli/bundled-graph/dist/src/index.d.ts +0 -28
  202. package/packages/@monomind/cli/bundled-graph/dist/src/index.d.ts.map +0 -1
  203. package/packages/@monomind/cli/bundled-graph/dist/src/index.js +0 -26
  204. package/packages/@monomind/cli/bundled-graph/dist/src/index.js.map +0 -1
  205. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.d.ts +0 -27
  206. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.d.ts.map +0 -1
  207. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.js +0 -269
  208. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.js.map +0 -1
  209. package/packages/@monomind/cli/bundled-graph/dist/src/report.d.ts +0 -26
  210. package/packages/@monomind/cli/bundled-graph/dist/src/report.d.ts.map +0 -1
  211. package/packages/@monomind/cli/bundled-graph/dist/src/report.js +0 -214
  212. package/packages/@monomind/cli/bundled-graph/dist/src/report.js.map +0 -1
  213. package/packages/@monomind/cli/bundled-graph/dist/src/types.d.ts +0 -124
  214. package/packages/@monomind/cli/bundled-graph/dist/src/types.d.ts.map +0 -1
  215. package/packages/@monomind/cli/bundled-graph/dist/src/types.js +0 -2
  216. package/packages/@monomind/cli/bundled-graph/dist/src/types.js.map +0 -1
  217. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.d.ts +0 -4
  218. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.d.ts.map +0 -1
  219. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.js +0 -574
  220. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.js.map +0 -1
  221. package/packages/@monomind/cli/dist/src/agents/halt-signal.d.ts +0 -25
  222. package/packages/@monomind/cli/dist/src/agents/halt-signal.js +0 -76
  223. package/packages/@monomind/cli/dist/src/agents/index.d.ts +0 -18
  224. package/packages/@monomind/cli/dist/src/agents/index.js +0 -13
  225. package/packages/@monomind/cli/dist/src/agents/managed-agent.d.ts +0 -41
  226. package/packages/@monomind/cli/dist/src/agents/managed-agent.js +0 -69
  227. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +0 -23
  228. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +0 -49
  229. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +0 -22
  230. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +0 -80
  231. package/packages/@monomind/cli/dist/src/agents/registry-builder.d.ts +0 -36
  232. package/packages/@monomind/cli/dist/src/agents/registry-builder.js +0 -200
  233. package/packages/@monomind/cli/dist/src/agents/registry-query.d.ts +0 -71
  234. package/packages/@monomind/cli/dist/src/agents/registry-query.js +0 -125
  235. package/packages/@monomind/cli/dist/src/agents/score-decay.d.ts +0 -19
  236. package/packages/@monomind/cli/dist/src/agents/score-decay.js +0 -22
  237. package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.d.ts +0 -13
  238. package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.js +0 -40
  239. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.d.ts +0 -54
  240. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +0 -212
  241. package/packages/@monomind/cli/dist/src/agents/termination-watcher.d.ts +0 -30
  242. package/packages/@monomind/cli/dist/src/agents/termination-watcher.js +0 -84
  243. package/packages/@monomind/cli/dist/src/agents/trigger-index.d.ts +0 -20
  244. package/packages/@monomind/cli/dist/src/agents/trigger-index.js +0 -38
  245. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +0 -64
  246. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +0 -308
  247. package/packages/@monomind/cli/dist/src/agents/version-diff.d.ts +0 -18
  248. package/packages/@monomind/cli/dist/src/agents/version-diff.js +0 -64
  249. package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +0 -60
  250. package/packages/@monomind/cli/dist/src/agents/version-store.js +0 -235
  251. package/packages/@monomind/cli/dist/src/autopilot-state.d.ts +0 -77
  252. package/packages/@monomind/cli/dist/src/autopilot-state.js +0 -330
  253. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +0 -87
  254. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +0 -273
  255. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.d.ts +0 -36
  256. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +0 -114
  257. package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.d.ts +0 -58
  258. package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.js +0 -404
  259. package/packages/@monomind/cli/dist/src/commands/agent-wasm.d.ts +0 -14
  260. package/packages/@monomind/cli/dist/src/commands/agent-wasm.js +0 -333
  261. package/packages/@monomind/cli/dist/src/commands/agent.d.ts +0 -8
  262. package/packages/@monomind/cli/dist/src/commands/agent.js +0 -943
  263. package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +0 -19
  264. package/packages/@monomind/cli/dist/src/commands/analyze.js +0 -2048
  265. package/packages/@monomind/cli/dist/src/commands/appliance-advanced.d.ts +0 -9
  266. package/packages/@monomind/cli/dist/src/commands/appliance-advanced.js +0 -238
  267. package/packages/@monomind/cli/dist/src/commands/appliance.d.ts +0 -8
  268. package/packages/@monomind/cli/dist/src/commands/appliance.js +0 -406
  269. package/packages/@monomind/cli/dist/src/commands/autopilot.d.ts +0 -15
  270. package/packages/@monomind/cli/dist/src/commands/autopilot.js +0 -362
  271. package/packages/@monomind/cli/dist/src/commands/benchmark.d.ts +0 -10
  272. package/packages/@monomind/cli/dist/src/commands/benchmark.js +0 -571
  273. package/packages/@monomind/cli/dist/src/commands/claims.d.ts +0 -10
  274. package/packages/@monomind/cli/dist/src/commands/claims.js +0 -632
  275. package/packages/@monomind/cli/dist/src/commands/cleanup.d.ts +0 -13
  276. package/packages/@monomind/cli/dist/src/commands/cleanup.js +0 -218
  277. package/packages/@monomind/cli/dist/src/commands/completions.d.ts +0 -10
  278. package/packages/@monomind/cli/dist/src/commands/completions.js +0 -539
  279. package/packages/@monomind/cli/dist/src/commands/config.d.ts +0 -8
  280. package/packages/@monomind/cli/dist/src/commands/config.js +0 -460
  281. package/packages/@monomind/cli/dist/src/commands/daemon.d.ts +0 -8
  282. package/packages/@monomind/cli/dist/src/commands/daemon.js +0 -671
  283. package/packages/@monomind/cli/dist/src/commands/deployment.d.ts +0 -10
  284. package/packages/@monomind/cli/dist/src/commands/deployment.js +0 -691
  285. package/packages/@monomind/cli/dist/src/commands/doctor.d.ts +0 -10
  286. package/packages/@monomind/cli/dist/src/commands/doctor.js +0 -647
  287. package/packages/@monomind/cli/dist/src/commands/embeddings.d.ts +0 -18
  288. package/packages/@monomind/cli/dist/src/commands/embeddings.js +0 -1652
  289. package/packages/@monomind/cli/dist/src/commands/guidance.d.ts +0 -8
  290. package/packages/@monomind/cli/dist/src/commands/guidance.js +0 -560
  291. package/packages/@monomind/cli/dist/src/commands/hive-mind.d.ts +0 -11
  292. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +0 -1238
  293. package/packages/@monomind/cli/dist/src/commands/hooks.d.ts +0 -8
  294. package/packages/@monomind/cli/dist/src/commands/hooks.js +0 -4446
  295. package/packages/@monomind/cli/dist/src/commands/index.d.ts +0 -119
  296. package/packages/@monomind/cli/dist/src/commands/index.js +0 -404
  297. package/packages/@monomind/cli/dist/src/commands/init.d.ts +0 -8
  298. package/packages/@monomind/cli/dist/src/commands/init.js +0 -853
  299. package/packages/@monomind/cli/dist/src/commands/issues.d.ts +0 -21
  300. package/packages/@monomind/cli/dist/src/commands/issues.js +0 -567
  301. package/packages/@monomind/cli/dist/src/commands/mcp.d.ts +0 -11
  302. package/packages/@monomind/cli/dist/src/commands/mcp.js +0 -705
  303. package/packages/@monomind/cli/dist/src/commands/memory.d.ts +0 -8
  304. package/packages/@monomind/cli/dist/src/commands/memory.js +0 -1596
  305. package/packages/@monomind/cli/dist/src/commands/migrate.d.ts +0 -8
  306. package/packages/@monomind/cli/dist/src/commands/migrate.js +0 -790
  307. package/packages/@monomind/cli/dist/src/commands/monograph.d.ts +0 -8
  308. package/packages/@monomind/cli/dist/src/commands/monograph.js +0 -526
  309. package/packages/@monomind/cli/dist/src/commands/neural.d.ts +0 -10
  310. package/packages/@monomind/cli/dist/src/commands/neural.js +0 -1494
  311. package/packages/@monomind/cli/dist/src/commands/performance.d.ts +0 -10
  312. package/packages/@monomind/cli/dist/src/commands/performance.js +0 -601
  313. package/packages/@monomind/cli/dist/src/commands/plugins.d.ts +0 -11
  314. package/packages/@monomind/cli/dist/src/commands/plugins.js +0 -796
  315. package/packages/@monomind/cli/dist/src/commands/process.d.ts +0 -10
  316. package/packages/@monomind/cli/dist/src/commands/process.js +0 -718
  317. package/packages/@monomind/cli/dist/src/commands/progress.d.ts +0 -11
  318. package/packages/@monomind/cli/dist/src/commands/progress.js +0 -259
  319. package/packages/@monomind/cli/dist/src/commands/providers.d.ts +0 -10
  320. package/packages/@monomind/cli/dist/src/commands/providers.js +0 -391
  321. package/packages/@monomind/cli/dist/src/commands/replay.d.ts +0 -8
  322. package/packages/@monomind/cli/dist/src/commands/replay.js +0 -60
  323. package/packages/@monomind/cli/dist/src/commands/route.d.ts +0 -16
  324. package/packages/@monomind/cli/dist/src/commands/route.js +0 -939
  325. package/packages/@monomind/cli/dist/src/commands/ruvector/backup.d.ts +0 -11
  326. package/packages/@monomind/cli/dist/src/commands/ruvector/backup.js +0 -746
  327. package/packages/@monomind/cli/dist/src/commands/ruvector/benchmark.d.ts +0 -11
  328. package/packages/@monomind/cli/dist/src/commands/ruvector/benchmark.js +0 -489
  329. package/packages/@monomind/cli/dist/src/commands/ruvector/import.d.ts +0 -18
  330. package/packages/@monomind/cli/dist/src/commands/ruvector/import.js +0 -359
  331. package/packages/@monomind/cli/dist/src/commands/ruvector/index.d.ts +0 -29
  332. package/packages/@monomind/cli/dist/src/commands/ruvector/index.js +0 -129
  333. package/packages/@monomind/cli/dist/src/commands/ruvector/init.d.ts +0 -11
  334. package/packages/@monomind/cli/dist/src/commands/ruvector/init.js +0 -481
  335. package/packages/@monomind/cli/dist/src/commands/ruvector/migrate.d.ts +0 -11
  336. package/packages/@monomind/cli/dist/src/commands/ruvector/migrate.js +0 -497
  337. package/packages/@monomind/cli/dist/src/commands/ruvector/optimize.d.ts +0 -11
  338. package/packages/@monomind/cli/dist/src/commands/ruvector/optimize.js +0 -504
  339. package/packages/@monomind/cli/dist/src/commands/ruvector/setup.d.ts +0 -18
  340. package/packages/@monomind/cli/dist/src/commands/ruvector/setup.js +0 -765
  341. package/packages/@monomind/cli/dist/src/commands/ruvector/status.d.ts +0 -11
  342. package/packages/@monomind/cli/dist/src/commands/ruvector/status.js +0 -491
  343. package/packages/@monomind/cli/dist/src/commands/security.d.ts +0 -10
  344. package/packages/@monomind/cli/dist/src/commands/security.js +0 -943
  345. package/packages/@monomind/cli/dist/src/commands/session.d.ts +0 -8
  346. package/packages/@monomind/cli/dist/src/commands/session.js +0 -793
  347. package/packages/@monomind/cli/dist/src/commands/start.d.ts +0 -8
  348. package/packages/@monomind/cli/dist/src/commands/start.js +0 -432
  349. package/packages/@monomind/cli/dist/src/commands/status.d.ts +0 -8
  350. package/packages/@monomind/cli/dist/src/commands/status.js +0 -591
  351. package/packages/@monomind/cli/dist/src/commands/swarm.d.ts +0 -8
  352. package/packages/@monomind/cli/dist/src/commands/swarm.js +0 -812
  353. package/packages/@monomind/cli/dist/src/commands/task.d.ts +0 -8
  354. package/packages/@monomind/cli/dist/src/commands/task.js +0 -671
  355. package/packages/@monomind/cli/dist/src/commands/tokens.d.ts +0 -8
  356. package/packages/@monomind/cli/dist/src/commands/tokens.js +0 -107
  357. package/packages/@monomind/cli/dist/src/commands/transfer-store.d.ts +0 -13
  358. package/packages/@monomind/cli/dist/src/commands/transfer-store.js +0 -428
  359. package/packages/@monomind/cli/dist/src/commands/ui.js +0 -68
  360. package/packages/@monomind/cli/dist/src/commands/update.d.ts +0 -8
  361. package/packages/@monomind/cli/dist/src/commands/update.js +0 -276
  362. package/packages/@monomind/cli/dist/src/commands/workflow.d.ts +0 -8
  363. package/packages/@monomind/cli/dist/src/commands/workflow.js +0 -644
  364. package/packages/@monomind/cli/dist/src/config-adapter.d.ts +0 -16
  365. package/packages/@monomind/cli/dist/src/config-adapter.js +0 -186
  366. package/packages/@monomind/cli/dist/src/consensus/audit-writer.d.ts +0 -50
  367. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +0 -142
  368. package/packages/@monomind/cli/dist/src/consensus/index.d.ts +0 -7
  369. package/packages/@monomind/cli/dist/src/consensus/index.js +0 -6
  370. package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +0 -36
  371. package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +0 -71
  372. package/packages/@monomind/cli/dist/src/context/context-provider.d.ts +0 -44
  373. package/packages/@monomind/cli/dist/src/context/context-provider.js +0 -25
  374. package/packages/@monomind/cli/dist/src/context/git-state-provider.d.ts +0 -12
  375. package/packages/@monomind/cli/dist/src/context/git-state-provider.js +0 -34
  376. package/packages/@monomind/cli/dist/src/context/index.d.ts +0 -12
  377. package/packages/@monomind/cli/dist/src/context/index.js +0 -12
  378. package/packages/@monomind/cli/dist/src/context/project-conventions-provider.d.ts +0 -15
  379. package/packages/@monomind/cli/dist/src/context/project-conventions-provider.js +0 -19
  380. package/packages/@monomind/cli/dist/src/context/prompt-assembler.d.ts +0 -26
  381. package/packages/@monomind/cli/dist/src/context/prompt-assembler.js +0 -93
  382. package/packages/@monomind/cli/dist/src/context/task-history-provider.d.ts +0 -24
  383. package/packages/@monomind/cli/dist/src/context/task-history-provider.js +0 -32
  384. package/packages/@monomind/cli/dist/src/context/user-preferences-provider.d.ts +0 -14
  385. package/packages/@monomind/cli/dist/src/context/user-preferences-provider.js +0 -27
  386. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +0 -31
  387. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +0 -81
  388. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +0 -27
  389. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.js +0 -90
  390. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.d.ts +0 -24
  391. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +0 -65
  392. package/packages/@monomind/cli/dist/src/dlq/index.d.ts +0 -10
  393. package/packages/@monomind/cli/dist/src/dlq/index.js +0 -7
  394. package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +0 -33
  395. package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +0 -107
  396. package/packages/@monomind/cli/dist/src/eval/dataset-runner.d.ts +0 -23
  397. package/packages/@monomind/cli/dist/src/eval/dataset-runner.js +0 -59
  398. package/packages/@monomind/cli/dist/src/eval/index.d.ts +0 -10
  399. package/packages/@monomind/cli/dist/src/eval/index.js +0 -7
  400. package/packages/@monomind/cli/dist/src/eval/trace-collector.d.ts +0 -40
  401. package/packages/@monomind/cli/dist/src/eval/trace-collector.js +0 -102
  402. package/packages/@monomind/cli/dist/src/index.d.ts +0 -82
  403. package/packages/@monomind/cli/dist/src/index.js +0 -580
  404. package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
  405. package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.js +0 -264
  406. package/packages/@monomind/cli/dist/src/init/claudemd-generator.d.ts +0 -25
  407. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +0 -558
  408. package/packages/@monomind/cli/dist/src/init/executor.d.ts +0 -38
  409. package/packages/@monomind/cli/dist/src/init/executor.js +0 -2172
  410. package/packages/@monomind/cli/dist/src/init/helpers-generator.d.ts +0 -60
  411. package/packages/@monomind/cli/dist/src/init/helpers-generator.js +0 -1235
  412. package/packages/@monomind/cli/dist/src/init/index.d.ts +0 -13
  413. package/packages/@monomind/cli/dist/src/init/index.js +0 -15
  414. package/packages/@monomind/cli/dist/src/init/mcp-generator.d.ts +0 -26
  415. package/packages/@monomind/cli/dist/src/init/mcp-generator.js +0 -99
  416. package/packages/@monomind/cli/dist/src/init/settings-generator.d.ts +0 -14
  417. package/packages/@monomind/cli/dist/src/init/settings-generator.js +0 -417
  418. package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.d.ts +0 -38
  419. package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +0 -586
  420. package/packages/@monomind/cli/dist/src/init/statusline-generator.d.ts +0 -25
  421. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +0 -1159
  422. package/packages/@monomind/cli/dist/src/init/types.d.ts +0 -315
  423. package/packages/@monomind/cli/dist/src/init/types.js +0 -254
  424. package/packages/@monomind/cli/dist/src/interactive/interrupt.d.ts +0 -22
  425. package/packages/@monomind/cli/dist/src/interactive/interrupt.js +0 -71
  426. package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.d.ts +0 -25
  427. package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.js +0 -48
  428. package/packages/@monomind/cli/dist/src/mcp/tool-registry.d.ts +0 -61
  429. package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +0 -246
  430. package/packages/@monomind/cli/dist/src/mcp-client.d.ts +0 -92
  431. package/packages/@monomind/cli/dist/src/mcp-client.js +0 -270
  432. package/packages/@monomind/cli/dist/src/mcp-server.d.ts +0 -170
  433. package/packages/@monomind/cli/dist/src/mcp-server.js +0 -829
  434. package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.d.ts +0 -14
  435. package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.js +0 -244
  436. package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.d.ts +0 -9
  437. package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +0 -607
  438. package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.d.ts +0 -30
  439. package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.js +0 -596
  440. package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.d.ts +0 -38
  441. package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +0 -326
  442. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.d.ts +0 -83
  443. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +0 -129
  444. package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.d.ts +0 -12
  445. package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +0 -237
  446. package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.d.ts +0 -13
  447. package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +0 -729
  448. package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.d.ts +0 -12
  449. package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +0 -797
  450. package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.d.ts +0 -8
  451. package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +0 -381
  452. package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.d.ts +0 -13
  453. package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +0 -728
  454. package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.d.ts +0 -13
  455. package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +0 -509
  456. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.d.ts +0 -9
  457. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +0 -823
  458. package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.d.ts +0 -9
  459. package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +0 -485
  460. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.d.ts +0 -10
  461. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +0 -49
  462. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.d.ts +0 -15
  463. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +0 -646
  464. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -8
  465. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +0 -957
  466. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.d.ts +0 -44
  467. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +0 -3440
  468. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -39
  469. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -41
  470. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.d.ts +0 -14
  471. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +0 -530
  472. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +0 -9
  473. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +0 -6306
  474. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.d.ts +0 -16
  475. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +0 -718
  476. package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.d.ts +0 -16
  477. package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +0 -656
  478. package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.d.ts +0 -14
  479. package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +0 -350
  480. package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.d.ts +0 -17
  481. package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +0 -30
  482. package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.d.ts +0 -9
  483. package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.js +0 -295
  484. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.d.ts +0 -18
  485. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +0 -434
  486. package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.d.ts +0 -8
  487. package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +0 -378
  488. package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.d.ts +0 -9
  489. package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +0 -317
  490. package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.d.ts +0 -13
  491. package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +0 -552
  492. package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.d.ts +0 -8
  493. package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +0 -446
  494. package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.d.ts +0 -8
  495. package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +0 -309
  496. package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.d.ts +0 -14
  497. package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +0 -401
  498. package/packages/@monomind/cli/dist/src/mcp-tools/types.d.ts +0 -37
  499. package/packages/@monomind/cli/dist/src/mcp-tools/types.js +0 -14
  500. package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.d.ts +0 -9
  501. package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.js +0 -230
  502. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  503. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +0 -631
  504. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.d.ts +0 -295
  505. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +0 -632
  506. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +0 -338
  507. package/packages/@monomind/cli/dist/src/memory/intelligence.js +0 -1049
  508. package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +0 -410
  509. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +0 -1654
  510. package/packages/@monomind/cli/dist/src/memory/memory-initializer.d.ts +0 -414
  511. package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +0 -2284
  512. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +0 -234
  513. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +0 -650
  514. package/packages/@monomind/cli/dist/src/model/complexity-scorer.d.ts +0 -21
  515. package/packages/@monomind/cli/dist/src/model/complexity-scorer.js +0 -106
  516. package/packages/@monomind/cli/dist/src/model/index.d.ts +0 -4
  517. package/packages/@monomind/cli/dist/src/model/index.js +0 -4
  518. package/packages/@monomind/cli/dist/src/model/model-settings.d.ts +0 -22
  519. package/packages/@monomind/cli/dist/src/model/model-settings.js +0 -33
  520. package/packages/@monomind/cli/dist/src/model/model-tier-resolver.d.ts +0 -24
  521. package/packages/@monomind/cli/dist/src/model/model-tier-resolver.js +0 -65
  522. package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +0 -40
  523. package/packages/@monomind/cli/dist/src/observability/replay-reader.js +0 -138
  524. package/packages/@monomind/cli/dist/src/orchestration/index.d.ts +0 -7
  525. package/packages/@monomind/cli/dist/src/orchestration/index.js +0 -6
  526. package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.d.ts +0 -11
  527. package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.js +0 -31
  528. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.d.ts +0 -68
  529. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +0 -180
  530. package/packages/@monomind/cli/dist/src/output.d.ts +0 -133
  531. package/packages/@monomind/cli/dist/src/output.js +0 -514
  532. package/packages/@monomind/cli/dist/src/parser.d.ts +0 -59
  533. package/packages/@monomind/cli/dist/src/parser.js +0 -459
  534. package/packages/@monomind/cli/dist/src/plugins/manager.d.ts +0 -133
  535. package/packages/@monomind/cli/dist/src/plugins/manager.js +0 -493
  536. package/packages/@monomind/cli/dist/src/plugins/store/discovery.d.ts +0 -88
  537. package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +0 -859
  538. package/packages/@monomind/cli/dist/src/plugins/store/index.d.ts +0 -76
  539. package/packages/@monomind/cli/dist/src/plugins/store/index.js +0 -141
  540. package/packages/@monomind/cli/dist/src/plugins/store/search.d.ts +0 -46
  541. package/packages/@monomind/cli/dist/src/plugins/store/search.js +0 -230
  542. package/packages/@monomind/cli/dist/src/plugins/store/types.d.ts +0 -274
  543. package/packages/@monomind/cli/dist/src/plugins/store/types.js +0 -7
  544. package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
  545. package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.js +0 -126
  546. package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.d.ts +0 -12
  547. package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.js +0 -188
  548. package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
  549. package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.js +0 -206
  550. package/packages/@monomind/cli/dist/src/production/circuit-breaker.d.ts +0 -101
  551. package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +0 -248
  552. package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +0 -94
  553. package/packages/@monomind/cli/dist/src/production/error-handler.js +0 -321
  554. package/packages/@monomind/cli/dist/src/production/index.d.ts +0 -23
  555. package/packages/@monomind/cli/dist/src/production/index.js +0 -18
  556. package/packages/@monomind/cli/dist/src/production/monitoring.d.ts +0 -161
  557. package/packages/@monomind/cli/dist/src/production/monitoring.js +0 -360
  558. package/packages/@monomind/cli/dist/src/production/rate-limiter.d.ts +0 -80
  559. package/packages/@monomind/cli/dist/src/production/rate-limiter.js +0 -209
  560. package/packages/@monomind/cli/dist/src/production/retry.d.ts +0 -48
  561. package/packages/@monomind/cli/dist/src/production/retry.js +0 -179
  562. package/packages/@monomind/cli/dist/src/prompt.d.ts +0 -44
  563. package/packages/@monomind/cli/dist/src/prompt.js +0 -501
  564. package/packages/@monomind/cli/dist/src/runtime/headless.d.ts +0 -60
  565. package/packages/@monomind/cli/dist/src/runtime/headless.js +0 -284
  566. package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.d.ts +0 -182
  567. package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.js +0 -316
  568. package/packages/@monomind/cli/dist/src/ruvector/ast-analyzer.d.ts +0 -67
  569. package/packages/@monomind/cli/dist/src/ruvector/ast-analyzer.js +0 -277
  570. package/packages/@monomind/cli/dist/src/ruvector/coverage-router.d.ts +0 -160
  571. package/packages/@monomind/cli/dist/src/ruvector/coverage-router.js +0 -539
  572. package/packages/@monomind/cli/dist/src/ruvector/coverage-tools.d.ts +0 -33
  573. package/packages/@monomind/cli/dist/src/ruvector/coverage-tools.js +0 -157
  574. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.d.ts +0 -176
  575. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.js +0 -718
  576. package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.d.ts +0 -146
  577. package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.js +0 -551
  578. package/packages/@monomind/cli/dist/src/ruvector/flash-attention.d.ts +0 -195
  579. package/packages/@monomind/cli/dist/src/ruvector/flash-attention.js +0 -643
  580. package/packages/@monomind/cli/dist/src/ruvector/graph-analyzer.d.ts +0 -187
  581. package/packages/@monomind/cli/dist/src/ruvector/graph-analyzer.js +0 -929
  582. package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +0 -39
  583. package/packages/@monomind/cli/dist/src/ruvector/index.js +0 -76
  584. package/packages/@monomind/cli/dist/src/ruvector/lora-adapter.d.ts +0 -218
  585. package/packages/@monomind/cli/dist/src/ruvector/lora-adapter.js +0 -455
  586. package/packages/@monomind/cli/dist/src/ruvector/model-router.d.ts +0 -222
  587. package/packages/@monomind/cli/dist/src/ruvector/model-router.js +0 -512
  588. package/packages/@monomind/cli/dist/src/ruvector/moe-router.d.ts +0 -213
  589. package/packages/@monomind/cli/dist/src/ruvector/moe-router.js +0 -649
  590. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.d.ts +0 -217
  591. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.js +0 -712
  592. package/packages/@monomind/cli/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
  593. package/packages/@monomind/cli/dist/src/ruvector/ruvllm-wasm.js +0 -363
  594. package/packages/@monomind/cli/dist/src/ruvector/semantic-router.d.ts +0 -77
  595. package/packages/@monomind/cli/dist/src/ruvector/semantic-router.js +0 -178
  596. package/packages/@monomind/cli/dist/src/ruvector/vector-db.d.ts +0 -69
  597. package/packages/@monomind/cli/dist/src/ruvector/vector-db.js +0 -243
  598. package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.d.ts +0 -50
  599. package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.js +0 -95
  600. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +0 -206
  601. package/packages/@monomind/cli/dist/src/services/claim-service.js +0 -849
  602. package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +0 -51
  603. package/packages/@monomind/cli/dist/src/services/config-file-manager.js +0 -312
  604. package/packages/@monomind/cli/dist/src/services/container-worker-pool.d.ts +0 -197
  605. package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +0 -623
  606. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +0 -311
  607. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +0 -1167
  608. package/packages/@monomind/cli/dist/src/services/index.d.ts +0 -13
  609. package/packages/@monomind/cli/dist/src/services/index.js +0 -11
  610. package/packages/@monomind/cli/dist/src/services/registry-api.d.ts +0 -58
  611. package/packages/@monomind/cli/dist/src/services/registry-api.js +0 -199
  612. package/packages/@monomind/cli/dist/src/services/ruvector-training.d.ts +0 -222
  613. package/packages/@monomind/cli/dist/src/services/ruvector-training.js +0 -696
  614. package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +0 -248
  615. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +0 -1083
  616. package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +0 -201
  617. package/packages/@monomind/cli/dist/src/services/worker-queue.js +0 -594
  618. package/packages/@monomind/cli/dist/src/suggest.d.ts +0 -53
  619. package/packages/@monomind/cli/dist/src/suggest.js +0 -209
  620. package/packages/@monomind/cli/dist/src/swarm/communication-graph.d.ts +0 -25
  621. package/packages/@monomind/cli/dist/src/swarm/communication-graph.js +0 -77
  622. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +0 -31
  623. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +0 -61
  624. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +0 -19
  625. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +0 -68
  626. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.d.ts +0 -25
  627. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +0 -177
  628. package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.d.ts +0 -13
  629. package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.js +0 -205
  630. package/packages/@monomind/cli/dist/src/transfer/export.d.ts +0 -25
  631. package/packages/@monomind/cli/dist/src/transfer/export.js +0 -115
  632. package/packages/@monomind/cli/dist/src/transfer/index.d.ts +0 -12
  633. package/packages/@monomind/cli/dist/src/transfer/index.js +0 -31
  634. package/packages/@monomind/cli/dist/src/transfer/ipfs/client.d.ts +0 -109
  635. package/packages/@monomind/cli/dist/src/transfer/ipfs/client.js +0 -384
  636. package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.d.ts +0 -95
  637. package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +0 -420
  638. package/packages/@monomind/cli/dist/src/transfer/models/seraphine.d.ts +0 -72
  639. package/packages/@monomind/cli/dist/src/transfer/models/seraphine.js +0 -373
  640. package/packages/@monomind/cli/dist/src/transfer/serialization/cfp.d.ts +0 -49
  641. package/packages/@monomind/cli/dist/src/transfer/serialization/cfp.js +0 -183
  642. package/packages/@monomind/cli/dist/src/transfer/storage/gcs.d.ts +0 -82
  643. package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +0 -281
  644. package/packages/@monomind/cli/dist/src/transfer/storage/index.d.ts +0 -6
  645. package/packages/@monomind/cli/dist/src/transfer/storage/index.js +0 -6
  646. package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +0 -91
  647. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +0 -437
  648. package/packages/@monomind/cli/dist/src/transfer/store/download.d.ts +0 -79
  649. package/packages/@monomind/cli/dist/src/transfer/store/download.js +0 -423
  650. package/packages/@monomind/cli/dist/src/transfer/store/index.d.ts +0 -84
  651. package/packages/@monomind/cli/dist/src/transfer/store/index.js +0 -153
  652. package/packages/@monomind/cli/dist/src/transfer/store/publish.d.ts +0 -76
  653. package/packages/@monomind/cli/dist/src/transfer/store/publish.js +0 -293
  654. package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +0 -58
  655. package/packages/@monomind/cli/dist/src/transfer/store/registry.js +0 -301
  656. package/packages/@monomind/cli/dist/src/transfer/store/search.d.ts +0 -54
  657. package/packages/@monomind/cli/dist/src/transfer/store/search.js +0 -232
  658. package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.d.ts +0 -12
  659. package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.js +0 -190
  660. package/packages/@monomind/cli/dist/src/transfer/store/types.d.ts +0 -193
  661. package/packages/@monomind/cli/dist/src/transfer/store/types.js +0 -6
  662. package/packages/@monomind/cli/dist/src/transfer/test-seraphine.d.ts +0 -6
  663. package/packages/@monomind/cli/dist/src/transfer/test-seraphine.js +0 -105
  664. package/packages/@monomind/cli/dist/src/transfer/tests/test-store.d.ts +0 -7
  665. package/packages/@monomind/cli/dist/src/transfer/tests/test-store.js +0 -214
  666. package/packages/@monomind/cli/dist/src/transfer/types.d.ts +0 -245
  667. package/packages/@monomind/cli/dist/src/transfer/types.js +0 -6
  668. package/packages/@monomind/cli/dist/src/types.d.ts +0 -198
  669. package/packages/@monomind/cli/dist/src/types.js +0 -38
  670. package/packages/@monomind/cli/dist/src/update/checker.d.ts +0 -34
  671. package/packages/@monomind/cli/dist/src/update/checker.js +0 -198
  672. package/packages/@monomind/cli/dist/src/update/executor.d.ts +0 -32
  673. package/packages/@monomind/cli/dist/src/update/executor.js +0 -186
  674. package/packages/@monomind/cli/dist/src/update/index.d.ts +0 -33
  675. package/packages/@monomind/cli/dist/src/update/index.js +0 -64
  676. package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +0 -31
  677. package/packages/@monomind/cli/dist/src/update/rate-limiter.js +0 -116
  678. package/packages/@monomind/cli/dist/src/update/validator.d.ts +0 -17
  679. package/packages/@monomind/cli/dist/src/update/validator.js +0 -118
  680. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.d.ts +0 -6
  681. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.js +0 -22
  682. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.d.ts +0 -10
  683. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +0 -82
  684. package/packages/@monomind/cli/dist/src/workflow/context-resolver.d.ts +0 -12
  685. package/packages/@monomind/cli/dist/src/workflow/context-resolver.js +0 -23
  686. package/packages/@monomind/cli/dist/src/workflow/dag-builder.d.ts +0 -17
  687. package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +0 -129
  688. package/packages/@monomind/cli/dist/src/workflow/dag-executor.d.ts +0 -9
  689. package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +0 -116
  690. package/packages/@monomind/cli/dist/src/workflow/dag-types.d.ts +0 -41
  691. package/packages/@monomind/cli/dist/src/workflow/dag-types.js +0 -8
  692. package/packages/@monomind/cli/dist/src/workflow/dsl-parser.d.ts +0 -12
  693. package/packages/@monomind/cli/dist/src/workflow/dsl-parser.js +0 -20
  694. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +0 -165
  695. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +0 -82
  696. package/packages/@monomind/cli/dist/src/workflow/index.d.ts +0 -13
  697. package/packages/@monomind/cli/dist/src/workflow/index.js +0 -11
  698. package/packages/@monomind/cli/dist/src/workflow/template-engine.d.ts +0 -11
  699. package/packages/@monomind/cli/dist/src/workflow/template-engine.js +0 -40
  700. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.d.ts +0 -29
  701. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +0 -227
@@ -1,943 +0,0 @@
1
- /**
2
- * CLI Security Command
3
- * Security scanning, CVE detection, threat modeling, vulnerability management
4
- *
5
- * github.com/nokhodian/monomind
6
- */
7
- import { output } from '../output.js';
8
- import { existsSync, statSync, readFileSync, writeFileSync, renameSync, mkdirSync, realpathSync } from 'fs';
9
- import { join } from 'path';
10
- import { execFile } from 'child_process';
11
- import { promisify } from 'util';
12
- import * as https from 'https';
13
- // Scan subcommand
14
- const scanCommand = {
15
- name: 'scan',
16
- description: 'Run security scan on target (code, dependencies, containers)',
17
- options: [
18
- { name: 'target', short: 't', type: 'string', description: 'Target path or URL to scan', default: '.' },
19
- { name: 'depth', short: 'd', type: 'string', description: 'Scan depth: quick, standard, deep', default: 'standard' },
20
- { name: 'type', type: 'string', description: 'Scan type: code, deps, container, all', default: 'all' },
21
- { name: 'output', short: 'o', type: 'string', description: 'Output format: text, json, sarif', default: 'text' },
22
- { name: 'fix', short: 'f', type: 'boolean', description: 'Auto-fix vulnerabilities where possible' },
23
- ],
24
- examples: [
25
- { command: 'monomind security scan -t ./src', description: 'Scan source directory' },
26
- { command: 'monomind security scan --depth deep --fix', description: 'Deep scan with auto-fix' },
27
- ],
28
- action: async (ctx) => {
29
- const target = ctx.flags.target || '.';
30
- const depth = ctx.flags.depth || 'standard';
31
- const scanType = ctx.flags.type || 'all';
32
- const fix = ctx.flags.fix;
33
- output.writeln();
34
- output.writeln(output.bold('Security Scan'));
35
- output.writeln(output.dim('─'.repeat(50)));
36
- const spinner = output.createSpinner({ text: `Scanning ${target}...`, spinner: 'dots' });
37
- spinner.start();
38
- const findings = [];
39
- let criticalCount = 0, highCount = 0, mediumCount = 0, lowCount = 0;
40
- try {
41
- const fs = await import('fs');
42
- const path = await import('path');
43
- const { execSync } = await import('child_process');
44
- // Phase 1: npm audit for dependency vulnerabilities
45
- if (scanType === 'all' || scanType === 'deps') {
46
- spinner.setText('Checking dependencies with npm audit...');
47
- try {
48
- const packageJsonPath = path.resolve(target, 'package.json');
49
- if (fs.existsSync(packageJsonPath)) {
50
- let auditResult;
51
- try {
52
- auditResult = execSync('npm audit --json', {
53
- cwd: path.resolve(target),
54
- encoding: 'utf-8',
55
- maxBuffer: 10 * 1024 * 1024,
56
- stdio: ['pipe', 'pipe', 'pipe'],
57
- timeout: 30_000,
58
- });
59
- }
60
- catch (auditErr) {
61
- // npm audit exits non-zero when vulnerabilities found — stdout still has JSON
62
- auditResult = auditErr.stdout || '{}';
63
- }
64
- try {
65
- const audit = JSON.parse(auditResult);
66
- if (audit.vulnerabilities) {
67
- for (const [pkg, vuln] of Object.entries(audit.vulnerabilities)) {
68
- const sev = vuln.severity || 'low';
69
- const firstVia = Array.isArray(vuln.via) ? vuln.via[0] : undefined;
70
- const title = firstVia && typeof firstVia === 'object' && firstVia.title ? firstVia.title : 'Vulnerability';
71
- if (sev === 'critical')
72
- criticalCount++;
73
- else if (sev === 'high')
74
- highCount++;
75
- else if (sev === 'moderate' || sev === 'medium')
76
- mediumCount++;
77
- else
78
- lowCount++;
79
- findings.push({
80
- severity: sev === 'critical' ? output.error('CRITICAL') :
81
- sev === 'high' ? output.warning('HIGH') :
82
- sev === 'moderate' || sev === 'medium' ? output.warning('MEDIUM') : output.info('LOW'),
83
- type: 'Dependency CVE',
84
- location: `package.json:${pkg}`,
85
- description: title.substring(0, 35),
86
- });
87
- }
88
- }
89
- }
90
- catch { /* JSON parse failed, no vulns */ }
91
- }
92
- }
93
- catch { /* npm audit failed */ }
94
- }
95
- // Phase 2: Scan for hardcoded secrets
96
- if (scanType === 'all' || scanType === 'code') {
97
- spinner.setText('Scanning for hardcoded secrets...');
98
- const secretPatterns = [
99
- { pattern: /['"](?:sk-|sk_live_|sk_test_)[a-zA-Z0-9]{20,}['"]/g, type: 'API Key (Stripe/OpenAI)' },
100
- { pattern: /['"]AKIA[A-Z0-9]{16}['"]/g, type: 'AWS Access Key' },
101
- { pattern: /['"]ghp_[a-zA-Z0-9]{36}['"]/g, type: 'GitHub Token' },
102
- { pattern: /['"]xox[baprs]-[a-zA-Z0-9-]+['"]/g, type: 'Slack Token' },
103
- { pattern: /password\s*[:=]\s*['"][^'"]{8,}['"]/gi, type: 'Hardcoded Password' },
104
- ];
105
- const scanDir = (dir, depthLimit) => {
106
- if (depthLimit <= 0)
107
- return;
108
- try {
109
- const entries = fs.readdirSync(dir, { withFileTypes: true });
110
- for (const entry of entries) {
111
- const isDotEnv = /^\.env(\..+)?$/.test(entry.name);
112
- if ((entry.name.startsWith('.') && !isDotEnv) || entry.name === 'node_modules' || entry.name === 'dist')
113
- continue;
114
- const fullPath = path.join(dir, entry.name);
115
- if (entry.isDirectory()) {
116
- scanDir(fullPath, depthLimit - 1);
117
- }
118
- else if (entry.isFile() && (/\.(ts|js|json|yml|yaml)$/.test(entry.name) || isDotEnv) && !entry.name.endsWith('.d.ts')) {
119
- try {
120
- const content = fs.readFileSync(fullPath, 'utf-8');
121
- const lines = content.split('\n');
122
- for (let i = 0; i < lines.length; i++) {
123
- for (const { pattern, type } of secretPatterns) {
124
- if (pattern.test(lines[i])) {
125
- highCount++;
126
- findings.push({
127
- severity: output.warning('HIGH'),
128
- type: 'Hardcoded Secret',
129
- location: `${path.relative(target, fullPath)}:${i + 1}`,
130
- description: type,
131
- });
132
- pattern.lastIndex = 0;
133
- }
134
- }
135
- }
136
- }
137
- catch { /* file read error */ }
138
- }
139
- }
140
- }
141
- catch { /* dir read error */ }
142
- };
143
- const scanDepth = depth === 'deep' ? 10 : depth === 'standard' ? 5 : 3;
144
- scanDir(path.resolve(target), scanDepth);
145
- }
146
- // Phase 3: Check for common security issues in code
147
- if ((scanType === 'all' || scanType === 'code') && depth !== 'quick') {
148
- spinner.setText('Analyzing code patterns...');
149
- const codePatterns = [
150
- { pattern: /eval\s*\(/g, type: 'Eval Usage', severity: 'medium', desc: 'eval() can execute arbitrary code' },
151
- { pattern: /innerHTML\s*=/g, type: 'innerHTML', severity: 'medium', desc: 'XSS risk with innerHTML' },
152
- { pattern: /dangerouslySetInnerHTML/g, type: 'React XSS', severity: 'medium', desc: 'React XSS risk' },
153
- { pattern: /child_process.*exec[^S]/g, type: 'Command Injection', severity: 'high', desc: 'Possible command injection' },
154
- { pattern: /\$\{.*\}.*sql|sql.*\$\{/gi, type: 'SQL Injection', severity: 'high', desc: 'Possible SQL injection' },
155
- ];
156
- const scanCodeDir = (dir, depthLimit) => {
157
- if (depthLimit <= 0)
158
- return;
159
- try {
160
- const entries = fs.readdirSync(dir, { withFileTypes: true });
161
- for (const entry of entries) {
162
- if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist')
163
- continue;
164
- const fullPath = path.join(dir, entry.name);
165
- if (entry.isDirectory()) {
166
- scanCodeDir(fullPath, depthLimit - 1);
167
- }
168
- else if (entry.isFile() && /\.(ts|js|tsx|jsx)$/.test(entry.name) && !entry.name.endsWith('.d.ts')) {
169
- try {
170
- const content = fs.readFileSync(fullPath, 'utf-8');
171
- const lines = content.split('\n');
172
- for (let i = 0; i < lines.length; i++) {
173
- for (const { pattern, type, severity, desc } of codePatterns) {
174
- if (pattern.test(lines[i])) {
175
- if (severity === 'high')
176
- highCount++;
177
- else
178
- mediumCount++;
179
- findings.push({
180
- severity: severity === 'high' ? output.warning('HIGH') : output.warning('MEDIUM'),
181
- type,
182
- location: `${path.relative(target, fullPath)}:${i + 1}`,
183
- description: desc,
184
- });
185
- pattern.lastIndex = 0;
186
- }
187
- }
188
- }
189
- }
190
- catch { /* file read error */ }
191
- }
192
- }
193
- }
194
- catch { /* dir read error */ }
195
- };
196
- const scanDepth = depth === 'deep' ? 10 : 5;
197
- scanCodeDir(path.resolve(target), scanDepth);
198
- }
199
- spinner.succeed('Scan complete');
200
- // Display results
201
- output.writeln();
202
- if (findings.length > 0) {
203
- output.printTable({
204
- columns: [
205
- { key: 'severity', header: 'Severity', width: 12 },
206
- { key: 'type', header: 'Type', width: 18 },
207
- { key: 'location', header: 'Location', width: 25 },
208
- { key: 'description', header: 'Description', width: 35 },
209
- ],
210
- data: findings.slice(0, 20), // Show first 20
211
- });
212
- if (findings.length > 20) {
213
- output.writeln(output.dim(`... and ${findings.length - 20} more issues`));
214
- }
215
- }
216
- else {
217
- output.writeln(output.success('No security issues found!'));
218
- }
219
- output.writeln();
220
- output.printBox([
221
- `Target: ${target}`,
222
- `Depth: ${depth}`,
223
- `Type: ${scanType}`,
224
- ``,
225
- `Critical: ${criticalCount} High: ${highCount} Medium: ${mediumCount} Low: ${lowCount}`,
226
- `Total Issues: ${findings.length}`,
227
- ].join('\n'), 'Scan Summary');
228
- // Auto-fix if requested
229
- if (fix && criticalCount + highCount > 0) {
230
- // Refuse --fix when target is outside cwd: `npm audit fix` runs lifecycle scripts
231
- // (pre/post-install) from the target directory's package.json, allowing arbitrary
232
- // code execution if the target was attacker-controlled.
233
- const resolvedTarget = realpathSync(path.resolve(target));
234
- const cwd = realpathSync(process.cwd());
235
- if (!resolvedTarget.startsWith(cwd + path.sep) && resolvedTarget !== cwd) {
236
- output.writeln();
237
- output.printError('--fix is only allowed when --target is within the current working directory');
238
- return { success: false };
239
- }
240
- output.writeln();
241
- const fixSpinner = output.createSpinner({ text: 'Attempting to fix vulnerabilities...', spinner: 'dots' });
242
- fixSpinner.start();
243
- try {
244
- try {
245
- execSync('npm audit fix', { cwd: resolvedTarget, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
246
- }
247
- catch { /* npm audit fix may exit non-zero */ }
248
- fixSpinner.succeed('Applied available fixes (run scan again to verify)');
249
- }
250
- catch {
251
- fixSpinner.fail('Some fixes could not be applied automatically');
252
- }
253
- }
254
- return { success: findings.length === 0 || (criticalCount === 0 && highCount === 0) };
255
- }
256
- catch (error) {
257
- spinner.fail('Scan failed');
258
- output.printError(`Error: ${error}`);
259
- return { success: false };
260
- }
261
- },
262
- };
263
- // ─── CVE helpers ────────────────────────────────────────────────────────────
264
- const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
265
- function getCveCache(cveId, cacheDir) {
266
- const filePath = join(cacheDir, `${cveId.toUpperCase()}.json`);
267
- if (!existsSync(filePath))
268
- return null;
269
- const stat = statSync(filePath);
270
- if (Date.now() - stat.mtimeMs > CACHE_TTL_MS)
271
- return null;
272
- try {
273
- return JSON.parse(readFileSync(filePath, 'utf8'));
274
- }
275
- catch {
276
- return null;
277
- }
278
- }
279
- const CVE_ID_RE = /^CVE-\d{4}-\d{4,}$/i;
280
- function saveCveCache(cveId, cacheDir, data) {
281
- if (!CVE_ID_RE.test(cveId))
282
- throw new Error('Invalid CVE ID');
283
- mkdirSync(cacheDir, { recursive: true });
284
- const dest = join(cacheDir, `${cveId.toUpperCase()}.json`);
285
- const tmp = dest + '.tmp';
286
- writeFileSync(tmp, JSON.stringify(data));
287
- renameSync(tmp, dest);
288
- }
289
- function httpsGet(url, timeoutMs = 10_000) {
290
- return new Promise((resolve, reject) => {
291
- const req = https.get(url, { headers: { 'User-Agent': 'monomind-cli/1.0' }, timeout: timeoutMs }, (res) => {
292
- if (res.statusCode !== 200) {
293
- req.destroy();
294
- reject(new Error(`HTTP ${res.statusCode}`));
295
- return;
296
- }
297
- let data = '';
298
- res.on('data', (chunk) => { data += chunk; });
299
- res.on('end', () => resolve(data));
300
- });
301
- req.on('timeout', () => req.destroy(new Error(`Request timed out after ${timeoutMs}ms`)));
302
- req.on('error', reject);
303
- });
304
- }
305
- function severityColor(severity, score) {
306
- const s = (severity || '').toUpperCase();
307
- const label = s + (score !== undefined ? ` (${score})` : '');
308
- if (s === 'CRITICAL')
309
- return output.error(label);
310
- if (s === 'HIGH')
311
- return output.warning(label);
312
- if (s === 'MEDIUM')
313
- return output.info(label);
314
- return output.dim(label || 'UNKNOWN');
315
- }
316
- const execFileAsync = promisify(execFile);
317
- // ─── CVE subcommand ──────────────────────────────────────────────────────────
318
- const cveCommand = {
319
- name: 'cve',
320
- description: 'Check CVEs via NVD/OSV or list project vulnerabilities via npm audit',
321
- options: [
322
- { name: 'check', short: 'c', type: 'string', description: 'Check specific CVE ID (e.g. CVE-2024-1234)' },
323
- { name: 'list', short: 'l', type: 'boolean', description: 'List all vulnerabilities via npm audit' },
324
- { name: 'severity', short: 's', type: 'string', description: 'Filter by severity: critical, high, medium, low' },
325
- { name: 'json', type: 'boolean', description: 'Output as JSON' },
326
- { name: 'no-cache', type: 'boolean', description: 'Skip cache and fetch fresh data' },
327
- ],
328
- examples: [
329
- { command: 'monomind security cve --list', description: 'List vulnerabilities from npm audit' },
330
- { command: 'monomind security cve -c CVE-2024-1234', description: 'Check specific CVE via NVD/OSV' },
331
- { command: 'monomind security cve --list --severity high', description: 'Show only high-severity issues' },
332
- ],
333
- action: async (ctx) => {
334
- const checkCve = ctx.flags.check;
335
- const doList = ctx.flags.list;
336
- const severityFilter = ctx.flags.severity?.toLowerCase();
337
- const jsonOutput = ctx.flags.json;
338
- const noCache = ctx.flags['no-cache'];
339
- output.writeln();
340
- output.writeln(output.bold('CVE / Vulnerability Scanner'));
341
- output.writeln(output.dim('─'.repeat(50)));
342
- // ── --check CVE-XXXX-YYYY ──────────────────────────────────────────────
343
- if (checkCve) {
344
- const CVE_PATTERN = /^CVE-\d{4}-\d{4,}$/i;
345
- if (!CVE_PATTERN.test(checkCve)) {
346
- output.writeln(output.error(`Invalid CVE ID format: "${checkCve}"`));
347
- output.writeln(output.dim('Expected format: CVE-YYYY-NNNN (e.g. CVE-2024-12345)'));
348
- return { success: false };
349
- }
350
- const cveId = checkCve.toUpperCase();
351
- const cacheDir = join(ctx.cwd, '.monomind', 'cache', 'cve');
352
- // Check cache first (unless --no-cache)
353
- let cveData = noCache ? null : getCveCache(cveId, cacheDir);
354
- let source = 'cache';
355
- if (!cveData) {
356
- const spinner = output.createSpinner({ text: `Fetching ${cveId} from NVD...`, spinner: 'dots' });
357
- spinner.start();
358
- // Try NVD first
359
- try {
360
- const nvdUrl = `https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=${cveId}`;
361
- const nvdRaw = await httpsGet(nvdUrl);
362
- cveData = { _source: 'nvd', ...JSON.parse(nvdRaw) };
363
- source = 'NVD';
364
- spinner.succeed(`Fetched from NVD`);
365
- }
366
- catch {
367
- spinner.setText(`NVD unavailable — trying OSV...`);
368
- // Fallback: OSV
369
- try {
370
- const osvUrl = `https://api.osv.dev/v1/vulns/${cveId}`;
371
- const osvRaw = await httpsGet(osvUrl);
372
- cveData = { _source: 'osv', ...JSON.parse(osvRaw) };
373
- source = 'OSV';
374
- spinner.succeed(`Fetched from OSV`);
375
- }
376
- catch {
377
- spinner.fail('Could not fetch CVE data');
378
- output.writeln(output.error('Could not fetch CVE data — check your network connection'));
379
- return { success: false };
380
- }
381
- }
382
- // Cache the result — only cache non-empty NVD responses
383
- const nvdVulns = cveData.vulnerabilities;
384
- if (!Array.isArray(nvdVulns) || nvdVulns.length > 0) {
385
- saveCveCache(cveId, cacheDir, cveData);
386
- }
387
- }
388
- // Parse and display
389
- const raw = cveData;
390
- if (jsonOutput) {
391
- output.writeln(JSON.stringify(raw, null, 2));
392
- return { success: true };
393
- }
394
- if (raw._source === 'nvd') {
395
- // NVD v2 parsing
396
- const vulns = raw.vulnerabilities;
397
- if (!vulns || vulns.length === 0) {
398
- output.writeln(output.warning(`No data found for ${cveId}`));
399
- return { success: true };
400
- }
401
- const cve = vulns[0].cve;
402
- const published = (cve.published || '').split('T')[0];
403
- const lastMod = (cve.lastModified || '').split('T')[0];
404
- const descriptions = cve.descriptions;
405
- const desc = descriptions?.find(d => d.lang === 'en')?.value || 'No description available';
406
- const metrics = cve.metrics;
407
- const cvssV31 = metrics?.cvssMetricV31;
408
- const cvssData = cvssV31?.[0]?.cvssData;
409
- const score = cvssData?.baseScore;
410
- const severity = cvssData?.baseSeverity || 'N/A';
411
- const references = cve.references;
412
- output.writeln();
413
- output.printBox([
414
- `CVE ID: ${cveId}`,
415
- `Source: ${source}`,
416
- `Published: ${published}`,
417
- `Last Modified: ${lastMod}`,
418
- `Severity: ${severityColor(severity, score)}`,
419
- ``,
420
- `Description:`,
421
- ` ${desc}`,
422
- ``,
423
- `References:`,
424
- ...(references || []).slice(0, 3).map(r => ` - ${r.url}`),
425
- ].join('\n'), 'CVE Details');
426
- }
427
- else {
428
- // OSV parsing
429
- const osv = raw;
430
- const osvId = osv.id || cveId;
431
- const summary = osv.summary || osv.details || 'No description available';
432
- const affected = osv.affected;
433
- const references = osv.references;
434
- output.writeln();
435
- const affectedLines = [];
436
- if (affected && affected.length > 0) {
437
- for (const a of affected.slice(0, 5)) {
438
- const pkgName = a.package?.name || 'unknown';
439
- const ecosystem = a.package?.ecosystem || '';
440
- affectedLines.push(` - ${pkgName}${ecosystem ? ` (${ecosystem})` : ''}`);
441
- }
442
- }
443
- output.printBox([
444
- `CVE ID: ${osvId}`,
445
- `Source: OSV (CVSS score: N/A)`,
446
- `Severity: N/A`,
447
- ``,
448
- `Description:`,
449
- ` ${summary}`,
450
- ...(affectedLines.length > 0 ? ['', 'Affected packages:', ...affectedLines] : []),
451
- ``,
452
- `References:`,
453
- ...(references || []).slice(0, 3).map(r => ` - ${r.url}`),
454
- ].join('\n'), 'CVE Details');
455
- }
456
- return { success: true };
457
- }
458
- // ── --list ─────────────────────────────────────────────────────────────
459
- if (doList) {
460
- const spinner = output.createSpinner({ text: 'Running npm audit...', spinner: 'dots' });
461
- spinner.start();
462
- let auditOutput = '';
463
- try {
464
- const { stdout } = await execFileAsync('npm', ['audit', '--json'], {
465
- cwd: ctx.cwd,
466
- timeout: 30000,
467
- });
468
- auditOutput = stdout;
469
- }
470
- catch (err) {
471
- // Exit code 1 means vulnerabilities found — stdout still has JSON
472
- const execErr = err;
473
- auditOutput = execErr.stdout || '';
474
- if (!auditOutput) {
475
- spinner.fail('npm audit failed');
476
- output.writeln(output.warning('npm audit failed: ' + (execErr.message || 'unknown error')));
477
- output.writeln(output.dim('Make sure package-lock.json exists (run `npm install` first).'));
478
- return { success: false };
479
- }
480
- }
481
- spinner.succeed('npm audit complete');
482
- let auditJson;
483
- try {
484
- auditJson = JSON.parse(auditOutput);
485
- }
486
- catch {
487
- output.writeln(output.error('Could not parse npm audit output'));
488
- return { success: false };
489
- }
490
- if (jsonOutput) {
491
- output.writeln(JSON.stringify(auditJson, null, 2));
492
- return { success: true };
493
- }
494
- const vulnerabilities = auditJson.vulnerabilities;
495
- const metadata = auditJson.metadata;
496
- const counts = metadata?.vulnerabilities || {};
497
- const rows = [];
498
- if (vulnerabilities) {
499
- for (const [pkgName, vuln] of Object.entries(vulnerabilities)) {
500
- const sev = vuln.severity || 'unknown';
501
- // Normalize severity filter: accept "medium" to match "moderate"
502
- if (severityFilter) {
503
- const normalizedSev = sev === 'moderate' ? 'medium' : sev;
504
- if (normalizedSev !== severityFilter && sev !== severityFilter)
505
- continue;
506
- }
507
- // Extract advisory/CVE info from first object-type via entry
508
- const viaObj = vuln.via.find(v => typeof v === 'object');
509
- let advisoryId = '—';
510
- if (viaObj?.url) {
511
- // Try to extract CVE or GHSA from URL
512
- const cveMatch = viaObj.url.match(/CVE-\d{4}-\d+/i);
513
- const ghsaMatch = viaObj.url.match(/GHSA-[a-z0-9-]+/i);
514
- if (cveMatch)
515
- advisoryId = cveMatch[0].toUpperCase();
516
- else if (ghsaMatch)
517
- advisoryId = ghsaMatch[0].toUpperCase();
518
- else
519
- advisoryId = viaObj.url.split('/').pop() || advisoryId;
520
- }
521
- const sevColored = sev === 'critical' ? output.error('CRITICAL') :
522
- sev === 'high' ? output.warning('HIGH') :
523
- sev === 'moderate' || sev === 'medium' ? output.info('MEDIUM') :
524
- output.dim(sev.toUpperCase());
525
- const fixAvail = vuln.fixAvailable === true ? output.success('Yes') :
526
- vuln.fixAvailable && typeof vuln.fixAvailable === 'object' ?
527
- output.success(`${vuln.fixAvailable.version}`) :
528
- output.dim('No');
529
- rows.push({
530
- id: advisoryId,
531
- severity: sevColored,
532
- package: pkgName,
533
- range: vuln.range || '—',
534
- fix: fixAvail,
535
- });
536
- }
537
- }
538
- output.writeln();
539
- if (rows.length === 0) {
540
- output.writeln(output.success('No vulnerabilities found' + (severityFilter ? ` matching severity: ${severityFilter}` : '') + '.'));
541
- }
542
- else {
543
- output.printTable({
544
- columns: [
545
- { key: 'id', header: 'CVE / Advisory', width: 22 },
546
- { key: 'severity', header: 'Severity', width: 12 },
547
- { key: 'package', header: 'Package', width: 22 },
548
- { key: 'range', header: 'Affected Range', width: 20 },
549
- { key: 'fix', header: 'Fix Available', width: 16 },
550
- ],
551
- data: rows,
552
- });
553
- }
554
- // Summary line
555
- const critical = counts['critical'] || 0;
556
- const high = counts['high'] || 0;
557
- const moderate = counts['moderate'] || 0;
558
- const low = counts['low'] || 0;
559
- output.writeln();
560
- output.writeln(output.bold('Summary: ') +
561
- output.error(`${critical} critical`) + ' ' +
562
- output.warning(`${high} high`) + ' ' +
563
- output.info(`${moderate} medium`) + ' ' +
564
- output.dim(`${low} low`));
565
- return { success: critical === 0 && high === 0 };
566
- }
567
- // No subcommand provided — show usage
568
- output.writeln('Usage:');
569
- output.printList([
570
- '--check CVE-XXXX-YYYY Look up a specific CVE via NVD/OSV',
571
- '--list List project vulnerabilities (npm audit)',
572
- '--severity <level> Filter --list by: critical, high, medium, low',
573
- '--json Output raw JSON',
574
- '--no-cache Skip local cache (forces fresh fetch)',
575
- ]);
576
- output.writeln();
577
- output.writeln(output.dim('Examples:'));
578
- output.writeln(output.dim(' monomind security cve --check CVE-2021-44228'));
579
- output.writeln(output.dim(' monomind security cve --list --severity critical'));
580
- return { success: true };
581
- },
582
- };
583
- // Threats subcommand
584
- const threatsCommand = {
585
- name: 'threats',
586
- description: 'Threat modeling and analysis',
587
- options: [
588
- { name: 'model', short: 'm', type: 'string', description: 'Threat model: stride, dread, pasta', default: 'stride' },
589
- { name: 'scope', short: 's', type: 'string', description: 'Analysis scope', default: '.' },
590
- { name: 'export', short: 'e', type: 'string', description: 'Export format: json, md, html' },
591
- ],
592
- examples: [
593
- { command: 'monomind security threats --model stride', description: 'Run STRIDE analysis' },
594
- { command: 'monomind security threats -e md', description: 'Export as markdown' },
595
- ],
596
- action: async (ctx) => {
597
- const model = ctx.flags.model || 'stride';
598
- output.writeln();
599
- output.writeln(output.bold(`Threat Model: ${model.toUpperCase()}`));
600
- output.writeln(output.dim('─'.repeat(50)));
601
- output.printTable({
602
- columns: [
603
- { key: 'category', header: 'Category', width: 20 },
604
- { key: 'threat', header: 'Threat', width: 30 },
605
- { key: 'risk', header: 'Risk', width: 10 },
606
- { key: 'mitigation', header: 'Mitigation', width: 30 },
607
- ],
608
- data: [
609
- { category: 'Spoofing', threat: 'API key theft', risk: output.error('High'), mitigation: 'Use secure key storage' },
610
- { category: 'Tampering', threat: 'Data manipulation', risk: output.warning('Medium'), mitigation: 'Input validation' },
611
- { category: 'Repudiation', threat: 'Action denial', risk: output.info('Low'), mitigation: 'Audit logging' },
612
- { category: 'Info Disclosure', threat: 'Data leakage', risk: output.error('High'), mitigation: 'Encryption at rest' },
613
- { category: 'DoS', threat: 'Resource exhaustion', risk: output.warning('Medium'), mitigation: 'Rate limiting' },
614
- { category: 'Elevation', threat: 'Privilege escalation', risk: output.error('High'), mitigation: 'RBAC implementation' },
615
- ],
616
- });
617
- return { success: true };
618
- },
619
- };
620
- // Audit subcommand
621
- const auditCommand = {
622
- name: 'audit',
623
- description: 'Security audit logging and compliance',
624
- options: [
625
- { name: 'action', short: 'a', type: 'string', description: 'Action: log, list, export, clear', default: 'list' },
626
- { name: 'limit', short: 'l', type: 'number', description: 'Number of entries to show', default: '20' },
627
- { name: 'filter', short: 'f', type: 'string', description: 'Filter by event type' },
628
- ],
629
- examples: [
630
- { command: 'monomind security audit --action list', description: 'List audit logs' },
631
- { command: 'monomind security audit -a export', description: 'Export audit trail' },
632
- ],
633
- action: async (ctx) => {
634
- const action = ctx.flags.action || 'list';
635
- output.writeln();
636
- output.writeln(output.bold('Security Audit Log'));
637
- output.writeln(output.dim('─'.repeat(60)));
638
- // Generate real audit entries from .swarm/ state and session history
639
- const { existsSync, readFileSync, readdirSync, statSync } = await import('fs');
640
- const { join } = await import('path');
641
- const auditEntries = [];
642
- const swarmDir = join(process.cwd(), '.swarm');
643
- // Check session files for real audit events
644
- if (existsSync(swarmDir)) {
645
- try {
646
- const files = readdirSync(swarmDir).filter(f => f.endsWith('.json'));
647
- for (const file of files.slice(-10)) {
648
- try {
649
- const stat = statSync(join(swarmDir, file));
650
- const ts = stat.mtime.toISOString().replace('T', ' ').substring(0, 19);
651
- auditEntries.push({
652
- timestamp: ts,
653
- event: file.includes('session') ? 'SESSION_UPDATE' :
654
- file.includes('swarm') ? 'SWARM_ACTIVITY' :
655
- file.includes('memory') ? 'MEMORY_WRITE' : 'CONFIG_CHANGE',
656
- user: 'system',
657
- status: output.success('Success')
658
- });
659
- }
660
- catch { /* skip */ }
661
- }
662
- }
663
- catch { /* ignore */ }
664
- }
665
- // Add current session entry
666
- const now = new Date().toISOString().replace('T', ' ').substring(0, 19);
667
- auditEntries.push({ timestamp: now, event: 'AUDIT_RUN', user: 'cli', status: output.success('Success') });
668
- // Sort by timestamp desc
669
- auditEntries.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
670
- if (auditEntries.length === 0) {
671
- output.writeln(output.dim('No audit events found. Initialize a project first: monomind init'));
672
- }
673
- else {
674
- output.printTable({
675
- columns: [
676
- { key: 'timestamp', header: 'Timestamp', width: 22 },
677
- { key: 'event', header: 'Event', width: 20 },
678
- { key: 'user', header: 'User', width: 15 },
679
- { key: 'status', header: 'Status', width: 12 },
680
- ],
681
- data: auditEntries.slice(0, parseInt(ctx.flags.limit || '20', 10)),
682
- });
683
- }
684
- return { success: true };
685
- },
686
- };
687
- // Secrets subcommand
688
- const secretsCommand = {
689
- name: 'secrets',
690
- description: 'Detect and manage secrets in codebase',
691
- options: [
692
- { name: 'action', short: 'a', type: 'string', description: 'Action: scan, list, rotate', default: 'scan' },
693
- { name: 'path', short: 'p', type: 'string', description: 'Path to scan', default: '.' },
694
- { name: 'ignore', short: 'i', type: 'string', description: 'Patterns to ignore' },
695
- ],
696
- examples: [
697
- { command: 'monomind security secrets --action scan', description: 'Scan for secrets' },
698
- { command: 'monomind security secrets -a rotate', description: 'Rotate compromised secrets' },
699
- ],
700
- action: async (ctx) => {
701
- const path = ctx.flags.path || '.';
702
- output.writeln();
703
- output.writeln(output.bold('Secret Detection'));
704
- output.writeln(output.dim('─'.repeat(50)));
705
- const spinner = output.createSpinner({ text: 'Scanning for secrets...', spinner: 'dots' });
706
- spinner.start();
707
- await new Promise(r => setTimeout(r, 800));
708
- spinner.succeed('Scan complete');
709
- output.writeln();
710
- output.writeln(output.warning('⚠ No real secrets scan performed. Showing example findings.'));
711
- output.writeln(output.dim('Run "monomind security scan --depth full" for real secret detection.'));
712
- output.writeln();
713
- output.printTable({
714
- columns: [
715
- { key: 'type', header: 'Secret Type (Example)', width: 25 },
716
- { key: 'location', header: 'Location', width: 30 },
717
- { key: 'risk', header: 'Risk', width: 12 },
718
- { key: 'action', header: 'Recommended', width: 20 },
719
- ],
720
- data: [
721
- { type: 'AWS Access Key', location: 'example/config.ts:15', risk: output.error('Critical'), action: 'Rotate immediately' },
722
- { type: 'GitHub Token', location: 'example/.env:8', risk: output.warning('High'), action: 'Remove from repo' },
723
- { type: 'JWT Secret', location: 'example/auth.ts:42', risk: output.warning('High'), action: 'Use env variable' },
724
- { type: 'DB Password', location: 'example/compose.yml:23', risk: output.warning('Medium'), action: 'Use secrets mgmt' },
725
- ],
726
- });
727
- return { success: true };
728
- },
729
- };
730
- // Defend subcommand (AIDefence integration)
731
- const defendCommand = {
732
- name: 'defend',
733
- description: 'AI manipulation defense - detect prompt injection, jailbreaks, and PII',
734
- options: [
735
- { name: 'input', short: 'i', type: 'string', description: 'Input text to scan for threats' },
736
- { name: 'file', short: 'f', type: 'string', description: 'File to scan for threats' },
737
- { name: 'quick', short: 'Q', type: 'boolean', description: 'Quick scan (faster, less detailed)' },
738
- { name: 'learn', short: 'l', type: 'boolean', description: 'Enable learning mode', default: 'true' },
739
- { name: 'stats', short: 's', type: 'boolean', description: 'Show detection statistics' },
740
- { name: 'output', short: 'o', type: 'string', description: 'Output format: text, json', default: 'text' },
741
- ],
742
- examples: [
743
- { command: 'monomind security defend -i "ignore previous instructions"', description: 'Scan text for threats' },
744
- { command: 'monomind security defend -f ./prompts.txt', description: 'Scan file for threats' },
745
- { command: 'monomind security defend --stats', description: 'Show detection statistics' },
746
- ],
747
- action: async (ctx) => {
748
- const inputText = ctx.flags.input;
749
- const filePath = ctx.flags.file;
750
- const quickMode = ctx.flags.quick;
751
- const showStats = ctx.flags.stats;
752
- const outputFormat = ctx.flags.output || 'text';
753
- const enableLearning = ctx.flags.learn !== false;
754
- output.writeln();
755
- output.writeln(output.bold('🛡️ AIDefence - AI Manipulation Defense System'));
756
- output.writeln(output.dim('─'.repeat(55)));
757
- // Dynamic import of aidefence (allows package to be optional)
758
- let createAIDefence;
759
- try {
760
- const aidefence = await import('@monomind/aidefence');
761
- createAIDefence = aidefence.createAIDefence;
762
- }
763
- catch {
764
- output.printError('AIDefence package not installed. Run: npm install @monomind/aidefence');
765
- return { success: false, message: 'AIDefence not available' };
766
- }
767
- const defender = createAIDefence({ enableLearning });
768
- // Show stats mode
769
- if (showStats) {
770
- const stats = await defender.getStats();
771
- output.writeln();
772
- output.printBox([
773
- `Detection Count: ${stats.detectionCount}`,
774
- `Avg Detection Time: ${stats.avgDetectionTimeMs.toFixed(3)}ms`,
775
- `Learned Patterns: ${stats.learnedPatterns}`,
776
- `Mitigation Strategies: ${stats.mitigationStrategies}`,
777
- `Avg Mitigation Effectiveness: ${(stats.avgMitigationEffectiveness * 100).toFixed(1)}%`,
778
- ].join('\n'), 'Detection Statistics');
779
- return { success: true };
780
- }
781
- // Get input to scan
782
- let textToScan = inputText;
783
- if (filePath) {
784
- try {
785
- const fs = await import('fs/promises');
786
- const MAX_DEFEND_FILE_BYTES = 10 * 1024 * 1024;
787
- const { size } = await fs.stat(filePath);
788
- if (size > MAX_DEFEND_FILE_BYTES) {
789
- output.printError(`File too large (${(size / 1024 / 1024).toFixed(1)} MB). Maximum is 10 MB.`);
790
- return { success: false, message: 'File too large' };
791
- }
792
- textToScan = await fs.readFile(filePath, 'utf-8');
793
- output.writeln(output.dim(`Reading file: ${filePath}`));
794
- }
795
- catch (err) {
796
- output.printError(`Failed to read file: ${filePath}`);
797
- return { success: false, message: 'File not found' };
798
- }
799
- }
800
- if (!textToScan) {
801
- output.writeln('Usage: monomind security defend -i "<text>" or -f <file>');
802
- output.writeln();
803
- output.writeln('Options:');
804
- output.printList([
805
- '-i, --input Text to scan for AI manipulation attempts',
806
- '-f, --file File path to scan',
807
- '-q, --quick Quick scan mode (faster)',
808
- '-s, --stats Show detection statistics',
809
- '--learn Enable pattern learning (default: true)',
810
- ]);
811
- return { success: true };
812
- }
813
- const spinner = output.createSpinner({ text: 'Scanning for threats...', spinner: 'dots' });
814
- spinner.start();
815
- // Perform scan
816
- const startTime = performance.now();
817
- const result = quickMode
818
- ? { ...defender.quickScan(textToScan), threats: [], piiFound: false, detectionTimeMs: 0, inputHash: '', safe: !defender.quickScan(textToScan).threat }
819
- : await defender.detect(textToScan);
820
- const scanTime = performance.now() - startTime;
821
- spinner.stop();
822
- // JSON output
823
- if (outputFormat === 'json') {
824
- output.writeln(JSON.stringify({
825
- safe: result.safe,
826
- threats: result.threats || [],
827
- piiFound: result.piiFound,
828
- detectionTimeMs: scanTime,
829
- }, null, 2));
830
- return { success: true };
831
- }
832
- // Text output
833
- output.writeln();
834
- if (result.safe && !result.piiFound) {
835
- output.writeln(output.success('✅ No threats detected'));
836
- }
837
- else {
838
- if (!result.safe && result.threats) {
839
- output.writeln(output.error(`⚠️ ${result.threats.length} threat(s) detected:`));
840
- output.writeln();
841
- for (const threat of result.threats) {
842
- const severityColor = {
843
- critical: output.error,
844
- high: output.warning,
845
- medium: output.info,
846
- low: output.dim,
847
- }[threat.severity] || output.dim;
848
- output.writeln(` ${severityColor(`[${threat.severity.toUpperCase()}]`)} ${threat.type}`);
849
- output.writeln(` ${output.dim(threat.description)}`);
850
- output.writeln(` Confidence: ${(threat.confidence * 100).toFixed(1)}%`);
851
- output.writeln();
852
- }
853
- // Show mitigation recommendations
854
- const criticalThreats = result.threats.filter(t => t.severity === 'critical');
855
- if (criticalThreats.length > 0 && enableLearning) {
856
- output.writeln(output.bold('Recommended Mitigations:'));
857
- for (const threat of criticalThreats) {
858
- const mitigation = await defender.getBestMitigation(threat.type);
859
- if (mitigation) {
860
- output.writeln(` ${threat.type}: ${output.bold(mitigation.strategy)} (${(mitigation.effectiveness * 100).toFixed(0)}% effective)`);
861
- }
862
- }
863
- output.writeln();
864
- }
865
- }
866
- if (result.piiFound) {
867
- output.writeln(output.warning('⚠️ PII detected (emails, SSNs, API keys, etc.)'));
868
- output.writeln();
869
- }
870
- }
871
- output.writeln(output.dim(`Detection time: ${scanTime.toFixed(3)}ms`));
872
- return { success: result.safe };
873
- },
874
- };
875
- // Redteam subcommand (PyRIT-style adversarial testing)
876
- // Source: https://github.com/Azure/PyRIT
877
- const redteamCommand = {
878
- name: 'redteam',
879
- description: 'Adversarial red-team testing — prompt injection, jailbreak, and manipulation scenarios (PyRIT-style)',
880
- options: [
881
- { name: 'target', short: 't', type: 'string', description: 'Target agent ID or endpoint to test' },
882
- { name: 'scenarios', short: 's', type: 'string', description: 'Comma-separated attack categories: injection,jailbreak,adversarial,pii,all', default: 'all' },
883
- { name: 'iterations', short: 'n', type: 'number', description: 'Number of attack iterations per scenario', default: '5' },
884
- { name: 'dry-run', type: 'boolean', description: 'Print attack prompts without executing them' },
885
- { name: 'output', short: 'o', type: 'string', description: 'Output format: text, json', default: 'text' },
886
- { name: 'threshold', type: 'number', description: 'Failure threshold 0-1 — report when success rate exceeds this', default: '0.1' },
887
- ],
888
- examples: [
889
- { command: 'monomind security redteam --target my-agent', description: 'Run all red-team scenarios against an agent' },
890
- { command: 'monomind security redteam --target my-agent --scenarios injection,jailbreak', description: 'Test specific attack categories' },
891
- { command: 'monomind security redteam --target my-agent --dry-run', description: 'Preview attack prompts without executing' },
892
- { command: 'monomind security redteam --target my-agent --output json', description: 'JSON output for CI integration' },
893
- ],
894
- action: async (ctx) => {
895
- const target = ctx.flags.target;
896
- output.writeln();
897
- output.writeln(output.warning('⚠ Red-team simulation not yet implemented.'));
898
- output.writeln(output.dim('This command will contact the target agent and evaluate its real responses once implemented.'));
899
- if (target) {
900
- output.writeln(output.dim(`Target specified: ${target}`));
901
- }
902
- output.writeln();
903
- output.writeln('To test prompt injection resistance manually:');
904
- output.writeln(output.dim(' 1. Run the target agent'));
905
- output.writeln(output.dim(' 2. Send adversarial prompts and evaluate responses'));
906
- output.writeln(output.dim(' 3. Check agent logs for unexpected tool calls'));
907
- return { success: false, exitCode: 1 };
908
- },
909
- };
910
- // Main security command
911
- export const securityCommand = {
912
- name: 'security',
913
- description: 'Security scanning, CVE detection, threat modeling, AI defense',
914
- subcommands: [scanCommand, cveCommand, threatsCommand, auditCommand, secretsCommand, defendCommand, redteamCommand],
915
- examples: [
916
- { command: 'monomind security scan', description: 'Run security scan' },
917
- { command: 'monomind security cve --list', description: 'List known CVEs' },
918
- { command: 'monomind security threats', description: 'Run threat analysis' },
919
- ],
920
- action: async () => {
921
- output.writeln();
922
- output.writeln(output.bold('MonoMind Security Suite'));
923
- output.writeln(output.dim('Comprehensive security scanning and vulnerability management'));
924
- output.writeln();
925
- output.writeln('Subcommands:');
926
- output.printList([
927
- 'scan - Run security scans on code, deps, containers',
928
- 'cve - Check and manage CVE vulnerabilities',
929
- 'threats - Threat modeling (STRIDE, DREAD, PASTA)',
930
- 'audit - Security audit logging and compliance',
931
- 'secrets - Detect and manage secrets in codebase',
932
- 'defend - AI manipulation defense (prompt injection, jailbreaks, PII)',
933
- 'redteam - Adversarial red-team testing (PyRIT-style attack orchestration)',
934
- ]);
935
- output.writeln();
936
- output.writeln('Use --help with subcommands for more info');
937
- output.writeln();
938
- output.writeln(output.dim('github.com/nokhodian/monomind'));
939
- return { success: true };
940
- },
941
- };
942
- export default securityCommand;
943
- //# sourceMappingURL=security.js.map