monomind 1.10.0 → 1.10.2

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 (597) hide show
  1. package/.claude/commands/monomind/understand.md +111 -70
  2. package/.claude/settings.local.json +1 -2
  3. package/package.json +1 -1
  4. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.d.ts +32 -0
  5. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.d.ts.map +1 -0
  6. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.js +297 -0
  7. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.js.map +1 -0
  8. package/packages/@monomind/cli/bundled-graph/dist/src/build.d.ts +8 -0
  9. package/packages/@monomind/cli/bundled-graph/dist/src/build.d.ts.map +1 -0
  10. package/packages/@monomind/cli/bundled-graph/dist/src/build.js +73 -0
  11. package/packages/@monomind/cli/bundled-graph/dist/src/build.js.map +1 -0
  12. package/packages/@monomind/cli/bundled-graph/dist/src/cache.d.ts +12 -0
  13. package/packages/@monomind/cli/bundled-graph/dist/src/cache.d.ts.map +1 -0
  14. package/packages/@monomind/cli/bundled-graph/dist/src/cache.js +43 -0
  15. package/packages/@monomind/cli/bundled-graph/dist/src/cache.js.map +1 -0
  16. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.d.ts +5 -0
  17. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.d.ts.map +1 -0
  18. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js +120 -0
  19. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js.map +1 -0
  20. package/packages/@monomind/cli/bundled-graph/dist/src/detect.d.ts +21 -0
  21. package/packages/@monomind/cli/bundled-graph/dist/src/detect.d.ts.map +1 -0
  22. package/packages/@monomind/cli/bundled-graph/dist/src/detect.js +195 -0
  23. package/packages/@monomind/cli/bundled-graph/dist/src/detect.js.map +1 -0
  24. package/packages/@monomind/cli/bundled-graph/dist/src/export.d.ts +21 -0
  25. package/packages/@monomind/cli/bundled-graph/dist/src/export.d.ts.map +1 -0
  26. package/packages/@monomind/cli/bundled-graph/dist/src/export.js +68 -0
  27. package/packages/@monomind/cli/bundled-graph/dist/src/export.js.map +1 -0
  28. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.d.ts +20 -0
  29. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.d.ts.map +1 -0
  30. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.js +158 -0
  31. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.js.map +1 -0
  32. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.d.ts +3 -0
  33. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.d.ts.map +1 -0
  34. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.js +88 -0
  35. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.js.map +1 -0
  36. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.d.ts +3 -0
  37. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.d.ts.map +1 -0
  38. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.js +121 -0
  39. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.js.map +1 -0
  40. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.d.ts +3 -0
  41. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.d.ts.map +1 -0
  42. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.js +121 -0
  43. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.js.map +1 -0
  44. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.d.ts +3 -0
  45. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.d.ts.map +1 -0
  46. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.js +181 -0
  47. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.js.map +1 -0
  48. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.d.ts +3 -0
  49. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.d.ts.map +1 -0
  50. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.js +117 -0
  51. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.js.map +1 -0
  52. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.d.ts +3 -0
  53. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.d.ts.map +1 -0
  54. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.js +112 -0
  55. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.js.map +1 -0
  56. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.d.ts +3 -0
  57. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.d.ts.map +1 -0
  58. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.js +130 -0
  59. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.js.map +1 -0
  60. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.d.ts +3 -0
  61. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.d.ts.map +1 -0
  62. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.js +230 -0
  63. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.js.map +1 -0
  64. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.d.ts +3 -0
  65. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.d.ts.map +1 -0
  66. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.js +120 -0
  67. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.js.map +1 -0
  68. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.d.ts +3 -0
  69. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.d.ts.map +1 -0
  70. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.js +195 -0
  71. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.js.map +1 -0
  72. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.d.ts +3 -0
  73. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.d.ts.map +1 -0
  74. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.js +110 -0
  75. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.js.map +1 -0
  76. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.d.ts +3 -0
  77. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.d.ts.map +1 -0
  78. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.js +122 -0
  79. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.js.map +1 -0
  80. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.d.ts +3 -0
  81. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.d.ts.map +1 -0
  82. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.js +295 -0
  83. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.js.map +1 -0
  84. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.d.ts +38 -0
  85. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.d.ts.map +1 -0
  86. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.js +242 -0
  87. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.js.map +1 -0
  88. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts +48 -0
  89. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts.map +1 -0
  90. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.js +137 -0
  91. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.js.map +1 -0
  92. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.d.ts +7 -0
  93. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.d.ts.map +1 -0
  94. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.js +2 -0
  95. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.js.map +1 -0
  96. package/packages/@monomind/cli/bundled-graph/dist/src/index.d.ts +28 -0
  97. package/packages/@monomind/cli/bundled-graph/dist/src/index.d.ts.map +1 -0
  98. package/packages/@monomind/cli/bundled-graph/dist/src/index.js +26 -0
  99. package/packages/@monomind/cli/bundled-graph/dist/src/index.js.map +1 -0
  100. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.d.ts +27 -0
  101. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.d.ts.map +1 -0
  102. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.js +269 -0
  103. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.js.map +1 -0
  104. package/packages/@monomind/cli/bundled-graph/dist/src/report.d.ts +26 -0
  105. package/packages/@monomind/cli/bundled-graph/dist/src/report.d.ts.map +1 -0
  106. package/packages/@monomind/cli/bundled-graph/dist/src/report.js +214 -0
  107. package/packages/@monomind/cli/bundled-graph/dist/src/report.js.map +1 -0
  108. package/packages/@monomind/cli/bundled-graph/dist/src/types.d.ts +124 -0
  109. package/packages/@monomind/cli/bundled-graph/dist/src/types.d.ts.map +1 -0
  110. package/packages/@monomind/cli/bundled-graph/dist/src/types.js +2 -0
  111. package/packages/@monomind/cli/bundled-graph/dist/src/types.js.map +1 -0
  112. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.d.ts +4 -0
  113. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.d.ts.map +1 -0
  114. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.js +574 -0
  115. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.js.map +1 -0
  116. package/packages/@monomind/cli/dist/src/agents/halt-signal.d.ts +25 -0
  117. package/packages/@monomind/cli/dist/src/agents/halt-signal.js +76 -0
  118. package/packages/@monomind/cli/dist/src/agents/index.d.ts +18 -0
  119. package/packages/@monomind/cli/dist/src/agents/index.js +13 -0
  120. package/packages/@monomind/cli/dist/src/agents/managed-agent.d.ts +41 -0
  121. package/packages/@monomind/cli/dist/src/agents/managed-agent.js +69 -0
  122. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +23 -0
  123. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +49 -0
  124. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +22 -0
  125. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +80 -0
  126. package/packages/@monomind/cli/dist/src/agents/registry-builder.d.ts +36 -0
  127. package/packages/@monomind/cli/dist/src/agents/registry-builder.js +200 -0
  128. package/packages/@monomind/cli/dist/src/agents/registry-query.d.ts +71 -0
  129. package/packages/@monomind/cli/dist/src/agents/registry-query.js +125 -0
  130. package/packages/@monomind/cli/dist/src/agents/score-decay.d.ts +19 -0
  131. package/packages/@monomind/cli/dist/src/agents/score-decay.js +22 -0
  132. package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.d.ts +13 -0
  133. package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.js +40 -0
  134. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.d.ts +54 -0
  135. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +212 -0
  136. package/packages/@monomind/cli/dist/src/agents/termination-watcher.d.ts +30 -0
  137. package/packages/@monomind/cli/dist/src/agents/termination-watcher.js +84 -0
  138. package/packages/@monomind/cli/dist/src/agents/trigger-index.d.ts +20 -0
  139. package/packages/@monomind/cli/dist/src/agents/trigger-index.js +38 -0
  140. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +64 -0
  141. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +308 -0
  142. package/packages/@monomind/cli/dist/src/agents/version-diff.d.ts +18 -0
  143. package/packages/@monomind/cli/dist/src/agents/version-diff.js +64 -0
  144. package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +60 -0
  145. package/packages/@monomind/cli/dist/src/agents/version-store.js +235 -0
  146. package/packages/@monomind/cli/dist/src/autopilot-state.d.ts +77 -0
  147. package/packages/@monomind/cli/dist/src/autopilot-state.js +330 -0
  148. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +87 -0
  149. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +273 -0
  150. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.d.ts +36 -0
  151. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +114 -0
  152. package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.d.ts +58 -0
  153. package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.js +404 -0
  154. package/packages/@monomind/cli/dist/src/commands/agent-wasm.d.ts +14 -0
  155. package/packages/@monomind/cli/dist/src/commands/agent-wasm.js +333 -0
  156. package/packages/@monomind/cli/dist/src/commands/agent.d.ts +8 -0
  157. package/packages/@monomind/cli/dist/src/commands/agent.js +943 -0
  158. package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +19 -0
  159. package/packages/@monomind/cli/dist/src/commands/analyze.js +2048 -0
  160. package/packages/@monomind/cli/dist/src/commands/appliance-advanced.d.ts +9 -0
  161. package/packages/@monomind/cli/dist/src/commands/appliance-advanced.js +238 -0
  162. package/packages/@monomind/cli/dist/src/commands/appliance.d.ts +8 -0
  163. package/packages/@monomind/cli/dist/src/commands/appliance.js +406 -0
  164. package/packages/@monomind/cli/dist/src/commands/autopilot.d.ts +15 -0
  165. package/packages/@monomind/cli/dist/src/commands/autopilot.js +362 -0
  166. package/packages/@monomind/cli/dist/src/commands/benchmark.d.ts +10 -0
  167. package/packages/@monomind/cli/dist/src/commands/benchmark.js +571 -0
  168. package/packages/@monomind/cli/dist/src/commands/claims.d.ts +10 -0
  169. package/packages/@monomind/cli/dist/src/commands/claims.js +632 -0
  170. package/packages/@monomind/cli/dist/src/commands/cleanup.d.ts +13 -0
  171. package/packages/@monomind/cli/dist/src/commands/cleanup.js +218 -0
  172. package/packages/@monomind/cli/dist/src/commands/completions.d.ts +10 -0
  173. package/packages/@monomind/cli/dist/src/commands/completions.js +539 -0
  174. package/packages/@monomind/cli/dist/src/commands/config.d.ts +8 -0
  175. package/packages/@monomind/cli/dist/src/commands/config.js +460 -0
  176. package/packages/@monomind/cli/dist/src/commands/daemon.d.ts +8 -0
  177. package/packages/@monomind/cli/dist/src/commands/daemon.js +671 -0
  178. package/packages/@monomind/cli/dist/src/commands/deployment.d.ts +10 -0
  179. package/packages/@monomind/cli/dist/src/commands/deployment.js +691 -0
  180. package/packages/@monomind/cli/dist/src/commands/doctor.d.ts +10 -0
  181. package/packages/@monomind/cli/dist/src/commands/doctor.js +647 -0
  182. package/packages/@monomind/cli/dist/src/commands/embeddings.d.ts +18 -0
  183. package/packages/@monomind/cli/dist/src/commands/embeddings.js +1652 -0
  184. package/packages/@monomind/cli/dist/src/commands/guidance.d.ts +8 -0
  185. package/packages/@monomind/cli/dist/src/commands/guidance.js +560 -0
  186. package/packages/@monomind/cli/dist/src/commands/hive-mind.d.ts +11 -0
  187. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +1238 -0
  188. package/packages/@monomind/cli/dist/src/commands/hooks.d.ts +8 -0
  189. package/packages/@monomind/cli/dist/src/commands/hooks.js +4446 -0
  190. package/packages/@monomind/cli/dist/src/commands/index.d.ts +119 -0
  191. package/packages/@monomind/cli/dist/src/commands/index.js +404 -0
  192. package/packages/@monomind/cli/dist/src/commands/init.d.ts +8 -0
  193. package/packages/@monomind/cli/dist/src/commands/init.js +853 -0
  194. package/packages/@monomind/cli/dist/src/commands/issues.d.ts +21 -0
  195. package/packages/@monomind/cli/dist/src/commands/issues.js +567 -0
  196. package/packages/@monomind/cli/dist/src/commands/mcp.d.ts +11 -0
  197. package/packages/@monomind/cli/dist/src/commands/mcp.js +705 -0
  198. package/packages/@monomind/cli/dist/src/commands/memory.d.ts +8 -0
  199. package/packages/@monomind/cli/dist/src/commands/memory.js +1596 -0
  200. package/packages/@monomind/cli/dist/src/commands/migrate.d.ts +8 -0
  201. package/packages/@monomind/cli/dist/src/commands/migrate.js +790 -0
  202. package/packages/@monomind/cli/dist/src/commands/monograph.d.ts +8 -0
  203. package/packages/@monomind/cli/dist/src/commands/monograph.js +526 -0
  204. package/packages/@monomind/cli/dist/src/commands/neural.d.ts +10 -0
  205. package/packages/@monomind/cli/dist/src/commands/neural.js +1494 -0
  206. package/packages/@monomind/cli/dist/src/commands/performance.d.ts +10 -0
  207. package/packages/@monomind/cli/dist/src/commands/performance.js +601 -0
  208. package/packages/@monomind/cli/dist/src/commands/plugins.d.ts +11 -0
  209. package/packages/@monomind/cli/dist/src/commands/plugins.js +796 -0
  210. package/packages/@monomind/cli/dist/src/commands/process.d.ts +10 -0
  211. package/packages/@monomind/cli/dist/src/commands/process.js +718 -0
  212. package/packages/@monomind/cli/dist/src/commands/progress.d.ts +11 -0
  213. package/packages/@monomind/cli/dist/src/commands/progress.js +259 -0
  214. package/packages/@monomind/cli/dist/src/commands/providers.d.ts +10 -0
  215. package/packages/@monomind/cli/dist/src/commands/providers.js +391 -0
  216. package/packages/@monomind/cli/dist/src/commands/replay.d.ts +8 -0
  217. package/packages/@monomind/cli/dist/src/commands/replay.js +60 -0
  218. package/packages/@monomind/cli/dist/src/commands/route.d.ts +16 -0
  219. package/packages/@monomind/cli/dist/src/commands/route.js +939 -0
  220. package/packages/@monomind/cli/dist/src/commands/ruvector/backup.d.ts +11 -0
  221. package/packages/@monomind/cli/dist/src/commands/ruvector/backup.js +746 -0
  222. package/packages/@monomind/cli/dist/src/commands/ruvector/benchmark.d.ts +11 -0
  223. package/packages/@monomind/cli/dist/src/commands/ruvector/benchmark.js +489 -0
  224. package/packages/@monomind/cli/dist/src/commands/ruvector/import.d.ts +18 -0
  225. package/packages/@monomind/cli/dist/src/commands/ruvector/import.js +359 -0
  226. package/packages/@monomind/cli/dist/src/commands/ruvector/index.d.ts +29 -0
  227. package/packages/@monomind/cli/dist/src/commands/ruvector/index.js +129 -0
  228. package/packages/@monomind/cli/dist/src/commands/ruvector/init.d.ts +11 -0
  229. package/packages/@monomind/cli/dist/src/commands/ruvector/init.js +481 -0
  230. package/packages/@monomind/cli/dist/src/commands/ruvector/migrate.d.ts +11 -0
  231. package/packages/@monomind/cli/dist/src/commands/ruvector/migrate.js +497 -0
  232. package/packages/@monomind/cli/dist/src/commands/ruvector/optimize.d.ts +11 -0
  233. package/packages/@monomind/cli/dist/src/commands/ruvector/optimize.js +504 -0
  234. package/packages/@monomind/cli/dist/src/commands/ruvector/setup.d.ts +18 -0
  235. package/packages/@monomind/cli/dist/src/commands/ruvector/setup.js +765 -0
  236. package/packages/@monomind/cli/dist/src/commands/ruvector/status.d.ts +11 -0
  237. package/packages/@monomind/cli/dist/src/commands/ruvector/status.js +491 -0
  238. package/packages/@monomind/cli/dist/src/commands/security.d.ts +10 -0
  239. package/packages/@monomind/cli/dist/src/commands/security.js +943 -0
  240. package/packages/@monomind/cli/dist/src/commands/session.d.ts +8 -0
  241. package/packages/@monomind/cli/dist/src/commands/session.js +793 -0
  242. package/packages/@monomind/cli/dist/src/commands/start.d.ts +8 -0
  243. package/packages/@monomind/cli/dist/src/commands/start.js +432 -0
  244. package/packages/@monomind/cli/dist/src/commands/status.d.ts +8 -0
  245. package/packages/@monomind/cli/dist/src/commands/status.js +591 -0
  246. package/packages/@monomind/cli/dist/src/commands/swarm.d.ts +8 -0
  247. package/packages/@monomind/cli/dist/src/commands/swarm.js +812 -0
  248. package/packages/@monomind/cli/dist/src/commands/task.d.ts +8 -0
  249. package/packages/@monomind/cli/dist/src/commands/task.js +671 -0
  250. package/packages/@monomind/cli/dist/src/commands/tokens.d.ts +8 -0
  251. package/packages/@monomind/cli/dist/src/commands/tokens.js +107 -0
  252. package/packages/@monomind/cli/dist/src/commands/transfer-store.d.ts +13 -0
  253. package/packages/@monomind/cli/dist/src/commands/transfer-store.js +428 -0
  254. package/packages/@monomind/cli/dist/src/commands/ui.js +68 -0
  255. package/packages/@monomind/cli/dist/src/commands/update.d.ts +8 -0
  256. package/packages/@monomind/cli/dist/src/commands/update.js +276 -0
  257. package/packages/@monomind/cli/dist/src/commands/workflow.d.ts +8 -0
  258. package/packages/@monomind/cli/dist/src/commands/workflow.js +644 -0
  259. package/packages/@monomind/cli/dist/src/config-adapter.d.ts +16 -0
  260. package/packages/@monomind/cli/dist/src/config-adapter.js +186 -0
  261. package/packages/@monomind/cli/dist/src/consensus/audit-writer.d.ts +50 -0
  262. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +142 -0
  263. package/packages/@monomind/cli/dist/src/consensus/index.d.ts +7 -0
  264. package/packages/@monomind/cli/dist/src/consensus/index.js +6 -0
  265. package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +36 -0
  266. package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +71 -0
  267. package/packages/@monomind/cli/dist/src/context/context-provider.d.ts +44 -0
  268. package/packages/@monomind/cli/dist/src/context/context-provider.js +25 -0
  269. package/packages/@monomind/cli/dist/src/context/git-state-provider.d.ts +12 -0
  270. package/packages/@monomind/cli/dist/src/context/git-state-provider.js +34 -0
  271. package/packages/@monomind/cli/dist/src/context/index.d.ts +12 -0
  272. package/packages/@monomind/cli/dist/src/context/index.js +12 -0
  273. package/packages/@monomind/cli/dist/src/context/project-conventions-provider.d.ts +15 -0
  274. package/packages/@monomind/cli/dist/src/context/project-conventions-provider.js +19 -0
  275. package/packages/@monomind/cli/dist/src/context/prompt-assembler.d.ts +26 -0
  276. package/packages/@monomind/cli/dist/src/context/prompt-assembler.js +93 -0
  277. package/packages/@monomind/cli/dist/src/context/task-history-provider.d.ts +24 -0
  278. package/packages/@monomind/cli/dist/src/context/task-history-provider.js +32 -0
  279. package/packages/@monomind/cli/dist/src/context/user-preferences-provider.d.ts +14 -0
  280. package/packages/@monomind/cli/dist/src/context/user-preferences-provider.js +27 -0
  281. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +31 -0
  282. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +81 -0
  283. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +27 -0
  284. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.js +90 -0
  285. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.d.ts +24 -0
  286. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +65 -0
  287. package/packages/@monomind/cli/dist/src/dlq/index.d.ts +10 -0
  288. package/packages/@monomind/cli/dist/src/dlq/index.js +7 -0
  289. package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +33 -0
  290. package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +107 -0
  291. package/packages/@monomind/cli/dist/src/eval/dataset-runner.d.ts +23 -0
  292. package/packages/@monomind/cli/dist/src/eval/dataset-runner.js +59 -0
  293. package/packages/@monomind/cli/dist/src/eval/index.d.ts +10 -0
  294. package/packages/@monomind/cli/dist/src/eval/index.js +7 -0
  295. package/packages/@monomind/cli/dist/src/eval/trace-collector.d.ts +40 -0
  296. package/packages/@monomind/cli/dist/src/eval/trace-collector.js +102 -0
  297. package/packages/@monomind/cli/dist/src/index.d.ts +82 -0
  298. package/packages/@monomind/cli/dist/src/index.js +580 -0
  299. package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
  300. package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.js +264 -0
  301. package/packages/@monomind/cli/dist/src/init/claudemd-generator.d.ts +25 -0
  302. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +558 -0
  303. package/packages/@monomind/cli/dist/src/init/executor.d.ts +38 -0
  304. package/packages/@monomind/cli/dist/src/init/executor.js +2172 -0
  305. package/packages/@monomind/cli/dist/src/init/helpers-generator.d.ts +60 -0
  306. package/packages/@monomind/cli/dist/src/init/helpers-generator.js +1235 -0
  307. package/packages/@monomind/cli/dist/src/init/index.d.ts +13 -0
  308. package/packages/@monomind/cli/dist/src/init/index.js +15 -0
  309. package/packages/@monomind/cli/dist/src/init/mcp-generator.d.ts +26 -0
  310. package/packages/@monomind/cli/dist/src/init/mcp-generator.js +99 -0
  311. package/packages/@monomind/cli/dist/src/init/settings-generator.d.ts +14 -0
  312. package/packages/@monomind/cli/dist/src/init/settings-generator.js +417 -0
  313. package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.d.ts +38 -0
  314. package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +586 -0
  315. package/packages/@monomind/cli/dist/src/init/statusline-generator.d.ts +25 -0
  316. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +1171 -0
  317. package/packages/@monomind/cli/dist/src/init/types.d.ts +315 -0
  318. package/packages/@monomind/cli/dist/src/init/types.js +254 -0
  319. package/packages/@monomind/cli/dist/src/interactive/interrupt.d.ts +22 -0
  320. package/packages/@monomind/cli/dist/src/interactive/interrupt.js +71 -0
  321. package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.d.ts +25 -0
  322. package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.js +48 -0
  323. package/packages/@monomind/cli/dist/src/mcp/tool-registry.d.ts +61 -0
  324. package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +246 -0
  325. package/packages/@monomind/cli/dist/src/mcp-client.d.ts +92 -0
  326. package/packages/@monomind/cli/dist/src/mcp-client.js +270 -0
  327. package/packages/@monomind/cli/dist/src/mcp-server.d.ts +170 -0
  328. package/packages/@monomind/cli/dist/src/mcp-server.js +829 -0
  329. package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.d.ts +14 -0
  330. package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.js +244 -0
  331. package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.d.ts +9 -0
  332. package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +607 -0
  333. package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
  334. package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.js +596 -0
  335. package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
  336. package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +326 -0
  337. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.d.ts +83 -0
  338. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +129 -0
  339. package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.d.ts +12 -0
  340. package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +237 -0
  341. package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.d.ts +13 -0
  342. package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +729 -0
  343. package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.d.ts +12 -0
  344. package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +797 -0
  345. package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.d.ts +8 -0
  346. package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +381 -0
  347. package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.d.ts +13 -0
  348. package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +728 -0
  349. package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.d.ts +13 -0
  350. package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +509 -0
  351. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.d.ts +9 -0
  352. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +823 -0
  353. package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.d.ts +9 -0
  354. package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +485 -0
  355. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.d.ts +10 -0
  356. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +49 -0
  357. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.d.ts +15 -0
  358. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +646 -0
  359. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
  360. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +957 -0
  361. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.d.ts +44 -0
  362. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +3440 -0
  363. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +39 -0
  364. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +41 -0
  365. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.d.ts +14 -0
  366. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +530 -0
  367. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +9 -0
  368. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +6306 -0
  369. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.d.ts +16 -0
  370. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +718 -0
  371. package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.d.ts +16 -0
  372. package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +656 -0
  373. package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.d.ts +14 -0
  374. package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +350 -0
  375. package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.d.ts +17 -0
  376. package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +30 -0
  377. package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
  378. package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.js +295 -0
  379. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.d.ts +18 -0
  380. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +434 -0
  381. package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.d.ts +8 -0
  382. package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +378 -0
  383. package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.d.ts +9 -0
  384. package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +317 -0
  385. package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.d.ts +13 -0
  386. package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +552 -0
  387. package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.d.ts +8 -0
  388. package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +446 -0
  389. package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.d.ts +8 -0
  390. package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +309 -0
  391. package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
  392. package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +401 -0
  393. package/packages/@monomind/cli/dist/src/mcp-tools/types.d.ts +37 -0
  394. package/packages/@monomind/cli/dist/src/mcp-tools/types.js +14 -0
  395. package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
  396. package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.js +230 -0
  397. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
  398. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +631 -0
  399. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.d.ts +295 -0
  400. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +632 -0
  401. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +338 -0
  402. package/packages/@monomind/cli/dist/src/memory/intelligence.js +1049 -0
  403. package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +410 -0
  404. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +1654 -0
  405. package/packages/@monomind/cli/dist/src/memory/memory-initializer.d.ts +414 -0
  406. package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +2284 -0
  407. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +234 -0
  408. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +650 -0
  409. package/packages/@monomind/cli/dist/src/model/complexity-scorer.d.ts +21 -0
  410. package/packages/@monomind/cli/dist/src/model/complexity-scorer.js +106 -0
  411. package/packages/@monomind/cli/dist/src/model/index.d.ts +4 -0
  412. package/packages/@monomind/cli/dist/src/model/index.js +4 -0
  413. package/packages/@monomind/cli/dist/src/model/model-settings.d.ts +22 -0
  414. package/packages/@monomind/cli/dist/src/model/model-settings.js +33 -0
  415. package/packages/@monomind/cli/dist/src/model/model-tier-resolver.d.ts +24 -0
  416. package/packages/@monomind/cli/dist/src/model/model-tier-resolver.js +65 -0
  417. package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +40 -0
  418. package/packages/@monomind/cli/dist/src/observability/replay-reader.js +138 -0
  419. package/packages/@monomind/cli/dist/src/orchestration/index.d.ts +7 -0
  420. package/packages/@monomind/cli/dist/src/orchestration/index.js +6 -0
  421. package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.d.ts +11 -0
  422. package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.js +31 -0
  423. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.d.ts +68 -0
  424. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +180 -0
  425. package/packages/@monomind/cli/dist/src/output.d.ts +133 -0
  426. package/packages/@monomind/cli/dist/src/output.js +514 -0
  427. package/packages/@monomind/cli/dist/src/parser.d.ts +59 -0
  428. package/packages/@monomind/cli/dist/src/parser.js +459 -0
  429. package/packages/@monomind/cli/dist/src/plugins/manager.d.ts +133 -0
  430. package/packages/@monomind/cli/dist/src/plugins/manager.js +493 -0
  431. package/packages/@monomind/cli/dist/src/plugins/store/discovery.d.ts +88 -0
  432. package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +859 -0
  433. package/packages/@monomind/cli/dist/src/plugins/store/index.d.ts +76 -0
  434. package/packages/@monomind/cli/dist/src/plugins/store/index.js +141 -0
  435. package/packages/@monomind/cli/dist/src/plugins/store/search.d.ts +46 -0
  436. package/packages/@monomind/cli/dist/src/plugins/store/search.js +230 -0
  437. package/packages/@monomind/cli/dist/src/plugins/store/types.d.ts +274 -0
  438. package/packages/@monomind/cli/dist/src/plugins/store/types.js +7 -0
  439. package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
  440. package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.js +126 -0
  441. package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.d.ts +12 -0
  442. package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.js +188 -0
  443. package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
  444. package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.js +206 -0
  445. package/packages/@monomind/cli/dist/src/production/circuit-breaker.d.ts +101 -0
  446. package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +248 -0
  447. package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +94 -0
  448. package/packages/@monomind/cli/dist/src/production/error-handler.js +321 -0
  449. package/packages/@monomind/cli/dist/src/production/index.d.ts +23 -0
  450. package/packages/@monomind/cli/dist/src/production/index.js +18 -0
  451. package/packages/@monomind/cli/dist/src/production/monitoring.d.ts +161 -0
  452. package/packages/@monomind/cli/dist/src/production/monitoring.js +360 -0
  453. package/packages/@monomind/cli/dist/src/production/rate-limiter.d.ts +80 -0
  454. package/packages/@monomind/cli/dist/src/production/rate-limiter.js +209 -0
  455. package/packages/@monomind/cli/dist/src/production/retry.d.ts +48 -0
  456. package/packages/@monomind/cli/dist/src/production/retry.js +179 -0
  457. package/packages/@monomind/cli/dist/src/prompt.d.ts +44 -0
  458. package/packages/@monomind/cli/dist/src/prompt.js +501 -0
  459. package/packages/@monomind/cli/dist/src/runtime/headless.d.ts +60 -0
  460. package/packages/@monomind/cli/dist/src/runtime/headless.js +284 -0
  461. package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.d.ts +182 -0
  462. package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.js +316 -0
  463. package/packages/@monomind/cli/dist/src/ruvector/ast-analyzer.d.ts +67 -0
  464. package/packages/@monomind/cli/dist/src/ruvector/ast-analyzer.js +277 -0
  465. package/packages/@monomind/cli/dist/src/ruvector/coverage-router.d.ts +160 -0
  466. package/packages/@monomind/cli/dist/src/ruvector/coverage-router.js +539 -0
  467. package/packages/@monomind/cli/dist/src/ruvector/coverage-tools.d.ts +33 -0
  468. package/packages/@monomind/cli/dist/src/ruvector/coverage-tools.js +157 -0
  469. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.d.ts +176 -0
  470. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.js +718 -0
  471. package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.d.ts +146 -0
  472. package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.js +551 -0
  473. package/packages/@monomind/cli/dist/src/ruvector/flash-attention.d.ts +195 -0
  474. package/packages/@monomind/cli/dist/src/ruvector/flash-attention.js +643 -0
  475. package/packages/@monomind/cli/dist/src/ruvector/graph-analyzer.d.ts +187 -0
  476. package/packages/@monomind/cli/dist/src/ruvector/graph-analyzer.js +929 -0
  477. package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +39 -0
  478. package/packages/@monomind/cli/dist/src/ruvector/index.js +76 -0
  479. package/packages/@monomind/cli/dist/src/ruvector/lora-adapter.d.ts +218 -0
  480. package/packages/@monomind/cli/dist/src/ruvector/lora-adapter.js +455 -0
  481. package/packages/@monomind/cli/dist/src/ruvector/model-router.d.ts +222 -0
  482. package/packages/@monomind/cli/dist/src/ruvector/model-router.js +512 -0
  483. package/packages/@monomind/cli/dist/src/ruvector/moe-router.d.ts +213 -0
  484. package/packages/@monomind/cli/dist/src/ruvector/moe-router.js +649 -0
  485. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.d.ts +217 -0
  486. package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.js +712 -0
  487. package/packages/@monomind/cli/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
  488. package/packages/@monomind/cli/dist/src/ruvector/ruvllm-wasm.js +363 -0
  489. package/packages/@monomind/cli/dist/src/ruvector/semantic-router.d.ts +77 -0
  490. package/packages/@monomind/cli/dist/src/ruvector/semantic-router.js +178 -0
  491. package/packages/@monomind/cli/dist/src/ruvector/vector-db.d.ts +69 -0
  492. package/packages/@monomind/cli/dist/src/ruvector/vector-db.js +243 -0
  493. package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  494. package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.js +95 -0
  495. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +206 -0
  496. package/packages/@monomind/cli/dist/src/services/claim-service.js +849 -0
  497. package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +51 -0
  498. package/packages/@monomind/cli/dist/src/services/config-file-manager.js +312 -0
  499. package/packages/@monomind/cli/dist/src/services/container-worker-pool.d.ts +197 -0
  500. package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +623 -0
  501. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +311 -0
  502. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +1167 -0
  503. package/packages/@monomind/cli/dist/src/services/index.d.ts +13 -0
  504. package/packages/@monomind/cli/dist/src/services/index.js +11 -0
  505. package/packages/@monomind/cli/dist/src/services/registry-api.d.ts +58 -0
  506. package/packages/@monomind/cli/dist/src/services/registry-api.js +199 -0
  507. package/packages/@monomind/cli/dist/src/services/ruvector-training.d.ts +222 -0
  508. package/packages/@monomind/cli/dist/src/services/ruvector-training.js +696 -0
  509. package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +248 -0
  510. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +1083 -0
  511. package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +201 -0
  512. package/packages/@monomind/cli/dist/src/services/worker-queue.js +594 -0
  513. package/packages/@monomind/cli/dist/src/suggest.d.ts +53 -0
  514. package/packages/@monomind/cli/dist/src/suggest.js +209 -0
  515. package/packages/@monomind/cli/dist/src/swarm/communication-graph.d.ts +25 -0
  516. package/packages/@monomind/cli/dist/src/swarm/communication-graph.js +77 -0
  517. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +31 -0
  518. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +61 -0
  519. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +19 -0
  520. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +68 -0
  521. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.d.ts +25 -0
  522. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +177 -0
  523. package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.d.ts +13 -0
  524. package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.js +205 -0
  525. package/packages/@monomind/cli/dist/src/transfer/export.d.ts +25 -0
  526. package/packages/@monomind/cli/dist/src/transfer/export.js +115 -0
  527. package/packages/@monomind/cli/dist/src/transfer/index.d.ts +12 -0
  528. package/packages/@monomind/cli/dist/src/transfer/index.js +31 -0
  529. package/packages/@monomind/cli/dist/src/transfer/ipfs/client.d.ts +109 -0
  530. package/packages/@monomind/cli/dist/src/transfer/ipfs/client.js +384 -0
  531. package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.d.ts +95 -0
  532. package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +420 -0
  533. package/packages/@monomind/cli/dist/src/transfer/models/seraphine.d.ts +72 -0
  534. package/packages/@monomind/cli/dist/src/transfer/models/seraphine.js +373 -0
  535. package/packages/@monomind/cli/dist/src/transfer/serialization/cfp.d.ts +49 -0
  536. package/packages/@monomind/cli/dist/src/transfer/serialization/cfp.js +183 -0
  537. package/packages/@monomind/cli/dist/src/transfer/storage/gcs.d.ts +82 -0
  538. package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +281 -0
  539. package/packages/@monomind/cli/dist/src/transfer/storage/index.d.ts +6 -0
  540. package/packages/@monomind/cli/dist/src/transfer/storage/index.js +6 -0
  541. package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +91 -0
  542. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +437 -0
  543. package/packages/@monomind/cli/dist/src/transfer/store/download.d.ts +79 -0
  544. package/packages/@monomind/cli/dist/src/transfer/store/download.js +423 -0
  545. package/packages/@monomind/cli/dist/src/transfer/store/index.d.ts +84 -0
  546. package/packages/@monomind/cli/dist/src/transfer/store/index.js +153 -0
  547. package/packages/@monomind/cli/dist/src/transfer/store/publish.d.ts +76 -0
  548. package/packages/@monomind/cli/dist/src/transfer/store/publish.js +293 -0
  549. package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +58 -0
  550. package/packages/@monomind/cli/dist/src/transfer/store/registry.js +301 -0
  551. package/packages/@monomind/cli/dist/src/transfer/store/search.d.ts +54 -0
  552. package/packages/@monomind/cli/dist/src/transfer/store/search.js +232 -0
  553. package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
  554. package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.js +190 -0
  555. package/packages/@monomind/cli/dist/src/transfer/store/types.d.ts +193 -0
  556. package/packages/@monomind/cli/dist/src/transfer/store/types.js +6 -0
  557. package/packages/@monomind/cli/dist/src/transfer/test-seraphine.d.ts +6 -0
  558. package/packages/@monomind/cli/dist/src/transfer/test-seraphine.js +105 -0
  559. package/packages/@monomind/cli/dist/src/transfer/tests/test-store.d.ts +7 -0
  560. package/packages/@monomind/cli/dist/src/transfer/tests/test-store.js +214 -0
  561. package/packages/@monomind/cli/dist/src/transfer/types.d.ts +245 -0
  562. package/packages/@monomind/cli/dist/src/transfer/types.js +6 -0
  563. package/packages/@monomind/cli/dist/src/types.d.ts +198 -0
  564. package/packages/@monomind/cli/dist/src/types.js +38 -0
  565. package/packages/@monomind/cli/dist/src/update/checker.d.ts +34 -0
  566. package/packages/@monomind/cli/dist/src/update/checker.js +198 -0
  567. package/packages/@monomind/cli/dist/src/update/executor.d.ts +32 -0
  568. package/packages/@monomind/cli/dist/src/update/executor.js +186 -0
  569. package/packages/@monomind/cli/dist/src/update/index.d.ts +33 -0
  570. package/packages/@monomind/cli/dist/src/update/index.js +64 -0
  571. package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +31 -0
  572. package/packages/@monomind/cli/dist/src/update/rate-limiter.js +116 -0
  573. package/packages/@monomind/cli/dist/src/update/validator.d.ts +17 -0
  574. package/packages/@monomind/cli/dist/src/update/validator.js +118 -0
  575. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.d.ts +6 -0
  576. package/packages/@monomind/cli/dist/src/utils/parse-jsonl.js +22 -0
  577. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.d.ts +10 -0
  578. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +82 -0
  579. package/packages/@monomind/cli/dist/src/workflow/context-resolver.d.ts +12 -0
  580. package/packages/@monomind/cli/dist/src/workflow/context-resolver.js +23 -0
  581. package/packages/@monomind/cli/dist/src/workflow/dag-builder.d.ts +17 -0
  582. package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +129 -0
  583. package/packages/@monomind/cli/dist/src/workflow/dag-executor.d.ts +9 -0
  584. package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +116 -0
  585. package/packages/@monomind/cli/dist/src/workflow/dag-types.d.ts +41 -0
  586. package/packages/@monomind/cli/dist/src/workflow/dag-types.js +8 -0
  587. package/packages/@monomind/cli/dist/src/workflow/dsl-parser.d.ts +12 -0
  588. package/packages/@monomind/cli/dist/src/workflow/dsl-parser.js +20 -0
  589. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +165 -0
  590. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +82 -0
  591. package/packages/@monomind/cli/dist/src/workflow/index.d.ts +13 -0
  592. package/packages/@monomind/cli/dist/src/workflow/index.js +11 -0
  593. package/packages/@monomind/cli/dist/src/workflow/template-engine.d.ts +11 -0
  594. package/packages/@monomind/cli/dist/src/workflow/template-engine.js +40 -0
  595. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.d.ts +29 -0
  596. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +227 -0
  597. package/packages/@monomind/cli/package.json +2 -1
@@ -0,0 +1,1171 @@
1
+ /**
2
+ * Statusline Configuration Generator (Optimized)
3
+ * Creates fast, reliable statusline for V1 progress display
4
+ *
5
+ * Performance:
6
+ * - Single combined git execSync call (not 8+ separate ones)
7
+ * - process.memoryUsage() instead of ps aux
8
+ * - No recursive test file content reading
9
+ * - Shared settings cache
10
+ * - Strict 2s timeouts on all shell calls
11
+ */
12
+ /**
13
+ * Generate optimized statusline script
14
+ * Output format:
15
+ * ▊ Monomind ● user │ ⎇ branch │ Opus 4.6 (1M context)
16
+ * ─────────────────────────────────────────────────────
17
+ * 🏗️ DDD Domains [●●○○○] 2/5 ⚡ HNSW 150x
18
+ * 🤖 Swarm ◉ [ 5/15] 👥 2 🪝 10/17 🟢 CVE 3/3 💾 4MB 🧠 63%
19
+ * 🔧 Architecture ADRs ●71% │ DDD ● 13% │ Security ●CLEAN
20
+ * 📊 AgentDB Vectors ●3104⚡ │ Size 216KB │ Tests ●6 (~24 cases) │ MCP ●1/1
21
+ */
22
+ export function generateStatuslineScript(options) {
23
+ const maxAgents = options.runtime.maxAgents;
24
+ return `#!/usr/bin/env node
25
+ /**
26
+ * Monomind V1 Statusline Generator (Optimized)
27
+ * Displays real-time v1 implementation progress and system status
28
+ *
29
+ * Usage: node statusline.cjs [--json] [--compact]
30
+ *
31
+ * Performance notes:
32
+ * - Single git execSync call (combines branch + status + upstream)
33
+ * - No recursive file reading (only stat/readdir, never read test contents)
34
+ * - No ps aux calls (uses process.memoryUsage() + file-based metrics)
35
+ * - Strict 2s timeout on all execSync calls
36
+ * - Shared settings cache across functions
37
+ */
38
+
39
+ /* eslint-disable @typescript-eslint/no-var-requires */
40
+ const fs = require('fs');
41
+ const path = require('path');
42
+ const { execSync } = require('child_process');
43
+ const os = require('os');
44
+
45
+ // Configuration
46
+ const CONFIG = {
47
+ maxAgents: ${maxAgents},
48
+ };
49
+
50
+ const CWD = process.env.CLAUDE_PROJECT_DIR || process.cwd();
51
+
52
+ // Read monomind version — check global install first, then CWD package.json
53
+ function getVersion() {
54
+ // 1. Monomind global install: script lives at <install>/packages/@monomind/cli/dist/src/init/
55
+ // or user project: .claude/helpers/statusline.cjs
56
+ // Walk up to find a monomind package.json (has "name":"monomind" or "@monomind/cli")
57
+ const scriptDir = path.dirname(__filename);
58
+ const walkCandidates = [
59
+ path.join(scriptDir, '..', '..', 'package.json'), // dist/src -> @monomind/cli
60
+ path.join(scriptDir, '..', '..', '..', 'package.json'), // -> monomind umbrella
61
+ path.join(scriptDir, '..', '..', '..', '..', 'package.json'),
62
+ ];
63
+ for (const p of walkCandidates) {
64
+ try {
65
+ const pkg = JSON.parse(fs.readFileSync(p, 'utf-8'));
66
+ if (pkg.version && (pkg.name === 'monomind' || pkg.name === '@monomind/cli' || (pkg.name || '').startsWith('@monomind'))) {
67
+ return \`v\${pkg.version}\`;
68
+ }
69
+ } catch { /* ignore */ }
70
+ }
71
+ // 2. Fallback: npm global prefix
72
+ try {
73
+ const { execSync } = require('child_process');
74
+ const prefix = execSync('npm config get prefix', { encoding: 'utf-8', timeout: 2000 }).trim();
75
+ const pkg = JSON.parse(fs.readFileSync(path.join(prefix, 'lib', 'node_modules', 'monomind', 'package.json'), 'utf-8'));
76
+ if (pkg.version) return \`v\${pkg.version}\`;
77
+ } catch { /* ignore */ }
78
+ return 'v1.0.6';
79
+ }
80
+ const VERSION = getVersion();
81
+
82
+ // ANSI colors
83
+ const c = {
84
+ reset: '\\x1b[0m',
85
+ bold: '\\x1b[1m',
86
+ dim: '\\x1b[2m',
87
+ red: '\\x1b[0;31m',
88
+ green: '\\x1b[0;32m',
89
+ yellow: '\\x1b[0;33m',
90
+ blue: '\\x1b[0;34m',
91
+ purple: '\\x1b[0;35m',
92
+ cyan: '\\x1b[0;36m',
93
+ brightRed: '\\x1b[1;31m',
94
+ brightGreen: '\\x1b[1;32m',
95
+ brightYellow: '\\x1b[1;33m',
96
+ brightBlue: '\\x1b[1;34m',
97
+ brightPurple: '\\x1b[1;35m',
98
+ brightCyan: '\\x1b[1;36m',
99
+ brightWhite: '\\x1b[1;37m',
100
+ };
101
+
102
+ // Safe execSync with strict timeout (returns empty string on failure)
103
+ function safeExec(cmd, timeoutMs = 2000) {
104
+ try {
105
+ return execSync(cmd, {
106
+ encoding: 'utf-8',
107
+ timeout: timeoutMs,
108
+ stdio: ['pipe', 'pipe', 'pipe'],
109
+ }).trim();
110
+ } catch {
111
+ return '';
112
+ }
113
+ }
114
+
115
+ // Safe JSON file reader (returns null on failure)
116
+ function readJSON(filePath) {
117
+ try {
118
+ if (fs.existsSync(filePath)) {
119
+ return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
120
+ }
121
+ } catch { /* ignore */ }
122
+ return null;
123
+ }
124
+
125
+ // Safe file stat (returns null on failure)
126
+ function safeStat(filePath) {
127
+ try {
128
+ return fs.statSync(filePath);
129
+ } catch { /* ignore */ }
130
+ return null;
131
+ }
132
+
133
+ // Shared settings cache — read once, used by multiple functions
134
+ let _settingsCache = undefined;
135
+ function getSettings() {
136
+ if (_settingsCache !== undefined) return _settingsCache;
137
+ _settingsCache = readJSON(path.join(CWD, '.claude', 'settings.json'))
138
+ || readJSON(path.join(CWD, '.claude', 'settings.local.json'))
139
+ || null;
140
+ return _settingsCache;
141
+ }
142
+
143
+ // Project identifier — github owner/repo from git remote, else folder name
144
+ function getProjectName() {
145
+ try {
146
+ const remote = safeExec('git remote get-url origin 2>/dev/null', 2000).trim();
147
+ if (remote) {
148
+ const m = remote.match(/[/:]([\w.-]+)\/([\w.-]+?)(?:\.git)?$/);
149
+ if (m) return \`\${m[1]}/\${m[2]}\`;
150
+ }
151
+ } catch { /* ignore */ }
152
+ return path.basename(CWD);
153
+ }
154
+
155
+ // ─── Data Collection (all pure-Node.js or single-exec) ──────────
156
+
157
+ // Get all git info in ONE shell call
158
+ function getGitInfo() {
159
+ const result = {
160
+ name: 'user', gitBranch: '', modified: 0, untracked: 0,
161
+ staged: 0, ahead: 0, behind: 0,
162
+ };
163
+
164
+ // Single shell: get user.name, branch, porcelain status, and upstream diff
165
+ const script = [
166
+ 'git config user.name 2>/dev/null || echo user',
167
+ 'echo "---SEP---"',
168
+ 'git branch --show-current 2>/dev/null',
169
+ 'echo "---SEP---"',
170
+ 'git status --porcelain 2>/dev/null',
171
+ 'echo "---SEP---"',
172
+ 'git rev-list --left-right --count HEAD...@{upstream} 2>/dev/null || echo "0 0"',
173
+ ].join('; ');
174
+
175
+ const raw = safeExec(\`sh -c '\${script}'\`, 3000);
176
+ if (!raw) return result;
177
+
178
+ const parts = raw.split('---SEP---').map(s => s.trim());
179
+ if (parts.length >= 4) {
180
+ result.name = parts[0] || 'user';
181
+ result.gitBranch = parts[1] || '';
182
+
183
+ // Parse porcelain status
184
+ if (parts[2]) {
185
+ for (const line of parts[2].split('\\n')) {
186
+ if (!line || line.length < 2) continue;
187
+ const x = line[0], y = line[1];
188
+ if (x === '?' && y === '?') { result.untracked++; continue; }
189
+ if (x !== ' ' && x !== '?') result.staged++;
190
+ if (y !== ' ' && y !== '?') result.modified++;
191
+ }
192
+ }
193
+
194
+ // Parse ahead/behind
195
+ const ab = (parts[3] || '0 0').split(/\\s+/);
196
+ result.ahead = parseInt(ab[0]) || 0;
197
+ result.behind = parseInt(ab[1]) || 0;
198
+ }
199
+
200
+ return result;
201
+ }
202
+
203
+ // Normalise a model ID string to a short display name
204
+ function modelLabel(id) {
205
+ if (id.includes('opus')) return 'Opus 4.6';
206
+ if (id.includes('sonnet')) return 'Sonnet 4.6';
207
+ if (id.includes('haiku')) return 'Haiku 4.5';
208
+ return id.split('-').slice(1, 3).join(' ');
209
+ }
210
+
211
+ // Read the last assistant model from the most recent session JSONL.
212
+ // Claude Code writes each assistant turn to ~/.claude/projects/<escaped-cwd>/<uuid>.jsonl
213
+ // with a "message.model" field — this is the most accurate live source and
214
+ // correctly reflects /model session overrides.
215
+ function getModelFromSessionJSONL() {
216
+ try {
217
+ // Escape CWD the same way Claude Code does: replace '/' with '-'
218
+ const escaped = CWD.replace(/\\//g, '-');
219
+ const projectsDir = path.join(os.homedir(), '.claude', 'projects', escaped);
220
+ if (!fs.existsSync(projectsDir)) return null;
221
+
222
+ // Most recently modified JSONL = current (or latest) session
223
+ const files = fs.readdirSync(projectsDir)
224
+ .filter(f => f.endsWith('.jsonl'))
225
+ .map(f => ({ f, mt: (() => { try { return fs.statSync(path.join(projectsDir, f)).mtimeMs; } catch { return 0; } })() }))
226
+ .sort((a, b) => b.mt - a.mt);
227
+ if (files.length === 0) return null;
228
+
229
+ const sessionFile = path.join(projectsDir, files[0].f);
230
+ const raw = fs.readFileSync(sessionFile, 'utf-8');
231
+ const lines = raw.split('\\n').filter(Boolean);
232
+
233
+ // Scan from the end to find the most recent assistant model
234
+ for (let i = lines.length - 1; i >= 0; i--) {
235
+ try {
236
+ const entry = JSON.parse(lines[i]);
237
+ const model = entry?.message?.model || entry?.model;
238
+ if (model && typeof model === 'string' && model.startsWith('claude')) {
239
+ return model;
240
+ }
241
+ } catch { /* skip malformed line */ }
242
+ }
243
+ } catch { /* ignore */ }
244
+ return null;
245
+ }
246
+
247
+ // Detect model name from Claude config (pure file reads, no exec)
248
+ function getModelName() {
249
+ // PRIMARY: scan the live session JSONL — reflects /model overrides in real time
250
+ const sessionModel = getModelFromSessionJSONL();
251
+ if (sessionModel) return modelLabel(sessionModel);
252
+
253
+ // SECONDARY: ~/.claude.json lastModelUsage for this exact project path
254
+ // (longest-prefix match to avoid short paths like /Users matching first)
255
+ try {
256
+ const claudeConfig = readJSON(path.join(os.homedir(), '.claude.json'));
257
+ if (claudeConfig?.projects) {
258
+ let bestMatch = null;
259
+ let bestLen = -1;
260
+ for (const [projectPath, projectConfig] of Object.entries(claudeConfig.projects)) {
261
+ if (CWD === projectPath || CWD.startsWith(projectPath + '/')) {
262
+ if (projectPath.length > bestLen) {
263
+ bestLen = projectPath.length;
264
+ bestMatch = projectConfig;
265
+ }
266
+ }
267
+ }
268
+ if (bestMatch?.lastModelUsage) {
269
+ const usage = bestMatch.lastModelUsage;
270
+ const ids = Object.keys(usage);
271
+ if (ids.length > 0) {
272
+ let bestId = ids[ids.length - 1];
273
+ let bestTokens = -1;
274
+ for (const id of ids) {
275
+ const e = usage[id] || {};
276
+ const tokens = (e.inputTokens || 0) + (e.outputTokens || 0);
277
+ if (tokens > bestTokens) { bestTokens = tokens; bestId = id; }
278
+ }
279
+ return modelLabel(bestId);
280
+ }
281
+ }
282
+ }
283
+ } catch { /* ignore */ }
284
+
285
+ // TERTIARY: settings.json model field (configured default, not live session).
286
+ const settings = getSettings();
287
+ if (settings?.model) return modelLabel(settings.model);
288
+
289
+ // QUATERNARY: read ANTHROPIC_MODEL or CLAUDE_MODEL env var (set by the CLI at launch)
290
+ const envModel = process.env.ANTHROPIC_MODEL || process.env.CLAUDE_MODEL || process.env.MODEL;
291
+ if (envModel && envModel.startsWith('claude')) return modelLabel(envModel);
292
+
293
+ // QUINARY: current model from the model ID in the env injected by Claude Code itself
294
+ const claudeModel = process.env.CLAUDE_CODE_MODEL;
295
+ if (claudeModel) return modelLabel(claudeModel);
296
+
297
+ return 'Sonnet 4.6'; // known current default rather than the generic "Claude Code"
298
+ }
299
+
300
+ // Get learning stats from memory database (pure stat calls)
301
+ function getLearningStats() {
302
+ const memoryPaths = [
303
+ path.join(CWD, '.swarm', 'memory.db'),
304
+ path.join(CWD, '.monomind', 'memory.db'),
305
+ path.join(CWD, '.claude', 'memory.db'),
306
+ path.join(CWD, 'data', 'memory.db'),
307
+ path.join(CWD, '.agentdb', 'memory.db'),
308
+ ];
309
+
310
+ for (const dbPath of memoryPaths) {
311
+ const stat = safeStat(dbPath);
312
+ if (stat) {
313
+ const sizeKB = stat.size / 1024;
314
+ const patterns = Math.floor(sizeKB / 2);
315
+ return {
316
+ patterns,
317
+ sessions: Math.max(1, Math.floor(patterns / 10)),
318
+ };
319
+ }
320
+ }
321
+
322
+ // Check session files count
323
+ let sessions = 0;
324
+ try {
325
+ const sessDir = path.join(CWD, '.claude', 'sessions');
326
+ if (fs.existsSync(sessDir)) {
327
+ sessions = fs.readdirSync(sessDir).filter(f => f.endsWith('.json')).length;
328
+ }
329
+ } catch { /* ignore */ }
330
+
331
+ return { patterns: 0, sessions };
332
+ }
333
+
334
+ // progress from metrics files (pure file reads)
335
+ function getv1Progress() {
336
+ const learning = getLearningStats();
337
+ const totalDomains = 5;
338
+
339
+ const dddData = readJSON(path.join(CWD, '.monomind', 'metrics', 'ddd-progress.json'));
340
+ let dddProgress = dddData?.progress || 0;
341
+ let domainsCompleted = Math.min(5, Math.floor(dddProgress / 20));
342
+
343
+ if (dddProgress === 0 && learning.patterns > 0) {
344
+ if (learning.patterns >= 500) domainsCompleted = 5;
345
+ else if (learning.patterns >= 200) domainsCompleted = 4;
346
+ else if (learning.patterns >= 100) domainsCompleted = 3;
347
+ else if (learning.patterns >= 50) domainsCompleted = 2;
348
+ else if (learning.patterns >= 10) domainsCompleted = 1;
349
+ dddProgress = Math.floor((domainsCompleted / totalDomains) * 100);
350
+ }
351
+
352
+ return {
353
+ domainsCompleted, totalDomains, dddProgress,
354
+ patternsLearned: learning.patterns,
355
+ sessionsCompleted: learning.sessions,
356
+ };
357
+ }
358
+
359
+ // Security status (pure file reads)
360
+ function getSecurityStatus() {
361
+ const auditData = readJSON(path.join(CWD, '.monomind', 'security', 'audit-status.json'));
362
+ if (auditData) {
363
+ const auditDate = auditData.lastAudit || auditData.lastScan;
364
+ if (!auditDate) {
365
+ // No audit has ever run — show as pending, not stale
366
+ return { status: 'PENDING', cvesFixed: 0, totalCves: 0 };
367
+ }
368
+ const auditAge = Date.now() - new Date(auditDate).getTime();
369
+ const isStale = auditAge > 7 * 24 * 60 * 60 * 1000;
370
+ return {
371
+ status: isStale ? 'STALE' : (auditData.status || 'PENDING'),
372
+ cvesFixed: auditData.cvesFixed || 0,
373
+ totalCves: auditData.totalCves || 0,
374
+ };
375
+ }
376
+
377
+ let scanCount = 0;
378
+ try {
379
+ const scanDir = path.join(CWD, '.claude', 'security-scans');
380
+ if (fs.existsSync(scanDir)) {
381
+ scanCount = fs.readdirSync(scanDir).filter(f => f.endsWith('.json')).length;
382
+ }
383
+ } catch { /* ignore */ }
384
+
385
+ return {
386
+ status: scanCount > 0 ? 'SCANNED' : 'NONE',
387
+ cvesFixed: 0,
388
+ totalCves: 0,
389
+ };
390
+ }
391
+
392
+ // Swarm status (pure file reads, NO ps aux)
393
+ function getSwarmStatus() {
394
+ const staleThresholdMs = 5 * 60 * 1000;
395
+ const agentRegTtlMs = 30 * 60 * 1000; // registration files expire after 30 min
396
+ const now = Date.now();
397
+
398
+ // PRIMARY: count live registration files written by SubagentStart hook
399
+ // Each file = one active sub-agent. Stale files (>30 min) are ignored.
400
+ const regDir = path.join(CWD, '.monomind', 'agents', 'registrations');
401
+ if (fs.existsSync(regDir)) {
402
+ try {
403
+ const files = fs.readdirSync(regDir).filter(f => f.endsWith('.json'));
404
+ const liveCount = files.filter(f => {
405
+ try {
406
+ return (now - fs.statSync(path.join(regDir, f)).mtimeMs) < agentRegTtlMs;
407
+ } catch { return false; }
408
+ }).length;
409
+ if (liveCount > 0) {
410
+ return {
411
+ activeAgents: liveCount,
412
+ maxAgents: CONFIG.maxAgents,
413
+ coordinationActive: true,
414
+ };
415
+ }
416
+ } catch { /* fall through */ }
417
+ }
418
+
419
+ // SECONDARY: swarm-state.json written by MCP swarm_init — trust if fresh
420
+ const swarmStatePath = path.join(CWD, '.monomind', 'swarm', 'swarm-state.json');
421
+ const swarmState = readJSON(swarmStatePath);
422
+ if (swarmState) {
423
+ const updatedAt = swarmState.updatedAt || swarmState.startedAt;
424
+ const age = updatedAt ? now - new Date(updatedAt).getTime() : Infinity;
425
+ if (age < staleThresholdMs) {
426
+ return {
427
+ activeAgents: swarmState.agents?.length || swarmState.agentCount || 0,
428
+ maxAgents: swarmState.maxAgents || CONFIG.maxAgents,
429
+ coordinationActive: true,
430
+ };
431
+ }
432
+ }
433
+
434
+ // TERTIARY: swarm-activity.json refreshed by post-task hook
435
+ const activityData = readJSON(path.join(CWD, '.monomind', 'metrics', 'swarm-activity.json'));
436
+ if (activityData?.swarm) {
437
+ const updatedAt = activityData.timestamp || activityData.swarm.timestamp;
438
+ const age = updatedAt ? now - new Date(updatedAt).getTime() : Infinity;
439
+ if (age < staleThresholdMs) {
440
+ return {
441
+ activeAgents: activityData.swarm.agent_count || 0,
442
+ maxAgents: CONFIG.maxAgents,
443
+ coordinationActive: activityData.swarm.coordination_active || activityData.swarm.active || false,
444
+ };
445
+ }
446
+ }
447
+
448
+ return { activeAgents: 0, maxAgents: CONFIG.maxAgents, coordinationActive: false };
449
+ }
450
+
451
+ // System metrics (uses process.memoryUsage() — no shell spawn)
452
+ function getSystemMetrics() {
453
+ const memoryMB = Math.floor(process.memoryUsage().heapUsed / 1024 / 1024);
454
+ const learning = getLearningStats();
455
+ const agentdb = getAgentDBStats();
456
+
457
+ // Intelligence from learning.json
458
+ const learningData = readJSON(path.join(CWD, '.monomind', 'metrics', 'learning.json'));
459
+ let intelligencePct = 0;
460
+ let contextPct = 0;
461
+
462
+ if (learningData?.intelligence?.score !== undefined) {
463
+ intelligencePct = Math.min(100, Math.floor(learningData.intelligence.score));
464
+ } else {
465
+ // Use actual vector/entry counts — 2000 entries = 100%
466
+ const fromPatterns = learning.patterns > 0 ? Math.min(100, Math.floor(learning.patterns / 20)) : 0;
467
+ const fromVectors = agentdb.vectorCount > 0 ? Math.min(100, Math.floor(agentdb.vectorCount / 20)) : 0;
468
+ intelligencePct = Math.max(fromPatterns, fromVectors);
469
+ }
470
+
471
+ // Maturity fallback (pure fs checks, no git exec)
472
+ if (intelligencePct === 0) {
473
+ let score = 0;
474
+ if (fs.existsSync(path.join(CWD, '.claude'))) score += 15;
475
+ const srcDirs = ['src', 'lib', 'app', 'packages', 'v1'];
476
+ for (const d of srcDirs) { if (fs.existsSync(path.join(CWD, d))) { score += 15; break; } }
477
+ const testDirs = ['tests', 'test', '__tests__', 'spec'];
478
+ for (const d of testDirs) { if (fs.existsSync(path.join(CWD, d))) { score += 10; break; } }
479
+ const cfgFiles = ['package.json', 'tsconfig.json', 'pyproject.toml', 'Cargo.toml', 'go.mod'];
480
+ for (const f of cfgFiles) { if (fs.existsSync(path.join(CWD, f))) { score += 5; break; } }
481
+ intelligencePct = Math.min(100, score);
482
+ }
483
+
484
+ if (learningData?.sessions?.total !== undefined) {
485
+ contextPct = Math.min(100, learningData.sessions.total * 5);
486
+ } else {
487
+ contextPct = Math.min(100, Math.floor(learning.sessions * 5));
488
+ }
489
+
490
+ // Sub-agents from file metrics (no ps aux)
491
+ let subAgents = 0;
492
+ const activityData = readJSON(path.join(CWD, '.monomind', 'metrics', 'swarm-activity.json'));
493
+ if (activityData?.processes?.estimated_agents) {
494
+ subAgents = activityData.processes.estimated_agents;
495
+ }
496
+
497
+ return { memoryMB, contextPct, intelligencePct, subAgents };
498
+ }
499
+
500
+ // ADR status (count files only — don't read contents)
501
+ function getADRStatus() {
502
+ // Count actual ADR files first — compliance JSON may be stale
503
+ const adrPaths = [
504
+ path.join(CWD, 'packages', 'implementation', 'adrs'),
505
+ path.join(CWD, 'docs', 'adrs'),
506
+ path.join(CWD, '.monomind', 'adrs'),
507
+ ];
508
+
509
+ for (const adrPath of adrPaths) {
510
+ try {
511
+ if (fs.existsSync(adrPath)) {
512
+ const files = fs.readdirSync(adrPath).filter(f =>
513
+ f.endsWith('.md') && (f.startsWith('ADR-') || f.startsWith('adr-') || /^\\d{4}-/.test(f))
514
+ );
515
+ // Report actual count — don't guess compliance without reading files
516
+ return { count: files.length, implemented: files.length, compliance: 0 };
517
+ }
518
+ } catch { /* ignore */ }
519
+ }
520
+
521
+ return { count: 0, implemented: 0, compliance: 0 };
522
+ }
523
+
524
+ // Hooks status (shared settings cache)
525
+ function getHooksStatus() {
526
+ let enabled = 0;
527
+ let total = 0;
528
+ const settings = getSettings();
529
+
530
+ if (settings?.hooks) {
531
+ for (const category of Object.keys(settings.hooks)) {
532
+ const matchers = settings.hooks[category];
533
+ if (!Array.isArray(matchers)) continue;
534
+ for (const matcher of matchers) {
535
+ const hooks = matcher?.hooks;
536
+ if (Array.isArray(hooks)) {
537
+ total += hooks.length;
538
+ enabled += hooks.length;
539
+ }
540
+ }
541
+ }
542
+ }
543
+
544
+ try {
545
+ const hooksDir = path.join(CWD, '.claude', 'hooks');
546
+ if (fs.existsSync(hooksDir)) {
547
+ const hookFiles = fs.readdirSync(hooksDir).filter(f => f.endsWith('.js') || f.endsWith('.sh')).length;
548
+ total = Math.max(total, hookFiles);
549
+ enabled = Math.max(enabled, hookFiles);
550
+ }
551
+ } catch { /* ignore */ }
552
+
553
+ return { enabled, total };
554
+ }
555
+
556
+ // Active agent — reads last routing result persisted by hook-handler
557
+ function getActiveAgent() {
558
+ const routeFile = path.join(CWD, '.monomind', 'last-route.json');
559
+ try {
560
+ if (!fs.existsSync(routeFile)) return null;
561
+ const data = JSON.parse(fs.readFileSync(routeFile, 'utf-8'));
562
+ if (!data || !data.agent) return null;
563
+
564
+ // Stale after 30 minutes (session likely changed)
565
+ const age = Date.now() - new Date(data.updatedAt || 0).getTime();
566
+ if (age > 30 * 60 * 1000) return null;
567
+
568
+ // Prefer display name if set (from load-agent), else format the slug
569
+ const displayName = data.name || data.agent
570
+ .replace(/-/g, ' ')
571
+ .replace(/\\b\\w/g, c => c.toUpperCase());
572
+
573
+ return {
574
+ slug: data.agent,
575
+ name: displayName,
576
+ category: data.category || null,
577
+ confidence: data.confidence || 0,
578
+ activated: data.activated || false, // true = manually loaded extras agent
579
+ };
580
+ } catch { return null; }
581
+ }
582
+
583
+ // AgentDB stats — count real entries, not file-size heuristics
584
+ function getAgentDBStats() {
585
+ let vectorCount = 0;
586
+ let dbSizeKB = 0;
587
+ let namespaces = 0;
588
+ let hasHnsw = false;
589
+
590
+ // 1. Count real entries from auto-memory-store.json
591
+ const storePath = path.join(CWD, '.monomind', 'data', 'auto-memory-store.json');
592
+ const storeStat = safeStat(storePath);
593
+ if (storeStat) {
594
+ dbSizeKB += storeStat.size / 1024;
595
+ try {
596
+ const store = JSON.parse(fs.readFileSync(storePath, 'utf-8'));
597
+ if (Array.isArray(store)) vectorCount += store.length;
598
+ else if (store?.entries) vectorCount += store.entries.length;
599
+ } catch { /* fall back to size estimate */ }
600
+ }
601
+
602
+ // 2. Count entries from ranked-context.json
603
+ const rankedPath = path.join(CWD, '.monomind', 'data', 'ranked-context.json');
604
+ try {
605
+ const ranked = readJSON(rankedPath);
606
+ if (ranked?.entries?.length > vectorCount) vectorCount = ranked.entries.length;
607
+ } catch { /* ignore */ }
608
+
609
+ // 3. Add DB file sizes
610
+ const dbFiles = [
611
+ path.join(CWD, 'data', 'memory.db'),
612
+ path.join(CWD, '.monomind', 'memory.db'),
613
+ path.join(CWD, '.swarm', 'memory.db'),
614
+ ];
615
+ for (const f of dbFiles) {
616
+ const stat = safeStat(f);
617
+ if (stat) {
618
+ dbSizeKB += stat.size / 1024;
619
+ namespaces++;
620
+ }
621
+ }
622
+
623
+ // 4. Check for graph data
624
+ const graphPath = path.join(CWD, 'data', 'memory.graph');
625
+ const graphStat = safeStat(graphPath);
626
+ if (graphStat) dbSizeKB += graphStat.size / 1024;
627
+
628
+ // 5. HNSW index
629
+ const hnswPaths = [
630
+ path.join(CWD, '.swarm', 'hnsw.index'),
631
+ path.join(CWD, '.monomind', 'hnsw.index'),
632
+ ];
633
+ for (const p of hnswPaths) {
634
+ const stat = safeStat(p);
635
+ if (stat) {
636
+ hasHnsw = true;
637
+ break;
638
+ }
639
+ }
640
+
641
+ // HNSW is available if memory package is present
642
+ if (!hasHnsw) {
643
+ const memPkgPaths = [
644
+ path.join(CWD, 'packages', '@monomind', 'memory', 'dist'),
645
+ path.join(CWD, 'node_modules', '@monomind', 'memory'),
646
+ ];
647
+ for (const p of memPkgPaths) {
648
+ if (fs.existsSync(p)) { hasHnsw = true; break; }
649
+ }
650
+ }
651
+
652
+ return { vectorCount, dbSizeKB: Math.floor(dbSizeKB), namespaces, hasHnsw };
653
+ }
654
+
655
+ // Test stats (count files only — NO reading file contents)
656
+ function getTestStats() {
657
+ let testFiles = 0;
658
+
659
+ function countTestFiles(dir, depth = 0) {
660
+ if (depth > 6) return;
661
+ try {
662
+ if (!fs.existsSync(dir)) return;
663
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
664
+ for (const entry of entries) {
665
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
666
+ countTestFiles(path.join(dir, entry.name), depth + 1);
667
+ } else if (entry.isFile()) {
668
+ const n = entry.name;
669
+ if (n.includes('.test.') || n.includes('.spec.') || n.includes('_test.') || n.includes('_spec.')) {
670
+ testFiles++;
671
+ }
672
+ }
673
+ }
674
+ } catch { /* ignore */ }
675
+ }
676
+
677
+ // Scan all source directories
678
+ for (const d of ['tests', 'test', '__tests__', 'src', 'v1']) {
679
+ countTestFiles(path.join(CWD, d));
680
+ }
681
+
682
+ // Estimate ~4 test cases per file (avoids reading every file)
683
+ return { testFiles, testCases: testFiles * 4 };
684
+ }
685
+
686
+ // Integration status (shared settings + file checks)
687
+ function getIntegrationStatus() {
688
+ const mcpServers = { total: 0, enabled: 0 };
689
+ const settings = getSettings();
690
+
691
+ if (settings?.mcpServers && typeof settings.mcpServers === 'object') {
692
+ const servers = Object.keys(settings.mcpServers);
693
+ mcpServers.total = servers.length;
694
+ mcpServers.enabled = settings.enabledMcpjsonServers
695
+ ? settings.enabledMcpjsonServers.filter(s => servers.includes(s)).length
696
+ : servers.length;
697
+ }
698
+
699
+ // Fallback: .mcp.json
700
+ if (mcpServers.total === 0) {
701
+ const mcpConfig = readJSON(path.join(CWD, '.mcp.json'))
702
+ || readJSON(path.join(os.homedir(), '.claude', 'mcp.json'));
703
+ if (mcpConfig?.mcpServers) {
704
+ const s = Object.keys(mcpConfig.mcpServers);
705
+ mcpServers.total = s.length;
706
+ mcpServers.enabled = s.length;
707
+ }
708
+ }
709
+
710
+ const hasDatabase = ['.swarm/memory.db', '.monomind/memory.db', 'data/memory.db']
711
+ .some(p => fs.existsSync(path.join(CWD, p)));
712
+ const hasApi = !!(process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY);
713
+
714
+ return { mcpServers, hasDatabase, hasApi };
715
+ }
716
+
717
+ // Session stats (pure file reads)
718
+ function getSessionStats() {
719
+ for (const p of ['.monomind/session.json', '.claude/session.json']) {
720
+ const data = readJSON(path.join(CWD, p));
721
+ if (data?.startTime) {
722
+ const diffMs = Date.now() - new Date(data.startTime).getTime();
723
+ const mins = Math.floor(diffMs / 60000);
724
+ const duration = mins < 60 ? \`\${mins}m\` : \`\${Math.floor(mins / 60)}h\${mins % 60}m\`;
725
+ return { duration };
726
+ }
727
+ }
728
+ return { duration: '' };
729
+ }
730
+
731
+ // ─── Extended 256-color palette ─────────────────────────────────
732
+ const x = {
733
+ // Backgrounds (used sparingly for labels)
734
+ bgPurple: '\\x1b[48;5;55m',
735
+ bgTeal: '\\x1b[48;5;23m',
736
+ bgReset: '\\x1b[49m',
737
+ // Foregrounds
738
+ purple: '\\x1b[38;5;141m', // soft lavender-purple (brand)
739
+ violet: '\\x1b[38;5;99m', // deeper purple
740
+ teal: '\\x1b[38;5;51m', // bright teal
741
+ mint: '\\x1b[38;5;120m', // soft green
742
+ gold: '\\x1b[38;5;220m', // warm gold
743
+ orange: '\\x1b[38;5;208m', // alert orange
744
+ coral: '\\x1b[38;5;203m', // error red-pink
745
+ sky: '\\x1b[38;5;117m', // soft blue
746
+ rose: '\\x1b[38;5;218m', // warm pink
747
+ slate: '\\x1b[38;5;245m', // neutral grey
748
+ white: '\\x1b[38;5;255m', // bright white
749
+ green: '\\x1b[38;5;82m', // vivid green
750
+ red: '\\x1b[38;5;196m', // vivid red
751
+ yellow: '\\x1b[38;5;226m', // vivid yellow
752
+ // Shared
753
+ bold: '\\x1b[1m',
754
+ dim: '\\x1b[2m',
755
+ reset: '\\x1b[0m',
756
+ };
757
+
758
+ // ── Helpers ──────────────────────────────────────────────────────
759
+
760
+ // Block progress bar: ▰▰▰▱▱ (5 blocks)
761
+ function blockBar(current, total, width = 5) {
762
+ const filled = Math.min(width, Math.round((current / Math.max(total, 1)) * width));
763
+ return '\\u25B0'.repeat(filled) + \`\${x.slate}\\u25B1\${x.reset}\`.repeat(width - filled);
764
+ }
765
+
766
+ // Health dot: ● colored by status
767
+ function dot(ok) {
768
+ if (ok === 'good') return \`\${x.green}●\${x.reset}\`;
769
+ if (ok === 'warn') return \`\${x.gold}●\${x.reset}\`;
770
+ if (ok === 'error') return \`\${x.coral}●\${x.reset}\`;
771
+ return \`\${x.slate}●\${x.reset}\`; // 'none'
772
+ }
773
+
774
+ // Pill badge: [ LABEL ] with background
775
+ function badge(label, color) {
776
+ return \`\${color}[\${label}]\${x.reset}\`;
777
+ }
778
+
779
+ // Divider character
780
+ const DIV = \`\${x.slate}│\${x.reset}\`;
781
+ const SEP = \`\${x.slate}──────────────────────────────────────────────────────\${x.reset}\`;
782
+
783
+ // Pct → color
784
+ function pctColor(pct) {
785
+ if (pct >= 75) return x.green;
786
+ if (pct >= 40) return x.gold;
787
+ if (pct > 0) return x.orange;
788
+ return x.slate;
789
+ }
790
+
791
+ // Security status → label + color
792
+ function secBadge(status) {
793
+ if (status === 'CLEAN') return { label: '✔ CLEAN', col: x.green };
794
+ if (status === 'STALE') return { label: '⟳ STALE', col: x.gold };
795
+ if (status === 'IN_PROGRESS') return { label: '⟳ RUNNING', col: x.sky };
796
+ if (status === 'SCANNED') return { label: '✔ SCANNED', col: x.mint };
797
+ if (status === 'PENDING') return { label: '⏸ PENDING', col: x.gold };
798
+ return { label: '✖ NONE', col: x.slate };
799
+ }
800
+
801
+ // ── Knowledge & trigger stats (Tasks 28 + 32) ────────────────────
802
+ function getKnowledgeStats() {
803
+ const chunksPath = path.join(CWD, '.monomind', 'knowledge', 'chunks.jsonl');
804
+ const skillsPath = path.join(CWD, '.monomind', 'skills.jsonl');
805
+ let chunks = 0, skills = 0;
806
+ try {
807
+ if (fs.existsSync(chunksPath)) {
808
+ chunks = fs.readFileSync(chunksPath, 'utf-8').split('\\n').filter(Boolean).length;
809
+ }
810
+ } catch { /* ignore */ }
811
+ try {
812
+ if (fs.existsSync(skillsPath)) {
813
+ skills = fs.readFileSync(skillsPath, 'utf-8').split('\\n').filter(Boolean).length;
814
+ }
815
+ } catch { /* ignore */ }
816
+ return { chunks, skills };
817
+ }
818
+
819
+ function getTriggerStats() {
820
+ const indexPath = path.join(CWD, '.monomind', 'trigger-index.json');
821
+ try {
822
+ if (!fs.existsSync(indexPath)) return { triggers: 0, agents: 0 };
823
+ const raw = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
824
+ const idx = raw.index || raw;
825
+ const triggers = Object.keys(idx).length;
826
+ const agents = Object.values(idx).flat().length;
827
+ return { triggers, agents };
828
+ } catch { return { triggers: 0, agents: 0 }; }
829
+ }
830
+
831
+ function getSIBudget() {
832
+ const SI_LIMIT = 1500;
833
+ const siPath = path.join(CWD, '.agents', 'shared_instructions.md');
834
+ try {
835
+ if (!fs.existsSync(siPath)) return null;
836
+ const len = fs.readFileSync(siPath, 'utf-8').length;
837
+ return { len, pct: Math.round((len / SI_LIMIT) * 100), limit: SI_LIMIT };
838
+ } catch { return null; }
839
+ }
840
+
841
+ // ── Single-line statusline (compact) ─────────────────────────────
842
+ function generateStatusline() {
843
+ const git = getGitInfo();
844
+ const swarm = getSwarmStatus();
845
+ const system = getSystemMetrics();
846
+ const hooks = getHooksStatus();
847
+ const knowledge = getKnowledgeStats();
848
+ const triggers = getTriggerStats();
849
+ const parts = [];
850
+
851
+ // Brand + swarm dot
852
+ const swarmDot = swarm.coordinationActive ? \`\${x.green}●\${x.reset}\` : \`\${x.slate}○\${x.reset}\`;
853
+ parts.push(\`\${x.bold}\${x.purple}▊ Monomind\${x.reset} \${swarmDot}\`);
854
+
855
+ // Git branch + changes (compact)
856
+ if (git.gitBranch) {
857
+ let b = \`\${x.sky}⎇ \${x.bold}\${git.gitBranch}\${x.reset}\`;
858
+ if (git.staged > 0) b += \` \${x.green}+\${git.staged}\${x.reset}\`;
859
+ if (git.modified > 0) b += \` \${x.gold}~\${git.modified}\${x.reset}\`;
860
+ if (git.ahead > 0) b += \` \${x.green}↑\${git.ahead}\${x.reset}\`;
861
+ if (git.behind > 0) b += \` \${x.coral}↓\${git.behind}\${x.reset}\`;
862
+ parts.push(b);
863
+ }
864
+
865
+ // Model
866
+ parts.push(\`\${x.violet}\${getModelName()}\${x.reset}\`);
867
+
868
+ // Active agent
869
+ const activeAgent = getActiveAgent();
870
+ if (activeAgent) {
871
+ const col = activeAgent.activated ? x.green : x.sky;
872
+ const icon = activeAgent.activated ? '●' : '→';
873
+ parts.push(\`\${col}\${icon} \${x.bold}\${activeAgent.name}\${x.reset}\`);
874
+ }
875
+
876
+ // Intelligence
877
+ const ic = pctColor(system.intelligencePct);
878
+ parts.push(\`\${ic}💡 \${system.intelligencePct}%\${x.reset}\`);
879
+
880
+ // Knowledge chunks (Task 28) — show when populated
881
+ if (knowledge.chunks > 0) {
882
+ parts.push(\`\${x.teal}📚 \${knowledge.chunks}k\${x.reset}\`);
883
+ }
884
+
885
+ // Triggers (Task 32) — show when populated
886
+ if (triggers.triggers > 0) {
887
+ parts.push(\`\${x.mint}🎯 \${triggers.triggers}t\${x.reset}\`);
888
+ }
889
+
890
+ // Swarm agents (only when active)
891
+ if (swarm.activeAgents > 0) {
892
+ parts.push(\`\${x.gold}🐝 \${swarm.activeAgents}/\${swarm.maxAgents}\${x.reset}\`);
893
+ }
894
+
895
+ // Hooks
896
+ if (hooks.enabled > 0) {
897
+ parts.push(\`\${x.mint}⚡ \${hooks.enabled}h\${x.reset}\`);
898
+ }
899
+
900
+ return parts.join(\` \${DIV} \`);
901
+ }
902
+
903
+ // ── Multi-line dashboard (full mode) ─────────────────────────────
904
+ function generateDashboard() {
905
+ const git = getGitInfo();
906
+ const modelName = getModelName();
907
+ const progress = getv1Progress();
908
+ const security = getSecurityStatus();
909
+ const swarm = getSwarmStatus();
910
+ const system = getSystemMetrics();
911
+ const adrs = getADRStatus();
912
+ const hooks = getHooksStatus();
913
+ const agentdb = getAgentDBStats();
914
+ const tests = getTestStats();
915
+ const session = getSessionStats();
916
+ const integration = getIntegrationStatus();
917
+ const knowledge = getKnowledgeStats();
918
+ const triggers = getTriggerStats();
919
+ const si = getSIBudget();
920
+ const sec = secBadge(security.status);
921
+ const activeAgent = getActiveAgent();
922
+ const lines = [];
923
+
924
+ // ── Header: brand + git + model + session ────────────────────
925
+ const swarmDot = swarm.coordinationActive ? \`\${x.green}● LIVE\${x.reset}\` : \`\${x.slate}○ IDLE\${x.reset}\`;
926
+ const projName = getProjectName();
927
+ const cwdName = path.basename(CWD);
928
+ let hdr = \`\${x.bold}\${x.purple}▊ Monomind \${VERSION}\${x.reset} \${swarmDot} \${x.teal}\${x.bold}\${projName}\${x.reset} \${DIV} \${x.dim}◎ \${cwdName}\${x.reset} \${DIV} \${x.violet}⬡ \${git.name}\${x.reset}\`;
929
+
930
+ if (git.gitBranch) {
931
+ hdr += \` \${DIV} \${x.sky}⎇ \${x.bold}\${git.gitBranch}\${x.reset}\`;
932
+ if (git.staged > 0) hdr += \` \${x.green}+\${git.staged}\${x.reset}\`;
933
+ if (git.modified > 0) hdr += \` \${x.gold}~\${git.modified} mod\${x.reset}\`;
934
+ if (git.untracked > 0) hdr += \` \${x.slate}?\${git.untracked}\${x.reset}\`;
935
+ if (git.ahead > 0) hdr += \` \${x.green}↑\${git.ahead}\${x.reset}\`;
936
+ if (git.behind > 0) hdr += \` \${x.coral}↓\${git.behind}\${x.reset}\`;
937
+ }
938
+
939
+ hdr += \` \${DIV} 🤖 \${x.violet}\${x.bold}\${modelName}\${x.reset}\`;
940
+ if (session.duration) hdr += \` \${x.dim}⏱ \${session.duration}\${x.reset}\`;
941
+
942
+ lines.push(hdr);
943
+ lines.push(SEP);
944
+
945
+ // ── Row 1: Intelligence & Learning ───────────────────────────
946
+ const intellCol = pctColor(system.intelligencePct);
947
+ const intellBar = blockBar(system.intelligencePct, 100, 6);
948
+
949
+ // Knowledge (Task 28)
950
+ const knowStr = knowledge.chunks > 0
951
+ ? \`\${x.teal}📚 \${x.bold}\${knowledge.chunks}\${x.reset}\${x.slate} chunks\${x.reset}\`
952
+ : \`\${x.slate}📚 no chunks\${x.reset}\`;
953
+
954
+ // Skills (Task 45)
955
+ const skillStr = knowledge.skills > 0
956
+ ? \` \${x.mint}✦ \${knowledge.skills} skills\${x.reset}\`
957
+ : '';
958
+
959
+ // Patterns
960
+ const patStr = progress.patternsLearned > 0
961
+ ? \`\${x.gold}\${progress.patternsLearned >= 1000 ? (progress.patternsLearned / 1000).toFixed(1) + 'k' : progress.patternsLearned} patterns\${x.reset}\`
962
+ : \`\${x.slate}0 patterns\${x.reset}\`;
963
+
964
+ lines.push(
965
+ \`\${x.purple}💡 INTEL\${x.reset} \` +
966
+ \`\${intellCol}\${intellBar} \${x.bold}\${system.intelligencePct}%\${x.reset} \${DIV} \` +
967
+ \`\${knowStr}\${skillStr} \${DIV} \` +
968
+ patStr
969
+ );
970
+ lines.push(SEP);
971
+
972
+ // ── Row 2: Agents & Triggers ──────────────────────────────────
973
+ const agentCol = swarm.activeAgents > 0 ? x.green : x.slate;
974
+ const hookCol = hooks.enabled > 0 ? x.mint : x.slate;
975
+
976
+ // Triggers (Task 32)
977
+ const trigStr = triggers.triggers > 0
978
+ ? \`\${x.mint}🎯 \${x.bold}\${triggers.triggers}\${x.reset}\${x.slate} triggers · \${triggers.agents} agents\${x.reset}\`
979
+ : \`\${x.slate}🎯 no triggers\${x.reset}\`;
980
+
981
+ // Active agent badge
982
+ let agentBadge;
983
+ if (activeAgent) {
984
+ const col = activeAgent.activated ? x.green : x.sky;
985
+ const mark = activeAgent.activated ? '● ACTIVE' : '→ ROUTED';
986
+ const conf = activeAgent.activated ? '' : \` \${x.slate}\${(activeAgent.confidence * 100).toFixed(0)}%\${x.reset}\`;
987
+ const cat = activeAgent.category ? \` \${x.slate}[\${activeAgent.category}]\${x.reset}\` : '';
988
+ agentBadge = \`\${col}\${x.bold}\${mark}\${x.reset} \${col}👤 \${x.bold}\${activeAgent.name}\${x.reset}\${cat}\${conf}\`;
989
+ } else {
990
+ agentBadge = \`\${x.slate}👤 no agent routed\${x.reset}\`;
991
+ }
992
+
993
+ lines.push(
994
+ \`\${x.gold}🐝 SWARM\${x.reset} \` +
995
+ \`\${agentCol}\${x.bold}\${swarm.activeAgents}\${x.reset}\${x.slate}/\${x.reset}\${x.white}\${swarm.maxAgents}\${x.reset} agents \` +
996
+ \`\${hookCol}⚡ \${hooks.enabled}/\${hooks.total} hooks\${x.reset} \${DIV} \` +
997
+ \`\${trigStr} \${DIV} \` +
998
+ agentBadge
999
+ );
1000
+ lines.push(SEP);
1001
+
1002
+ // ── Row 3: Architecture & Security ───────────────────────────
1003
+ const adrCol = adrs.count > 0
1004
+ ? (adrs.implemented >= adrs.count ? x.green : x.gold)
1005
+ : x.slate;
1006
+ const adrStr = adrs.count > 0
1007
+ ? \`\${adrCol}\${x.bold}\${adrs.implemented}\${x.reset}\${x.slate}/\${x.reset}\${x.white}\${adrs.count}\${x.reset} ADRs\`
1008
+ : \`\${x.slate}no ADRs\${x.reset}\`;
1009
+
1010
+ const dddCol = pctColor(progress.dddProgress);
1011
+ const dddBar = blockBar(progress.dddProgress, 100, 5);
1012
+
1013
+ const cveStatus = security.totalCves === 0
1014
+ ? (security.status === 'NONE' ? \`\${x.slate}not scanned\${x.reset}\` : \`\${x.green}✔ clean\${x.reset}\`)
1015
+ : \`\${x.coral}\${security.cvesFixed}/\${security.totalCves} fixed\${x.reset}\`;
1016
+
1017
+ lines.push(
1018
+ \`\${x.purple}🧩 ARCH\${x.reset} \` +
1019
+ \`\${adrStr} \${DIV} \` +
1020
+ \`DDD \${dddBar} \${dddCol}\${x.bold}\${progress.dddProgress}%\${x.reset} \${DIV} \` +
1021
+ \`🛡️ \${sec.col}\${sec.label}\${x.reset} \${DIV} \` +
1022
+ \`CVE \${cveStatus}\`
1023
+ );
1024
+ lines.push(SEP);
1025
+
1026
+ // ── Row 4: Memory & Tests ─────────────────────────────────────
1027
+ const vecCol = agentdb.vectorCount > 0 ? x.green : x.slate;
1028
+ const hnswTag = agentdb.hasHnsw && agentdb.vectorCount > 0 ? \` \${x.green}⚡ HNSW\${x.reset}\` : '';
1029
+ const sizeDisp = agentdb.dbSizeKB >= 1024
1030
+ ? \`\${(agentdb.dbSizeKB / 1024).toFixed(1)} MB\` : \`\${agentdb.dbSizeKB} KB\`;
1031
+ const testCol = tests.testFiles > 0 ? x.green : x.slate;
1032
+ const memCol = system.memoryMB > 200 ? x.orange : x.sky;
1033
+
1034
+ const chips = [];
1035
+ if (integration.mcpServers.total > 0) {
1036
+ const mc = integration.mcpServers.enabled === integration.mcpServers.total ? x.green
1037
+ : integration.mcpServers.enabled > 0 ? x.gold : x.coral;
1038
+ chips.push(\`\${mc}MCP \${integration.mcpServers.enabled}/\${integration.mcpServers.total}\${x.reset}\`);
1039
+ }
1040
+ if (integration.hasDatabase) chips.push(\`\${x.green}DB ✔\${x.reset}\`);
1041
+ if (integration.hasApi) chips.push(\`\${x.green}API ✔\${x.reset}\`);
1042
+ const integStr = chips.length ? chips.join(' ') : \`\${x.slate}none\${x.reset}\`;
1043
+
1044
+ lines.push(
1045
+ \`\${x.teal}🗄️ MEMORY\${x.reset} \` +
1046
+ \`\${vecCol}\${x.bold}\${agentdb.vectorCount}\${x.reset}\${x.slate} vectors\${x.reset}\${hnswTag} \${DIV} \` +
1047
+ \`\${x.white}\${sizeDisp}\${x.reset} \${DIV} \` +
1048
+ \`\${testCol}🧪 \${tests.testFiles} test files\${x.reset} \${DIV} \` +
1049
+ integStr
1050
+ );
1051
+ lines.push(SEP);
1052
+
1053
+ // ── Row 5: Context budget ─────────────────────────────────────
1054
+ // SI budget (Task 23 monitor)
1055
+ let siStr;
1056
+ if (si) {
1057
+ const siCol = si.pct > 100 ? x.coral : si.pct > 80 ? x.gold : x.green;
1058
+ siStr = \`\${siCol}📄 SI \${si.pct}% budget\${x.reset} \${x.dim}(\${si.len}/\${si.limit} chars)\${x.reset}\`;
1059
+ } else {
1060
+ siStr = \`\${x.slate}📄 no shared instructions\${x.reset}\`;
1061
+ }
1062
+
1063
+ // Domains
1064
+ const domCol = progress.domainsCompleted >= 4 ? x.green
1065
+ : progress.domainsCompleted >= 2 ? x.gold
1066
+ : progress.domainsCompleted >= 1 ? x.orange
1067
+ : x.slate;
1068
+ const domBar = blockBar(progress.domainsCompleted, progress.totalDomains);
1069
+
1070
+ lines.push(
1071
+ \`\${x.slate}📋 CONTEXT\${x.reset} \` +
1072
+ \`\${siStr} \${DIV} \` +
1073
+ \`\${x.teal}🏗 \${domBar} \${domCol}\${x.bold}\${progress.domainsCompleted}\${x.reset}\${x.slate}/\${x.reset}\${x.white}\${progress.totalDomains}\${x.reset} domains \${DIV} \` +
1074
+ \`\${x.dim}💾 \${system.memoryMB} MB RAM\${x.reset}\`
1075
+ );
1076
+
1077
+ return lines.join('\\n');
1078
+ }
1079
+
1080
+ // ── JSON output ──────────────────────────────────────────────────
1081
+ function generateJSON() {
1082
+ const git = getGitInfo();
1083
+ return {
1084
+ user: { name: git.name, gitBranch: git.gitBranch, modelName: getModelName() },
1085
+ domains: getv1Progress(),
1086
+ security: getSecurityStatus(),
1087
+ swarm: getSwarmStatus(),
1088
+ system: getSystemMetrics(),
1089
+ adrs: getADRStatus(),
1090
+ hooks: getHooksStatus(),
1091
+ agentdb: getAgentDBStats(),
1092
+ tests: getTestStats(),
1093
+ git: { modified: git.modified, untracked: git.untracked, staged: git.staged, ahead: git.ahead, behind: git.behind },
1094
+ lastUpdated: new Date().toISOString(),
1095
+ };
1096
+ }
1097
+
1098
+ // ─── Mode state file ─────────────────────────────────────────────
1099
+ const MODE_FILE = path.join(CWD, '.monomind', 'statusline-mode.txt');
1100
+
1101
+ function readMode() {
1102
+ try {
1103
+ if (fs.existsSync(MODE_FILE)) {
1104
+ return fs.readFileSync(MODE_FILE, 'utf-8').trim();
1105
+ }
1106
+ } catch { /* ignore */ }
1107
+ return 'full'; // default
1108
+ }
1109
+
1110
+ // ─── Main ───────────────────────────────────────────────────────
1111
+ if (process.argv.includes('--json')) {
1112
+ console.log(JSON.stringify(generateJSON(), null, 2));
1113
+ } else if (process.argv.includes('--compact')) {
1114
+ console.log(JSON.stringify(generateJSON()));
1115
+ } else if (process.argv.includes('--single-line')) {
1116
+ console.log(generateStatusline());
1117
+ } else if (process.argv.includes('--toggle')) {
1118
+ // Toggle mode and print the new view
1119
+ const current = readMode();
1120
+ const next = current === 'compact' ? 'full' : 'compact';
1121
+ try {
1122
+ fs.mkdirSync(path.dirname(MODE_FILE), { recursive: true });
1123
+ fs.writeFileSync(MODE_FILE, next, 'utf-8');
1124
+ } catch { /* ignore */ }
1125
+ if (next === 'compact') {
1126
+ console.log(generateStatusline());
1127
+ } else {
1128
+ console.log(generateDashboard());
1129
+ }
1130
+ } else {
1131
+ // Default: respect mode state file
1132
+ const mode = readMode();
1133
+ if (mode === 'compact') {
1134
+ console.log(generateStatusline());
1135
+ } else {
1136
+ console.log(generateDashboard());
1137
+ }
1138
+ }
1139
+ `;
1140
+ }
1141
+ export function generateStatuslineHook(options) {
1142
+ if (!options.statusline.enabled) {
1143
+ return '#!/bin/bash\n# Statusline disabled\n';
1144
+ }
1145
+ return `#!/bin/bash
1146
+ # Monomind Statusline Hook
1147
+ # Source this in your .bashrc/.zshrc for terminal statusline
1148
+
1149
+ # Function to get statusline
1150
+ monomind_statusline() {
1151
+ local statusline_script="\${MONOMIND_DIR:-.claude}/helpers/statusline.cjs"
1152
+ if [ -f "$statusline_script" ]; then
1153
+ node "$statusline_script" 2>/dev/null || echo ""
1154
+ fi
1155
+ }
1156
+
1157
+ # Bash: Add to PS1
1158
+ # export PS1='$(monomind_statusline) \\n\\$ '
1159
+
1160
+ # Zsh: Add to RPROMPT
1161
+ # export RPROMPT='$(monomind_statusline)'
1162
+
1163
+ # Claude Code: Add to .claude/settings.json
1164
+ # "statusLine": {
1165
+ # "type": "command",
1166
+ # "command": "node .claude/helpers/statusline.cjs 2>/dev/null"
1167
+ # "when": "test -f .claude/helpers/statusline.cjs"
1168
+ # }
1169
+ `;
1170
+ }
1171
+ //# sourceMappingURL=statusline-generator.js.map